aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess1
-rw-r--r--.scrutinizer.yml7
m---------3rdparty0
-rw-r--r--apps/accessibility/css/fontdyslexic.scss2
-rw-r--r--apps/accessibility/css/themehighcontrast.scss34
-rw-r--r--apps/accessibility/js/accessibility.js4
-rw-r--r--apps/accessibility/js/accessibility.js.map2
-rw-r--r--apps/accessibility/lib/AppInfo/Application.php4
-rw-r--r--apps/accessibility/lib/Controller/AccessibilityController.php3
-rw-r--r--apps/accessibility/lib/Controller/ConfigController.php24
-rw-r--r--apps/accessibility/package-lock.json2
-rw-r--r--apps/accessibility/package.json2
-rw-r--r--apps/accessibility/src/App.vue31
-rw-r--r--apps/comments/l10n/hu.js2
-rw-r--r--apps/comments/l10n/hu.json2
-rw-r--r--apps/comments/l10n/sl.js1
-rw-r--r--apps/comments/l10n/sl.json1
-rw-r--r--apps/dav/l10n/cs.js5
-rw-r--r--apps/dav/l10n/cs.json5
-rw-r--r--apps/dav/l10n/de.js5
-rw-r--r--apps/dav/l10n/de.json5
-rw-r--r--apps/dav/l10n/de_DE.js5
-rw-r--r--apps/dav/l10n/de_DE.json5
-rw-r--r--apps/dav/l10n/es.js4
-rw-r--r--apps/dav/l10n/es.json4
-rw-r--r--apps/dav/l10n/fr.js5
-rw-r--r--apps/dav/l10n/fr.json5
-rw-r--r--apps/dav/l10n/hu.js1
-rw-r--r--apps/dav/l10n/hu.json1
-rw-r--r--apps/dav/l10n/it.js5
-rw-r--r--apps/dav/l10n/it.json5
-rw-r--r--apps/dav/l10n/nl.js4
-rw-r--r--apps/dav/l10n/nl.json4
-rw-r--r--apps/dav/l10n/pt_BR.js5
-rw-r--r--apps/dav/l10n/pt_BR.json5
-rw-r--r--apps/dav/l10n/ru.js4
-rw-r--r--apps/dav/l10n/ru.json4
-rw-r--r--apps/dav/l10n/sk.js17
-rw-r--r--apps/dav/l10n/sk.json17
-rw-r--r--apps/dav/l10n/sr.js10
-rw-r--r--apps/dav/l10n/sr.json10
-rw-r--r--apps/dav/l10n/sv.js3
-rw-r--r--apps/dav/l10n/sv.json3
-rw-r--r--apps/dav/l10n/tr.js7
-rw-r--r--apps/dav/l10n/tr.json7
-rw-r--r--apps/dav/l10n/zh_CN.js22
-rw-r--r--apps/dav/l10n/zh_CN.json22
-rw-r--r--apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php12
-rw-r--r--apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php2
-rw-r--r--apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php2
-rw-r--r--apps/dav/lib/CalDAV/Schedule/Plugin.php25
-rw-r--r--apps/dav/lib/Connector/Sabre/Principal.php24
-rw-r--r--apps/dav/lib/DAV/GroupPrincipalBackend.php141
-rw-r--r--apps/dav/lib/RootCollection.php2
-rw-r--r--apps/dav/lib/Upload/AssemblyStream.php11
-rw-r--r--apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php7
-rw-r--r--apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php1
-rw-r--r--apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php1
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php60
-rw-r--r--apps/dav/tests/unit/DAV/GroupPrincipalTest.php189
-rw-r--r--apps/encryption/l10n/ca.js19
-rw-r--r--apps/encryption/l10n/ca.json19
-rw-r--r--apps/encryption/l10n/hu.js24
-rw-r--r--apps/encryption/l10n/hu.json24
-rw-r--r--apps/encryption/l10n/zh_CN.js4
-rw-r--r--apps/encryption/l10n/zh_CN.json4
-rw-r--r--apps/encryption/lib/Crypto/EncryptAll.php6
-rw-r--r--apps/encryption/tests/Crypto/EncryptAllTest.php33
-rw-r--r--apps/federatedfilesharing/l10n/cs.js2
-rw-r--r--apps/federatedfilesharing/l10n/cs.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.js2
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.json2
-rw-r--r--apps/federatedfilesharing/l10n/es.js2
-rw-r--r--apps/federatedfilesharing/l10n/es.json2
-rw-r--r--apps/federatedfilesharing/l10n/fr.js2
-rw-r--r--apps/federatedfilesharing/l10n/fr.json2
-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/pt_BR.js2
-rw-r--r--apps/federatedfilesharing/l10n/pt_BR.json2
-rw-r--r--apps/federatedfilesharing/l10n/sr.js2
-rw-r--r--apps/federatedfilesharing/l10n/sr.json2
-rw-r--r--apps/federatedfilesharing/l10n/tr.js2
-rw-r--r--apps/federatedfilesharing/l10n/tr.json2
-rw-r--r--apps/federatedfilesharing/l10n/zh_CN.js28
-rw-r--r--apps/federatedfilesharing/l10n/zh_CN.json28
-rw-r--r--apps/files/appinfo/routes.php15
-rw-r--r--apps/files/css/files.scss290
-rw-r--r--apps/files/js/favoritesfilelist.js6
-rw-r--r--apps/files/js/favoritesplugin.js5
-rw-r--r--apps/files/js/filelist.js33
-rw-r--r--apps/files/js/recentplugin.js5
-rw-r--r--apps/files/l10n/bg.js6
-rw-r--r--apps/files/l10n/bg.json6
-rw-r--r--apps/files/l10n/cs.js2
-rw-r--r--apps/files/l10n/cs.json2
-rw-r--r--apps/files/l10n/de.js1
-rw-r--r--apps/files/l10n/de.json1
-rw-r--r--apps/files/l10n/de_DE.js1
-rw-r--r--apps/files/l10n/de_DE.json1
-rw-r--r--apps/files/l10n/es.js1
-rw-r--r--apps/files/l10n/es.json1
-rw-r--r--apps/files/l10n/fi.js2
-rw-r--r--apps/files/l10n/fi.json2
-rw-r--r--apps/files/l10n/fr.js1
-rw-r--r--apps/files/l10n/fr.json1
-rw-r--r--apps/files/l10n/hu.js14
-rw-r--r--apps/files/l10n/hu.json14
-rw-r--r--apps/files/l10n/it.js1
-rw-r--r--apps/files/l10n/it.json1
-rw-r--r--apps/files/l10n/nl.js1
-rw-r--r--apps/files/l10n/nl.json1
-rw-r--r--apps/files/l10n/pt_BR.js1
-rw-r--r--apps/files/l10n/pt_BR.json1
-rw-r--r--apps/files/l10n/ru.js3
-rw-r--r--apps/files/l10n/ru.json3
-rw-r--r--apps/files/l10n/sr.js1
-rw-r--r--apps/files/l10n/sr.json1
-rw-r--r--apps/files/l10n/sv.js3
-rw-r--r--apps/files/l10n/sv.json3
-rw-r--r--apps/files/l10n/tr.js1
-rw-r--r--apps/files/l10n/tr.json1
-rw-r--r--apps/files/l10n/zh_CN.js2
-rw-r--r--apps/files/l10n/zh_CN.json2
-rw-r--r--apps/files/lib/Controller/ApiController.php35
-rw-r--r--apps/files/list.php3
-rw-r--r--apps/files/templates/list.php6
-rw-r--r--apps/files/templates/recentlist.php2
-rw-r--r--apps/files/templates/simplelist.php2
-rw-r--r--apps/files/tests/js/favoritesfilelistspec.js2
-rw-r--r--apps/files/tests/js/fileUploadSpec.js2
-rw-r--r--apps/files/tests/js/fileactionsSpec.js2
-rw-r--r--apps/files/tests/js/filelistSpec.js2
-rw-r--r--apps/files_external/l10n/ast.js6
-rw-r--r--apps/files_external/l10n/ast.json6
-rw-r--r--apps/files_external/l10n/ca.js14
-rw-r--r--apps/files_external/l10n/ca.json14
-rw-r--r--apps/files_external/l10n/cs.js17
-rw-r--r--apps/files_external/l10n/cs.json17
-rw-r--r--apps/files_external/l10n/da.js14
-rw-r--r--apps/files_external/l10n/da.json14
-rw-r--r--apps/files_external/l10n/de.js17
-rw-r--r--apps/files_external/l10n/de.json17
-rw-r--r--apps/files_external/l10n/de_DE.js17
-rw-r--r--apps/files_external/l10n/de_DE.json17
-rw-r--r--apps/files_external/l10n/el.js16
-rw-r--r--apps/files_external/l10n/el.json16
-rw-r--r--apps/files_external/l10n/en_GB.js16
-rw-r--r--apps/files_external/l10n/en_GB.json16
-rw-r--r--apps/files_external/l10n/es.js17
-rw-r--r--apps/files_external/l10n/es.json17
-rw-r--r--apps/files_external/l10n/es_419.js14
-rw-r--r--apps/files_external/l10n/es_419.json14
-rw-r--r--apps/files_external/l10n/es_AR.js14
-rw-r--r--apps/files_external/l10n/es_AR.json14
-rw-r--r--apps/files_external/l10n/es_CL.js16
-rw-r--r--apps/files_external/l10n/es_CL.json16
-rw-r--r--apps/files_external/l10n/es_CO.js16
-rw-r--r--apps/files_external/l10n/es_CO.json16
-rw-r--r--apps/files_external/l10n/es_CR.js16
-rw-r--r--apps/files_external/l10n/es_CR.json16
-rw-r--r--apps/files_external/l10n/es_DO.js16
-rw-r--r--apps/files_external/l10n/es_DO.json16
-rw-r--r--apps/files_external/l10n/es_EC.js16
-rw-r--r--apps/files_external/l10n/es_EC.json16
-rw-r--r--apps/files_external/l10n/es_GT.js16
-rw-r--r--apps/files_external/l10n/es_GT.json16
-rw-r--r--apps/files_external/l10n/es_HN.js14
-rw-r--r--apps/files_external/l10n/es_HN.json14
-rw-r--r--apps/files_external/l10n/es_MX.js16
-rw-r--r--apps/files_external/l10n/es_MX.json16
-rw-r--r--apps/files_external/l10n/es_NI.js14
-rw-r--r--apps/files_external/l10n/es_NI.json14
-rw-r--r--apps/files_external/l10n/es_PA.js14
-rw-r--r--apps/files_external/l10n/es_PA.json14
-rw-r--r--apps/files_external/l10n/es_PE.js14
-rw-r--r--apps/files_external/l10n/es_PE.json14
-rw-r--r--apps/files_external/l10n/es_PR.js14
-rw-r--r--apps/files_external/l10n/es_PR.json14
-rw-r--r--apps/files_external/l10n/es_PY.js14
-rw-r--r--apps/files_external/l10n/es_PY.json14
-rw-r--r--apps/files_external/l10n/es_SV.js16
-rw-r--r--apps/files_external/l10n/es_SV.json16
-rw-r--r--apps/files_external/l10n/es_UY.js14
-rw-r--r--apps/files_external/l10n/es_UY.json14
-rw-r--r--apps/files_external/l10n/et_EE.js14
-rw-r--r--apps/files_external/l10n/et_EE.json14
-rw-r--r--apps/files_external/l10n/fi.js16
-rw-r--r--apps/files_external/l10n/fi.json16
-rw-r--r--apps/files_external/l10n/fr.js17
-rw-r--r--apps/files_external/l10n/fr.json17
-rw-r--r--apps/files_external/l10n/he.js16
-rw-r--r--apps/files_external/l10n/he.json16
-rw-r--r--apps/files_external/l10n/hu.js28
-rw-r--r--apps/files_external/l10n/hu.json28
-rw-r--r--apps/files_external/l10n/ia.js14
-rw-r--r--apps/files_external/l10n/ia.json14
-rw-r--r--apps/files_external/l10n/id.js14
-rw-r--r--apps/files_external/l10n/id.json14
-rw-r--r--apps/files_external/l10n/is.js16
-rw-r--r--apps/files_external/l10n/is.json16
-rw-r--r--apps/files_external/l10n/it.js17
-rw-r--r--apps/files_external/l10n/it.json17
-rw-r--r--apps/files_external/l10n/ja.js14
-rw-r--r--apps/files_external/l10n/ja.json14
-rw-r--r--apps/files_external/l10n/ka_GE.js14
-rw-r--r--apps/files_external/l10n/ka_GE.json14
-rw-r--r--apps/files_external/l10n/ko.js14
-rw-r--r--apps/files_external/l10n/ko.json14
-rw-r--r--apps/files_external/l10n/lt_LT.js14
-rw-r--r--apps/files_external/l10n/lt_LT.json14
-rw-r--r--apps/files_external/l10n/lv.js14
-rw-r--r--apps/files_external/l10n/lv.json14
-rw-r--r--apps/files_external/l10n/nb.js14
-rw-r--r--apps/files_external/l10n/nb.json14
-rw-r--r--apps/files_external/l10n/nl.js17
-rw-r--r--apps/files_external/l10n/nl.json17
-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.js17
-rw-r--r--apps/files_external/l10n/pt_BR.json17
-rw-r--r--apps/files_external/l10n/pt_PT.js14
-rw-r--r--apps/files_external/l10n/pt_PT.json14
-rw-r--r--apps/files_external/l10n/ro.js14
-rw-r--r--apps/files_external/l10n/ro.json14
-rw-r--r--apps/files_external/l10n/ru.js16
-rw-r--r--apps/files_external/l10n/ru.json16
-rw-r--r--apps/files_external/l10n/sk.js14
-rw-r--r--apps/files_external/l10n/sk.json14
-rw-r--r--apps/files_external/l10n/sl.js14
-rw-r--r--apps/files_external/l10n/sl.json14
-rw-r--r--apps/files_external/l10n/sq.js14
-rw-r--r--apps/files_external/l10n/sq.json14
-rw-r--r--apps/files_external/l10n/sr.js17
-rw-r--r--apps/files_external/l10n/sr.json17
-rw-r--r--apps/files_external/l10n/sv.js14
-rw-r--r--apps/files_external/l10n/sv.json14
-rw-r--r--apps/files_external/l10n/th.js14
-rw-r--r--apps/files_external/l10n/th.json14
-rw-r--r--apps/files_external/l10n/tr.js17
-rw-r--r--apps/files_external/l10n/tr.json17
-rw-r--r--apps/files_external/l10n/zh_CN.js16
-rw-r--r--apps/files_external/l10n/zh_CN.json16
-rw-r--r--apps/files_external/l10n/zh_TW.js14
-rw-r--r--apps/files_external/l10n/zh_TW.json14
-rw-r--r--apps/files_external/templates/list.php2
-rw-r--r--apps/files_sharing/css/public.scss1
-rw-r--r--apps/files_sharing/js/app.js30
-rw-r--r--apps/files_sharing/js/public.js4
-rw-r--r--apps/files_sharing/js/sharedfilelist.js6
-rw-r--r--apps/files_sharing/l10n/cs.js1
-rw-r--r--apps/files_sharing/l10n/cs.json1
-rw-r--r--apps/files_sharing/l10n/de.js1
-rw-r--r--apps/files_sharing/l10n/de.json1
-rw-r--r--apps/files_sharing/l10n/de_DE.js1
-rw-r--r--apps/files_sharing/l10n/de_DE.json1
-rw-r--r--apps/files_sharing/l10n/es.js1
-rw-r--r--apps/files_sharing/l10n/es.json1
-rw-r--r--apps/files_sharing/l10n/fr.js1
-rw-r--r--apps/files_sharing/l10n/fr.json1
-rw-r--r--apps/files_sharing/l10n/hu.js6
-rw-r--r--apps/files_sharing/l10n/hu.json6
-rw-r--r--apps/files_sharing/l10n/it.js1
-rw-r--r--apps/files_sharing/l10n/it.json1
-rw-r--r--apps/files_sharing/l10n/nl.js1
-rw-r--r--apps/files_sharing/l10n/nl.json1
-rw-r--r--apps/files_sharing/l10n/pt_BR.js1
-rw-r--r--apps/files_sharing/l10n/pt_BR.json1
-rw-r--r--apps/files_sharing/l10n/ru.js1
-rw-r--r--apps/files_sharing/l10n/ru.json1
-rw-r--r--apps/files_sharing/l10n/sl.js3
-rw-r--r--apps/files_sharing/l10n/sl.json3
-rw-r--r--apps/files_sharing/l10n/sr.js1
-rw-r--r--apps/files_sharing/l10n/sr.json1
-rw-r--r--apps/files_sharing/l10n/sv.js1
-rw-r--r--apps/files_sharing/l10n/sv.json1
-rw-r--r--apps/files_sharing/l10n/tr.js1
-rw-r--r--apps/files_sharing/l10n/tr.json1
-rw-r--r--apps/files_sharing/l10n/zh_CN.js60
-rw-r--r--apps/files_sharing/l10n/zh_CN.json60
-rw-r--r--apps/files_sharing/lib/Controller/ShareController.php24
-rw-r--r--apps/files_sharing/templates/list.php2
-rw-r--r--apps/files_sharing/tests/js/publicAppSpec.js2
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js6
-rw-r--r--apps/files_sharing/tests/js/sharedfilelistSpec.js4
-rw-r--r--apps/files_trashbin/appinfo/info.xml4
-rw-r--r--apps/files_trashbin/composer/composer/autoload_classmap.php9
-rw-r--r--apps/files_trashbin/composer/composer/autoload_static.php9
-rw-r--r--apps/files_trashbin/js/app.js6
-rw-r--r--apps/files_trashbin/l10n/hu.js2
-rw-r--r--apps/files_trashbin/l10n/hu.json2
-rw-r--r--apps/files_trashbin/lib/AppInfo/Application.php34
-rw-r--r--apps/files_trashbin/lib/Controller/PreviewController.php63
-rw-r--r--apps/files_trashbin/lib/Sabre/AbstractTrash.php27
-rw-r--r--apps/files_trashbin/lib/Sabre/AbstractTrashFile.php36
-rw-r--r--apps/files_trashbin/lib/Sabre/AbstractTrashFolder.php77
-rw-r--r--apps/files_trashbin/lib/Sabre/RestoreFolder.php8
-rw-r--r--apps/files_trashbin/lib/Sabre/RootCollection.php15
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashFile.php37
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashFolder.php78
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashFolderFile.php44
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashFolderFolder.php91
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashHome.php30
-rw-r--r--apps/files_trashbin/lib/Sabre/TrashRoot.php57
-rw-r--r--apps/files_trashbin/lib/Storage.php180
-rw-r--r--apps/files_trashbin/lib/Trash/BackendNotFoundException.php26
-rw-r--r--apps/files_trashbin/lib/Trash/ITrashBackend.php84
-rw-r--r--apps/files_trashbin/lib/Trash/ITrashItem.php78
-rw-r--r--apps/files_trashbin/lib/Trash/ITrashManager.php56
-rw-r--r--apps/files_trashbin/lib/Trash/LegacyTrashBackend.php128
-rw-r--r--apps/files_trashbin/lib/Trash/TrashItem.php172
-rw-r--r--apps/files_trashbin/lib/Trash/TrashManager.php125
-rw-r--r--apps/files_trashbin/lib/Trashbin.php2
-rw-r--r--apps/files_trashbin/templates/index.php2
-rw-r--r--apps/files_trashbin/tests/Controller/PreviewControllerTest.php33
-rw-r--r--apps/files_trashbin/tests/StorageTest.php3
-rw-r--r--apps/files_trashbin/tests/js/filelistSpec.js2
-rw-r--r--apps/files_versions/ajax/getVersions.php56
-rw-r--r--apps/files_versions/ajax/rollbackVersion.php41
-rw-r--r--apps/files_versions/download.php59
-rw-r--r--apps/files_versions/js/templates.js4
-rw-r--r--apps/files_versions/js/templates/item.handlebars2
-rw-r--r--apps/files_versions/js/versioncollection.js86
-rw-r--r--apps/files_versions/js/versionmodel.js63
-rw-r--r--apps/files_versions/js/versionstabview.js74
-rw-r--r--apps/files_versions/l10n/af.js2
-rw-r--r--apps/files_versions/l10n/af.json2
-rw-r--r--apps/files_versions/l10n/ar.js2
-rw-r--r--apps/files_versions/l10n/ar.json2
-rw-r--r--apps/files_versions/l10n/ast.js2
-rw-r--r--apps/files_versions/l10n/ast.json2
-rw-r--r--apps/files_versions/l10n/bg.js2
-rw-r--r--apps/files_versions/l10n/bg.json2
-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.js7
-rw-r--r--apps/files_versions/l10n/cs.json7
-rw-r--r--apps/files_versions/l10n/da.js2
-rw-r--r--apps/files_versions/l10n/da.json2
-rw-r--r--apps/files_versions/l10n/de.js7
-rw-r--r--apps/files_versions/l10n/de.json7
-rw-r--r--apps/files_versions/l10n/de_DE.js7
-rw-r--r--apps/files_versions/l10n/de_DE.json7
-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/en_GB.js2
-rw-r--r--apps/files_versions/l10n/en_GB.json2
-rw-r--r--apps/files_versions/l10n/eo.js2
-rw-r--r--apps/files_versions/l10n/eo.json2
-rw-r--r--apps/files_versions/l10n/es.js6
-rw-r--r--apps/files_versions/l10n/es.json6
-rw-r--r--apps/files_versions/l10n/es_419.js2
-rw-r--r--apps/files_versions/l10n/es_419.json2
-rw-r--r--apps/files_versions/l10n/es_AR.js2
-rw-r--r--apps/files_versions/l10n/es_AR.json2
-rw-r--r--apps/files_versions/l10n/es_CL.js2
-rw-r--r--apps/files_versions/l10n/es_CL.json2
-rw-r--r--apps/files_versions/l10n/es_CO.js2
-rw-r--r--apps/files_versions/l10n/es_CO.json2
-rw-r--r--apps/files_versions/l10n/es_CR.js2
-rw-r--r--apps/files_versions/l10n/es_CR.json2
-rw-r--r--apps/files_versions/l10n/es_DO.js2
-rw-r--r--apps/files_versions/l10n/es_DO.json2
-rw-r--r--apps/files_versions/l10n/es_EC.js2
-rw-r--r--apps/files_versions/l10n/es_EC.json2
-rw-r--r--apps/files_versions/l10n/es_GT.js2
-rw-r--r--apps/files_versions/l10n/es_GT.json2
-rw-r--r--apps/files_versions/l10n/es_HN.js2
-rw-r--r--apps/files_versions/l10n/es_HN.json2
-rw-r--r--apps/files_versions/l10n/es_MX.js2
-rw-r--r--apps/files_versions/l10n/es_MX.json2
-rw-r--r--apps/files_versions/l10n/es_NI.js2
-rw-r--r--apps/files_versions/l10n/es_NI.json2
-rw-r--r--apps/files_versions/l10n/es_PA.js2
-rw-r--r--apps/files_versions/l10n/es_PA.json2
-rw-r--r--apps/files_versions/l10n/es_PE.js2
-rw-r--r--apps/files_versions/l10n/es_PE.json2
-rw-r--r--apps/files_versions/l10n/es_PR.js2
-rw-r--r--apps/files_versions/l10n/es_PR.json2
-rw-r--r--apps/files_versions/l10n/es_PY.js2
-rw-r--r--apps/files_versions/l10n/es_PY.json2
-rw-r--r--apps/files_versions/l10n/es_SV.js2
-rw-r--r--apps/files_versions/l10n/es_SV.json2
-rw-r--r--apps/files_versions/l10n/es_UY.js2
-rw-r--r--apps/files_versions/l10n/es_UY.json2
-rw-r--r--apps/files_versions/l10n/et_EE.js2
-rw-r--r--apps/files_versions/l10n/et_EE.json2
-rw-r--r--apps/files_versions/l10n/eu.js2
-rw-r--r--apps/files_versions/l10n/eu.json2
-rw-r--r--apps/files_versions/l10n/fa.js2
-rw-r--r--apps/files_versions/l10n/fa.json2
-rw-r--r--apps/files_versions/l10n/fi.js2
-rw-r--r--apps/files_versions/l10n/fi.json2
-rw-r--r--apps/files_versions/l10n/fr.js7
-rw-r--r--apps/files_versions/l10n/fr.json7
-rw-r--r--apps/files_versions/l10n/gl.js2
-rw-r--r--apps/files_versions/l10n/gl.json2
-rw-r--r--apps/files_versions/l10n/he.js2
-rw-r--r--apps/files_versions/l10n/he.json2
-rw-r--r--apps/files_versions/l10n/hu.js2
-rw-r--r--apps/files_versions/l10n/hu.json2
-rw-r--r--apps/files_versions/l10n/ia.js2
-rw-r--r--apps/files_versions/l10n/ia.json2
-rw-r--r--apps/files_versions/l10n/is.js2
-rw-r--r--apps/files_versions/l10n/is.json2
-rw-r--r--apps/files_versions/l10n/it.js7
-rw-r--r--apps/files_versions/l10n/it.json7
-rw-r--r--apps/files_versions/l10n/ja.js2
-rw-r--r--apps/files_versions/l10n/ja.json2
-rw-r--r--apps/files_versions/l10n/ka_GE.js2
-rw-r--r--apps/files_versions/l10n/ka_GE.json2
-rw-r--r--apps/files_versions/l10n/ko.js2
-rw-r--r--apps/files_versions/l10n/ko.json2
-rw-r--r--apps/files_versions/l10n/lb.js2
-rw-r--r--apps/files_versions/l10n/lb.json2
-rw-r--r--apps/files_versions/l10n/lt_LT.js2
-rw-r--r--apps/files_versions/l10n/lt_LT.json2
-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.js2
-rw-r--r--apps/files_versions/l10n/nb.json2
-rw-r--r--apps/files_versions/l10n/nl.js6
-rw-r--r--apps/files_versions/l10n/nl.json6
-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/pt_BR.js7
-rw-r--r--apps/files_versions/l10n/pt_BR.json7
-rw-r--r--apps/files_versions/l10n/ro.js2
-rw-r--r--apps/files_versions/l10n/ro.json2
-rw-r--r--apps/files_versions/l10n/ru.js6
-rw-r--r--apps/files_versions/l10n/ru.json6
-rw-r--r--apps/files_versions/l10n/sk.js2
-rw-r--r--apps/files_versions/l10n/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/sr.js6
-rw-r--r--apps/files_versions/l10n/sr.json6
-rw-r--r--apps/files_versions/l10n/sv.js2
-rw-r--r--apps/files_versions/l10n/sv.json2
-rw-r--r--apps/files_versions/l10n/tr.js7
-rw-r--r--apps/files_versions/l10n/tr.json7
-rw-r--r--apps/files_versions/l10n/uk.js2
-rw-r--r--apps/files_versions/l10n/uk.json2
-rw-r--r--apps/files_versions/l10n/zh_CN.js6
-rw-r--r--apps/files_versions/l10n/zh_CN.json6
-rw-r--r--apps/files_versions/l10n/zh_TW.js2
-rw-r--r--apps/files_versions/l10n/zh_TW.json2
-rw-r--r--apps/files_versions/tests/js/versioncollectionSpec.js141
-rw-r--r--apps/files_versions/tests/js/versionmodelSpec.js73
-rw-r--r--apps/files_versions/tests/js/versionstabviewSpec.js62
-rw-r--r--apps/oauth2/l10n/sv.js3
-rw-r--r--apps/oauth2/l10n/sv.json3
-rw-r--r--apps/sharebymail/l10n/cs.js10
-rw-r--r--apps/sharebymail/l10n/cs.json10
-rw-r--r--apps/sharebymail/l10n/de.js8
-rw-r--r--apps/sharebymail/l10n/de.json8
-rw-r--r--apps/sharebymail/l10n/de_DE.js12
-rw-r--r--apps/sharebymail/l10n/de_DE.json12
-rw-r--r--apps/sharebymail/l10n/es.js9
-rw-r--r--apps/sharebymail/l10n/es.json9
-rw-r--r--apps/sharebymail/l10n/fi.js10
-rw-r--r--apps/sharebymail/l10n/fi.json10
-rw-r--r--apps/sharebymail/l10n/fr.js8
-rw-r--r--apps/sharebymail/l10n/fr.json8
-rw-r--r--apps/sharebymail/l10n/it.js8
-rw-r--r--apps/sharebymail/l10n/it.json8
-rw-r--r--apps/sharebymail/l10n/nl.js8
-rw-r--r--apps/sharebymail/l10n/nl.json8
-rw-r--r--apps/sharebymail/l10n/pt_BR.js8
-rw-r--r--apps/sharebymail/l10n/pt_BR.json8
-rw-r--r--apps/sharebymail/l10n/sv.js14
-rw-r--r--apps/sharebymail/l10n/sv.json14
-rw-r--r--apps/sharebymail/l10n/tr.js8
-rw-r--r--apps/sharebymail/l10n/tr.json8
-rw-r--r--apps/sharebymail/l10n/zh_CN.js18
-rw-r--r--apps/sharebymail/l10n/zh_CN.json18
-rw-r--r--apps/systemtags/js/app.js7
-rw-r--r--apps/systemtags/l10n/bg.js2
-rw-r--r--apps/systemtags/l10n/bg.json2
-rw-r--r--apps/theming/js/settings-admin.js2
-rw-r--r--apps/theming/l10n/hu.js2
-rw-r--r--apps/theming/l10n/hu.json2
-rw-r--r--apps/theming/l10n/tr.js4
-rw-r--r--apps/theming/l10n/tr.json4
-rw-r--r--apps/twofactor_backupcodes/l10n/cs.js3
-rw-r--r--apps/twofactor_backupcodes/l10n/cs.json3
-rw-r--r--apps/twofactor_backupcodes/l10n/nl.js2
-rw-r--r--apps/twofactor_backupcodes/l10n/nl.json2
-rw-r--r--apps/twofactor_backupcodes/l10n/sv.js11
-rw-r--r--apps/twofactor_backupcodes/l10n/sv.json11
-rw-r--r--apps/updatenotification/l10n/bg.js30
-rw-r--r--apps/updatenotification/l10n/bg.json30
-rw-r--r--apps/user_ldap/css/renewPassword.css2
-rw-r--r--apps/user_ldap/l10n/hu.js4
-rw-r--r--apps/user_ldap/l10n/hu.json4
-rw-r--r--apps/workflowengine/l10n/ast.js8
-rw-r--r--apps/workflowengine/l10n/ast.json8
-rw-r--r--apps/workflowengine/l10n/bg.js12
-rw-r--r--apps/workflowengine/l10n/bg.json12
-rw-r--r--apps/workflowengine/l10n/ca.js12
-rw-r--r--apps/workflowengine/l10n/ca.json12
-rw-r--r--apps/workflowengine/l10n/cs.js13
-rw-r--r--apps/workflowengine/l10n/cs.json13
-rw-r--r--apps/workflowengine/l10n/da.js12
-rw-r--r--apps/workflowengine/l10n/da.json12
-rw-r--r--apps/workflowengine/l10n/de.js12
-rw-r--r--apps/workflowengine/l10n/de.json12
-rw-r--r--apps/workflowengine/l10n/de_DE.js12
-rw-r--r--apps/workflowengine/l10n/de_DE.json12
-rw-r--r--apps/workflowengine/l10n/el.js12
-rw-r--r--apps/workflowengine/l10n/el.json12
-rw-r--r--apps/workflowengine/l10n/en_GB.js12
-rw-r--r--apps/workflowengine/l10n/en_GB.json12
-rw-r--r--apps/workflowengine/l10n/es.js17
-rw-r--r--apps/workflowengine/l10n/es.json17
-rw-r--r--apps/workflowengine/l10n/es_419.js12
-rw-r--r--apps/workflowengine/l10n/es_419.json12
-rw-r--r--apps/workflowengine/l10n/es_AR.js12
-rw-r--r--apps/workflowengine/l10n/es_AR.json12
-rw-r--r--apps/workflowengine/l10n/es_CL.js12
-rw-r--r--apps/workflowengine/l10n/es_CL.json12
-rw-r--r--apps/workflowengine/l10n/es_CO.js12
-rw-r--r--apps/workflowengine/l10n/es_CO.json12
-rw-r--r--apps/workflowengine/l10n/es_CR.js12
-rw-r--r--apps/workflowengine/l10n/es_CR.json12
-rw-r--r--apps/workflowengine/l10n/es_DO.js12
-rw-r--r--apps/workflowengine/l10n/es_DO.json12
-rw-r--r--apps/workflowengine/l10n/es_EC.js12
-rw-r--r--apps/workflowengine/l10n/es_EC.json12
-rw-r--r--apps/workflowengine/l10n/es_GT.js12
-rw-r--r--apps/workflowengine/l10n/es_GT.json12
-rw-r--r--apps/workflowengine/l10n/es_HN.js12
-rw-r--r--apps/workflowengine/l10n/es_HN.json12
-rw-r--r--apps/workflowengine/l10n/es_MX.js12
-rw-r--r--apps/workflowengine/l10n/es_MX.json12
-rw-r--r--apps/workflowengine/l10n/es_NI.js12
-rw-r--r--apps/workflowengine/l10n/es_NI.json12
-rw-r--r--apps/workflowengine/l10n/es_PA.js12
-rw-r--r--apps/workflowengine/l10n/es_PA.json12
-rw-r--r--apps/workflowengine/l10n/es_PE.js12
-rw-r--r--apps/workflowengine/l10n/es_PE.json12
-rw-r--r--apps/workflowengine/l10n/es_PR.js12
-rw-r--r--apps/workflowengine/l10n/es_PR.json12
-rw-r--r--apps/workflowengine/l10n/es_PY.js12
-rw-r--r--apps/workflowengine/l10n/es_PY.json12
-rw-r--r--apps/workflowengine/l10n/es_SV.js12
-rw-r--r--apps/workflowengine/l10n/es_SV.json12
-rw-r--r--apps/workflowengine/l10n/es_UY.js12
-rw-r--r--apps/workflowengine/l10n/es_UY.json12
-rw-r--r--apps/workflowengine/l10n/et_EE.js12
-rw-r--r--apps/workflowengine/l10n/et_EE.json12
-rw-r--r--apps/workflowengine/l10n/fa.js12
-rw-r--r--apps/workflowengine/l10n/fa.json12
-rw-r--r--apps/workflowengine/l10n/fi.js13
-rw-r--r--apps/workflowengine/l10n/fi.json13
-rw-r--r--apps/workflowengine/l10n/fr.js12
-rw-r--r--apps/workflowengine/l10n/fr.json12
-rw-r--r--apps/workflowengine/l10n/gl.js12
-rw-r--r--apps/workflowengine/l10n/gl.json12
-rw-r--r--apps/workflowengine/l10n/he.js12
-rw-r--r--apps/workflowengine/l10n/he.json12
-rw-r--r--apps/workflowengine/l10n/hu.js13
-rw-r--r--apps/workflowengine/l10n/hu.json13
-rw-r--r--apps/workflowengine/l10n/ia.js8
-rw-r--r--apps/workflowengine/l10n/ia.json8
-rw-r--r--apps/workflowengine/l10n/id.js12
-rw-r--r--apps/workflowengine/l10n/id.json12
-rw-r--r--apps/workflowengine/l10n/is.js12
-rw-r--r--apps/workflowengine/l10n/is.json12
-rw-r--r--apps/workflowengine/l10n/it.js12
-rw-r--r--apps/workflowengine/l10n/it.json12
-rw-r--r--apps/workflowengine/l10n/ja.js12
-rw-r--r--apps/workflowengine/l10n/ja.json12
-rw-r--r--apps/workflowengine/l10n/ka_GE.js12
-rw-r--r--apps/workflowengine/l10n/ka_GE.json12
-rw-r--r--apps/workflowengine/l10n/ko.js12
-rw-r--r--apps/workflowengine/l10n/ko.json12
-rw-r--r--apps/workflowengine/l10n/lt_LT.js12
-rw-r--r--apps/workflowengine/l10n/lt_LT.json12
-rw-r--r--apps/workflowengine/l10n/lv.js12
-rw-r--r--apps/workflowengine/l10n/lv.json12
-rw-r--r--apps/workflowengine/l10n/mn.js12
-rw-r--r--apps/workflowengine/l10n/mn.json12
-rw-r--r--apps/workflowengine/l10n/nb.js12
-rw-r--r--apps/workflowengine/l10n/nb.json12
-rw-r--r--apps/workflowengine/l10n/nl.js13
-rw-r--r--apps/workflowengine/l10n/nl.json13
-rw-r--r--apps/workflowengine/l10n/pl.js12
-rw-r--r--apps/workflowengine/l10n/pl.json12
-rw-r--r--apps/workflowengine/l10n/pt_BR.js12
-rw-r--r--apps/workflowengine/l10n/pt_BR.json12
-rw-r--r--apps/workflowengine/l10n/ru.js13
-rw-r--r--apps/workflowengine/l10n/ru.json13
-rw-r--r--apps/workflowengine/l10n/sk.js12
-rw-r--r--apps/workflowengine/l10n/sk.json12
-rw-r--r--apps/workflowengine/l10n/sl.js12
-rw-r--r--apps/workflowengine/l10n/sl.json12
-rw-r--r--apps/workflowengine/l10n/sq.js12
-rw-r--r--apps/workflowengine/l10n/sq.json12
-rw-r--r--apps/workflowengine/l10n/sr.js12
-rw-r--r--apps/workflowengine/l10n/sr.json12
-rw-r--r--apps/workflowengine/l10n/sv.js16
-rw-r--r--apps/workflowengine/l10n/sv.json16
-rw-r--r--apps/workflowengine/l10n/tr.js13
-rw-r--r--apps/workflowengine/l10n/tr.json13
-rw-r--r--apps/workflowengine/l10n/zh_CN.js12
-rw-r--r--apps/workflowengine/l10n/zh_CN.json12
-rw-r--r--apps/workflowengine/l10n/zh_TW.js12
-rw-r--r--apps/workflowengine/l10n/zh_TW.json12
-rw-r--r--build/package-lock.json148
-rw-r--r--build/package.json2
-rw-r--r--core/Controller/LoginController.php2
-rw-r--r--core/css/apps.scss9
-rw-r--r--core/css/css-variables.scss2
-rw-r--r--core/css/fonts.scss51
-rw-r--r--core/css/guest.css92
-rw-r--r--core/css/header.scss7
-rw-r--r--core/css/icons.scss1
-rw-r--r--core/css/inputs.scss12
-rw-r--r--core/css/public.scss2
-rw-r--r--core/css/publicshareauth.css22
-rw-r--r--core/css/styles.scss90
-rw-r--r--core/css/tooltip.scss6
-rw-r--r--core/css/variables.scss9
-rw-r--r--core/fonts/LICENSE.txt202
-rw-r--r--core/fonts/Nunito-Bold-latin-ext.woff2bin0 -> 18912 bytes
-rw-r--r--core/fonts/Nunito-Bold.ttfbin0 -> 115852 bytes
-rw-r--r--core/fonts/Nunito-Bold.woff2bin0 -> 19748 bytes
-rw-r--r--core/fonts/Nunito-Regular-latin-ext.woff2bin0 -> 18504 bytes
-rw-r--r--core/fonts/Nunito-Regular.ttfbin0 -> 113832 bytes
-rw-r--r--core/fonts/Nunito-Regular.woff2bin0 -> 19600 bytes
-rw-r--r--core/fonts/OFL.txt93
-rw-r--r--core/fonts/OpenSans-Bold.ttfbin121212 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Bold.woffbin68096 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Light.ttfbin117808 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Light.woffbin66792 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Regular.ttfbin118472 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Regular.woffbin68220 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Semibold.ttfbin119868 -> 0 bytes
-rw-r--r--core/fonts/OpenSans-Semibold.woffbin68880 -> 0 bytes
-rw-r--r--core/js/oc-dialogs.js33
-rw-r--r--core/js/setupchecks.js9
-rw-r--r--core/js/tests/specs/setupchecksSpec.js17
-rw-r--r--core/l10n/bg.js16
-rw-r--r--core/l10n/bg.json16
-rw-r--r--core/l10n/ca.js43
-rw-r--r--core/l10n/ca.json43
-rw-r--r--core/l10n/cs.js50
-rw-r--r--core/l10n/cs.json50
-rw-r--r--core/l10n/de.js8
-rw-r--r--core/l10n/de.json8
-rw-r--r--core/l10n/de_DE.js8
-rw-r--r--core/l10n/de_DE.json8
-rw-r--r--core/l10n/es.js9
-rw-r--r--core/l10n/es.json9
-rw-r--r--core/l10n/fi.js4
-rw-r--r--core/l10n/fi.json4
-rw-r--r--core/l10n/fr.js10
-rw-r--r--core/l10n/fr.json10
-rw-r--r--core/l10n/he.js1
-rw-r--r--core/l10n/he.json1
-rw-r--r--core/l10n/hu.js13
-rw-r--r--core/l10n/hu.json13
-rw-r--r--core/l10n/it.js8
-rw-r--r--core/l10n/it.json8
-rw-r--r--core/l10n/ja.js2
-rw-r--r--core/l10n/ja.json2
-rw-r--r--core/l10n/nb.js1
-rw-r--r--core/l10n/nb.json1
-rw-r--r--core/l10n/nl.js13
-rw-r--r--core/l10n/nl.json13
-rw-r--r--core/l10n/pl.js1
-rw-r--r--core/l10n/pl.json1
-rw-r--r--core/l10n/pt_BR.js16
-rw-r--r--core/l10n/pt_BR.json16
-rw-r--r--core/l10n/ro.js1
-rw-r--r--core/l10n/ro.json1
-rw-r--r--core/l10n/ru.js32
-rw-r--r--core/l10n/ru.json32
-rw-r--r--core/l10n/sk.js35
-rw-r--r--core/l10n/sk.json35
-rw-r--r--core/l10n/sl.js16
-rw-r--r--core/l10n/sl.json16
-rw-r--r--core/l10n/sr.js8
-rw-r--r--core/l10n/sr.json8
-rw-r--r--core/l10n/sv.js16
-rw-r--r--core/l10n/sv.json16
-rw-r--r--core/l10n/tr.js13
-rw-r--r--core/l10n/tr.json13
-rw-r--r--core/l10n/zh_CN.js36
-rw-r--r--core/l10n/zh_CN.json36
-rw-r--r--core/l10n/zh_TW.js16
-rw-r--r--core/l10n/zh_TW.json16
-rw-r--r--core/templates/filepicker.html4
-rw-r--r--lib/l10n/bg.js1
-rw-r--r--lib/l10n/bg.json1
-rw-r--r--lib/l10n/cs.js16
-rw-r--r--lib/l10n/cs.json16
-rw-r--r--lib/l10n/de.js16
-rw-r--r--lib/l10n/de.json16
-rw-r--r--lib/l10n/de_DE.js20
-rw-r--r--lib/l10n/de_DE.json20
-rw-r--r--lib/l10n/es.js16
-rw-r--r--lib/l10n/es.json16
-rw-r--r--lib/l10n/fi.js4
-rw-r--r--lib/l10n/fi.json4
-rw-r--r--lib/l10n/fr.js16
-rw-r--r--lib/l10n/fr.json16
-rw-r--r--lib/l10n/hu.js8
-rw-r--r--lib/l10n/hu.json8
-rw-r--r--lib/l10n/it.js16
-rw-r--r--lib/l10n/it.json16
-rw-r--r--lib/l10n/nl.js16
-rw-r--r--lib/l10n/nl.json16
-rw-r--r--lib/l10n/pt_BR.js16
-rw-r--r--lib/l10n/pt_BR.json16
-rw-r--r--lib/l10n/ro.js1
-rw-r--r--lib/l10n/ro.json1
-rw-r--r--lib/l10n/ru.js19
-rw-r--r--lib/l10n/ru.json19
-rw-r--r--lib/l10n/sr.js16
-rw-r--r--lib/l10n/sr.json16
-rw-r--r--lib/l10n/sv.js20
-rw-r--r--lib/l10n/sv.json20
-rw-r--r--lib/l10n/tr.js16
-rw-r--r--lib/l10n/tr.json16
-rw-r--r--lib/l10n/zh_CN.js56
-rw-r--r--lib/l10n/zh_CN.json56
-rw-r--r--lib/private/Accounts/AccountManager.php2
-rw-r--r--lib/private/Authentication/Token/Manager.php8
-rw-r--r--lib/private/Avatar.php33
-rw-r--r--lib/private/Encryption/DecryptAll.php6
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheWrapper.php6
-rw-r--r--lib/private/Files/FileInfo.php2
-rw-r--r--lib/private/Files/Filesystem.php5
-rw-r--r--lib/private/Files/Storage/Wrapper/Quota.php2
-rw-r--r--lib/private/Preview/TXT.php2
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicy.php8
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php2
-rw-r--r--lib/private/Server.php15
-rw-r--r--lib/public/Accounts/IAccount.php2
-rw-r--r--lib/public/AppFramework/Http/ContentSecurityPolicy.php3
-rw-r--r--lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php20
-rw-r--r--lib/public/IServerContainer.php6
-rw-r--r--public.php2
-rw-r--r--resources/app-info.xsd18
-rw-r--r--settings/Application.php16
-rw-r--r--settings/css/settings.scss4
-rw-r--r--settings/js/admin.js5
-rw-r--r--settings/l10n/ast.js2
-rw-r--r--settings/l10n/ast.json2
-rw-r--r--settings/l10n/bg.js17
-rw-r--r--settings/l10n/bg.json17
-rw-r--r--settings/l10n/ca.js2
-rw-r--r--settings/l10n/ca.json2
-rw-r--r--settings/l10n/cs.js12
-rw-r--r--settings/l10n/cs.json12
-rw-r--r--settings/l10n/de.js12
-rw-r--r--settings/l10n/de.json12
-rw-r--r--settings/l10n/de_DE.js12
-rw-r--r--settings/l10n/de_DE.json12
-rw-r--r--settings/l10n/el.js3
-rw-r--r--settings/l10n/el.json3
-rw-r--r--settings/l10n/en_GB.js2
-rw-r--r--settings/l10n/en_GB.json2
-rw-r--r--settings/l10n/es.js9
-rw-r--r--settings/l10n/es.json9
-rw-r--r--settings/l10n/es_419.js2
-rw-r--r--settings/l10n/es_419.json2
-rw-r--r--settings/l10n/es_AR.js2
-rw-r--r--settings/l10n/es_AR.json2
-rw-r--r--settings/l10n/es_CL.js2
-rw-r--r--settings/l10n/es_CL.json2
-rw-r--r--settings/l10n/es_CO.js2
-rw-r--r--settings/l10n/es_CO.json2
-rw-r--r--settings/l10n/es_CR.js2
-rw-r--r--settings/l10n/es_CR.json2
-rw-r--r--settings/l10n/es_DO.js2
-rw-r--r--settings/l10n/es_DO.json2
-rw-r--r--settings/l10n/es_EC.js2
-rw-r--r--settings/l10n/es_EC.json2
-rw-r--r--settings/l10n/es_GT.js2
-rw-r--r--settings/l10n/es_GT.json2
-rw-r--r--settings/l10n/es_HN.js2
-rw-r--r--settings/l10n/es_HN.json2
-rw-r--r--settings/l10n/es_MX.js2
-rw-r--r--settings/l10n/es_MX.json2
-rw-r--r--settings/l10n/es_NI.js2
-rw-r--r--settings/l10n/es_NI.json2
-rw-r--r--settings/l10n/es_PA.js2
-rw-r--r--settings/l10n/es_PA.json2
-rw-r--r--settings/l10n/es_PE.js2
-rw-r--r--settings/l10n/es_PE.json2
-rw-r--r--settings/l10n/es_PR.js2
-rw-r--r--settings/l10n/es_PR.json2
-rw-r--r--settings/l10n/es_PY.js2
-rw-r--r--settings/l10n/es_PY.json2
-rw-r--r--settings/l10n/es_SV.js2
-rw-r--r--settings/l10n/es_SV.json2
-rw-r--r--settings/l10n/es_UY.js2
-rw-r--r--settings/l10n/es_UY.json2
-rw-r--r--settings/l10n/et_EE.js2
-rw-r--r--settings/l10n/et_EE.json2
-rw-r--r--settings/l10n/eu.js2
-rw-r--r--settings/l10n/eu.json2
-rw-r--r--settings/l10n/fi.js8
-rw-r--r--settings/l10n/fi.json8
-rw-r--r--settings/l10n/fr.js14
-rw-r--r--settings/l10n/fr.json14
-rw-r--r--settings/l10n/he.js2
-rw-r--r--settings/l10n/he.json2
-rw-r--r--settings/l10n/hu.js37
-rw-r--r--settings/l10n/hu.json37
-rw-r--r--settings/l10n/is.js6
-rw-r--r--settings/l10n/is.json6
-rw-r--r--settings/l10n/it.js12
-rw-r--r--settings/l10n/it.json12
-rw-r--r--settings/l10n/ja.js2
-rw-r--r--settings/l10n/ja.json2
-rw-r--r--settings/l10n/ka_GE.js2
-rw-r--r--settings/l10n/ka_GE.json2
-rw-r--r--settings/l10n/ko.js2
-rw-r--r--settings/l10n/ko.json2
-rw-r--r--settings/l10n/nb.js2
-rw-r--r--settings/l10n/nb.json2
-rw-r--r--settings/l10n/nl.js9
-rw-r--r--settings/l10n/nl.json9
-rw-r--r--settings/l10n/pl.js6
-rw-r--r--settings/l10n/pl.json6
-rw-r--r--settings/l10n/pt_BR.js14
-rw-r--r--settings/l10n/pt_BR.json14
-rw-r--r--settings/l10n/pt_PT.js2
-rw-r--r--settings/l10n/pt_PT.json2
-rw-r--r--settings/l10n/ro.js18
-rw-r--r--settings/l10n/ro.json18
-rw-r--r--settings/l10n/ru.js10
-rw-r--r--settings/l10n/ru.json10
-rw-r--r--settings/l10n/sk.js2
-rw-r--r--settings/l10n/sk.json2
-rw-r--r--settings/l10n/sl.js6
-rw-r--r--settings/l10n/sl.json6
-rw-r--r--settings/l10n/sq.js2
-rw-r--r--settings/l10n/sq.json2
-rw-r--r--settings/l10n/sr.js9
-rw-r--r--settings/l10n/sr.json9
-rw-r--r--settings/l10n/sv.js10
-rw-r--r--settings/l10n/sv.json10
-rw-r--r--settings/l10n/tr.js18
-rw-r--r--settings/l10n/tr.json18
-rw-r--r--settings/l10n/zh_CN.js16
-rw-r--r--settings/l10n/zh_CN.json16
-rw-r--r--settings/l10n/zh_TW.js2
-rw-r--r--settings/l10n/zh_TW.json2
-rw-r--r--tests/Core/Controller/LoginControllerTest.php4
-rw-r--r--tests/acceptance/features/app-files.feature72
-rw-r--r--tests/acceptance/features/bootstrap/FileListContext.php16
-rw-r--r--tests/data/setUploadLimit/htaccess1
-rw-r--r--tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php15
-rw-r--r--tests/lib/AvatarTest.php6
-rw-r--r--tests/lib/Encryption/DecryptAllTest.php41
866 files changed, 6833 insertions, 4003 deletions
diff --git a/.htaccess b/.htaccess
index 70cd1f1595d..81a53f9989e 100644
--- a/.htaccess
+++ b/.htaccess
@@ -60,6 +60,7 @@
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
+ RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
index 1851bd4095b..784366e09f8 100644
--- a/.scrutinizer.yml
+++ b/.scrutinizer.yml
@@ -1,6 +1,13 @@
before_commands:
- 'git submodule update --init --recursive'
+build:
+ nodes:
+ analysis:
+ tests:
+ override:
+ - php-scrutinizer-run
+
checks:
php:
excluded_dependencies:
diff --git a/3rdparty b/3rdparty
-Subproject ae66d5646abbade298a6595e5cd29d5ce7ecbca
+Subproject 8633304ce214a7c0ff8e4fd72052a5ed7a444b6
diff --git a/apps/accessibility/css/fontdyslexic.scss b/apps/accessibility/css/fontdyslexic.scss
index 5df9bfb566c..45638271f90 100644
--- a/apps/accessibility/css/fontdyslexic.scss
+++ b/apps/accessibility/css/fontdyslexic.scss
@@ -19,4 +19,4 @@
src: url('../fonts/OpenDyslexic-Bold.woff') format('woff');
}
-$font-face: OpenDyslexic, 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+$font-face: OpenDyslexic, 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
diff --git a/apps/accessibility/css/themehighcontrast.scss b/apps/accessibility/css/themehighcontrast.scss
index 3d371365d56..ad6f9a5642a 100644
--- a/apps/accessibility/css/themehighcontrast.scss
+++ b/apps/accessibility/css/themehighcontrast.scss
@@ -1,29 +1,3 @@
-// Fonts
-@font-face {
- font-family: 'Open Sans';
- font-style: normal;
- font-weight: normal;
- src: local('Open Sans'), local('OpenSans'),
- url('../../../core/fonts/OpenSans-Regular.woff') format('woff');
-}
-
-/* overriding default light */
-@font-face {
- font-family: 'Open Sans';
- font-style: normal;
- font-weight: 300;
- src: local('Open Sans'), local('OpenSans'),
- url('../../../core/fonts/OpenSans-Regular.woff') format('woff');
-}
-
-@font-face {
- font-family: 'Open Sans';
- font-style: normal;
- font-weight: 500 700;
- src: local('Open Sans Bold'), local('OpenSans-Bold'),
- url('../../../core/fonts/OpenSans-Bold.woff') format('woff');
-}
-
// SCSS variables
$color-main-text: #000;
$color-main-background: #fff;
@@ -43,14 +17,6 @@ $color-box-shadow: $color-main-text;
$color-border: darken($color-main-background, 50%);
$color-border-dark: darken($color-main-background, 50%);
-$font-face: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
-
-
-// Font weight reset
-body {
- font-weight: 400;
-}
-
[class^='icon-'], [class*=' icon-'],
.action {
opacity: 1 !important;
diff --git a/apps/accessibility/js/accessibility.js b/apps/accessibility/js/accessibility.js
index b4cfcd58bdb..0bed33b1e32 100644
--- a/apps/accessibility/js/accessibility.js
+++ b/apps/accessibility/js/accessibility.js
@@ -4,12 +4,12 @@
* (c) 2014-2018 Evan You
* Released under the MIT License.
*/
-var r=Object.freeze({});function i(e){return void 0===e||null===e}function o(e){return void 0!==e&&null!==e}function a(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function c(e){return null!==e&&"object"==typeof e}var u=Object.prototype.toString;function l(e){return"[object Object]"===u.call(e)}function f(e){return"[object RegExp]"===u.call(e)}function p(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function d(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function v(e){var t=parseFloat(e);return isNaN(t)?e:t}function h(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var m=h("slot,component",!0),y=h("key,ref,slot,slot-scope,is");function g(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function b(e,t){return _.call(e,t)}function w(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var x=/-(\w)/g,$=w(function(e){return e.replace(x,function(e,t){return t?t.toUpperCase():""})}),C=w(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),k=/\B([A-Z])/g,A=w(function(e){return e.replace(k,"-$1").toLowerCase()});var O=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function T(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function S(e,t){for(var n in t)e[n]=t[n];return e}function E(e){for(var t={},n=0;n<e.length;n++)e[n]&&S(t,e[n]);return t}function j(e,t,n){}var I=function(e,t,n){return!1},L=function(e){return e};function N(e,t){if(e===t)return!0;var n=c(e),r=c(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{var i=Array.isArray(e),o=Array.isArray(t);if(i&&o)return e.length===t.length&&e.every(function(e,n){return N(e,t[n])});if(i||o)return!1;var a=Object.keys(e),s=Object.keys(t);return a.length===s.length&&a.every(function(n){return N(e[n],t[n])})}catch(e){return!1}}function D(e,t){for(var n=0;n<e.length;n++)if(N(e[n],t))return n;return-1}function P(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var M="data-server-rendered",R=["component","directive","filter"],F=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],B={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:I,isReservedAttr:I,isUnknownElement:I,getTagNamespace:j,parsePlatformTagName:L,mustUseProp:I,_lifecycleHooks:F};function U(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function H(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var q=/[^\w.$]/;var V,z="__proto__"in{},K="undefined"!=typeof window,J="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,X=J&&WXEnvironment.platform.toLowerCase(),W=K&&window.navigator.userAgent.toLowerCase(),G=W&&/msie|trident/.test(W),Z=W&&W.indexOf("msie 9.0")>0,Y=W&&W.indexOf("edge/")>0,Q=(W&&W.indexOf("android"),W&&/iphone|ipad|ipod|ios/.test(W)||"ios"===X),ee=(W&&/chrome\/\d+/.test(W),{}.watch),te=!1;if(K)try{var ne={};Object.defineProperty(ne,"passive",{get:function(){te=!0}}),window.addEventListener("test-passive",null,ne)}catch(e){}var re=function(){return void 0===V&&(V=!K&&!J&&void 0!==e&&"server"===e.process.env.VUE_ENV),V},ie=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function oe(e){return"function"==typeof e&&/native code/.test(e.toString())}var ae,se="undefined"!=typeof Symbol&&oe(Symbol)&&"undefined"!=typeof Reflect&&oe(Reflect.ownKeys);ae="undefined"!=typeof Set&&oe(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ce=j,ue=0,le=function(){this.id=ue++,this.subs=[]};le.prototype.addSub=function(e){this.subs.push(e)},le.prototype.removeSub=function(e){g(this.subs,e)},le.prototype.depend=function(){le.target&&le.target.addDep(this)},le.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t<n;t++)e[t].update()},le.target=null;var fe=[];function pe(e){le.target&&fe.push(le.target),le.target=e}function de(){le.target=fe.pop()}var ve=function(e,t,n,r,i,o,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},he={child:{configurable:!0}};he.child.get=function(){return this.componentInstance},Object.defineProperties(ve.prototype,he);var me=function(e){void 0===e&&(e="");var t=new ve;return t.text=e,t.isComment=!0,t};function ye(e){return new ve(void 0,void 0,void 0,String(e))}function ge(e){var t=new ve(e.tag,e.data,e.children,e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.isCloned=!0,t}var _e=Array.prototype,be=Object.create(_e);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(e){var t=_e[e];H(be,e,function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=t.apply(this,n),a=this.__ob__;switch(e){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})});var we=Object.getOwnPropertyNames(be),xe=!0;function $e(e){xe=e}var Ce=function(e){(this.value=e,this.dep=new le,this.vmCount=0,H(e,"__ob__",this),Array.isArray(e))?((z?ke:Ae)(e,be,we),this.observeArray(e)):this.walk(e)};function ke(e,t,n){e.__proto__=t}function Ae(e,t,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];H(e,o,t[o])}}function Oe(e,t){var n;if(c(e)&&!(e instanceof ve))return b(e,"__ob__")&&e.__ob__ instanceof Ce?n=e.__ob__:xe&&!re()&&(Array.isArray(e)||l(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Ce(e)),t&&n&&n.vmCount++,n}function Te(e,t,n,r,i){var o=new le,a=Object.getOwnPropertyDescriptor(e,t);if(!a||!1!==a.configurable){var s=a&&a.get;s||2!==arguments.length||(n=e[t]);var c=a&&a.set,u=!i&&Oe(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=s?s.call(e):n;return le.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(t)&&function e(t){for(var n=void 0,r=0,i=t.length;r<i;r++)(n=t[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(t))),t},set:function(t){var r=s?s.call(e):n;t===r||t!=t&&r!=r||(c?c.call(e,t):n=t,u=!i&&Oe(t),o.notify())}})}}function Se(e,t,n){if(Array.isArray(e)&&p(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(Te(r.value,t,n),r.dep.notify(),n):(e[t]=n,n)}function Ee(e,t){if(Array.isArray(e)&&p(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||b(e,t)&&(delete e[t],n&&n.dep.notify())}}Ce.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)Te(e,t[n])},Ce.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)Oe(e[t])};var je=B.optionMergeStrategies;function Ie(e,t){if(!t)return e;for(var n,r,i,o=Object.keys(t),a=0;a<o.length;a++)r=e[n=o[a]],i=t[n],b(e,n)?l(r)&&l(i)&&Ie(r,i):Se(e,n,i);return e}function Le(e,t,n){return n?function(){var r="function"==typeof t?t.call(n,n):t,i="function"==typeof e?e.call(n,n):e;return r?Ie(r,i):i}:t?e?function(){return Ie("function"==typeof t?t.call(this,this):t,"function"==typeof e?e.call(this,this):e)}:t:e}function Ne(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}function De(e,t,n,r){var i=Object.create(e||null);return t?S(i,t):i}je.data=function(e,t,n){return n?Le(e,t,n):t&&"function"!=typeof t?e:Le(e,t)},F.forEach(function(e){je[e]=Ne}),R.forEach(function(e){je[e+"s"]=De}),je.watch=function(e,t,n,r){if(e===ee&&(e=void 0),t===ee&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var i={};for(var o in S(i,e),t){var a=i[o],s=t[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},je.props=je.methods=je.inject=je.computed=function(e,t,n,r){if(!e)return t;var i=Object.create(null);return S(i,e),t&&S(i,t),i},je.provide=Le;var Pe=function(e,t){return void 0===t?e:t};function Me(e,t,n){"function"==typeof t&&(t=t.options),function(e,t){var n=e.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(o[$(i)]={type:null});else if(l(n))for(var a in n)i=n[a],o[$(a)]=l(i)?i:{type:i};e.props=o}}(t),function(e,t){var n=e.inject;if(n){var r=e.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(l(n))for(var o in n){var a=n[o];r[o]=l(a)?S({from:o},a):{from:a}}}}(t),function(e){var t=e.directives;if(t)for(var n in t){var r=t[n];"function"==typeof r&&(t[n]={bind:r,update:r})}}(t);var r=t.extends;if(r&&(e=Me(e,r,n)),t.mixins)for(var i=0,o=t.mixins.length;i<o;i++)e=Me(e,t.mixins[i],n);var a,s={};for(a in e)c(a);for(a in t)b(e,a)||c(a);function c(r){var i=je[r]||Pe;s[r]=i(e[r],t[r],n,r)}return s}function Re(e,t,n,r){if("string"==typeof n){var i=e[t];if(b(i,n))return i[n];var o=$(n);if(b(i,o))return i[o];var a=C(o);return b(i,a)?i[a]:i[n]||i[o]||i[a]}}function Fe(e,t,n,r){var i=t[e],o=!b(n,e),a=n[e],s=He(Boolean,i.type);if(s>-1)if(o&&!b(i,"default"))a=!1;else if(""===a||a===A(e)){var c=He(String,i.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(e,t,n){if(!b(t,"default"))return;var r=t.default;0;if(e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n])return e._props[n];return"function"==typeof r&&"Function"!==Be(t.type)?r.call(e):r}(r,i,e);var u=xe;$e(!0),Oe(a),$e(u)}return a}function Be(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Ue(e,t){return Be(e)===Be(t)}function He(e,t){if(!Array.isArray(t))return Ue(t,e)?0:-1;for(var n=0,r=t.length;n<r;n++)if(Ue(t[n],e))return n;return-1}function qe(e,t,n){if(t)for(var r=t;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,e,t,n))return}catch(e){Ve(e,r,"errorCaptured hook")}}Ve(e,t,n)}function Ve(e,t,n){if(B.errorHandler)try{return B.errorHandler.call(null,e,t,n)}catch(e){ze(e,null,"config.errorHandler")}ze(e,t,n)}function ze(e,t,n){if(!K&&!J||"undefined"==typeof console)throw e;console.error(e)}var Ke,Je,Xe=[],We=!1;function Ge(){We=!1;var e=Xe.slice(0);Xe.length=0;for(var t=0;t<e.length;t++)e[t]()}var Ze=!1;if(void 0!==n&&oe(n))Je=function(){n(Ge)};else if("undefined"==typeof MessageChannel||!oe(MessageChannel)&&"[object MessageChannelConstructor]"!==MessageChannel.toString())Je=function(){setTimeout(Ge,0)};else{var Ye=new MessageChannel,Qe=Ye.port2;Ye.port1.onmessage=Ge,Je=function(){Qe.postMessage(1)}}if("undefined"!=typeof Promise&&oe(Promise)){var et=Promise.resolve();Ke=function(){et.then(Ge),Q&&setTimeout(j)}}else Ke=Je;function tt(e,t){var n;if(Xe.push(function(){if(e)try{e.call(t)}catch(e){qe(e,t,"nextTick")}else n&&n(t)}),We||(We=!0,Ze?Je():Ke()),!e&&"undefined"!=typeof Promise)return new Promise(function(e){n=e})}var nt=new ae;function rt(e){!function e(t,n){var r,i;var o=Array.isArray(t);if(!o&&!c(t)||Object.isFrozen(t)||t instanceof ve)return;if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(r=t.length;r--;)e(t[r],n);else for(i=Object.keys(t),r=i.length;r--;)e(t[i[r]],n)}(e,nt),nt.clear()}var it,ot=w(function(e){var t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),r="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=r?e.slice(1):e,once:n,capture:r,passive:t}});function at(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=n.slice(),i=0;i<r.length;i++)r[i].apply(null,e)}return t.fns=e,t}function st(e,t,n,r,o){var a,s,c,u;for(a in e)s=e[a],c=t[a],u=ot(a),i(s)||(i(c)?(i(s.fns)&&(s=e[a]=at(s)),n(u.name,s,u.once,u.capture,u.passive,u.params)):s!==c&&(c.fns=s,e[a]=c));for(a in t)i(e[a])&&r((u=ot(a)).name,t[a],u.capture)}function ct(e,t,n){var r;e instanceof ve&&(e=e.data.hook||(e.data.hook={}));var s=e[t];function c(){n.apply(this,arguments),g(r.fns,c)}i(s)?r=at([c]):o(s.fns)&&a(s.merged)?(r=s).fns.push(c):r=at([s,c]),r.merged=!0,e[t]=r}function ut(e,t,n,r,i){if(o(t)){if(b(t,n))return e[n]=t[n],i||delete t[n],!0;if(b(t,r))return e[n]=t[r],i||delete t[r],!0}return!1}function lt(e){return s(e)?[ye(e)]:Array.isArray(e)?function e(t,n){var r=[];var c,u,l,f;for(c=0;c<t.length;c++)i(u=t[c])||"boolean"==typeof u||(l=r.length-1,f=r[l],Array.isArray(u)?u.length>0&&(ft((u=e(u,(n||"")+"_"+c))[0])&&ft(f)&&(r[l]=ye(f.text+u[0].text),u.shift()),r.push.apply(r,u)):s(u)?ft(f)?r[l]=ye(f.text+u):""!==u&&r.push(ye(u)):ft(u)&&ft(f)?r[l]=ye(f.text+u.text):(a(t._isVList)&&o(u.tag)&&i(u.key)&&o(n)&&(u.key="__vlist"+n+"_"+c+"__"),r.push(u)));return r}(e):void 0}function ft(e){return o(e)&&o(e.text)&&function(e){return!1===e}(e.isComment)}function pt(e,t){return(e.__esModule||se&&"Module"===e[Symbol.toStringTag])&&(e=e.default),c(e)?t.extend(e):e}function dt(e){return e.isComment&&e.asyncFactory}function vt(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(o(n)&&(o(n.componentOptions)||dt(n)))return n}}function ht(e,t,n){n?it.$once(e,t):it.$on(e,t)}function mt(e,t){it.$off(e,t)}function yt(e,t,n){it=e,st(t,n||{},ht,mt),it=void 0}function gt(e,t){var n={};if(!e)return n;for(var r=0,i=e.length;r<i;r++){var o=e[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==t&&o.fnContext!==t||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var u in n)n[u].every(_t)&&delete n[u];return n}function _t(e){return e.isComment&&!e.asyncFactory||" "===e.text}function bt(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?bt(e[n],t):t[e[n].key]=e[n].fn;return t}var wt=null;function xt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function $t(e,t){if(t){if(e._directInactive=!1,xt(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)$t(e.$children[n]);Ct(e,"activated")}}function Ct(e,t){pe();var n=e.$options[t];if(n)for(var r=0,i=n.length;r<i;r++)try{n[r].call(e)}catch(n){qe(n,e,t+" hook")}e._hasHookEvent&&e.$emit("hook:"+t),de()}var kt=[],At=[],Ot={},Tt=!1,St=!1,Et=0;function jt(){var e,t;for(St=!0,kt.sort(function(e,t){return e.id-t.id}),Et=0;Et<kt.length;Et++)t=(e=kt[Et]).id,Ot[t]=null,e.run();var n=At.slice(),r=kt.slice();Et=kt.length=At.length=0,Ot={},Tt=St=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,$t(e[t],!0)}(n),function(e){var t=e.length;for(;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&Ct(r,"updated")}}(r),ie&&B.devtools&&ie.emit("flush")}var It=0,Lt=function(e,t,n,r,i){this.vm=e,i&&(e._watcher=this),e._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++It,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ae,this.newDepIds=new ae,this.expression="","function"==typeof t?this.getter=t:(this.getter=function(e){if(!q.test(e)){var t=e.split(".");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}(t),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};Lt.prototype.get=function(){var e;pe(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;qe(e,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&rt(e),de(),this.cleanupDeps()}return e},Lt.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},Lt.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},Lt.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==Ot[t]){if(Ot[t]=!0,St){for(var n=kt.length-1;n>Et&&kt[n].id>e.id;)n--;kt.splice(n+1,0,e)}else kt.push(e);Tt||(Tt=!0,tt(jt))}}(this)},Lt.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||c(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){qe(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},Lt.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Lt.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},Lt.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var Nt={enumerable:!0,configurable:!0,get:j,set:j};function Dt(e,t,n){Nt.get=function(){return this[t][n]},Nt.set=function(e){this[t][n]=e},Object.defineProperty(e,n,Nt)}function Pt(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&$e(!1);var o=function(o){i.push(o);var a=Fe(o,t,n,e);Te(r,o,a),o in e||Dt(e,"_props",o)};for(var a in t)o(a);$e(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]=null==t[n]?j:O(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;l(t=e._data="function"==typeof t?function(e,t){pe();try{return e.call(t,t)}catch(e){return qe(e,t,"data()"),{}}finally{de()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];0,r&&b(r,o)||U(o)||Dt(e,"_data",o)}Oe(t,!0)}(e):Oe(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=re();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;0,r||(n[i]=new Lt(e,a||j,j,Mt)),i in e||Rt(e,i,o)}}(e,t.computed),t.watch&&t.watch!==ee&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)Bt(e,n,r[i]);else Bt(e,n,r)}}(e,t.watch)}var Mt={lazy:!0};function Rt(e,t,n){var r=!re();"function"==typeof n?(Nt.get=r?Ft(t):n,Nt.set=j):(Nt.get=n.get?r&&!1!==n.cache?Ft(t):n.get:j,Nt.set=n.set?n.set:j),Object.defineProperty(e,t,Nt)}function Ft(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),le.target&&t.depend(),t.value}}function Bt(e,t,n,r){return l(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}function Ut(e,t){if(e){for(var n=Object.create(null),r=se?Reflect.ownKeys(e).filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}):Object.keys(e),i=0;i<r.length;i++){for(var o=r[i],a=e[o].from,s=t;s;){if(s._provided&&b(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if("default"in e[o]){var c=e[o].default;n[o]="function"==typeof c?c.call(t):c}else 0}return n}}function Ht(e,t){var n,r,i,a,s;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,i=e.length;r<i;r++)n[r]=t(e[r],r);else if("number"==typeof e)for(n=new Array(e),r=0;r<e;r++)n[r]=t(r+1,r);else if(c(e))for(a=Object.keys(e),n=new Array(a.length),r=0,i=a.length;r<i;r++)s=a[r],n[r]=t(e[s],s,r);return o(n)&&(n._isVList=!0),n}function qt(e,t,n,r){var i,o=this.$scopedSlots[e];if(o)n=n||{},r&&(n=S(S({},r),n)),i=o(n)||t;else{var a=this.$slots[e];a&&(a._rendered=!0),i=a||t}var s=n&&n.slot;return s?this.$createElement("template",{slot:s},i):i}function Vt(e){return Re(this.$options,"filters",e)||L}function zt(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function Kt(e,t,n,r,i){var o=B.keyCodes[t]||n;return i&&r&&!B.keyCodes[t]?zt(i,r):o?zt(o,e):r?A(r)!==t:void 0}function Jt(e,t,n,r,i){if(n)if(c(n)){var o;Array.isArray(n)&&(n=E(n));var a=function(a){if("class"===a||"style"===a||y(a))o=e;else{var s=e.attrs&&e.attrs.type;o=r||B.mustUseProp(t,s,a)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}a in o||(o[a]=n[a],i&&((e.on||(e.on={}))["update:"+a]=function(e){n[a]=e}))};for(var s in n)a(s)}else;return e}function Xt(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];return r&&!t?r:(Gt(r=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),"__static__"+e,!1),r)}function Wt(e,t,n){return Gt(e,"__once__"+t+(n?"_"+n:""),!0),e}function Gt(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&"string"!=typeof e[r]&&Zt(e[r],t+"_"+r,n);else Zt(e,t,n)}function Zt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function Yt(e,t){if(t)if(l(t)){var n=e.on=e.on?S({},e.on):{};for(var r in t){var i=n[r],o=t[r];n[r]=i?[].concat(i,o):o}}else;return e}function Qt(e){e._o=Wt,e._n=v,e._s=d,e._l=Ht,e._t=qt,e._q=N,e._i=D,e._m=Xt,e._f=Vt,e._k=Kt,e._b=Jt,e._v=ye,e._e=me,e._u=bt,e._g=Yt}function en(e,t,n,i,o){var s,c=o.options;b(i,"_uid")?(s=Object.create(i))._original=i:(s=i,i=i._original);var u=a(c._compiled),l=!u;this.data=e,this.props=t,this.children=n,this.parent=i,this.listeners=e.on||r,this.injections=Ut(c.inject,i),this.slots=function(){return gt(n,i)},u&&(this.$options=c,this.$slots=this.slots(),this.$scopedSlots=e.scopedSlots||r),c._scopeId?this._c=function(e,t,n,r){var o=un(s,e,t,n,r,l);return o&&!Array.isArray(o)&&(o.fnScopeId=c._scopeId,o.fnContext=i),o}:this._c=function(e,t,n,r){return un(s,e,t,n,r,l)}}function tn(e,t,n,r){var i=ge(e);return i.fnContext=n,i.fnOptions=r,t.slot&&((i.data||(i.data={})).slot=t.slot),i}function nn(e,t){for(var n in t)e[$(n)]=t[n]}Qt(en.prototype);var rn={init:function(e,t,n,r){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var i=e;rn.prepatch(i,i)}else{(e.componentInstance=function(e,t,n,r){var i={_isComponent:!0,parent:t,_parentVnode:e,_parentElm:n||null,_refElm:r||null},a=e.data.inlineTemplate;o(a)&&(i.render=a.render,i.staticRenderFns=a.staticRenderFns);return new e.componentOptions.Ctor(i)}(e,wt,n,r)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var n=t.componentOptions;!function(e,t,n,i,o){var a=!!(o||e.$options._renderChildren||i.data.scopedSlots||e.$scopedSlots!==r);if(e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=o,e.$attrs=i.data.attrs||r,e.$listeners=n||r,t&&e.$options.props){$e(!1);for(var s=e._props,c=e.$options._propKeys||[],u=0;u<c.length;u++){var l=c[u],f=e.$options.props;s[l]=Fe(l,f,t,e)}$e(!0),e.$options.propsData=t}n=n||r;var p=e.$options._parentListeners;e.$options._parentListeners=n,yt(e,n,p),a&&(e.$slots=gt(o,i.context),e.$forceUpdate())}(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t=e.context,n=e.componentInstance;n._isMounted||(n._isMounted=!0,Ct(n,"mounted")),e.data.keepAlive&&(t._isMounted?function(e){e._inactive=!1,At.push(e)}(n):$t(n,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(!(n&&(t._directInactive=!0,xt(t))||t._inactive)){t._inactive=!0;for(var r=0;r<t.$children.length;r++)e(t.$children[r]);Ct(t,"deactivated")}}(t,!0):t.$destroy())}},on=Object.keys(rn);function an(e,t,n,s,u){if(!i(e)){var l=n.$options._base;if(c(e)&&(e=l.extend(e)),"function"==typeof e){var f;if(i(e.cid)&&void 0===(e=function(e,t,n){if(a(e.error)&&o(e.errorComp))return e.errorComp;if(o(e.resolved))return e.resolved;if(a(e.loading)&&o(e.loadingComp))return e.loadingComp;if(!o(e.contexts)){var r=e.contexts=[n],s=!0,u=function(){for(var e=0,t=r.length;e<t;e++)r[e].$forceUpdate()},l=P(function(n){e.resolved=pt(n,t),s||u()}),f=P(function(t){o(e.errorComp)&&(e.error=!0,u())}),p=e(l,f);return c(p)&&("function"==typeof p.then?i(e.resolved)&&p.then(l,f):o(p.component)&&"function"==typeof p.component.then&&(p.component.then(l,f),o(p.error)&&(e.errorComp=pt(p.error,t)),o(p.loading)&&(e.loadingComp=pt(p.loading,t),0===p.delay?e.loading=!0:setTimeout(function(){i(e.resolved)&&i(e.error)&&(e.loading=!0,u())},p.delay||200)),o(p.timeout)&&setTimeout(function(){i(e.resolved)&&f(null)},p.timeout))),s=!1,e.loading?e.loadingComp:e.resolved}e.contexts.push(n)}(f=e,l,n)))return function(e,t,n,r,i){var o=me();return o.asyncFactory=e,o.asyncMeta={data:t,context:n,children:r,tag:i},o}(f,t,n,s,u);t=t||{},fn(e),o(t.model)&&function(e,t){var n=e.model&&e.model.prop||"value",r=e.model&&e.model.event||"input";(t.props||(t.props={}))[n]=t.model.value;var i=t.on||(t.on={});o(i[r])?i[r]=[t.model.callback].concat(i[r]):i[r]=t.model.callback}(e.options,t);var p=function(e,t,n){var r=t.options.props;if(!i(r)){var a={},s=e.attrs,c=e.props;if(o(s)||o(c))for(var u in r){var l=A(u);ut(a,c,u,l,!0)||ut(a,s,u,l,!1)}return a}}(t,e);if(a(e.options.functional))return function(e,t,n,i,a){var s=e.options,c={},u=s.props;if(o(u))for(var l in u)c[l]=Fe(l,u,t||r);else o(n.attrs)&&nn(c,n.attrs),o(n.props)&&nn(c,n.props);var f=new en(n,c,a,i,e),p=s.render.call(null,f._c,f);if(p instanceof ve)return tn(p,n,f.parent,s);if(Array.isArray(p)){for(var d=lt(p)||[],v=new Array(d.length),h=0;h<d.length;h++)v[h]=tn(d[h],n,f.parent,s);return v}}(e,p,t,n,s);var d=t.on;if(t.on=t.nativeOn,a(e.options.abstract)){var v=t.slot;t={},v&&(t.slot=v)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<on.length;n++){var r=on[n];t[r]=rn[r]}}(t);var h=e.options.name||u;return new ve("vue-component-"+e.cid+(h?"-"+h:""),t,void 0,void 0,void 0,n,{Ctor:e,propsData:p,listeners:d,tag:u,children:s},f)}}}var sn=1,cn=2;function un(e,t,n,r,u,l){return(Array.isArray(n)||s(n))&&(u=r,r=n,n=void 0),a(l)&&(u=cn),function(e,t,n,r,s){if(o(n)&&o(n.__ob__))return me();o(n)&&o(n.is)&&(t=n.is);if(!t)return me();0;Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);s===cn?r=lt(r):s===sn&&(r=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(r));var u,l;if("string"==typeof t){var f;l=e.$vnode&&e.$vnode.ns||B.getTagNamespace(t),u=B.isReservedTag(t)?new ve(B.parsePlatformTagName(t),n,r,void 0,void 0,e):o(f=Re(e.$options,"components",t))?an(f,n,e,r,t):new ve(t,n,r,void 0,void 0,e)}else u=an(t,n,e,r);return Array.isArray(u)?u:o(u)?(o(l)&&function e(t,n,r){t.ns=n;"foreignObject"===t.tag&&(n=void 0,r=!0);if(o(t.children))for(var s=0,c=t.children.length;s<c;s++){var u=t.children[s];o(u.tag)&&(i(u.ns)||a(r)&&"svg"!==u.tag)&&e(u,n,r)}}(u,l),o(n)&&function(e){c(e.style)&&rt(e.style);c(e.class)&&rt(e.class)}(n),u):me()}(e,t,n,r,u)}var ln=0;function fn(e){var t=e.options;if(e.super){var n=fn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.extendOptions,i=e.sealedOptions;for(var o in n)n[o]!==i[o]&&(t||(t={}),t[o]=pn(n[o],r[o],i[o]));return t}(e);r&&S(e.extendOptions,r),(t=e.options=Me(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function pn(e,t,n){if(Array.isArray(e)){var r=[];n=Array.isArray(n)?n:[n],t=Array.isArray(t)?t:[t];for(var i=0;i<e.length;i++)(t.indexOf(e[i])>=0||n.indexOf(e[i])<0)&&r.push(e[i]);return r}return e}function dn(e){this._init(e)}function vn(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,i=e._Ctor||(e._Ctor={});if(i[r])return i[r];var o=e.name||n.options.name;var a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Me(n.options,e),a.super=n,a.options.props&&function(e){var t=e.options.props;for(var n in t)Dt(e.prototype,"_props",n)}(a),a.options.computed&&function(e){var t=e.options.computed;for(var n in t)Rt(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach(function(e){a[e]=n[e]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=S({},a.options),i[r]=a,a}}function hn(e){return e&&(e.Ctor.options.name||e.tag)}function mn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!f(e)&&e.test(t)}function yn(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=hn(a.componentOptions);s&&!t(s)&&gn(n,o,r,i)}}}function gn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,g(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=ln++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r,n._parentElm=t._parentElm,n._refElm=t._refElm;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Me(fn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&yt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=gt(t._renderChildren,i),e.$scopedSlots=r,e._c=function(t,n,r,i){return un(e,t,n,r,i,!1)},e.$createElement=function(t,n,r,i){return un(e,t,n,r,i,!0)};var o=n&&n.data;Te(e,"$attrs",o&&o.attrs||r,null,!0),Te(e,"$listeners",t._parentListeners||r,null,!0)}(t),Ct(t,"beforeCreate"),function(e){var t=Ut(e.$options.inject,e);t&&($e(!1),Object.keys(t).forEach(function(n){Te(e,n,t[n])}),$e(!0))}(t),Pt(t),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(t),Ct(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(dn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=Se,e.prototype.$delete=Ee,e.prototype.$watch=function(e,t,n){if(l(t))return Bt(this,e,t,n);(n=n||{}).user=!0;var r=new Lt(this,e,t,n);return n.immediate&&t.call(this,r.value),function(){r.teardown()}}}(dn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){if(Array.isArray(e))for(var r=0,i=e.length;r<i;r++)this.$on(e[r],n);else(this._events[e]||(this._events[e]=[])).push(n),t.test(e)&&(this._hasHookEvent=!0);return this},e.prototype.$once=function(e,t){var n=this;function r(){n.$off(e,r),t.apply(n,arguments)}return r.fn=t,n.$on(e,r),n},e.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var r=0,i=e.length;r<i;r++)this.$off(e[r],t);return n}var o=n._events[e];if(!o)return n;if(!t)return n._events[e]=null,n;if(t)for(var a,s=o.length;s--;)if((a=o[s])===t||a.fn===t){o.splice(s,1);break}return n},e.prototype.$emit=function(e){var t=this._events[e];if(t){t=t.length>1?T(t):t;for(var n=T(arguments,1),r=0,i=t.length;r<i;r++)try{t[r].apply(this,n)}catch(t){qe(t,this,'event handler for "'+e+'"')}}return this}}(dn),function(e){e.prototype._update=function(e,t){var n=this;n._isMounted&&Ct(n,"beforeUpdate");var r=n.$el,i=n._vnode,o=wt;wt=n,n._vnode=e,i?n.$el=n.__patch__(i,e):(n.$el=n.__patch__(n.$el,e,t,!1,n.$options._parentElm,n.$options._refElm),n.$options._parentElm=n.$options._refElm=null),wt=o,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Ct(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||g(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Ct(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(dn),function(e){Qt(e.prototype),e.prototype.$nextTick=function(e){return tt(e,this)},e.prototype._render=function(){var e,t=this,n=t.$options,i=n.render,o=n._parentVnode;o&&(t.$scopedSlots=o.data.scopedSlots||r),t.$vnode=o;try{e=i.call(t._renderProxy,t.$createElement)}catch(n){qe(n,t,"render"),e=t._vnode}return e instanceof ve||(e=me()),e.parent=o,e}}(dn);var _n=[String,RegExp,Array],bn={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:_n,exclude:_n,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)gn(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",function(t){yn(e,function(e){return mn(t,e)})}),this.$watch("exclude",function(t){yn(e,function(e){return!mn(t,e)})})},render:function(){var e=this.$slots.default,t=vt(e),n=t&&t.componentOptions;if(n){var r=hn(n),i=this.include,o=this.exclude;if(i&&(!r||!mn(i,r))||o&&r&&mn(o,r))return t;var a=this.cache,s=this.keys,c=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;a[c]?(t.componentInstance=a[c].componentInstance,g(s,c),s.push(c)):(a[c]=t,s.push(c),this.max&&s.length>parseInt(this.max)&&gn(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return B}};Object.defineProperty(e,"config",t),e.util={warn:ce,extend:S,mergeOptions:Me,defineReactive:Te},e.set=Se,e.delete=Ee,e.nextTick=tt,e.options=Object.create(null),R.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,S(e.options.components,bn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=T(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Me(this.options,e),this}}(e),vn(e),function(e){R.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&l(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}(e)}(dn),Object.defineProperty(dn.prototype,"$isServer",{get:re}),Object.defineProperty(dn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(dn,"FunctionalRenderContext",{value:en}),dn.version="2.5.17";var wn=h("style,class"),xn=h("input,textarea,option,select,progress"),$n=function(e,t,n){return"value"===n&&xn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Cn=h("contenteditable,draggable,spellcheck"),kn=h("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),An="http://www.w3.org/1999/xlink",On=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Tn=function(e){return On(e)?e.slice(6,e.length):""},Sn=function(e){return null==e||!1===e};function En(e){for(var t=e.data,n=e,r=e;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=jn(r.data,t));for(;o(n=n.parent);)n&&n.data&&(t=jn(t,n.data));return function(e,t){if(o(e)||o(t))return In(e,Ln(t));return""}(t.staticClass,t.class)}function jn(e,t){return{staticClass:In(e.staticClass,t.staticClass),class:o(e.class)?[e.class,t.class]:t.class}}function In(e,t){return e?t?e+" "+t:e:t||""}function Ln(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,i=e.length;r<i;r++)o(t=Ln(e[r]))&&""!==t&&(n&&(n+=" "),n+=t);return n}(e):c(e)?function(e){var t="";for(var n in e)e[n]&&(t&&(t+=" "),t+=n);return t}(e):"string"==typeof e?e:""}var Nn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Dn=h("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Pn=h("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Mn=function(e){return Dn(e)||Pn(e)};function Rn(e){return Pn(e)?"svg":"math"===e?"math":void 0}var Fn=Object.create(null);var Bn=h("text,number,password,search,email,tel,url");function Un(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}var Hn=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)},createElementNS:function(e,t){return document.createElementNS(Nn[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),qn={create:function(e,t){Vn(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Vn(e,!0),Vn(t))},destroy:function(e){Vn(e,!0)}};function Vn(e,t){var n=e.data.ref;if(o(n)){var r=e.context,i=e.componentInstance||e.elm,a=r.$refs;t?Array.isArray(a[n])?g(a[n],i):a[n]===i&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var zn=new ve("",{},[]),Kn=["create","activate","update","remove","destroy"];function Jn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&o(e.data)===o(t.data)&&function(e,t){if("input"!==e.tag)return!0;var n,r=o(n=e.data)&&o(n=n.attrs)&&n.type,i=o(n=t.data)&&o(n=n.attrs)&&n.type;return r===i||Bn(r)&&Bn(i)}(e,t)||a(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function Xn(e,t,n){var r,i,a={};for(r=t;r<=n;++r)o(i=e[r].key)&&(a[i]=r);return a}var Wn={create:Gn,update:Gn,destroy:function(e){Gn(e,zn)}};function Gn(e,t){(e.data.directives||t.data.directives)&&function(e,t){var n,r,i,o=e===zn,a=t===zn,s=Yn(e.data.directives,e.context),c=Yn(t.data.directives,t.context),u=[],l=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,er(i,"update",t,e),i.def&&i.def.componentUpdated&&l.push(i)):(er(i,"bind",t,e),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n<u.length;n++)er(u[n],"inserted",t,e)};o?ct(t,"insert",f):f()}l.length&&ct(t,"postpatch",function(){for(var n=0;n<l.length;n++)er(l[n],"componentUpdated",t,e)});if(!o)for(n in s)c[n]||er(s[n],"unbind",e,e,a)}(e,t)}var Zn=Object.create(null);function Yn(e,t){var n,r,i=Object.create(null);if(!e)return i;for(n=0;n<e.length;n++)(r=e[n]).modifiers||(r.modifiers=Zn),i[Qn(r)]=r,r.def=Re(t.$options,"directives",r.name);return i}function Qn(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{}).join(".")}function er(e,t,n,r,i){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,r,i)}catch(r){qe(r,n.context,"directive "+e.name+" "+t+" hook")}}var tr=[qn,Wn];function nr(e,t){var n=t.componentOptions;if(!(o(n)&&!1===n.Ctor.options.inheritAttrs||i(e.data.attrs)&&i(t.data.attrs))){var r,a,s=t.elm,c=e.data.attrs||{},u=t.data.attrs||{};for(r in o(u.__ob__)&&(u=t.data.attrs=S({},u)),u)a=u[r],c[r]!==a&&rr(s,r,a);for(r in(G||Y)&&u.value!==c.value&&rr(s,"value",u.value),c)i(u[r])&&(On(r)?s.removeAttributeNS(An,Tn(r)):Cn(r)||s.removeAttribute(r))}}function rr(e,t,n){e.tagName.indexOf("-")>-1?ir(e,t,n):kn(t)?Sn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Cn(t)?e.setAttribute(t,Sn(n)||"false"===n?"false":"true"):On(t)?Sn(n)?e.removeAttributeNS(An,Tn(t)):e.setAttributeNS(An,t,n):ir(e,t,n)}function ir(e,t,n){if(Sn(n))e.removeAttribute(t);else{if(G&&!Z&&"TEXTAREA"===e.tagName&&"placeholder"===t&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var or={create:nr,update:nr};function ar(e,t){var n=t.elm,r=t.data,a=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=En(t),c=n._transitionClasses;o(c)&&(s=In(s,Ln(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var sr,cr,ur,lr,fr,pr,dr={create:ar,update:ar},vr=/[\w).+\-_$\]]/;function hr(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r<e.length;r++)if(n=t,t=e.charCodeAt(r),a)39===t&&92!==n&&(a=!1);else if(s)34===t&&92!==n&&(s=!1);else if(c)96===t&&92!==n&&(c=!1);else if(u)47===t&&92!==n&&(u=!1);else if(124!==t||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||l||f||p){switch(t){case 34:s=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:p++;break;case 41:p--;break;case 91:f++;break;case 93:f--;break;case 123:l++;break;case 125:l--}if(47===t){for(var v=r-1,h=void 0;v>=0&&" "===(h=e.charAt(v));v--);h&&vr.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r<o.length;r++)i=mr(i,o[r]);return i}function mr(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";var r=t.slice(0,n),i=t.slice(n+1);return'_f("'+r+'")('+e+(")"!==i?","+i:i)}function yr(e){console.error("[Vue compiler]: "+e)}function gr(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function _r(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plain=!1}function br(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plain=!1}function wr(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}function xr(e,t,n,r,i,o){(e.directives||(e.directives=[])).push({name:t,rawName:n,value:r,arg:i,modifiers:o}),e.plain=!1}function $r(e,t,n,i,o,a){var s;(i=i||r).capture&&(delete i.capture,t="!"+t),i.once&&(delete i.once,t="~"+t),i.passive&&(delete i.passive,t="&"+t),"click"===t&&(i.right?(t="contextmenu",delete i.right):i.middle&&(t="mouseup")),i.native?(delete i.native,s=e.nativeEvents||(e.nativeEvents={})):s=e.events||(e.events={});var c={value:n.trim()};i!==r&&(c.modifiers=i);var u=s[t];Array.isArray(u)?o?u.unshift(c):u.push(c):s[t]=u?o?[c,u]:[u,c]:c,e.plain=!1}function Cr(e,t,n){var r=kr(e,":"+t)||kr(e,"v-bind:"+t);if(null!=r)return hr(r);if(!1!==n){var i=kr(e,t);if(null!=i)return JSON.stringify(i)}}function kr(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsList,o=0,a=i.length;o<a;o++)if(i[o].name===t){i.splice(o,1);break}return n&&delete e.attrsMap[t],r}function Ar(e,t,n){var r=n||{},i=r.number,o="$$v";r.trim&&(o="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(o="_n("+o+")");var a=Or(t,o);e.model={value:"("+t+")",expression:'"'+t+'"',callback:"function ($$v) {"+a+"}"}}function Or(e,t){var n=function(e){if(e=e.trim(),sr=e.length,e.indexOf("[")<0||e.lastIndexOf("]")<sr-1)return(lr=e.lastIndexOf("."))>-1?{exp:e.slice(0,lr),key:'"'+e.slice(lr+1)+'"'}:{exp:e,key:null};cr=e,lr=fr=pr=0;for(;!Sr();)Er(ur=Tr())?Ir(ur):91===ur&&jr(ur);return{exp:e.slice(0,fr),key:e.slice(fr+1,pr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Tr(){return cr.charCodeAt(++lr)}function Sr(){return lr>=sr}function Er(e){return 34===e||39===e}function jr(e){var t=1;for(fr=lr;!Sr();)if(Er(e=Tr()))Ir(e);else if(91===e&&t++,93===e&&t--,0===t){pr=lr;break}}function Ir(e){for(var t=e;!Sr()&&(e=Tr())!==t;);}var Lr,Nr="__r",Dr="__c";function Pr(e,t,n,r,i){t=function(e){return e._withTask||(e._withTask=function(){Ze=!0;var t=e.apply(null,arguments);return Ze=!1,t})}(t),n&&(t=function(e,t,n){var r=Lr;return function i(){null!==e.apply(null,arguments)&&Mr(t,i,n,r)}}(t,e,r)),Lr.addEventListener(e,t,te?{capture:r,passive:i}:r)}function Mr(e,t,n,r){(r||Lr).removeEventListener(e,t._withTask||t,n)}function Rr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Lr=t.elm,function(e){if(o(e[Nr])){var t=G?"change":"input";e[t]=[].concat(e[Nr],e[t]||[]),delete e[Nr]}o(e[Dr])&&(e.change=[].concat(e[Dr],e.change||[]),delete e[Dr])}(n),st(n,r,Pr,Mr,t.context),Lr=void 0}}var Fr={create:Rr,update:Rr};function Br(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,a=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in o(c.__ob__)&&(c=t.data.domProps=S({},c)),s)i(c[n])&&(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n){a._value=r;var u=i(r)?"":String(r);Ur(a,u)&&(a.value=u)}else a[n]=r}}}function Ur(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(o(r)){if(r.lazy)return!1;if(r.number)return v(n)!==v(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Hr={create:Br,update:Br},qr=w(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function Vr(e){var t=zr(e.style);return e.staticStyle?S(e.staticStyle,t):t}function zr(e){return Array.isArray(e)?E(e):"string"==typeof e?qr(e):e}var Kr,Jr=/^--/,Xr=/\s*!important$/,Wr=function(e,t,n){if(Jr.test(t))e.style.setProperty(t,n);else if(Xr.test(n))e.style.setProperty(t,n.replace(Xr,""),"important");else{var r=Zr(t);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)e.style[r]=n[i];else e.style[r]=n}},Gr=["Webkit","Moz","ms"],Zr=w(function(e){if(Kr=Kr||document.createElement("div").style,"filter"!==(e=$(e))&&e in Kr)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<Gr.length;n++){var r=Gr[n]+t;if(r in Kr)return r}});function Yr(e,t){var n=t.data,r=e.data;if(!(i(n.staticStyle)&&i(n.style)&&i(r.staticStyle)&&i(r.style))){var a,s,c=t.elm,u=r.staticStyle,l=r.normalizedStyle||r.style||{},f=u||l,p=zr(t.data.style)||{};t.data.normalizedStyle=o(p.__ob__)?S({},p):p;var d=function(e,t){var n,r={};if(t)for(var i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=Vr(i.data))&&S(r,n);(n=Vr(e.data))&&S(r,n);for(var o=e;o=o.parent;)o.data&&(n=Vr(o.data))&&S(r,n);return r}(t,!0);for(s in f)i(d[s])&&Wr(c,s,"");for(s in d)(a=d[s])!==f[s]&&Wr(c,s,null==a?"":a)}}var Qr={create:Yr,update:Yr};function ei(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function ti(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function ni(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&S(t,ri(e.name||"v")),S(t,e),t}return"string"==typeof e?ri(e):void 0}}var ri=w(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),ii=K&&!Z,oi="transition",ai="animation",si="transition",ci="transitionend",ui="animation",li="animationend";ii&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(si="WebkitTransition",ci="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ui="WebkitAnimation",li="webkitAnimationEnd"));var fi=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function pi(e){fi(function(){fi(e)})}function di(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),ei(e,t))}function vi(e,t){e._transitionClasses&&g(e._transitionClasses,t),ti(e,t)}function hi(e,t,n){var r=yi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===oi?ci:li,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c<a&&u()},o+1),e.addEventListener(s,l)}var mi=/\b(transform|all)(,|$)/;function yi(e,t){var n,r=window.getComputedStyle(e),i=r[si+"Delay"].split(", "),o=r[si+"Duration"].split(", "),a=gi(i,o),s=r[ui+"Delay"].split(", "),c=r[ui+"Duration"].split(", "),u=gi(s,c),l=0,f=0;return t===oi?a>0&&(n=oi,l=a,f=o.length):t===ai?u>0&&(n=ai,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?oi:ai:null)?n===oi?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===oi&&mi.test(r[si+"Property"])}}function gi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map(function(t,n){return _i(t)+_i(e[n])}))}function _i(e){return 1e3*Number(e.slice(0,-1))}function bi(e,t){var n=e.elm;o(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=ni(e.data.transition);if(!i(r)&&!o(n._enterCb)&&1===n.nodeType){for(var a=r.css,s=r.type,u=r.enterClass,l=r.enterToClass,f=r.enterActiveClass,p=r.appearClass,d=r.appearToClass,h=r.appearActiveClass,m=r.beforeEnter,y=r.enter,g=r.afterEnter,_=r.enterCancelled,b=r.beforeAppear,w=r.appear,x=r.afterAppear,$=r.appearCancelled,C=r.duration,k=wt,A=wt.$vnode;A&&A.parent;)k=(A=A.parent).context;var O=!k._isMounted||!e.isRootInsert;if(!O||w||""===w){var T=O&&p?p:u,S=O&&h?h:f,E=O&&d?d:l,j=O&&b||m,I=O&&"function"==typeof w?w:y,L=O&&x||g,N=O&&$||_,D=v(c(C)?C.enter:C);0;var M=!1!==a&&!Z,R=$i(I),F=n._enterCb=P(function(){M&&(vi(n,E),vi(n,S)),F.cancelled?(M&&vi(n,T),N&&N(n)):L&&L(n),n._enterCb=null});e.data.show||ct(e,"insert",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),I&&I(n,F)}),j&&j(n),M&&(di(n,T),di(n,S),pi(function(){vi(n,T),F.cancelled||(di(n,E),R||(xi(D)?setTimeout(F,D):hi(n,s,F)))})),e.data.show&&(t&&t(),I&&I(n,F)),M||R||F()}}}function wi(e,t){var n=e.elm;o(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=ni(e.data.transition);if(i(r)||1!==n.nodeType)return t();if(!o(n._leaveCb)){var a=r.css,s=r.type,u=r.leaveClass,l=r.leaveToClass,f=r.leaveActiveClass,p=r.beforeLeave,d=r.leave,h=r.afterLeave,m=r.leaveCancelled,y=r.delayLeave,g=r.duration,_=!1!==a&&!Z,b=$i(d),w=v(c(g)?g.leave:g);0;var x=n._leaveCb=P(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),_&&(vi(n,l),vi(n,f)),x.cancelled?(_&&vi(n,u),m&&m(n)):(t(),h&&h(n)),n._leaveCb=null});y?y($):$()}function $(){x.cancelled||(e.data.show||((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),p&&p(n),_&&(di(n,u),di(n,f),pi(function(){vi(n,u),x.cancelled||(di(n,l),b||(xi(w)?setTimeout(x,w):hi(n,s,x)))})),d&&d(n,x),_||b||x())}}function xi(e){return"number"==typeof e&&!isNaN(e)}function $i(e){if(i(e))return!1;var t=e.fns;return o(t)?$i(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ci(e,t){!0!==t.data.show&&bi(t)}var ki=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;t<Kn.length;++t)for(r[Kn[t]]=[],n=0;n<c.length;++n)o(c[n][Kn[t]])&&r[Kn[t]].push(c[n][Kn[t]]);function l(e){var t=u.parentNode(e);o(t)&&u.removeChild(t,e)}function f(e,t,n,i,s,c,l){if(o(e.elm)&&o(c)&&(e=c[l]=ge(e)),e.isRootInsert=!s,!function(e,t,n,i){var s=e.data;if(o(s)){var c=o(e.componentInstance)&&s.keepAlive;if(o(s=s.hook)&&o(s=s.init)&&s(e,!1,n,i),o(e.componentInstance))return p(e,t),a(c)&&function(e,t,n,i){for(var a,s=e;s.componentInstance;)if(s=s.componentInstance._vnode,o(a=s.data)&&o(a=a.transition)){for(a=0;a<r.activate.length;++a)r.activate[a](zn,s);t.push(s);break}d(n,e.elm,i)}(e,t,n,i),!0}}(e,t,n,i)){var f=e.data,h=e.children,m=e.tag;o(m)?(e.elm=e.ns?u.createElementNS(e.ns,m):u.createElement(m,e),g(e),v(e,h,t),o(f)&&y(e,t),d(n,e.elm,i)):a(e.isComment)?(e.elm=u.createComment(e.text),d(n,e.elm,i)):(e.elm=u.createTextNode(e.text),d(n,e.elm,i))}}function p(e,t){o(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,m(e)?(y(e,t),g(e)):(Vn(e),t.push(e))}function d(e,t,n){o(e)&&(o(n)?n.parentNode===e&&u.insertBefore(e,t,n):u.appendChild(e,t))}function v(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)f(t[r],n,e.elm,null,!0,t,r);else s(e.text)&&u.appendChild(e.elm,u.createTextNode(String(e.text)))}function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return o(e.tag)}function y(e,n){for(var i=0;i<r.create.length;++i)r.create[i](zn,e);o(t=e.data.hook)&&(o(t.create)&&t.create(zn,e),o(t.insert)&&n.push(e))}function g(e){var t;if(o(t=e.fnScopeId))u.setStyleScope(e.elm,t);else for(var n=e;n;)o(t=n.context)&&o(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t),n=n.parent;o(t=wt)&&t!==e.context&&t!==e.fnContext&&o(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t)}function _(e,t,n,r,i,o){for(;r<=i;++r)f(n[r],o,e,t,!1,n,r)}function b(e){var t,n,i=e.data;if(o(i))for(o(t=i.hook)&&o(t=t.destroy)&&t(e),t=0;t<r.destroy.length;++t)r.destroy[t](e);if(o(t=e.children))for(n=0;n<e.children.length;++n)b(e.children[n])}function w(e,t,n,r){for(;n<=r;++n){var i=t[n];o(i)&&(o(i.tag)?(x(i),b(i)):l(i.elm))}}function x(e,t){if(o(t)||o(e.data)){var n,i=r.remove.length+1;for(o(t)?t.listeners+=i:t=function(e,t){function n(){0==--n.listeners&&l(e)}return n.listeners=t,n}(e.elm,i),o(n=e.componentInstance)&&o(n=n._vnode)&&o(n.data)&&x(n,t),n=0;n<r.remove.length;++n)r.remove[n](e,t);o(n=e.data.hook)&&o(n=n.remove)?n(e,t):t()}else l(e.elm)}function $(e,t,n,r){for(var i=n;i<r;i++){var a=t[i];if(o(a)&&Jn(e,a))return i}}function C(e,t,n,s){if(e!==t){var c=t.elm=e.elm;if(a(e.isAsyncPlaceholder))o(t.asyncFactory.resolved)?O(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(a(t.isStatic)&&a(e.isStatic)&&t.key===e.key&&(a(t.isCloned)||a(t.isOnce)))t.componentInstance=e.componentInstance;else{var l,p=t.data;o(p)&&o(l=p.hook)&&o(l=l.prepatch)&&l(e,t);var d=e.children,v=t.children;if(o(p)&&m(t)){for(l=0;l<r.update.length;++l)r.update[l](e,t);o(l=p.hook)&&o(l=l.update)&&l(e,t)}i(t.text)?o(d)&&o(v)?d!==v&&function(e,t,n,r,a){for(var s,c,l,p=0,d=0,v=t.length-1,h=t[0],m=t[v],y=n.length-1,g=n[0],b=n[y],x=!a;p<=v&&d<=y;)i(h)?h=t[++p]:i(m)?m=t[--v]:Jn(h,g)?(C(h,g,r),h=t[++p],g=n[++d]):Jn(m,b)?(C(m,b,r),m=t[--v],b=n[--y]):Jn(h,b)?(C(h,b,r),x&&u.insertBefore(e,h.elm,u.nextSibling(m.elm)),h=t[++p],b=n[--y]):Jn(m,g)?(C(m,g,r),x&&u.insertBefore(e,m.elm,h.elm),m=t[--v],g=n[++d]):(i(s)&&(s=Xn(t,p,v)),i(c=o(g.key)?s[g.key]:$(g,t,p,v))?f(g,r,e,h.elm,!1,n,d):Jn(l=t[c],g)?(C(l,g,r),t[c]=void 0,x&&u.insertBefore(e,l.elm,h.elm)):f(g,r,e,h.elm,!1,n,d),g=n[++d]);p>v?_(e,i(n[y+1])?null:n[y+1].elm,n,d,y,r):d>y&&w(0,t,p,v)}(c,d,v,n,s):o(v)?(o(e.text)&&u.setTextContent(c,""),_(c,null,v,0,v.length-1,n)):o(d)?w(0,d,0,d.length-1):o(e.text)&&u.setTextContent(c,""):e.text!==t.text&&u.setTextContent(c,t.text),o(p)&&o(l=p.hook)&&o(l=l.postpatch)&&l(e,t)}}}function k(e,t,n){if(a(n)&&o(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r<t.length;++r)t[r].data.hook.insert(t[r])}var A=h("attrs,class,staticClass,staticStyle,key");function O(e,t,n,r){var i,s=t.tag,c=t.data,u=t.children;if(r=r||c&&c.pre,t.elm=e,a(t.isComment)&&o(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(o(c)&&(o(i=c.hook)&&o(i=i.init)&&i(t,!0),o(i=t.componentInstance)))return p(t,n),!0;if(o(s)){if(o(u))if(e.hasChildNodes())if(o(i=c)&&o(i=i.domProps)&&o(i=i.innerHTML)){if(i!==e.innerHTML)return!1}else{for(var l=!0,f=e.firstChild,d=0;d<u.length;d++){if(!f||!O(f,u[d],n,r)){l=!1;break}f=f.nextSibling}if(!l||f)return!1}else v(t,u,n);if(o(c)){var h=!1;for(var m in c)if(!A(m)){h=!0,y(t,n);break}!h&&c.class&&rt(c.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,s,c,l){if(!i(t)){var p=!1,d=[];if(i(e))p=!0,f(t,d,c,l);else{var v=o(e.nodeType);if(!v&&Jn(e,t))C(e,t,d,s);else{if(v){if(1===e.nodeType&&e.hasAttribute(M)&&(e.removeAttribute(M),n=!0),a(n)&&O(e,t,d))return k(t,d,!0),e;e=function(e){return new ve(u.tagName(e).toLowerCase(),{},[],void 0,e)}(e)}var h=e.elm,y=u.parentNode(h);if(f(t,d,h._leaveCb?null:y,u.nextSibling(h)),o(t.parent))for(var g=t.parent,_=m(t);g;){for(var x=0;x<r.destroy.length;++x)r.destroy[x](g);if(g.elm=t.elm,_){for(var $=0;$<r.create.length;++$)r.create[$](zn,g);var A=g.data.hook.insert;if(A.merged)for(var T=1;T<A.fns.length;T++)A.fns[T]()}else Vn(g);g=g.parent}o(y)?w(0,[e],0,0):o(e.tag)&&b(e)}}return k(t,d,p),t.elm}o(e)&&b(e)}}({nodeOps:Hn,modules:[or,dr,Fr,Hr,Qr,K?{create:Ci,activate:Ci,remove:function(e,t){!0!==e.data.show?wi(e,t):t()}}:{}].concat(tr)});Z&&document.addEventListener("selectionchange",function(){var e=document.activeElement;e&&e.vmodel&&Li(e,"input")});var Ai={inserted:function(e,t,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?ct(n,"postpatch",function(){Ai.componentUpdated(e,t,n)}):Oi(e,t,n.context),e._vOptions=[].map.call(e.options,Ei)):("textarea"===n.tag||Bn(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",ji),e.addEventListener("compositionend",Ii),e.addEventListener("change",Ii),Z&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Oi(e,t,n.context);var r=e._vOptions,i=e._vOptions=[].map.call(e.options,Ei);if(i.some(function(e,t){return!N(e,r[t])}))(e.multiple?t.value.some(function(e){return Si(e,i)}):t.value!==t.oldValue&&Si(t.value,i))&&Li(e,"change")}}};function Oi(e,t,n){Ti(e,t,n),(G||Y)&&setTimeout(function(){Ti(e,t,n)},0)}function Ti(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s<c;s++)if(a=e.options[s],i)o=D(r,Ei(a))>-1,a.selected!==o&&(a.selected=o);else if(N(Ei(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Si(e,t){return t.every(function(t){return!N(t,e)})}function Ei(e){return"_value"in e?e._value:e.value}function ji(e){e.target.composing=!0}function Ii(e){e.target.composing&&(e.target.composing=!1,Li(e.target,"input"))}function Li(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Ni(e){return!e.componentInstance||e.data&&e.data.transition?e:Ni(e.componentInstance._vnode)}var Di={model:Ai,show:{bind:function(e,t,n){var r=t.value,i=(n=Ni(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,bi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Ni(n)).data&&n.data.transition?(n.data.show=!0,r?bi(n,function(){e.style.display=e.__vOriginalDisplay}):wi(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},Pi={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Mi(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Mi(vt(t.children)):e}function Ri(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[$(o)]=i[o];return t}function Fi(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Bi={name:"transition",props:Pi,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(function(e){return e.tag||dt(e)})).length){0;var r=this.mode;0;var i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var o=Mi(i);if(!o)return i;if(this._leaving)return Fi(e,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=Ri(this),u=this._vnode,l=Mi(u);if(o.data.directives&&o.data.directives.some(function(e){return"show"===e.name})&&(o.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,l)&&!dt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=S({},c);if("out-in"===r)return this._leaving=!0,ct(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),Fi(e,i);if("in-out"===r){if(dt(o))return u;var p,d=function(){p()};ct(c,"afterEnter",d),ct(c,"enterCancelled",d),ct(f,"delayLeave",function(e){p=e})}}return i}}},Ui=S({tag:String,moveClass:String},Pi);function Hi(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function qi(e){e.data.newPos=e.elm.getBoundingClientRect()}function Vi(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete Ui.mode;var zi={Transition:Bi,TransitionGroup:{props:Ui,render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Ri(this),s=0;s<i.length;s++){var c=i[s];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))o.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a;else;}if(r){for(var u=[],l=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?u.push(p):l.push(p)}this.kept=e(t,null,u),this.removed=l}return e(t,null,o)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(Hi),e.forEach(qi),e.forEach(Vi),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,r=n.style;di(n,t),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(ci,n._moveCb=function e(r){r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(ci,e),n._moveCb=null,vi(n,t))})}}))},methods:{hasMove:function(e,t){if(!ii)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){ti(n,e)}),ei(n,t),n.style.display="none",this.$el.appendChild(n);var r=yi(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};dn.config.mustUseProp=$n,dn.config.isReservedTag=Mn,dn.config.isReservedAttr=wn,dn.config.getTagNamespace=Rn,dn.config.isUnknownElement=function(e){if(!K)return!0;if(Mn(e))return!1;if(e=e.toLowerCase(),null!=Fn[e])return Fn[e];var t=document.createElement(e);return e.indexOf("-")>-1?Fn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Fn[e]=/HTMLUnknownElement/.test(t.toString())},S(dn.options.directives,Di),S(dn.options.components,zi),dn.prototype.__patch__=K?ki:j,dn.prototype.$mount=function(e,t){return function(e,t,n){return e.$el=t,e.$options.render||(e.$options.render=me),Ct(e,"beforeMount"),new Lt(e,function(){e._update(e._render(),n)},j,null,!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Ct(e,"mounted")),e}(this,e=e&&K?Un(e):void 0,t)},K&&setTimeout(function(){B.devtools&&ie&&ie.emit("init",dn)},0);var Ki=/\{\{((?:.|\n)+?)\}\}/g,Ji=/[-.*+?^${}()|[\]\/\\]/g,Xi=w(function(e){var t=e[0].replace(Ji,"\\$&"),n=e[1].replace(Ji,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});var Wi={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=kr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Cr(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var Gi,Zi={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=kr(e,"style");n&&(e.staticStyle=JSON.stringify(qr(n)));var r=Cr(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},Yi=function(e){return(Gi=Gi||document.createElement("div")).innerHTML=e,Gi.textContent},Qi=h("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),eo=h("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),to=h("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),no=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ro="[a-zA-Z_][\\w\\-\\.]*",io="((?:"+ro+"\\:)?"+ro+")",oo=new RegExp("^<"+io),ao=/^\s*(\/?)>/,so=new RegExp("^<\\/"+io+"[^>]*>"),co=/^<!DOCTYPE [^>]+>/i,uo=/^<!\--/,lo=/^<!\[/,fo=!1;"x".replace(/x(.)?/g,function(e,t){fo=""===t});var po=h("script,style,textarea",!0),vo={},ho={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n","&#9;":"\t"},mo=/&(?:lt|gt|quot|amp);/g,yo=/&(?:lt|gt|quot|amp|#10|#9);/g,go=h("pre,textarea",!0),_o=function(e,t){return e&&go(e)&&"\n"===t[0]};function bo(e,t){var n=t?yo:mo;return e.replace(n,function(e){return ho[e]})}var wo,xo,$o,Co,ko,Ao,Oo,To,So=/^@|^v-on:/,Eo=/^v-|^@|^:/,jo=/([^]*?)\s+(?:in|of)\s+([^]*)/,Io=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Lo=/^\(|\)$/g,No=/:(.*)$/,Do=/^:|^v-bind:/,Po=/\.[^.]+/g,Mo=w(Yi);function Ro(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n].name]=e[n].value;return t}(t),parent:n,children:[]}}function Fo(e,t){wo=t.warn||yr,Ao=t.isPreTag||I,Oo=t.mustUseProp||I,To=t.getTagNamespace||I,$o=gr(t.modules,"transformNode"),Co=gr(t.modules,"preTransformNode"),ko=gr(t.modules,"postTransformNode"),xo=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=!1,s=!1;function c(e){e.pre&&(a=!1),Ao(e.tag)&&(s=!1);for(var n=0;n<ko.length;n++)ko[n](e,t)}return function(e,t){for(var n,r,i=[],o=t.expectHTML,a=t.isUnaryTag||I,s=t.canBeLeftOpenTag||I,c=0;e;){if(n=e,r&&po(r)){var u=0,l=r.toLowerCase(),f=vo[l]||(vo[l]=new RegExp("([\\s\\S]*?)(</"+l+"[^>]*>)","i")),p=e.replace(f,function(e,n,r){return u=r.length,po(l)||"noscript"===l||(n=n.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),_o(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf("<");if(0===d){if(uo.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v)),$(v+3);continue}}if(lo.test(e)){var h=e.indexOf("]>");if(h>=0){$(h+2);continue}}var m=e.match(co);if(m){$(m[0].length);continue}var y=e.match(so);if(y){var g=c;$(y[0].length),A(y[1],g,c);continue}var _=C();if(_){k(_),_o(r,e)&&$(1);continue}}var b=void 0,w=void 0,x=void 0;if(d>=0){for(w=e.slice(d);!(so.test(w)||oo.test(w)||uo.test(w)||lo.test(w)||(x=w.indexOf("<",1))<0);)d+=x,w=e.slice(d);b=e.substring(0,d),$(d)}d<0&&(b=e,e=""),t.chars&&b&&t.chars(b)}if(e===n){t.chars&&t.chars(e);break}}function $(t){c+=t,e=e.substring(t)}function C(){var t=e.match(oo);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for($(t[0].length);!(n=e.match(ao))&&(r=e.match(no));)$(r[0].length),i.attrs.push(r);if(n)return i.unarySlash=n[1],$(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&("p"===r&&to(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p<l;p++){var d=e.attrs[p];fo&&-1===d[0].indexOf('""')&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]);var v=d[3]||d[4]||d[5]||"",h="a"===n&&"href"===d[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;f[p]={name:d[1],value:bo(v,h)}}u||(i.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:f}),r=n),t.start&&t.start(n,f,u,e.start,e.end)}function A(e,n,o){var a,s;if(null==n&&(n=c),null==o&&(o=c),e&&(s=e.toLowerCase()),e)for(a=i.length-1;a>=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:wo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,start:function(e,o,u){var l=r&&r.ns||To(e);G&&"svg"===l&&(o=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];Vo.test(r.name)||(r.name=r.name.replace(zo,""),t.push(r))}return t}(o));var f=Ro(e,o,r);l&&(f.ns=l),function(e){return"style"===e.tag||"script"===e.tag&&(!e.attrsMap.type||"text/javascript"===e.attrsMap.type)}(f)&&!re()&&(f.forbidden=!0);for(var p=0;p<Co.length;p++)f=Co[p](f,t)||f;function d(e){0}if(a||(!function(e){null!=kr(e,"v-pre")&&(e.pre=!0)}(f),f.pre&&(a=!0)),Ao(f.tag)&&(s=!0),a?function(e){var t=e.attrsList.length;if(t)for(var n=e.attrs=new Array(t),r=0;r<t;r++)n[r]={name:e.attrsList[r].name,value:JSON.stringify(e.attrsList[r].value)};else e.pre||(e.plain=!0)}(f):f.processed||(Uo(f),function(e){var t=kr(e,"v-if");if(t)e.if=t,Ho(e,{exp:t,block:e});else{null!=kr(e,"v-else")&&(e.else=!0);var n=kr(e,"v-else-if");n&&(e.elseif=n)}}(f),function(e){null!=kr(e,"v-once")&&(e.once=!0)}(f),Bo(f,t)),n?i.length||n.if&&(f.elseif||f.else)&&(d(),Ho(n,{exp:f.elseif,block:f})):(n=f,d()),r&&!f.forbidden)if(f.elseif||f.else)!function(e,t){var n=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(t.children);n&&n.if&&Ho(n,{exp:e.elseif,block:e})}(f,r);else if(f.slotScope){r.plain=!1;var v=f.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[v]=f}else r.children.push(f),f.parent=r;u?c(f):(r=f,i.push(f))},end:function(){var e=i[i.length-1],t=e.children[e.children.length-1];t&&3===t.type&&" "===t.text&&!s&&e.children.pop(),i.length-=1,r=i[i.length-1],c(e)},chars:function(e){if(r&&(!G||"textarea"!==r.tag||r.attrsMap.placeholder!==e)){var t,n=r.children;if(e=s||e.trim()?function(e){return"script"===e.tag||"style"===e.tag}(r)?e:Mo(e):o&&n.length?" ":"")!a&&" "!==e&&(t=function(e,t){var n=t?Xi(t):Ki;if(n.test(e)){for(var r,i,o,a=[],s=[],c=n.lastIndex=0;r=n.exec(e);){(i=r.index)>c&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=hr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c<e.length&&(s.push(o=e.slice(c)),a.push(JSON.stringify(o))),{expression:a.join("+"),tokens:s}}}(e,xo))?n.push({type:2,expression:t.expression,tokens:t.tokens,text:e}):" "===e&&n.length&&" "===n[n.length-1].text||n.push({type:3,text:e})}},comment:function(e){r.children.push({type:3,text:e,isComment:!0})}}),n}function Bo(e,t){!function(e){var t=Cr(e,"key");t&&(e.key=t)}(e),e.plain=!e.key&&!e.attrsList.length,function(e){var t=Cr(e,"ref");t&&(e.ref=t,e.refInFor=function(e){var t=e;for(;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(e))}(e),function(e){if("slot"===e.tag)e.slotName=Cr(e,"name");else{var t;"template"===e.tag?(t=kr(e,"scope"),e.slotScope=t||kr(e,"slot-scope")):(t=kr(e,"slot-scope"))&&(e.slotScope=t);var n=Cr(e,"slot");n&&(e.slotTarget='""'===n?'"default"':n,"template"===e.tag||e.slotScope||br(e,"slot",n))}}(e),function(e){var t;(t=Cr(e,"is"))&&(e.component=t);null!=kr(e,"inline-template")&&(e.inlineTemplate=!0)}(e);for(var n=0;n<$o.length;n++)e=$o[n](e,t)||e;!function(e){var t,n,r,i,o,a,s,c=e.attrsList;for(t=0,n=c.length;t<n;t++){if(r=i=c[t].name,o=c[t].value,Eo.test(r))if(e.hasBindings=!0,(a=qo(r))&&(r=r.replace(Po,"")),Do.test(r))r=r.replace(Do,""),o=hr(o),s=!1,a&&(a.prop&&(s=!0,"innerHtml"===(r=$(r))&&(r="innerHTML")),a.camel&&(r=$(r)),a.sync&&$r(e,"update:"+$(r),Or(o,"$event"))),s||!e.component&&Oo(e.tag,e.attrsMap.type,r)?_r(e,r,o):br(e,r,o);else if(So.test(r))r=r.replace(So,""),$r(e,r,o,a,!1);else{var u=(r=r.replace(Eo,"")).match(No),l=u&&u[1];l&&(r=r.slice(0,-(l.length+1))),xr(e,r,i,o,l,a)}else br(e,r,JSON.stringify(o)),!e.component&&"muted"===r&&Oo(e.tag,e.attrsMap.type,r)&&_r(e,r,"true")}}(e)}function Uo(e){var t;if(t=kr(e,"v-for")){var n=function(e){var t=e.match(jo);if(!t)return;var n={};n.for=t[2].trim();var r=t[1].trim().replace(Lo,""),i=r.match(Io);i?(n.alias=r.replace(Io,""),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r;return n}(t);n&&S(e,n)}}function Ho(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function qo(e){var t=e.match(Po);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}var Vo=/^xmlns:NS\d+/,zo=/^NS\d+:/;function Ko(e){return Ro(e.tag,e.attrsList.slice(),e.parent)}var Jo=[Wi,Zi,{preTransformNode:function(e,t){if("input"===e.tag){var n,r=e.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=Cr(e,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var i=kr(e,"v-if",!0),o=i?"&&("+i+")":"",a=null!=kr(e,"v-else",!0),s=kr(e,"v-else-if",!0),c=Ko(e);Uo(c),wr(c,"type","checkbox"),Bo(c,t),c.processed=!0,c.if="("+n+")==='checkbox'"+o,Ho(c,{exp:c.if,block:c});var u=Ko(e);kr(u,"v-for",!0),wr(u,"type","radio"),Bo(u,t),Ho(c,{exp:"("+n+")==='radio'"+o,block:u});var l=Ko(e);return kr(l,"v-for",!0),wr(l,":type",n),Bo(l,t),Ho(c,{exp:i,block:l}),a?c.else=!0:s&&(c.elseif=s),c}}}}];var Xo,Wo,Go={expectHTML:!0,modules:Jo,directives:{model:function(e,t,n){n;var r=t.value,i=t.modifiers,o=e.tag,a=e.attrsMap.type;if(e.component)return Ar(e,r,i),!1;if("select"===o)!function(e,t,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(n&&n.number?"_n(val)":"val")+"});";r=r+" "+Or(t,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),$r(e,"change",r,null,!0)}(e,r,i);else if("input"===o&&"checkbox"===a)!function(e,t,n){var r=n&&n.number,i=Cr(e,"value")||"null",o=Cr(e,"true-value")||"true",a=Cr(e,"false-value")||"false";_r(e,"checked","Array.isArray("+t+")?_i("+t+","+i+")>-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),$r(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Or(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Or(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Or(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Cr(e,"value")||"null";_r(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),$r(e,"change",Or(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Nr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Or(t,l);c&&(f="if($event.target.composing)return;"+f),_r(e,"value","("+t+")"),$r(e,u,f,null,!0),(s||a)&&$r(e,"blur","$forceUpdate()")}(e,r,i);else if(!B.isReservedTag(o))return Ar(e,r,i),!1;return!0},text:function(e,t){t.value&&_r(e,"textContent","_s("+t.value+")")},html:function(e,t){t.value&&_r(e,"innerHTML","_s("+t.value+")")}},isPreTag:function(e){return"pre"===e},isUnaryTag:Qi,mustUseProp:$n,canBeLeftOpenTag:eo,isReservedTag:Mn,getTagNamespace:Rn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(",")}(Jo)},Zo=w(function(e){return h("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(e?","+e:""))});function Yo(e,t){e&&(Xo=Zo(t.staticKeys||""),Wo=t.isReservedTag||I,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||m(e.tag)||!Wo(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(Xo)))}(t);if(1===t.type){if(!Wo(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n<r;n++){var i=t.children[n];e(i),i.static||(t.static=!1)}if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++){var s=t.ifConditions[o].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)e(t.children[r],n||!!t.for);if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++)e(t.ifConditions[o].block,n)}}(e,!1))}var Qo=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,ea=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ta={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},na={esc:"Escape",tab:"Tab",enter:"Enter",space:" ",up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete"]},ra=function(e){return"if("+e+")return null;"},ia={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:ra("$event.target !== $event.currentTarget"),ctrl:ra("!$event.ctrlKey"),shift:ra("!$event.shiftKey"),alt:ra("!$event.altKey"),meta:ra("!$event.metaKey"),left:ra("'button' in $event && $event.button !== 0"),middle:ra("'button' in $event && $event.button !== 1"),right:ra("'button' in $event && $event.button !== 2")};function oa(e,t,n){var r=t?"nativeOn:{":"on:{";for(var i in e)r+='"'+i+'":'+aa(i,e[i])+",";return r.slice(0,-1)+"}"}function aa(e,t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map(function(t){return aa(e,t)}).join(",")+"]";var n=ea.test(t.value),r=Qo.test(t.value);if(t.modifiers){var i="",o="",a=[];for(var s in t.modifiers)if(ia[s])o+=ia[s],ta[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;o+=ra(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!('button' in $event)&&"+e.map(sa).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(n?"return "+t.value+"($event)":r?"return ("+t.value+")($event)":t.value)+"}"}return n||r?t.value:"function($event){"+t.value+"}"}function sa(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=ta[e],r=na[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var ca={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:j},ua=function(e){this.options=e,this.warn=e.warn||yr,this.transforms=gr(e.modules,"transformCode"),this.dataGenFns=gr(e.modules,"genData"),this.directives=S(S({},ca),e.directives);var t=e.isReservedTag||I;this.maybeComponent=function(e){return!t(e.tag)},this.onceId=0,this.staticRenderFns=[]};function la(e,t){var n=new ua(t);return{render:"with(this){return "+(e?fa(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function fa(e,t){if(e.staticRoot&&!e.staticProcessed)return pa(e,t);if(e.once&&!e.onceProcessed)return da(e,t);if(e.for&&!e.forProcessed)return function(e,t,n,r){var i=e.for,o=e.alias,a=e.iterator1?","+e.iterator1:"",s=e.iterator2?","+e.iterator2:"";0;return e.forProcessed=!0,(r||"_l")+"(("+i+"),function("+o+a+s+"){return "+(n||fa)(e,t)+"})"}(e,t);if(e.if&&!e.ifProcessed)return va(e,t);if("template"!==e.tag||e.slotTarget){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=ya(e,t),i="_t("+n+(r?","+r:""),o=e.attrs&&"{"+e.attrs.map(function(e){return $(e.name)+":"+e.value}).join(",")+"}",a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:ya(t,n,!0);return"_c("+e+","+ha(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r=e.plain?void 0:ha(e,t),i=e.inlineTemplate?null:ya(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return ya(e,t)||"void 0"}function pa(e,t){return e.staticProcessed=!0,t.staticRenderFns.push("with(this){return "+fa(e,t)+"}"),"_m("+(t.staticRenderFns.length-1)+(e.staticInFor?",true":"")+")"}function da(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return va(e,t);if(e.staticInFor){for(var n="",r=e.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+fa(e,t)+","+t.onceId+++","+n+")":fa(e,t)}return pa(e,t)}function va(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.length)return i||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+a(o.block)+":"+e(t,n,r,i):""+a(o.block);function a(e){return r?r(e,n):e.once?da(e,n):fa(e,n)}}(e.ifConditions.slice(),t,n,r)}function ha(e,t){var n="{",r=function(e,t){var n=e.directives;if(!n)return;var r,i,o,a,s="directives:[",c=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var u=t.directives[o.name];u&&(a=!!u(e,o,t.warn)),a&&(c=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?',arg:"'+o.arg+'"':"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}if(c)return s.slice(0,-1)+"]"}(e,t);r&&(n+=r+","),e.key&&(n+="key:"+e.key+","),e.ref&&(n+="ref:"+e.ref+","),e.refInFor&&(n+="refInFor:true,"),e.pre&&(n+="pre:true,"),e.component&&(n+='tag:"'+e.tag+'",');for(var i=0;i<t.dataGenFns.length;i++)n+=t.dataGenFns[i](e);if(e.attrs&&(n+="attrs:{"+ba(e.attrs)+"},"),e.props&&(n+="domProps:{"+ba(e.props)+"},"),e.events&&(n+=oa(e.events,!1,t.warn)+","),e.nativeEvents&&(n+=oa(e.nativeEvents,!0,t.warn)+","),e.slotTarget&&!e.slotScope&&(n+="slot:"+e.slotTarget+","),e.scopedSlots&&(n+=function(e,t){return"scopedSlots:_u(["+Object.keys(e).map(function(n){return ma(n,e[n],t)}).join(",")+"])"}(e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];0;if(1===n.type){var r=la(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function ma(e,t,n){return t.for&&!t.forProcessed?function(e,t,n){var r=t.for,i=t.alias,o=t.iterator1?","+t.iterator1:"",a=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,"_l(("+r+"),function("+i+o+a+"){return "+ma(e,t,n)+"})"}(e,t,n):"{key:"+e+",fn:"+("function("+String(t.slotScope)+"){return "+("template"===t.tag?t.if?t.if+"?"+(ya(t,n)||"undefined")+":undefined":ya(t,n)||"undefined":fa(t,n))+"}")+"}"}function ya(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag)return(r||fa)(a,t);var s=n?function(e,t){for(var n=0,r=0;r<e.length;r++){var i=e[r];if(1===i.type){if(ga(i)||i.ifConditions&&i.ifConditions.some(function(e){return ga(e.block)})){n=2;break}(t(i)||i.ifConditions&&i.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}(o,t.maybeComponent):0,c=i||_a;return"["+o.map(function(e){return c(e,t)}).join(",")+"]"+(s?","+s:"")}}function ga(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}function _a(e,t){return 1===e.type?fa(e,t):3===e.type&&e.isComment?function(e){return"_e("+JSON.stringify(e.text)+")"}(e):function(e){return"_v("+(2===e.type?e.expression:wa(JSON.stringify(e.text)))+")"}(e)}function ba(e){for(var t="",n=0;n<e.length;n++){var r=e[n];t+='"'+r.name+'":'+wa(r.value)+","}return t.slice(0,-1)}function wa(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)");function xa(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),j}}var $a,Ca=function(e){return function(t){function n(n,r){var i=Object.create(t),o=[],a=[];if(i.warn=function(e,t){(t?a:o).push(e)},r)for(var s in r.modules&&(i.modules=(t.modules||[]).concat(r.modules)),r.directives&&(i.directives=S(Object.create(t.directives||null),r.directives)),r)"modules"!==s&&"directives"!==s&&(i[s]=r[s]);var c=e(n,i);return c.errors=o,c.tips=a,c}return{compile:n,compileToFunctions:function(e){var t=Object.create(null);return function(n,r,i){(r=S({},r)).warn,delete r.warn;var o=r.delimiters?String(r.delimiters)+n:n;if(t[o])return t[o];var a=e(n,r),s={},c=[];return s.render=xa(a.render,c),s.staticRenderFns=a.staticRenderFns.map(function(e){return xa(e,c)}),t[o]=s}}(n)}}}(function(e,t){var n=Fo(e.trim(),t);!1!==t.optimize&&Yo(n,t);var r=la(n,t);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}})(Go).compileToFunctions;function ka(e){return($a=$a||document.createElement("div")).innerHTML=e?'<a href="\n"/>':'<div a="\n"/>',$a.innerHTML.indexOf("&#10;")>0}var Aa=!!K&&ka(!1),Oa=!!K&&ka(!0),Ta=w(function(e){var t=Un(e);return t&&t.innerHTML}),Sa=dn.prototype.$mount;dn.prototype.$mount=function(e,t){if((e=e&&Un(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=Ta(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){0;var i=Ca(r,{shouldDecodeNewlines:Aa,shouldDecodeNewlinesForHref:Oa,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return Sa.call(this,e,t)},dn.compile=Ca,t.a=dn}).call(this,n(2),n(11).setImmediate)},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(t){var r=n(0),i=n(16),o={"Content-Type":"application/x-www-form-urlencoded"};function a(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var s={adapter:function(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(6):void 0!==t&&(e=n(6)),e}(),transformRequest:[function(e,t){return i(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(a(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(a(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(e){s.headers[e]={}}),r.forEach(["post","put","patch"],function(e){s.headers[e]=r.merge(o)}),e.exports=s}).call(this,n(4))},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&d())}function d(){if(!l){var e=s(p);l=!0;for(var t=u.length;t;){for(c=u,u=[];++f<t;)c&&c[f].run();f=-1,t=u.length}c=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function v(e,t){this.fun=e,this.array=t}function h(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new v(e,t)),1!==u.length||l||s(d)},v.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";var r=n(0),i=n(17),o=n(19),a=n(20),s=n(21),c=n(7),u="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(22);e.exports=function(e){return new Promise(function(t,l){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest,v="onreadystatechange",h=!1;if("undefined"==typeof window||!window.XDomainRequest||"withCredentials"in d||s(e.url)||(d=new window.XDomainRequest,v="onload",h=!0,d.onprogress=function(){},d.ontimeout=function(){}),e.auth){var m=e.auth.username||"",y=e.auth.password||"";p.Authorization="Basic "+u(m+":"+y)}if(d.open(e.method.toUpperCase(),o(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d[v]=function(){if(d&&(4===d.readyState||h)&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:1223===d.status?204:d.status,statusText:1223===d.status?"No Content":d.statusText,headers:n,config:e,request:d};i(t,l,r),d=null}},d.onerror=function(){l(c("Network Error",e,null,d)),d=null},d.ontimeout=function(){l(c("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var g=n(23),_=(e.withCredentials||s(e.url))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;_&&(p[e.xsrfHeaderName]=_)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),l(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(18);e.exports=function(e,t,n,i,o){var a=new Error(e);return r(a,t,n,i,o)}},function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){e.exports=n(13)},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(12),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(2))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i=1,o={},a=!1,s=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){l(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?function(){var t="setImmediate$"+Math.random()+"$",n=function(n){n.source===e&&"string"==typeof n.data&&0===n.data.indexOf(t)&&l(+n.data.slice(t.length))};e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(n){e.postMessage(t+n,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){l(e.data)},r=function(t){e.port2.postMessage(t)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var e=s.documentElement;r=function(t){var n=s.createElement("script");n.onreadystatechange=function(){l(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():r=function(e){setTimeout(l,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var a={callback:e,args:t};return o[i]=a,r(i),i++},c.clearImmediate=u}function u(e){delete o[e]}function l(e){if(a)setTimeout(l,0,e);else{var t=o[e];if(t){a=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{u(e),a=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(2),n(4))},function(e,t,n){"use strict";var r=n(0),i=n(5),o=n(15),a=n(3);function s(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var c=s(a);c.Axios=o,c.create=function(e){return s(r.merge(a,e))},c.Cancel=n(9),c.CancelToken=n(29),c.isCancel=n(8),c.all=function(e){return Promise.all(e)},c.spread=n(30),e.exports=c,e.exports.default=c},function(e,t){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}
+var r=Object.freeze({});function i(e){return void 0===e||null===e}function o(e){return void 0!==e&&null!==e}function a(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function c(e){return null!==e&&"object"==typeof e}var u=Object.prototype.toString;function l(e){return"[object Object]"===u.call(e)}function f(e){return"[object RegExp]"===u.call(e)}function p(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function d(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function v(e){var t=parseFloat(e);return isNaN(t)?e:t}function h(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var m=h("slot,component",!0),y=h("key,ref,slot,slot-scope,is");function g(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function b(e,t){return _.call(e,t)}function w(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var x=/-(\w)/g,$=w(function(e){return e.replace(x,function(e,t){return t?t.toUpperCase():""})}),C=w(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),k=/\B([A-Z])/g,A=w(function(e){return e.replace(k,"-$1").toLowerCase()});var O=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function T(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function S(e,t){for(var n in t)e[n]=t[n];return e}function E(e){for(var t={},n=0;n<e.length;n++)e[n]&&S(t,e[n]);return t}function j(e,t,n){}var I=function(e,t,n){return!1},N=function(e){return e};function L(e,t){if(e===t)return!0;var n=c(e),r=c(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{var i=Array.isArray(e),o=Array.isArray(t);if(i&&o)return e.length===t.length&&e.every(function(e,n){return L(e,t[n])});if(i||o)return!1;var a=Object.keys(e),s=Object.keys(t);return a.length===s.length&&a.every(function(n){return L(e[n],t[n])})}catch(e){return!1}}function D(e,t){for(var n=0;n<e.length;n++)if(L(e[n],t))return n;return-1}function P(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var M="data-server-rendered",R=["component","directive","filter"],F=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],B={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:I,isReservedAttr:I,isUnknownElement:I,getTagNamespace:j,parsePlatformTagName:N,mustUseProp:I,_lifecycleHooks:F};function U(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function H(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var q=/[^\w.$]/;var V,z="__proto__"in{},J="undefined"!=typeof window,K="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,X=K&&WXEnvironment.platform.toLowerCase(),W=J&&window.navigator.userAgent.toLowerCase(),G=W&&/msie|trident/.test(W),Z=W&&W.indexOf("msie 9.0")>0,Y=W&&W.indexOf("edge/")>0,Q=(W&&W.indexOf("android"),W&&/iphone|ipad|ipod|ios/.test(W)||"ios"===X),ee=(W&&/chrome\/\d+/.test(W),{}.watch),te=!1;if(J)try{var ne={};Object.defineProperty(ne,"passive",{get:function(){te=!0}}),window.addEventListener("test-passive",null,ne)}catch(e){}var re=function(){return void 0===V&&(V=!J&&!K&&void 0!==e&&"server"===e.process.env.VUE_ENV),V},ie=J&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function oe(e){return"function"==typeof e&&/native code/.test(e.toString())}var ae,se="undefined"!=typeof Symbol&&oe(Symbol)&&"undefined"!=typeof Reflect&&oe(Reflect.ownKeys);ae="undefined"!=typeof Set&&oe(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ce=j,ue=0,le=function(){this.id=ue++,this.subs=[]};le.prototype.addSub=function(e){this.subs.push(e)},le.prototype.removeSub=function(e){g(this.subs,e)},le.prototype.depend=function(){le.target&&le.target.addDep(this)},le.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t<n;t++)e[t].update()},le.target=null;var fe=[];function pe(e){le.target&&fe.push(le.target),le.target=e}function de(){le.target=fe.pop()}var ve=function(e,t,n,r,i,o,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},he={child:{configurable:!0}};he.child.get=function(){return this.componentInstance},Object.defineProperties(ve.prototype,he);var me=function(e){void 0===e&&(e="");var t=new ve;return t.text=e,t.isComment=!0,t};function ye(e){return new ve(void 0,void 0,void 0,String(e))}function ge(e){var t=new ve(e.tag,e.data,e.children,e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.isCloned=!0,t}var _e=Array.prototype,be=Object.create(_e);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(e){var t=_e[e];H(be,e,function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=t.apply(this,n),a=this.__ob__;switch(e){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})});var we=Object.getOwnPropertyNames(be),xe=!0;function $e(e){xe=e}var Ce=function(e){(this.value=e,this.dep=new le,this.vmCount=0,H(e,"__ob__",this),Array.isArray(e))?((z?ke:Ae)(e,be,we),this.observeArray(e)):this.walk(e)};function ke(e,t,n){e.__proto__=t}function Ae(e,t,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];H(e,o,t[o])}}function Oe(e,t){var n;if(c(e)&&!(e instanceof ve))return b(e,"__ob__")&&e.__ob__ instanceof Ce?n=e.__ob__:xe&&!re()&&(Array.isArray(e)||l(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Ce(e)),t&&n&&n.vmCount++,n}function Te(e,t,n,r,i){var o=new le,a=Object.getOwnPropertyDescriptor(e,t);if(!a||!1!==a.configurable){var s=a&&a.get;s||2!==arguments.length||(n=e[t]);var c=a&&a.set,u=!i&&Oe(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=s?s.call(e):n;return le.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(t)&&function e(t){for(var n=void 0,r=0,i=t.length;r<i;r++)(n=t[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(t))),t},set:function(t){var r=s?s.call(e):n;t===r||t!=t&&r!=r||(c?c.call(e,t):n=t,u=!i&&Oe(t),o.notify())}})}}function Se(e,t,n){if(Array.isArray(e)&&p(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(Te(r.value,t,n),r.dep.notify(),n):(e[t]=n,n)}function Ee(e,t){if(Array.isArray(e)&&p(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||b(e,t)&&(delete e[t],n&&n.dep.notify())}}Ce.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)Te(e,t[n])},Ce.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)Oe(e[t])};var je=B.optionMergeStrategies;function Ie(e,t){if(!t)return e;for(var n,r,i,o=Object.keys(t),a=0;a<o.length;a++)r=e[n=o[a]],i=t[n],b(e,n)?l(r)&&l(i)&&Ie(r,i):Se(e,n,i);return e}function Ne(e,t,n){return n?function(){var r="function"==typeof t?t.call(n,n):t,i="function"==typeof e?e.call(n,n):e;return r?Ie(r,i):i}:t?e?function(){return Ie("function"==typeof t?t.call(this,this):t,"function"==typeof e?e.call(this,this):e)}:t:e}function Le(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}function De(e,t,n,r){var i=Object.create(e||null);return t?S(i,t):i}je.data=function(e,t,n){return n?Ne(e,t,n):t&&"function"!=typeof t?e:Ne(e,t)},F.forEach(function(e){je[e]=Le}),R.forEach(function(e){je[e+"s"]=De}),je.watch=function(e,t,n,r){if(e===ee&&(e=void 0),t===ee&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var i={};for(var o in S(i,e),t){var a=i[o],s=t[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},je.props=je.methods=je.inject=je.computed=function(e,t,n,r){if(!e)return t;var i=Object.create(null);return S(i,e),t&&S(i,t),i},je.provide=Ne;var Pe=function(e,t){return void 0===t?e:t};function Me(e,t,n){"function"==typeof t&&(t=t.options),function(e,t){var n=e.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(o[$(i)]={type:null});else if(l(n))for(var a in n)i=n[a],o[$(a)]=l(i)?i:{type:i};e.props=o}}(t),function(e,t){var n=e.inject;if(n){var r=e.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(l(n))for(var o in n){var a=n[o];r[o]=l(a)?S({from:o},a):{from:a}}}}(t),function(e){var t=e.directives;if(t)for(var n in t){var r=t[n];"function"==typeof r&&(t[n]={bind:r,update:r})}}(t);var r=t.extends;if(r&&(e=Me(e,r,n)),t.mixins)for(var i=0,o=t.mixins.length;i<o;i++)e=Me(e,t.mixins[i],n);var a,s={};for(a in e)c(a);for(a in t)b(e,a)||c(a);function c(r){var i=je[r]||Pe;s[r]=i(e[r],t[r],n,r)}return s}function Re(e,t,n,r){if("string"==typeof n){var i=e[t];if(b(i,n))return i[n];var o=$(n);if(b(i,o))return i[o];var a=C(o);return b(i,a)?i[a]:i[n]||i[o]||i[a]}}function Fe(e,t,n,r){var i=t[e],o=!b(n,e),a=n[e],s=He(Boolean,i.type);if(s>-1)if(o&&!b(i,"default"))a=!1;else if(""===a||a===A(e)){var c=He(String,i.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(e,t,n){if(!b(t,"default"))return;var r=t.default;0;if(e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n])return e._props[n];return"function"==typeof r&&"Function"!==Be(t.type)?r.call(e):r}(r,i,e);var u=xe;$e(!0),Oe(a),$e(u)}return a}function Be(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Ue(e,t){return Be(e)===Be(t)}function He(e,t){if(!Array.isArray(t))return Ue(t,e)?0:-1;for(var n=0,r=t.length;n<r;n++)if(Ue(t[n],e))return n;return-1}function qe(e,t,n){if(t)for(var r=t;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,e,t,n))return}catch(e){Ve(e,r,"errorCaptured hook")}}Ve(e,t,n)}function Ve(e,t,n){if(B.errorHandler)try{return B.errorHandler.call(null,e,t,n)}catch(e){ze(e,null,"config.errorHandler")}ze(e,t,n)}function ze(e,t,n){if(!J&&!K||"undefined"==typeof console)throw e;console.error(e)}var Je,Ke,Xe=[],We=!1;function Ge(){We=!1;var e=Xe.slice(0);Xe.length=0;for(var t=0;t<e.length;t++)e[t]()}var Ze=!1;if(void 0!==n&&oe(n))Ke=function(){n(Ge)};else if("undefined"==typeof MessageChannel||!oe(MessageChannel)&&"[object MessageChannelConstructor]"!==MessageChannel.toString())Ke=function(){setTimeout(Ge,0)};else{var Ye=new MessageChannel,Qe=Ye.port2;Ye.port1.onmessage=Ge,Ke=function(){Qe.postMessage(1)}}if("undefined"!=typeof Promise&&oe(Promise)){var et=Promise.resolve();Je=function(){et.then(Ge),Q&&setTimeout(j)}}else Je=Ke;function tt(e,t){var n;if(Xe.push(function(){if(e)try{e.call(t)}catch(e){qe(e,t,"nextTick")}else n&&n(t)}),We||(We=!0,Ze?Ke():Je()),!e&&"undefined"!=typeof Promise)return new Promise(function(e){n=e})}var nt=new ae;function rt(e){!function e(t,n){var r,i;var o=Array.isArray(t);if(!o&&!c(t)||Object.isFrozen(t)||t instanceof ve)return;if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(r=t.length;r--;)e(t[r],n);else for(i=Object.keys(t),r=i.length;r--;)e(t[i[r]],n)}(e,nt),nt.clear()}var it,ot=w(function(e){var t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),r="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=r?e.slice(1):e,once:n,capture:r,passive:t}});function at(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=n.slice(),i=0;i<r.length;i++)r[i].apply(null,e)}return t.fns=e,t}function st(e,t,n,r,o){var a,s,c,u;for(a in e)s=e[a],c=t[a],u=ot(a),i(s)||(i(c)?(i(s.fns)&&(s=e[a]=at(s)),n(u.name,s,u.once,u.capture,u.passive,u.params)):s!==c&&(c.fns=s,e[a]=c));for(a in t)i(e[a])&&r((u=ot(a)).name,t[a],u.capture)}function ct(e,t,n){var r;e instanceof ve&&(e=e.data.hook||(e.data.hook={}));var s=e[t];function c(){n.apply(this,arguments),g(r.fns,c)}i(s)?r=at([c]):o(s.fns)&&a(s.merged)?(r=s).fns.push(c):r=at([s,c]),r.merged=!0,e[t]=r}function ut(e,t,n,r,i){if(o(t)){if(b(t,n))return e[n]=t[n],i||delete t[n],!0;if(b(t,r))return e[n]=t[r],i||delete t[r],!0}return!1}function lt(e){return s(e)?[ye(e)]:Array.isArray(e)?function e(t,n){var r=[];var c,u,l,f;for(c=0;c<t.length;c++)i(u=t[c])||"boolean"==typeof u||(l=r.length-1,f=r[l],Array.isArray(u)?u.length>0&&(ft((u=e(u,(n||"")+"_"+c))[0])&&ft(f)&&(r[l]=ye(f.text+u[0].text),u.shift()),r.push.apply(r,u)):s(u)?ft(f)?r[l]=ye(f.text+u):""!==u&&r.push(ye(u)):ft(u)&&ft(f)?r[l]=ye(f.text+u.text):(a(t._isVList)&&o(u.tag)&&i(u.key)&&o(n)&&(u.key="__vlist"+n+"_"+c+"__"),r.push(u)));return r}(e):void 0}function ft(e){return o(e)&&o(e.text)&&function(e){return!1===e}(e.isComment)}function pt(e,t){return(e.__esModule||se&&"Module"===e[Symbol.toStringTag])&&(e=e.default),c(e)?t.extend(e):e}function dt(e){return e.isComment&&e.asyncFactory}function vt(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(o(n)&&(o(n.componentOptions)||dt(n)))return n}}function ht(e,t,n){n?it.$once(e,t):it.$on(e,t)}function mt(e,t){it.$off(e,t)}function yt(e,t,n){it=e,st(t,n||{},ht,mt),it=void 0}function gt(e,t){var n={};if(!e)return n;for(var r=0,i=e.length;r<i;r++){var o=e[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==t&&o.fnContext!==t||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var u in n)n[u].every(_t)&&delete n[u];return n}function _t(e){return e.isComment&&!e.asyncFactory||" "===e.text}function bt(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?bt(e[n],t):t[e[n].key]=e[n].fn;return t}var wt=null;function xt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function $t(e,t){if(t){if(e._directInactive=!1,xt(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)$t(e.$children[n]);Ct(e,"activated")}}function Ct(e,t){pe();var n=e.$options[t];if(n)for(var r=0,i=n.length;r<i;r++)try{n[r].call(e)}catch(n){qe(n,e,t+" hook")}e._hasHookEvent&&e.$emit("hook:"+t),de()}var kt=[],At=[],Ot={},Tt=!1,St=!1,Et=0;function jt(){var e,t;for(St=!0,kt.sort(function(e,t){return e.id-t.id}),Et=0;Et<kt.length;Et++)t=(e=kt[Et]).id,Ot[t]=null,e.run();var n=At.slice(),r=kt.slice();Et=kt.length=At.length=0,Ot={},Tt=St=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,$t(e[t],!0)}(n),function(e){var t=e.length;for(;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&Ct(r,"updated")}}(r),ie&&B.devtools&&ie.emit("flush")}var It=0,Nt=function(e,t,n,r,i){this.vm=e,i&&(e._watcher=this),e._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++It,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ae,this.newDepIds=new ae,this.expression="","function"==typeof t?this.getter=t:(this.getter=function(e){if(!q.test(e)){var t=e.split(".");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}(t),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};Nt.prototype.get=function(){var e;pe(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;qe(e,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&rt(e),de(),this.cleanupDeps()}return e},Nt.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},Nt.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},Nt.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==Ot[t]){if(Ot[t]=!0,St){for(var n=kt.length-1;n>Et&&kt[n].id>e.id;)n--;kt.splice(n+1,0,e)}else kt.push(e);Tt||(Tt=!0,tt(jt))}}(this)},Nt.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||c(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){qe(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},Nt.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Nt.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},Nt.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var Lt={enumerable:!0,configurable:!0,get:j,set:j};function Dt(e,t,n){Lt.get=function(){return this[t][n]},Lt.set=function(e){this[t][n]=e},Object.defineProperty(e,n,Lt)}function Pt(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&$e(!1);var o=function(o){i.push(o);var a=Fe(o,t,n,e);Te(r,o,a),o in e||Dt(e,"_props",o)};for(var a in t)o(a);$e(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]=null==t[n]?j:O(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;l(t=e._data="function"==typeof t?function(e,t){pe();try{return e.call(t,t)}catch(e){return qe(e,t,"data()"),{}}finally{de()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];0,r&&b(r,o)||U(o)||Dt(e,"_data",o)}Oe(t,!0)}(e):Oe(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=re();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;0,r||(n[i]=new Nt(e,a||j,j,Mt)),i in e||Rt(e,i,o)}}(e,t.computed),t.watch&&t.watch!==ee&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)Bt(e,n,r[i]);else Bt(e,n,r)}}(e,t.watch)}var Mt={lazy:!0};function Rt(e,t,n){var r=!re();"function"==typeof n?(Lt.get=r?Ft(t):n,Lt.set=j):(Lt.get=n.get?r&&!1!==n.cache?Ft(t):n.get:j,Lt.set=n.set?n.set:j),Object.defineProperty(e,t,Lt)}function Ft(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),le.target&&t.depend(),t.value}}function Bt(e,t,n,r){return l(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}function Ut(e,t){if(e){for(var n=Object.create(null),r=se?Reflect.ownKeys(e).filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}):Object.keys(e),i=0;i<r.length;i++){for(var o=r[i],a=e[o].from,s=t;s;){if(s._provided&&b(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if("default"in e[o]){var c=e[o].default;n[o]="function"==typeof c?c.call(t):c}else 0}return n}}function Ht(e,t){var n,r,i,a,s;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,i=e.length;r<i;r++)n[r]=t(e[r],r);else if("number"==typeof e)for(n=new Array(e),r=0;r<e;r++)n[r]=t(r+1,r);else if(c(e))for(a=Object.keys(e),n=new Array(a.length),r=0,i=a.length;r<i;r++)s=a[r],n[r]=t(e[s],s,r);return o(n)&&(n._isVList=!0),n}function qt(e,t,n,r){var i,o=this.$scopedSlots[e];if(o)n=n||{},r&&(n=S(S({},r),n)),i=o(n)||t;else{var a=this.$slots[e];a&&(a._rendered=!0),i=a||t}var s=n&&n.slot;return s?this.$createElement("template",{slot:s},i):i}function Vt(e){return Re(this.$options,"filters",e)||N}function zt(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function Jt(e,t,n,r,i){var o=B.keyCodes[t]||n;return i&&r&&!B.keyCodes[t]?zt(i,r):o?zt(o,e):r?A(r)!==t:void 0}function Kt(e,t,n,r,i){if(n)if(c(n)){var o;Array.isArray(n)&&(n=E(n));var a=function(a){if("class"===a||"style"===a||y(a))o=e;else{var s=e.attrs&&e.attrs.type;o=r||B.mustUseProp(t,s,a)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}a in o||(o[a]=n[a],i&&((e.on||(e.on={}))["update:"+a]=function(e){n[a]=e}))};for(var s in n)a(s)}else;return e}function Xt(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];return r&&!t?r:(Gt(r=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),"__static__"+e,!1),r)}function Wt(e,t,n){return Gt(e,"__once__"+t+(n?"_"+n:""),!0),e}function Gt(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&"string"!=typeof e[r]&&Zt(e[r],t+"_"+r,n);else Zt(e,t,n)}function Zt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function Yt(e,t){if(t)if(l(t)){var n=e.on=e.on?S({},e.on):{};for(var r in t){var i=n[r],o=t[r];n[r]=i?[].concat(i,o):o}}else;return e}function Qt(e){e._o=Wt,e._n=v,e._s=d,e._l=Ht,e._t=qt,e._q=L,e._i=D,e._m=Xt,e._f=Vt,e._k=Jt,e._b=Kt,e._v=ye,e._e=me,e._u=bt,e._g=Yt}function en(e,t,n,i,o){var s,c=o.options;b(i,"_uid")?(s=Object.create(i))._original=i:(s=i,i=i._original);var u=a(c._compiled),l=!u;this.data=e,this.props=t,this.children=n,this.parent=i,this.listeners=e.on||r,this.injections=Ut(c.inject,i),this.slots=function(){return gt(n,i)},u&&(this.$options=c,this.$slots=this.slots(),this.$scopedSlots=e.scopedSlots||r),c._scopeId?this._c=function(e,t,n,r){var o=un(s,e,t,n,r,l);return o&&!Array.isArray(o)&&(o.fnScopeId=c._scopeId,o.fnContext=i),o}:this._c=function(e,t,n,r){return un(s,e,t,n,r,l)}}function tn(e,t,n,r){var i=ge(e);return i.fnContext=n,i.fnOptions=r,t.slot&&((i.data||(i.data={})).slot=t.slot),i}function nn(e,t){for(var n in t)e[$(n)]=t[n]}Qt(en.prototype);var rn={init:function(e,t,n,r){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var i=e;rn.prepatch(i,i)}else{(e.componentInstance=function(e,t,n,r){var i={_isComponent:!0,parent:t,_parentVnode:e,_parentElm:n||null,_refElm:r||null},a=e.data.inlineTemplate;o(a)&&(i.render=a.render,i.staticRenderFns=a.staticRenderFns);return new e.componentOptions.Ctor(i)}(e,wt,n,r)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var n=t.componentOptions;!function(e,t,n,i,o){var a=!!(o||e.$options._renderChildren||i.data.scopedSlots||e.$scopedSlots!==r);if(e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=o,e.$attrs=i.data.attrs||r,e.$listeners=n||r,t&&e.$options.props){$e(!1);for(var s=e._props,c=e.$options._propKeys||[],u=0;u<c.length;u++){var l=c[u],f=e.$options.props;s[l]=Fe(l,f,t,e)}$e(!0),e.$options.propsData=t}n=n||r;var p=e.$options._parentListeners;e.$options._parentListeners=n,yt(e,n,p),a&&(e.$slots=gt(o,i.context),e.$forceUpdate())}(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t=e.context,n=e.componentInstance;n._isMounted||(n._isMounted=!0,Ct(n,"mounted")),e.data.keepAlive&&(t._isMounted?function(e){e._inactive=!1,At.push(e)}(n):$t(n,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(!(n&&(t._directInactive=!0,xt(t))||t._inactive)){t._inactive=!0;for(var r=0;r<t.$children.length;r++)e(t.$children[r]);Ct(t,"deactivated")}}(t,!0):t.$destroy())}},on=Object.keys(rn);function an(e,t,n,s,u){if(!i(e)){var l=n.$options._base;if(c(e)&&(e=l.extend(e)),"function"==typeof e){var f;if(i(e.cid)&&void 0===(e=function(e,t,n){if(a(e.error)&&o(e.errorComp))return e.errorComp;if(o(e.resolved))return e.resolved;if(a(e.loading)&&o(e.loadingComp))return e.loadingComp;if(!o(e.contexts)){var r=e.contexts=[n],s=!0,u=function(){for(var e=0,t=r.length;e<t;e++)r[e].$forceUpdate()},l=P(function(n){e.resolved=pt(n,t),s||u()}),f=P(function(t){o(e.errorComp)&&(e.error=!0,u())}),p=e(l,f);return c(p)&&("function"==typeof p.then?i(e.resolved)&&p.then(l,f):o(p.component)&&"function"==typeof p.component.then&&(p.component.then(l,f),o(p.error)&&(e.errorComp=pt(p.error,t)),o(p.loading)&&(e.loadingComp=pt(p.loading,t),0===p.delay?e.loading=!0:setTimeout(function(){i(e.resolved)&&i(e.error)&&(e.loading=!0,u())},p.delay||200)),o(p.timeout)&&setTimeout(function(){i(e.resolved)&&f(null)},p.timeout))),s=!1,e.loading?e.loadingComp:e.resolved}e.contexts.push(n)}(f=e,l,n)))return function(e,t,n,r,i){var o=me();return o.asyncFactory=e,o.asyncMeta={data:t,context:n,children:r,tag:i},o}(f,t,n,s,u);t=t||{},fn(e),o(t.model)&&function(e,t){var n=e.model&&e.model.prop||"value",r=e.model&&e.model.event||"input";(t.props||(t.props={}))[n]=t.model.value;var i=t.on||(t.on={});o(i[r])?i[r]=[t.model.callback].concat(i[r]):i[r]=t.model.callback}(e.options,t);var p=function(e,t,n){var r=t.options.props;if(!i(r)){var a={},s=e.attrs,c=e.props;if(o(s)||o(c))for(var u in r){var l=A(u);ut(a,c,u,l,!0)||ut(a,s,u,l,!1)}return a}}(t,e);if(a(e.options.functional))return function(e,t,n,i,a){var s=e.options,c={},u=s.props;if(o(u))for(var l in u)c[l]=Fe(l,u,t||r);else o(n.attrs)&&nn(c,n.attrs),o(n.props)&&nn(c,n.props);var f=new en(n,c,a,i,e),p=s.render.call(null,f._c,f);if(p instanceof ve)return tn(p,n,f.parent,s);if(Array.isArray(p)){for(var d=lt(p)||[],v=new Array(d.length),h=0;h<d.length;h++)v[h]=tn(d[h],n,f.parent,s);return v}}(e,p,t,n,s);var d=t.on;if(t.on=t.nativeOn,a(e.options.abstract)){var v=t.slot;t={},v&&(t.slot=v)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<on.length;n++){var r=on[n];t[r]=rn[r]}}(t);var h=e.options.name||u;return new ve("vue-component-"+e.cid+(h?"-"+h:""),t,void 0,void 0,void 0,n,{Ctor:e,propsData:p,listeners:d,tag:u,children:s},f)}}}var sn=1,cn=2;function un(e,t,n,r,u,l){return(Array.isArray(n)||s(n))&&(u=r,r=n,n=void 0),a(l)&&(u=cn),function(e,t,n,r,s){if(o(n)&&o(n.__ob__))return me();o(n)&&o(n.is)&&(t=n.is);if(!t)return me();0;Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);s===cn?r=lt(r):s===sn&&(r=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(r));var u,l;if("string"==typeof t){var f;l=e.$vnode&&e.$vnode.ns||B.getTagNamespace(t),u=B.isReservedTag(t)?new ve(B.parsePlatformTagName(t),n,r,void 0,void 0,e):o(f=Re(e.$options,"components",t))?an(f,n,e,r,t):new ve(t,n,r,void 0,void 0,e)}else u=an(t,n,e,r);return Array.isArray(u)?u:o(u)?(o(l)&&function e(t,n,r){t.ns=n;"foreignObject"===t.tag&&(n=void 0,r=!0);if(o(t.children))for(var s=0,c=t.children.length;s<c;s++){var u=t.children[s];o(u.tag)&&(i(u.ns)||a(r)&&"svg"!==u.tag)&&e(u,n,r)}}(u,l),o(n)&&function(e){c(e.style)&&rt(e.style);c(e.class)&&rt(e.class)}(n),u):me()}(e,t,n,r,u)}var ln=0;function fn(e){var t=e.options;if(e.super){var n=fn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.extendOptions,i=e.sealedOptions;for(var o in n)n[o]!==i[o]&&(t||(t={}),t[o]=pn(n[o],r[o],i[o]));return t}(e);r&&S(e.extendOptions,r),(t=e.options=Me(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function pn(e,t,n){if(Array.isArray(e)){var r=[];n=Array.isArray(n)?n:[n],t=Array.isArray(t)?t:[t];for(var i=0;i<e.length;i++)(t.indexOf(e[i])>=0||n.indexOf(e[i])<0)&&r.push(e[i]);return r}return e}function dn(e){this._init(e)}function vn(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,i=e._Ctor||(e._Ctor={});if(i[r])return i[r];var o=e.name||n.options.name;var a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Me(n.options,e),a.super=n,a.options.props&&function(e){var t=e.options.props;for(var n in t)Dt(e.prototype,"_props",n)}(a),a.options.computed&&function(e){var t=e.options.computed;for(var n in t)Rt(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach(function(e){a[e]=n[e]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=S({},a.options),i[r]=a,a}}function hn(e){return e&&(e.Ctor.options.name||e.tag)}function mn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!f(e)&&e.test(t)}function yn(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=hn(a.componentOptions);s&&!t(s)&&gn(n,o,r,i)}}}function gn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,g(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=ln++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r,n._parentElm=t._parentElm,n._refElm=t._refElm;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Me(fn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&yt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=gt(t._renderChildren,i),e.$scopedSlots=r,e._c=function(t,n,r,i){return un(e,t,n,r,i,!1)},e.$createElement=function(t,n,r,i){return un(e,t,n,r,i,!0)};var o=n&&n.data;Te(e,"$attrs",o&&o.attrs||r,null,!0),Te(e,"$listeners",t._parentListeners||r,null,!0)}(t),Ct(t,"beforeCreate"),function(e){var t=Ut(e.$options.inject,e);t&&($e(!1),Object.keys(t).forEach(function(n){Te(e,n,t[n])}),$e(!0))}(t),Pt(t),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(t),Ct(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(dn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=Se,e.prototype.$delete=Ee,e.prototype.$watch=function(e,t,n){if(l(t))return Bt(this,e,t,n);(n=n||{}).user=!0;var r=new Nt(this,e,t,n);return n.immediate&&t.call(this,r.value),function(){r.teardown()}}}(dn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){if(Array.isArray(e))for(var r=0,i=e.length;r<i;r++)this.$on(e[r],n);else(this._events[e]||(this._events[e]=[])).push(n),t.test(e)&&(this._hasHookEvent=!0);return this},e.prototype.$once=function(e,t){var n=this;function r(){n.$off(e,r),t.apply(n,arguments)}return r.fn=t,n.$on(e,r),n},e.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var r=0,i=e.length;r<i;r++)this.$off(e[r],t);return n}var o=n._events[e];if(!o)return n;if(!t)return n._events[e]=null,n;if(t)for(var a,s=o.length;s--;)if((a=o[s])===t||a.fn===t){o.splice(s,1);break}return n},e.prototype.$emit=function(e){var t=this._events[e];if(t){t=t.length>1?T(t):t;for(var n=T(arguments,1),r=0,i=t.length;r<i;r++)try{t[r].apply(this,n)}catch(t){qe(t,this,'event handler for "'+e+'"')}}return this}}(dn),function(e){e.prototype._update=function(e,t){var n=this;n._isMounted&&Ct(n,"beforeUpdate");var r=n.$el,i=n._vnode,o=wt;wt=n,n._vnode=e,i?n.$el=n.__patch__(i,e):(n.$el=n.__patch__(n.$el,e,t,!1,n.$options._parentElm,n.$options._refElm),n.$options._parentElm=n.$options._refElm=null),wt=o,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Ct(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||g(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Ct(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(dn),function(e){Qt(e.prototype),e.prototype.$nextTick=function(e){return tt(e,this)},e.prototype._render=function(){var e,t=this,n=t.$options,i=n.render,o=n._parentVnode;o&&(t.$scopedSlots=o.data.scopedSlots||r),t.$vnode=o;try{e=i.call(t._renderProxy,t.$createElement)}catch(n){qe(n,t,"render"),e=t._vnode}return e instanceof ve||(e=me()),e.parent=o,e}}(dn);var _n=[String,RegExp,Array],bn={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:_n,exclude:_n,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)gn(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",function(t){yn(e,function(e){return mn(t,e)})}),this.$watch("exclude",function(t){yn(e,function(e){return!mn(t,e)})})},render:function(){var e=this.$slots.default,t=vt(e),n=t&&t.componentOptions;if(n){var r=hn(n),i=this.include,o=this.exclude;if(i&&(!r||!mn(i,r))||o&&r&&mn(o,r))return t;var a=this.cache,s=this.keys,c=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;a[c]?(t.componentInstance=a[c].componentInstance,g(s,c),s.push(c)):(a[c]=t,s.push(c),this.max&&s.length>parseInt(this.max)&&gn(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return B}};Object.defineProperty(e,"config",t),e.util={warn:ce,extend:S,mergeOptions:Me,defineReactive:Te},e.set=Se,e.delete=Ee,e.nextTick=tt,e.options=Object.create(null),R.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,S(e.options.components,bn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=T(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Me(this.options,e),this}}(e),vn(e),function(e){R.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&l(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}(e)}(dn),Object.defineProperty(dn.prototype,"$isServer",{get:re}),Object.defineProperty(dn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(dn,"FunctionalRenderContext",{value:en}),dn.version="2.5.17";var wn=h("style,class"),xn=h("input,textarea,option,select,progress"),$n=function(e,t,n){return"value"===n&&xn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Cn=h("contenteditable,draggable,spellcheck"),kn=h("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),An="http://www.w3.org/1999/xlink",On=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Tn=function(e){return On(e)?e.slice(6,e.length):""},Sn=function(e){return null==e||!1===e};function En(e){for(var t=e.data,n=e,r=e;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=jn(r.data,t));for(;o(n=n.parent);)n&&n.data&&(t=jn(t,n.data));return function(e,t){if(o(e)||o(t))return In(e,Nn(t));return""}(t.staticClass,t.class)}function jn(e,t){return{staticClass:In(e.staticClass,t.staticClass),class:o(e.class)?[e.class,t.class]:t.class}}function In(e,t){return e?t?e+" "+t:e:t||""}function Nn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,i=e.length;r<i;r++)o(t=Nn(e[r]))&&""!==t&&(n&&(n+=" "),n+=t);return n}(e):c(e)?function(e){var t="";for(var n in e)e[n]&&(t&&(t+=" "),t+=n);return t}(e):"string"==typeof e?e:""}var Ln={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Dn=h("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Pn=h("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Mn=function(e){return Dn(e)||Pn(e)};function Rn(e){return Pn(e)?"svg":"math"===e?"math":void 0}var Fn=Object.create(null);var Bn=h("text,number,password,search,email,tel,url");function Un(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}var Hn=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)},createElementNS:function(e,t){return document.createElementNS(Ln[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),qn={create:function(e,t){Vn(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Vn(e,!0),Vn(t))},destroy:function(e){Vn(e,!0)}};function Vn(e,t){var n=e.data.ref;if(o(n)){var r=e.context,i=e.componentInstance||e.elm,a=r.$refs;t?Array.isArray(a[n])?g(a[n],i):a[n]===i&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var zn=new ve("",{},[]),Jn=["create","activate","update","remove","destroy"];function Kn(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&o(e.data)===o(t.data)&&function(e,t){if("input"!==e.tag)return!0;var n,r=o(n=e.data)&&o(n=n.attrs)&&n.type,i=o(n=t.data)&&o(n=n.attrs)&&n.type;return r===i||Bn(r)&&Bn(i)}(e,t)||a(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function Xn(e,t,n){var r,i,a={};for(r=t;r<=n;++r)o(i=e[r].key)&&(a[i]=r);return a}var Wn={create:Gn,update:Gn,destroy:function(e){Gn(e,zn)}};function Gn(e,t){(e.data.directives||t.data.directives)&&function(e,t){var n,r,i,o=e===zn,a=t===zn,s=Yn(e.data.directives,e.context),c=Yn(t.data.directives,t.context),u=[],l=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,er(i,"update",t,e),i.def&&i.def.componentUpdated&&l.push(i)):(er(i,"bind",t,e),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n<u.length;n++)er(u[n],"inserted",t,e)};o?ct(t,"insert",f):f()}l.length&&ct(t,"postpatch",function(){for(var n=0;n<l.length;n++)er(l[n],"componentUpdated",t,e)});if(!o)for(n in s)c[n]||er(s[n],"unbind",e,e,a)}(e,t)}var Zn=Object.create(null);function Yn(e,t){var n,r,i=Object.create(null);if(!e)return i;for(n=0;n<e.length;n++)(r=e[n]).modifiers||(r.modifiers=Zn),i[Qn(r)]=r,r.def=Re(t.$options,"directives",r.name);return i}function Qn(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{}).join(".")}function er(e,t,n,r,i){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,r,i)}catch(r){qe(r,n.context,"directive "+e.name+" "+t+" hook")}}var tr=[qn,Wn];function nr(e,t){var n=t.componentOptions;if(!(o(n)&&!1===n.Ctor.options.inheritAttrs||i(e.data.attrs)&&i(t.data.attrs))){var r,a,s=t.elm,c=e.data.attrs||{},u=t.data.attrs||{};for(r in o(u.__ob__)&&(u=t.data.attrs=S({},u)),u)a=u[r],c[r]!==a&&rr(s,r,a);for(r in(G||Y)&&u.value!==c.value&&rr(s,"value",u.value),c)i(u[r])&&(On(r)?s.removeAttributeNS(An,Tn(r)):Cn(r)||s.removeAttribute(r))}}function rr(e,t,n){e.tagName.indexOf("-")>-1?ir(e,t,n):kn(t)?Sn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Cn(t)?e.setAttribute(t,Sn(n)||"false"===n?"false":"true"):On(t)?Sn(n)?e.removeAttributeNS(An,Tn(t)):e.setAttributeNS(An,t,n):ir(e,t,n)}function ir(e,t,n){if(Sn(n))e.removeAttribute(t);else{if(G&&!Z&&"TEXTAREA"===e.tagName&&"placeholder"===t&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var or={create:nr,update:nr};function ar(e,t){var n=t.elm,r=t.data,a=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=En(t),c=n._transitionClasses;o(c)&&(s=In(s,Nn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var sr,cr,ur,lr,fr,pr,dr={create:ar,update:ar},vr=/[\w).+\-_$\]]/;function hr(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r<e.length;r++)if(n=t,t=e.charCodeAt(r),a)39===t&&92!==n&&(a=!1);else if(s)34===t&&92!==n&&(s=!1);else if(c)96===t&&92!==n&&(c=!1);else if(u)47===t&&92!==n&&(u=!1);else if(124!==t||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||l||f||p){switch(t){case 34:s=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:p++;break;case 41:p--;break;case 91:f++;break;case 93:f--;break;case 123:l++;break;case 125:l--}if(47===t){for(var v=r-1,h=void 0;v>=0&&" "===(h=e.charAt(v));v--);h&&vr.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r<o.length;r++)i=mr(i,o[r]);return i}function mr(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";var r=t.slice(0,n),i=t.slice(n+1);return'_f("'+r+'")('+e+(")"!==i?","+i:i)}function yr(e){console.error("[Vue compiler]: "+e)}function gr(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function _r(e,t,n){(e.props||(e.props=[])).push({name:t,value:n}),e.plain=!1}function br(e,t,n){(e.attrs||(e.attrs=[])).push({name:t,value:n}),e.plain=!1}function wr(e,t,n){e.attrsMap[t]=n,e.attrsList.push({name:t,value:n})}function xr(e,t,n,r,i,o){(e.directives||(e.directives=[])).push({name:t,rawName:n,value:r,arg:i,modifiers:o}),e.plain=!1}function $r(e,t,n,i,o,a){var s;(i=i||r).capture&&(delete i.capture,t="!"+t),i.once&&(delete i.once,t="~"+t),i.passive&&(delete i.passive,t="&"+t),"click"===t&&(i.right?(t="contextmenu",delete i.right):i.middle&&(t="mouseup")),i.native?(delete i.native,s=e.nativeEvents||(e.nativeEvents={})):s=e.events||(e.events={});var c={value:n.trim()};i!==r&&(c.modifiers=i);var u=s[t];Array.isArray(u)?o?u.unshift(c):u.push(c):s[t]=u?o?[c,u]:[u,c]:c,e.plain=!1}function Cr(e,t,n){var r=kr(e,":"+t)||kr(e,"v-bind:"+t);if(null!=r)return hr(r);if(!1!==n){var i=kr(e,t);if(null!=i)return JSON.stringify(i)}}function kr(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsList,o=0,a=i.length;o<a;o++)if(i[o].name===t){i.splice(o,1);break}return n&&delete e.attrsMap[t],r}function Ar(e,t,n){var r=n||{},i=r.number,o="$$v";r.trim&&(o="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(o="_n("+o+")");var a=Or(t,o);e.model={value:"("+t+")",expression:'"'+t+'"',callback:"function ($$v) {"+a+"}"}}function Or(e,t){var n=function(e){if(e=e.trim(),sr=e.length,e.indexOf("[")<0||e.lastIndexOf("]")<sr-1)return(lr=e.lastIndexOf("."))>-1?{exp:e.slice(0,lr),key:'"'+e.slice(lr+1)+'"'}:{exp:e,key:null};cr=e,lr=fr=pr=0;for(;!Sr();)Er(ur=Tr())?Ir(ur):91===ur&&jr(ur);return{exp:e.slice(0,fr),key:e.slice(fr+1,pr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Tr(){return cr.charCodeAt(++lr)}function Sr(){return lr>=sr}function Er(e){return 34===e||39===e}function jr(e){var t=1;for(fr=lr;!Sr();)if(Er(e=Tr()))Ir(e);else if(91===e&&t++,93===e&&t--,0===t){pr=lr;break}}function Ir(e){for(var t=e;!Sr()&&(e=Tr())!==t;);}var Nr,Lr="__r",Dr="__c";function Pr(e,t,n,r,i){t=function(e){return e._withTask||(e._withTask=function(){Ze=!0;var t=e.apply(null,arguments);return Ze=!1,t})}(t),n&&(t=function(e,t,n){var r=Nr;return function i(){null!==e.apply(null,arguments)&&Mr(t,i,n,r)}}(t,e,r)),Nr.addEventListener(e,t,te?{capture:r,passive:i}:r)}function Mr(e,t,n,r){(r||Nr).removeEventListener(e,t._withTask||t,n)}function Rr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Nr=t.elm,function(e){if(o(e[Lr])){var t=G?"change":"input";e[t]=[].concat(e[Lr],e[t]||[]),delete e[Lr]}o(e[Dr])&&(e.change=[].concat(e[Dr],e.change||[]),delete e[Dr])}(n),st(n,r,Pr,Mr,t.context),Nr=void 0}}var Fr={create:Rr,update:Rr};function Br(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,a=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in o(c.__ob__)&&(c=t.data.domProps=S({},c)),s)i(c[n])&&(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n){a._value=r;var u=i(r)?"":String(r);Ur(a,u)&&(a.value=u)}else a[n]=r}}}function Ur(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(o(r)){if(r.lazy)return!1;if(r.number)return v(n)!==v(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Hr={create:Br,update:Br},qr=w(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function Vr(e){var t=zr(e.style);return e.staticStyle?S(e.staticStyle,t):t}function zr(e){return Array.isArray(e)?E(e):"string"==typeof e?qr(e):e}var Jr,Kr=/^--/,Xr=/\s*!important$/,Wr=function(e,t,n){if(Kr.test(t))e.style.setProperty(t,n);else if(Xr.test(n))e.style.setProperty(t,n.replace(Xr,""),"important");else{var r=Zr(t);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)e.style[r]=n[i];else e.style[r]=n}},Gr=["Webkit","Moz","ms"],Zr=w(function(e){if(Jr=Jr||document.createElement("div").style,"filter"!==(e=$(e))&&e in Jr)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<Gr.length;n++){var r=Gr[n]+t;if(r in Jr)return r}});function Yr(e,t){var n=t.data,r=e.data;if(!(i(n.staticStyle)&&i(n.style)&&i(r.staticStyle)&&i(r.style))){var a,s,c=t.elm,u=r.staticStyle,l=r.normalizedStyle||r.style||{},f=u||l,p=zr(t.data.style)||{};t.data.normalizedStyle=o(p.__ob__)?S({},p):p;var d=function(e,t){var n,r={};if(t)for(var i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=Vr(i.data))&&S(r,n);(n=Vr(e.data))&&S(r,n);for(var o=e;o=o.parent;)o.data&&(n=Vr(o.data))&&S(r,n);return r}(t,!0);for(s in f)i(d[s])&&Wr(c,s,"");for(s in d)(a=d[s])!==f[s]&&Wr(c,s,null==a?"":a)}}var Qr={create:Yr,update:Yr};function ei(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function ti(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function ni(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&S(t,ri(e.name||"v")),S(t,e),t}return"string"==typeof e?ri(e):void 0}}var ri=w(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),ii=J&&!Z,oi="transition",ai="animation",si="transition",ci="transitionend",ui="animation",li="animationend";ii&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(si="WebkitTransition",ci="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ui="WebkitAnimation",li="webkitAnimationEnd"));var fi=J?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function pi(e){fi(function(){fi(e)})}function di(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),ei(e,t))}function vi(e,t){e._transitionClasses&&g(e._transitionClasses,t),ti(e,t)}function hi(e,t,n){var r=yi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===oi?ci:li,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c<a&&u()},o+1),e.addEventListener(s,l)}var mi=/\b(transform|all)(,|$)/;function yi(e,t){var n,r=window.getComputedStyle(e),i=r[si+"Delay"].split(", "),o=r[si+"Duration"].split(", "),a=gi(i,o),s=r[ui+"Delay"].split(", "),c=r[ui+"Duration"].split(", "),u=gi(s,c),l=0,f=0;return t===oi?a>0&&(n=oi,l=a,f=o.length):t===ai?u>0&&(n=ai,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?oi:ai:null)?n===oi?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===oi&&mi.test(r[si+"Property"])}}function gi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map(function(t,n){return _i(t)+_i(e[n])}))}function _i(e){return 1e3*Number(e.slice(0,-1))}function bi(e,t){var n=e.elm;o(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=ni(e.data.transition);if(!i(r)&&!o(n._enterCb)&&1===n.nodeType){for(var a=r.css,s=r.type,u=r.enterClass,l=r.enterToClass,f=r.enterActiveClass,p=r.appearClass,d=r.appearToClass,h=r.appearActiveClass,m=r.beforeEnter,y=r.enter,g=r.afterEnter,_=r.enterCancelled,b=r.beforeAppear,w=r.appear,x=r.afterAppear,$=r.appearCancelled,C=r.duration,k=wt,A=wt.$vnode;A&&A.parent;)k=(A=A.parent).context;var O=!k._isMounted||!e.isRootInsert;if(!O||w||""===w){var T=O&&p?p:u,S=O&&h?h:f,E=O&&d?d:l,j=O&&b||m,I=O&&"function"==typeof w?w:y,N=O&&x||g,L=O&&$||_,D=v(c(C)?C.enter:C);0;var M=!1!==a&&!Z,R=$i(I),F=n._enterCb=P(function(){M&&(vi(n,E),vi(n,S)),F.cancelled?(M&&vi(n,T),L&&L(n)):N&&N(n),n._enterCb=null});e.data.show||ct(e,"insert",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),I&&I(n,F)}),j&&j(n),M&&(di(n,T),di(n,S),pi(function(){vi(n,T),F.cancelled||(di(n,E),R||(xi(D)?setTimeout(F,D):hi(n,s,F)))})),e.data.show&&(t&&t(),I&&I(n,F)),M||R||F()}}}function wi(e,t){var n=e.elm;o(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=ni(e.data.transition);if(i(r)||1!==n.nodeType)return t();if(!o(n._leaveCb)){var a=r.css,s=r.type,u=r.leaveClass,l=r.leaveToClass,f=r.leaveActiveClass,p=r.beforeLeave,d=r.leave,h=r.afterLeave,m=r.leaveCancelled,y=r.delayLeave,g=r.duration,_=!1!==a&&!Z,b=$i(d),w=v(c(g)?g.leave:g);0;var x=n._leaveCb=P(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),_&&(vi(n,l),vi(n,f)),x.cancelled?(_&&vi(n,u),m&&m(n)):(t(),h&&h(n)),n._leaveCb=null});y?y($):$()}function $(){x.cancelled||(e.data.show||((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),p&&p(n),_&&(di(n,u),di(n,f),pi(function(){vi(n,u),x.cancelled||(di(n,l),b||(xi(w)?setTimeout(x,w):hi(n,s,x)))})),d&&d(n,x),_||b||x())}}function xi(e){return"number"==typeof e&&!isNaN(e)}function $i(e){if(i(e))return!1;var t=e.fns;return o(t)?$i(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ci(e,t){!0!==t.data.show&&bi(t)}var ki=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;t<Jn.length;++t)for(r[Jn[t]]=[],n=0;n<c.length;++n)o(c[n][Jn[t]])&&r[Jn[t]].push(c[n][Jn[t]]);function l(e){var t=u.parentNode(e);o(t)&&u.removeChild(t,e)}function f(e,t,n,i,s,c,l){if(o(e.elm)&&o(c)&&(e=c[l]=ge(e)),e.isRootInsert=!s,!function(e,t,n,i){var s=e.data;if(o(s)){var c=o(e.componentInstance)&&s.keepAlive;if(o(s=s.hook)&&o(s=s.init)&&s(e,!1,n,i),o(e.componentInstance))return p(e,t),a(c)&&function(e,t,n,i){for(var a,s=e;s.componentInstance;)if(s=s.componentInstance._vnode,o(a=s.data)&&o(a=a.transition)){for(a=0;a<r.activate.length;++a)r.activate[a](zn,s);t.push(s);break}d(n,e.elm,i)}(e,t,n,i),!0}}(e,t,n,i)){var f=e.data,h=e.children,m=e.tag;o(m)?(e.elm=e.ns?u.createElementNS(e.ns,m):u.createElement(m,e),g(e),v(e,h,t),o(f)&&y(e,t),d(n,e.elm,i)):a(e.isComment)?(e.elm=u.createComment(e.text),d(n,e.elm,i)):(e.elm=u.createTextNode(e.text),d(n,e.elm,i))}}function p(e,t){o(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,m(e)?(y(e,t),g(e)):(Vn(e),t.push(e))}function d(e,t,n){o(e)&&(o(n)?n.parentNode===e&&u.insertBefore(e,t,n):u.appendChild(e,t))}function v(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)f(t[r],n,e.elm,null,!0,t,r);else s(e.text)&&u.appendChild(e.elm,u.createTextNode(String(e.text)))}function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return o(e.tag)}function y(e,n){for(var i=0;i<r.create.length;++i)r.create[i](zn,e);o(t=e.data.hook)&&(o(t.create)&&t.create(zn,e),o(t.insert)&&n.push(e))}function g(e){var t;if(o(t=e.fnScopeId))u.setStyleScope(e.elm,t);else for(var n=e;n;)o(t=n.context)&&o(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t),n=n.parent;o(t=wt)&&t!==e.context&&t!==e.fnContext&&o(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t)}function _(e,t,n,r,i,o){for(;r<=i;++r)f(n[r],o,e,t,!1,n,r)}function b(e){var t,n,i=e.data;if(o(i))for(o(t=i.hook)&&o(t=t.destroy)&&t(e),t=0;t<r.destroy.length;++t)r.destroy[t](e);if(o(t=e.children))for(n=0;n<e.children.length;++n)b(e.children[n])}function w(e,t,n,r){for(;n<=r;++n){var i=t[n];o(i)&&(o(i.tag)?(x(i),b(i)):l(i.elm))}}function x(e,t){if(o(t)||o(e.data)){var n,i=r.remove.length+1;for(o(t)?t.listeners+=i:t=function(e,t){function n(){0==--n.listeners&&l(e)}return n.listeners=t,n}(e.elm,i),o(n=e.componentInstance)&&o(n=n._vnode)&&o(n.data)&&x(n,t),n=0;n<r.remove.length;++n)r.remove[n](e,t);o(n=e.data.hook)&&o(n=n.remove)?n(e,t):t()}else l(e.elm)}function $(e,t,n,r){for(var i=n;i<r;i++){var a=t[i];if(o(a)&&Kn(e,a))return i}}function C(e,t,n,s){if(e!==t){var c=t.elm=e.elm;if(a(e.isAsyncPlaceholder))o(t.asyncFactory.resolved)?O(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(a(t.isStatic)&&a(e.isStatic)&&t.key===e.key&&(a(t.isCloned)||a(t.isOnce)))t.componentInstance=e.componentInstance;else{var l,p=t.data;o(p)&&o(l=p.hook)&&o(l=l.prepatch)&&l(e,t);var d=e.children,v=t.children;if(o(p)&&m(t)){for(l=0;l<r.update.length;++l)r.update[l](e,t);o(l=p.hook)&&o(l=l.update)&&l(e,t)}i(t.text)?o(d)&&o(v)?d!==v&&function(e,t,n,r,a){for(var s,c,l,p=0,d=0,v=t.length-1,h=t[0],m=t[v],y=n.length-1,g=n[0],b=n[y],x=!a;p<=v&&d<=y;)i(h)?h=t[++p]:i(m)?m=t[--v]:Kn(h,g)?(C(h,g,r),h=t[++p],g=n[++d]):Kn(m,b)?(C(m,b,r),m=t[--v],b=n[--y]):Kn(h,b)?(C(h,b,r),x&&u.insertBefore(e,h.elm,u.nextSibling(m.elm)),h=t[++p],b=n[--y]):Kn(m,g)?(C(m,g,r),x&&u.insertBefore(e,m.elm,h.elm),m=t[--v],g=n[++d]):(i(s)&&(s=Xn(t,p,v)),i(c=o(g.key)?s[g.key]:$(g,t,p,v))?f(g,r,e,h.elm,!1,n,d):Kn(l=t[c],g)?(C(l,g,r),t[c]=void 0,x&&u.insertBefore(e,l.elm,h.elm)):f(g,r,e,h.elm,!1,n,d),g=n[++d]);p>v?_(e,i(n[y+1])?null:n[y+1].elm,n,d,y,r):d>y&&w(0,t,p,v)}(c,d,v,n,s):o(v)?(o(e.text)&&u.setTextContent(c,""),_(c,null,v,0,v.length-1,n)):o(d)?w(0,d,0,d.length-1):o(e.text)&&u.setTextContent(c,""):e.text!==t.text&&u.setTextContent(c,t.text),o(p)&&o(l=p.hook)&&o(l=l.postpatch)&&l(e,t)}}}function k(e,t,n){if(a(n)&&o(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r<t.length;++r)t[r].data.hook.insert(t[r])}var A=h("attrs,class,staticClass,staticStyle,key");function O(e,t,n,r){var i,s=t.tag,c=t.data,u=t.children;if(r=r||c&&c.pre,t.elm=e,a(t.isComment)&&o(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(o(c)&&(o(i=c.hook)&&o(i=i.init)&&i(t,!0),o(i=t.componentInstance)))return p(t,n),!0;if(o(s)){if(o(u))if(e.hasChildNodes())if(o(i=c)&&o(i=i.domProps)&&o(i=i.innerHTML)){if(i!==e.innerHTML)return!1}else{for(var l=!0,f=e.firstChild,d=0;d<u.length;d++){if(!f||!O(f,u[d],n,r)){l=!1;break}f=f.nextSibling}if(!l||f)return!1}else v(t,u,n);if(o(c)){var h=!1;for(var m in c)if(!A(m)){h=!0,y(t,n);break}!h&&c.class&&rt(c.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,s,c,l){if(!i(t)){var p=!1,d=[];if(i(e))p=!0,f(t,d,c,l);else{var v=o(e.nodeType);if(!v&&Kn(e,t))C(e,t,d,s);else{if(v){if(1===e.nodeType&&e.hasAttribute(M)&&(e.removeAttribute(M),n=!0),a(n)&&O(e,t,d))return k(t,d,!0),e;e=function(e){return new ve(u.tagName(e).toLowerCase(),{},[],void 0,e)}(e)}var h=e.elm,y=u.parentNode(h);if(f(t,d,h._leaveCb?null:y,u.nextSibling(h)),o(t.parent))for(var g=t.parent,_=m(t);g;){for(var x=0;x<r.destroy.length;++x)r.destroy[x](g);if(g.elm=t.elm,_){for(var $=0;$<r.create.length;++$)r.create[$](zn,g);var A=g.data.hook.insert;if(A.merged)for(var T=1;T<A.fns.length;T++)A.fns[T]()}else Vn(g);g=g.parent}o(y)?w(0,[e],0,0):o(e.tag)&&b(e)}}return k(t,d,p),t.elm}o(e)&&b(e)}}({nodeOps:Hn,modules:[or,dr,Fr,Hr,Qr,J?{create:Ci,activate:Ci,remove:function(e,t){!0!==e.data.show?wi(e,t):t()}}:{}].concat(tr)});Z&&document.addEventListener("selectionchange",function(){var e=document.activeElement;e&&e.vmodel&&Ni(e,"input")});var Ai={inserted:function(e,t,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?ct(n,"postpatch",function(){Ai.componentUpdated(e,t,n)}):Oi(e,t,n.context),e._vOptions=[].map.call(e.options,Ei)):("textarea"===n.tag||Bn(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",ji),e.addEventListener("compositionend",Ii),e.addEventListener("change",Ii),Z&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Oi(e,t,n.context);var r=e._vOptions,i=e._vOptions=[].map.call(e.options,Ei);if(i.some(function(e,t){return!L(e,r[t])}))(e.multiple?t.value.some(function(e){return Si(e,i)}):t.value!==t.oldValue&&Si(t.value,i))&&Ni(e,"change")}}};function Oi(e,t,n){Ti(e,t,n),(G||Y)&&setTimeout(function(){Ti(e,t,n)},0)}function Ti(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s<c;s++)if(a=e.options[s],i)o=D(r,Ei(a))>-1,a.selected!==o&&(a.selected=o);else if(L(Ei(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Si(e,t){return t.every(function(t){return!L(t,e)})}function Ei(e){return"_value"in e?e._value:e.value}function ji(e){e.target.composing=!0}function Ii(e){e.target.composing&&(e.target.composing=!1,Ni(e.target,"input"))}function Ni(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Li(e){return!e.componentInstance||e.data&&e.data.transition?e:Li(e.componentInstance._vnode)}var Di={model:Ai,show:{bind:function(e,t,n){var r=t.value,i=(n=Li(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,bi(n,function(){e.style.display=o})):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Li(n)).data&&n.data.transition?(n.data.show=!0,r?bi(n,function(){e.style.display=e.__vOriginalDisplay}):wi(n,function(){e.style.display="none"})):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},Pi={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Mi(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Mi(vt(t.children)):e}function Ri(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[$(o)]=i[o];return t}function Fi(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Bi={name:"transition",props:Pi,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(function(e){return e.tag||dt(e)})).length){0;var r=this.mode;0;var i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var o=Mi(i);if(!o)return i;if(this._leaving)return Fi(e,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=Ri(this),u=this._vnode,l=Mi(u);if(o.data.directives&&o.data.directives.some(function(e){return"show"===e.name})&&(o.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,l)&&!dt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=S({},c);if("out-in"===r)return this._leaving=!0,ct(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),Fi(e,i);if("in-out"===r){if(dt(o))return u;var p,d=function(){p()};ct(c,"afterEnter",d),ct(c,"enterCancelled",d),ct(f,"delayLeave",function(e){p=e})}}return i}}},Ui=S({tag:String,moveClass:String},Pi);function Hi(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function qi(e){e.data.newPos=e.elm.getBoundingClientRect()}function Vi(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete Ui.mode;var zi={Transition:Bi,TransitionGroup:{props:Ui,render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Ri(this),s=0;s<i.length;s++){var c=i[s];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))o.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a;else;}if(r){for(var u=[],l=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?u.push(p):l.push(p)}this.kept=e(t,null,u),this.removed=l}return e(t,null,o)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(Hi),e.forEach(qi),e.forEach(Vi),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,r=n.style;di(n,t),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(ci,n._moveCb=function e(r){r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(ci,e),n._moveCb=null,vi(n,t))})}}))},methods:{hasMove:function(e,t){if(!ii)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){ti(n,e)}),ei(n,t),n.style.display="none",this.$el.appendChild(n);var r=yi(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};dn.config.mustUseProp=$n,dn.config.isReservedTag=Mn,dn.config.isReservedAttr=wn,dn.config.getTagNamespace=Rn,dn.config.isUnknownElement=function(e){if(!J)return!0;if(Mn(e))return!1;if(e=e.toLowerCase(),null!=Fn[e])return Fn[e];var t=document.createElement(e);return e.indexOf("-")>-1?Fn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Fn[e]=/HTMLUnknownElement/.test(t.toString())},S(dn.options.directives,Di),S(dn.options.components,zi),dn.prototype.__patch__=J?ki:j,dn.prototype.$mount=function(e,t){return function(e,t,n){return e.$el=t,e.$options.render||(e.$options.render=me),Ct(e,"beforeMount"),new Nt(e,function(){e._update(e._render(),n)},j,null,!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Ct(e,"mounted")),e}(this,e=e&&J?Un(e):void 0,t)},J&&setTimeout(function(){B.devtools&&ie&&ie.emit("init",dn)},0);var Ji=/\{\{((?:.|\n)+?)\}\}/g,Ki=/[-.*+?^${}()|[\]\/\\]/g,Xi=w(function(e){var t=e[0].replace(Ki,"\\$&"),n=e[1].replace(Ki,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")});var Wi={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=kr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Cr(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}};var Gi,Zi={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=kr(e,"style");n&&(e.staticStyle=JSON.stringify(qr(n)));var r=Cr(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},Yi=function(e){return(Gi=Gi||document.createElement("div")).innerHTML=e,Gi.textContent},Qi=h("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),eo=h("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),to=h("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),no=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ro="[a-zA-Z_][\\w\\-\\.]*",io="((?:"+ro+"\\:)?"+ro+")",oo=new RegExp("^<"+io),ao=/^\s*(\/?)>/,so=new RegExp("^<\\/"+io+"[^>]*>"),co=/^<!DOCTYPE [^>]+>/i,uo=/^<!\--/,lo=/^<!\[/,fo=!1;"x".replace(/x(.)?/g,function(e,t){fo=""===t});var po=h("script,style,textarea",!0),vo={},ho={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n","&#9;":"\t"},mo=/&(?:lt|gt|quot|amp);/g,yo=/&(?:lt|gt|quot|amp|#10|#9);/g,go=h("pre,textarea",!0),_o=function(e,t){return e&&go(e)&&"\n"===t[0]};function bo(e,t){var n=t?yo:mo;return e.replace(n,function(e){return ho[e]})}var wo,xo,$o,Co,ko,Ao,Oo,To,So=/^@|^v-on:/,Eo=/^v-|^@|^:/,jo=/([^]*?)\s+(?:in|of)\s+([^]*)/,Io=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,No=/^\(|\)$/g,Lo=/:(.*)$/,Do=/^:|^v-bind:/,Po=/\.[^.]+/g,Mo=w(Yi);function Ro(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n].name]=e[n].value;return t}(t),parent:n,children:[]}}function Fo(e,t){wo=t.warn||yr,Ao=t.isPreTag||I,Oo=t.mustUseProp||I,To=t.getTagNamespace||I,$o=gr(t.modules,"transformNode"),Co=gr(t.modules,"preTransformNode"),ko=gr(t.modules,"postTransformNode"),xo=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=!1,s=!1;function c(e){e.pre&&(a=!1),Ao(e.tag)&&(s=!1);for(var n=0;n<ko.length;n++)ko[n](e,t)}return function(e,t){for(var n,r,i=[],o=t.expectHTML,a=t.isUnaryTag||I,s=t.canBeLeftOpenTag||I,c=0;e;){if(n=e,r&&po(r)){var u=0,l=r.toLowerCase(),f=vo[l]||(vo[l]=new RegExp("([\\s\\S]*?)(</"+l+"[^>]*>)","i")),p=e.replace(f,function(e,n,r){return u=r.length,po(l)||"noscript"===l||(n=n.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),_o(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf("<");if(0===d){if(uo.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v)),$(v+3);continue}}if(lo.test(e)){var h=e.indexOf("]>");if(h>=0){$(h+2);continue}}var m=e.match(co);if(m){$(m[0].length);continue}var y=e.match(so);if(y){var g=c;$(y[0].length),A(y[1],g,c);continue}var _=C();if(_){k(_),_o(r,e)&&$(1);continue}}var b=void 0,w=void 0,x=void 0;if(d>=0){for(w=e.slice(d);!(so.test(w)||oo.test(w)||uo.test(w)||lo.test(w)||(x=w.indexOf("<",1))<0);)d+=x,w=e.slice(d);b=e.substring(0,d),$(d)}d<0&&(b=e,e=""),t.chars&&b&&t.chars(b)}if(e===n){t.chars&&t.chars(e);break}}function $(t){c+=t,e=e.substring(t)}function C(){var t=e.match(oo);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for($(t[0].length);!(n=e.match(ao))&&(r=e.match(no));)$(r[0].length),i.attrs.push(r);if(n)return i.unarySlash=n[1],$(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&("p"===r&&to(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p<l;p++){var d=e.attrs[p];fo&&-1===d[0].indexOf('""')&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]);var v=d[3]||d[4]||d[5]||"",h="a"===n&&"href"===d[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;f[p]={name:d[1],value:bo(v,h)}}u||(i.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:f}),r=n),t.start&&t.start(n,f,u,e.start,e.end)}function A(e,n,o){var a,s;if(null==n&&(n=c),null==o&&(o=c),e&&(s=e.toLowerCase()),e)for(a=i.length-1;a>=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:wo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,start:function(e,o,u){var l=r&&r.ns||To(e);G&&"svg"===l&&(o=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];Vo.test(r.name)||(r.name=r.name.replace(zo,""),t.push(r))}return t}(o));var f=Ro(e,o,r);l&&(f.ns=l),function(e){return"style"===e.tag||"script"===e.tag&&(!e.attrsMap.type||"text/javascript"===e.attrsMap.type)}(f)&&!re()&&(f.forbidden=!0);for(var p=0;p<Co.length;p++)f=Co[p](f,t)||f;function d(e){0}if(a||(!function(e){null!=kr(e,"v-pre")&&(e.pre=!0)}(f),f.pre&&(a=!0)),Ao(f.tag)&&(s=!0),a?function(e){var t=e.attrsList.length;if(t)for(var n=e.attrs=new Array(t),r=0;r<t;r++)n[r]={name:e.attrsList[r].name,value:JSON.stringify(e.attrsList[r].value)};else e.pre||(e.plain=!0)}(f):f.processed||(Uo(f),function(e){var t=kr(e,"v-if");if(t)e.if=t,Ho(e,{exp:t,block:e});else{null!=kr(e,"v-else")&&(e.else=!0);var n=kr(e,"v-else-if");n&&(e.elseif=n)}}(f),function(e){null!=kr(e,"v-once")&&(e.once=!0)}(f),Bo(f,t)),n?i.length||n.if&&(f.elseif||f.else)&&(d(),Ho(n,{exp:f.elseif,block:f})):(n=f,d()),r&&!f.forbidden)if(f.elseif||f.else)!function(e,t){var n=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(t.children);n&&n.if&&Ho(n,{exp:e.elseif,block:e})}(f,r);else if(f.slotScope){r.plain=!1;var v=f.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[v]=f}else r.children.push(f),f.parent=r;u?c(f):(r=f,i.push(f))},end:function(){var e=i[i.length-1],t=e.children[e.children.length-1];t&&3===t.type&&" "===t.text&&!s&&e.children.pop(),i.length-=1,r=i[i.length-1],c(e)},chars:function(e){if(r&&(!G||"textarea"!==r.tag||r.attrsMap.placeholder!==e)){var t,n=r.children;if(e=s||e.trim()?function(e){return"script"===e.tag||"style"===e.tag}(r)?e:Mo(e):o&&n.length?" ":"")!a&&" "!==e&&(t=function(e,t){var n=t?Xi(t):Ji;if(n.test(e)){for(var r,i,o,a=[],s=[],c=n.lastIndex=0;r=n.exec(e);){(i=r.index)>c&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=hr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c<e.length&&(s.push(o=e.slice(c)),a.push(JSON.stringify(o))),{expression:a.join("+"),tokens:s}}}(e,xo))?n.push({type:2,expression:t.expression,tokens:t.tokens,text:e}):" "===e&&n.length&&" "===n[n.length-1].text||n.push({type:3,text:e})}},comment:function(e){r.children.push({type:3,text:e,isComment:!0})}}),n}function Bo(e,t){!function(e){var t=Cr(e,"key");t&&(e.key=t)}(e),e.plain=!e.key&&!e.attrsList.length,function(e){var t=Cr(e,"ref");t&&(e.ref=t,e.refInFor=function(e){var t=e;for(;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(e))}(e),function(e){if("slot"===e.tag)e.slotName=Cr(e,"name");else{var t;"template"===e.tag?(t=kr(e,"scope"),e.slotScope=t||kr(e,"slot-scope")):(t=kr(e,"slot-scope"))&&(e.slotScope=t);var n=Cr(e,"slot");n&&(e.slotTarget='""'===n?'"default"':n,"template"===e.tag||e.slotScope||br(e,"slot",n))}}(e),function(e){var t;(t=Cr(e,"is"))&&(e.component=t);null!=kr(e,"inline-template")&&(e.inlineTemplate=!0)}(e);for(var n=0;n<$o.length;n++)e=$o[n](e,t)||e;!function(e){var t,n,r,i,o,a,s,c=e.attrsList;for(t=0,n=c.length;t<n;t++){if(r=i=c[t].name,o=c[t].value,Eo.test(r))if(e.hasBindings=!0,(a=qo(r))&&(r=r.replace(Po,"")),Do.test(r))r=r.replace(Do,""),o=hr(o),s=!1,a&&(a.prop&&(s=!0,"innerHtml"===(r=$(r))&&(r="innerHTML")),a.camel&&(r=$(r)),a.sync&&$r(e,"update:"+$(r),Or(o,"$event"))),s||!e.component&&Oo(e.tag,e.attrsMap.type,r)?_r(e,r,o):br(e,r,o);else if(So.test(r))r=r.replace(So,""),$r(e,r,o,a,!1);else{var u=(r=r.replace(Eo,"")).match(Lo),l=u&&u[1];l&&(r=r.slice(0,-(l.length+1))),xr(e,r,i,o,l,a)}else br(e,r,JSON.stringify(o)),!e.component&&"muted"===r&&Oo(e.tag,e.attrsMap.type,r)&&_r(e,r,"true")}}(e)}function Uo(e){var t;if(t=kr(e,"v-for")){var n=function(e){var t=e.match(jo);if(!t)return;var n={};n.for=t[2].trim();var r=t[1].trim().replace(No,""),i=r.match(Io);i?(n.alias=r.replace(Io,""),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r;return n}(t);n&&S(e,n)}}function Ho(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function qo(e){var t=e.match(Po);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}var Vo=/^xmlns:NS\d+/,zo=/^NS\d+:/;function Jo(e){return Ro(e.tag,e.attrsList.slice(),e.parent)}var Ko=[Wi,Zi,{preTransformNode:function(e,t){if("input"===e.tag){var n,r=e.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=Cr(e,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var i=kr(e,"v-if",!0),o=i?"&&("+i+")":"",a=null!=kr(e,"v-else",!0),s=kr(e,"v-else-if",!0),c=Jo(e);Uo(c),wr(c,"type","checkbox"),Bo(c,t),c.processed=!0,c.if="("+n+")==='checkbox'"+o,Ho(c,{exp:c.if,block:c});var u=Jo(e);kr(u,"v-for",!0),wr(u,"type","radio"),Bo(u,t),Ho(c,{exp:"("+n+")==='radio'"+o,block:u});var l=Jo(e);return kr(l,"v-for",!0),wr(l,":type",n),Bo(l,t),Ho(c,{exp:i,block:l}),a?c.else=!0:s&&(c.elseif=s),c}}}}];var Xo,Wo,Go={expectHTML:!0,modules:Ko,directives:{model:function(e,t,n){n;var r=t.value,i=t.modifiers,o=e.tag,a=e.attrsMap.type;if(e.component)return Ar(e,r,i),!1;if("select"===o)!function(e,t,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(n&&n.number?"_n(val)":"val")+"});";r=r+" "+Or(t,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),$r(e,"change",r,null,!0)}(e,r,i);else if("input"===o&&"checkbox"===a)!function(e,t,n){var r=n&&n.number,i=Cr(e,"value")||"null",o=Cr(e,"true-value")||"true",a=Cr(e,"false-value")||"false";_r(e,"checked","Array.isArray("+t+")?_i("+t+","+i+")>-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),$r(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Or(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Or(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Or(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Cr(e,"value")||"null";_r(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),$r(e,"change",Or(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Lr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Or(t,l);c&&(f="if($event.target.composing)return;"+f),_r(e,"value","("+t+")"),$r(e,u,f,null,!0),(s||a)&&$r(e,"blur","$forceUpdate()")}(e,r,i);else if(!B.isReservedTag(o))return Ar(e,r,i),!1;return!0},text:function(e,t){t.value&&_r(e,"textContent","_s("+t.value+")")},html:function(e,t){t.value&&_r(e,"innerHTML","_s("+t.value+")")}},isPreTag:function(e){return"pre"===e},isUnaryTag:Qi,mustUseProp:$n,canBeLeftOpenTag:eo,isReservedTag:Mn,getTagNamespace:Rn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(",")}(Ko)},Zo=w(function(e){return h("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(e?","+e:""))});function Yo(e,t){e&&(Xo=Zo(t.staticKeys||""),Wo=t.isReservedTag||I,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||m(e.tag)||!Wo(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(Xo)))}(t);if(1===t.type){if(!Wo(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n<r;n++){var i=t.children[n];e(i),i.static||(t.static=!1)}if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++){var s=t.ifConditions[o].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)e(t.children[r],n||!!t.for);if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++)e(t.ifConditions[o].block,n)}}(e,!1))}var Qo=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,ea=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ta={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},na={esc:"Escape",tab:"Tab",enter:"Enter",space:" ",up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete"]},ra=function(e){return"if("+e+")return null;"},ia={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:ra("$event.target !== $event.currentTarget"),ctrl:ra("!$event.ctrlKey"),shift:ra("!$event.shiftKey"),alt:ra("!$event.altKey"),meta:ra("!$event.metaKey"),left:ra("'button' in $event && $event.button !== 0"),middle:ra("'button' in $event && $event.button !== 1"),right:ra("'button' in $event && $event.button !== 2")};function oa(e,t,n){var r=t?"nativeOn:{":"on:{";for(var i in e)r+='"'+i+'":'+aa(i,e[i])+",";return r.slice(0,-1)+"}"}function aa(e,t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map(function(t){return aa(e,t)}).join(",")+"]";var n=ea.test(t.value),r=Qo.test(t.value);if(t.modifiers){var i="",o="",a=[];for(var s in t.modifiers)if(ia[s])o+=ia[s],ta[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;o+=ra(["ctrl","shift","alt","meta"].filter(function(e){return!c[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!('button' in $event)&&"+e.map(sa).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(n?"return "+t.value+"($event)":r?"return ("+t.value+")($event)":t.value)+"}"}return n||r?t.value:"function($event){"+t.value+"}"}function sa(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=ta[e],r=na[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var ca={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:j},ua=function(e){this.options=e,this.warn=e.warn||yr,this.transforms=gr(e.modules,"transformCode"),this.dataGenFns=gr(e.modules,"genData"),this.directives=S(S({},ca),e.directives);var t=e.isReservedTag||I;this.maybeComponent=function(e){return!t(e.tag)},this.onceId=0,this.staticRenderFns=[]};function la(e,t){var n=new ua(t);return{render:"with(this){return "+(e?fa(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function fa(e,t){if(e.staticRoot&&!e.staticProcessed)return pa(e,t);if(e.once&&!e.onceProcessed)return da(e,t);if(e.for&&!e.forProcessed)return function(e,t,n,r){var i=e.for,o=e.alias,a=e.iterator1?","+e.iterator1:"",s=e.iterator2?","+e.iterator2:"";0;return e.forProcessed=!0,(r||"_l")+"(("+i+"),function("+o+a+s+"){return "+(n||fa)(e,t)+"})"}(e,t);if(e.if&&!e.ifProcessed)return va(e,t);if("template"!==e.tag||e.slotTarget){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=ya(e,t),i="_t("+n+(r?","+r:""),o=e.attrs&&"{"+e.attrs.map(function(e){return $(e.name)+":"+e.value}).join(",")+"}",a=e.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:ya(t,n,!0);return"_c("+e+","+ha(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r=e.plain?void 0:ha(e,t),i=e.inlineTemplate?null:ya(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return ya(e,t)||"void 0"}function pa(e,t){return e.staticProcessed=!0,t.staticRenderFns.push("with(this){return "+fa(e,t)+"}"),"_m("+(t.staticRenderFns.length-1)+(e.staticInFor?",true":"")+")"}function da(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return va(e,t);if(e.staticInFor){for(var n="",r=e.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+fa(e,t)+","+t.onceId+++","+n+")":fa(e,t)}return pa(e,t)}function va(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.length)return i||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+a(o.block)+":"+e(t,n,r,i):""+a(o.block);function a(e){return r?r(e,n):e.once?da(e,n):fa(e,n)}}(e.ifConditions.slice(),t,n,r)}function ha(e,t){var n="{",r=function(e,t){var n=e.directives;if(!n)return;var r,i,o,a,s="directives:[",c=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var u=t.directives[o.name];u&&(a=!!u(e,o,t.warn)),a&&(c=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?',arg:"'+o.arg+'"':"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}if(c)return s.slice(0,-1)+"]"}(e,t);r&&(n+=r+","),e.key&&(n+="key:"+e.key+","),e.ref&&(n+="ref:"+e.ref+","),e.refInFor&&(n+="refInFor:true,"),e.pre&&(n+="pre:true,"),e.component&&(n+='tag:"'+e.tag+'",');for(var i=0;i<t.dataGenFns.length;i++)n+=t.dataGenFns[i](e);if(e.attrs&&(n+="attrs:{"+ba(e.attrs)+"},"),e.props&&(n+="domProps:{"+ba(e.props)+"},"),e.events&&(n+=oa(e.events,!1,t.warn)+","),e.nativeEvents&&(n+=oa(e.nativeEvents,!0,t.warn)+","),e.slotTarget&&!e.slotScope&&(n+="slot:"+e.slotTarget+","),e.scopedSlots&&(n+=function(e,t){return"scopedSlots:_u(["+Object.keys(e).map(function(n){return ma(n,e[n],t)}).join(",")+"])"}(e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];0;if(1===n.type){var r=la(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function ma(e,t,n){return t.for&&!t.forProcessed?function(e,t,n){var r=t.for,i=t.alias,o=t.iterator1?","+t.iterator1:"",a=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,"_l(("+r+"),function("+i+o+a+"){return "+ma(e,t,n)+"})"}(e,t,n):"{key:"+e+",fn:"+("function("+String(t.slotScope)+"){return "+("template"===t.tag?t.if?t.if+"?"+(ya(t,n)||"undefined")+":undefined":ya(t,n)||"undefined":fa(t,n))+"}")+"}"}function ya(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag)return(r||fa)(a,t);var s=n?function(e,t){for(var n=0,r=0;r<e.length;r++){var i=e[r];if(1===i.type){if(ga(i)||i.ifConditions&&i.ifConditions.some(function(e){return ga(e.block)})){n=2;break}(t(i)||i.ifConditions&&i.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}(o,t.maybeComponent):0,c=i||_a;return"["+o.map(function(e){return c(e,t)}).join(",")+"]"+(s?","+s:"")}}function ga(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}function _a(e,t){return 1===e.type?fa(e,t):3===e.type&&e.isComment?function(e){return"_e("+JSON.stringify(e.text)+")"}(e):function(e){return"_v("+(2===e.type?e.expression:wa(JSON.stringify(e.text)))+")"}(e)}function ba(e){for(var t="",n=0;n<e.length;n++){var r=e[n];t+='"'+r.name+'":'+wa(r.value)+","}return t.slice(0,-1)}function wa(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)");function xa(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),j}}var $a,Ca=function(e){return function(t){function n(n,r){var i=Object.create(t),o=[],a=[];if(i.warn=function(e,t){(t?a:o).push(e)},r)for(var s in r.modules&&(i.modules=(t.modules||[]).concat(r.modules)),r.directives&&(i.directives=S(Object.create(t.directives||null),r.directives)),r)"modules"!==s&&"directives"!==s&&(i[s]=r[s]);var c=e(n,i);return c.errors=o,c.tips=a,c}return{compile:n,compileToFunctions:function(e){var t=Object.create(null);return function(n,r,i){(r=S({},r)).warn,delete r.warn;var o=r.delimiters?String(r.delimiters)+n:n;if(t[o])return t[o];var a=e(n,r),s={},c=[];return s.render=xa(a.render,c),s.staticRenderFns=a.staticRenderFns.map(function(e){return xa(e,c)}),t[o]=s}}(n)}}}(function(e,t){var n=Fo(e.trim(),t);!1!==t.optimize&&Yo(n,t);var r=la(n,t);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}})(Go).compileToFunctions;function ka(e){return($a=$a||document.createElement("div")).innerHTML=e?'<a href="\n"/>':'<div a="\n"/>',$a.innerHTML.indexOf("&#10;")>0}var Aa=!!J&&ka(!1),Oa=!!J&&ka(!0),Ta=w(function(e){var t=Un(e);return t&&t.innerHTML}),Sa=dn.prototype.$mount;dn.prototype.$mount=function(e,t){if((e=e&&Un(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=Ta(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){0;var i=Ca(r,{shouldDecodeNewlines:Aa,shouldDecodeNewlinesForHref:Oa,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return Sa.call(this,e,t)},dn.compile=Ca,t.a=dn}).call(this,n(2),n(11).setImmediate)},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(t){var r=n(0),i=n(16),o={"Content-Type":"application/x-www-form-urlencoded"};function a(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var s={adapter:function(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(6):void 0!==t&&(e=n(6)),e}(),transformRequest:[function(e,t){return i(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(a(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(a(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(e){s.headers[e]={}}),r.forEach(["post","put","patch"],function(e){s.headers[e]=r.merge(o)}),e.exports=s}).call(this,n(4))},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&d())}function d(){if(!l){var e=s(p);l=!0;for(var t=u.length;t;){for(c=u,u=[];++f<t;)c&&c[f].run();f=-1,t=u.length}c=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function v(e,t){this.fun=e,this.array=t}function h(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new v(e,t)),1!==u.length||l||s(d)},v.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";var r=n(0),i=n(17),o=n(19),a=n(20),s=n(21),c=n(7),u="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(22);e.exports=function(e){return new Promise(function(t,l){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest,v="onreadystatechange",h=!1;if("undefined"==typeof window||!window.XDomainRequest||"withCredentials"in d||s(e.url)||(d=new window.XDomainRequest,v="onload",h=!0,d.onprogress=function(){},d.ontimeout=function(){}),e.auth){var m=e.auth.username||"",y=e.auth.password||"";p.Authorization="Basic "+u(m+":"+y)}if(d.open(e.method.toUpperCase(),o(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d[v]=function(){if(d&&(4===d.readyState||h)&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:1223===d.status?204:d.status,statusText:1223===d.status?"No Content":d.statusText,headers:n,config:e,request:d};i(t,l,r),d=null}},d.onerror=function(){l(c("Network Error",e,null,d)),d=null},d.ontimeout=function(){l(c("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var g=n(23),_=(e.withCredentials||s(e.url))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;_&&(p[e.xsrfHeaderName]=_)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),l(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(18);e.exports=function(e,t,n,i,o){var a=new Error(e);return r(a,t,n,i,o)}},function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){e.exports=n(13)},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(12),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(2))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i=1,o={},a=!1,s=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){l(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?function(){var t="setImmediate$"+Math.random()+"$",n=function(n){n.source===e&&"string"==typeof n.data&&0===n.data.indexOf(t)&&l(+n.data.slice(t.length))};e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(n){e.postMessage(t+n,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){l(e.data)},r=function(t){e.port2.postMessage(t)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var e=s.documentElement;r=function(t){var n=s.createElement("script");n.onreadystatechange=function(){l(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():r=function(e){setTimeout(l,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var a={callback:e,args:t};return o[i]=a,r(i),i++},c.clearImmediate=u}function u(e){delete o[e]}function l(e){if(a)setTimeout(l,0,e);else{var t=o[e];if(t){a=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{u(e),a=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(2),n(4))},function(e,t,n){"use strict";var r=n(0),i=n(5),o=n(15),a=n(3);function s(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var c=s(a);c.Axios=o,c.create=function(e){return s(r.merge(a,e))},c.Cancel=n(9),c.CancelToken=n(29),c.isCancel=n(8),c.all=function(e){return Promise.all(e)},c.spread=n(30),e.exports=c,e.exports.default=c},function(e,t){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
-e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){"use strict";var r=n(3),i=n(0),o=n(24),a=n(25);function s(e){this.defaults=e,this.interceptors={request:new o,response:new o}}s.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),(e=i.merge(r,{method:"get"},this.defaults,e)).method=e.method.toLowerCase();var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},i.forEach(["delete","get","head","options"],function(e){s.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}}),i.forEach(["post","put","patch"],function(e){s.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=s},function(e,t,n){"use strict";var r=n(0);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e}},function(e,t,n){"use strict";var r=n(0);function i(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(r.isURLSearchParams(t))o=t.toString();else{var a=[];r.forEach(t,function(e,t){null!==e&&void 0!==e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+"="+i(e))}))}),o=a.join("&")}return o&&(e+=(-1===e.indexOf("?")?"?":"&")+o),e}},function(e,t,n){"use strict";var r=n(0),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),function(e){if(o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}}),a):a}},function(e,t,n){"use strict";var r=n(0);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function i(){this.message="String contains an invalid character"}i.prototype=new Error,i.prototype.code=5,i.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,o=String(e),a="",s=0,c=r;o.charAt(0|s)||(c="=",s%1);a+=c.charAt(63&t>>8-s%1*8)){if((n=o.charCodeAt(s+=.75))>255)throw new i;t=t<<8|n}return a}},function(e,t,n){"use strict";var r=n(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";var r=n(0);function i(){this.handlers=[]}i.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=i},function(e,t,n){"use strict";var r=n(0),i=n(26),o=n(8),a=n(3),s=n(27),c=n(28);function u(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return u(e),e.baseURL&&!s(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||a.adapter)(e).then(function(t){return u(e),t.data=i(t.data,t.headers,e.transformResponse),t},function(t){return o(t)||(u(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(0);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(9);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i(function(t){e=t}),cancel:e}},e.exports=i},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,n,r){"use strict";r.r(n);var i=r(1),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"accessibility"}},[n("div",{staticClass:"section",attrs:{id:"themes"}},[n("h2",[e._v(e._s(e.t("accessibility","Themes")))]),e._v(" "),n("div",{staticClass:"themes-list preview-list"},e._l(e.themes,function(t){return n("preview",{key:t.id,attrs:{preview:t,selected:e.selected.theme},on:{select:e.selectTheme}})}))]),e._v(" "),n("div",{staticClass:"section",attrs:{id:"fonts"}},[n("h2",[e._v(e._s(e.t("accessibility","Fonts")))]),e._v(" "),n("div",{staticClass:"fonts-list preview-list"},e._l(e.fonts,function(t){return n("preview",{key:t.id,attrs:{preview:t,selected:e.selected.font},on:{select:e.selectFont}})}))])])};o._withStripped=!0;var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a",{class:{preview:!0,selected:e.preview.id===e.selected},attrs:{href:"#"},on:{click:e.selectItem}},[n("div",{staticClass:"preview-image",style:{backgroundImage:"url("+e.preview.img+")"}}),e._v(" "),n("h3",[n("span",[e._v(e._s(e.preview.title))]),e._v(" "),n("div",{staticClass:"icon-checkmark-color"},[e._v(e._s(e.t("accessibility","enabled")))])]),e._v(" "),n("p",[e._v(e._s(e.preview.text))])])};a._withStripped=!0;function s(e,t,n,r,i,o,a,s){var c,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=c):i&&(c=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:e,options:u}}var c=s({name:"itemPreview",props:["preview","selected"],methods:{selectItem:function(){this.$emit("select",this.preview.id!==this.selected&&this.preview.id)}}},a,[],!1,null,null,null);c.options.__file="src/components/itemPreview.vue";var u=c.exports,l=r(10),f=r.n(l),p=s({name:"app",components:{preview:u},beforeMount:function(){null!==document.getElementById("serverData")&&(this.serverData=JSON.parse(document.getElementById("serverData").dataset.server))},data:function(){return{serverData:[]}},computed:{themes:function(){return this.serverData.themes},fonts:function(){return this.serverData.fonts},selected:function(){return{theme:this.serverData.theme,font:this.serverData.font}},tokenHeaders:function(){return{headers:{requesttoken:OC.requestToken}}}},methods:{selectTheme:function(e){this.selectItem("theme",e)},selectFont:function(e){this.selectItem("font",e)},selectItem:function(e,n){var r=this;f.a.post(OC.linkToOCS("apps/accessibility/api/v1/config",2)+e,{value:n},this.tokenHeaders).then(function(t){r.serverData[e]=n;var i=document.querySelector("link[rel=stylesheet][href*=accessibility][href*=user-]");if(i)i.href=i.href.split("?")[0]+"?v="+(new Date).getTime();else{var o=document.createElement("link");o.rel="stylesheet",o.href=OC.generateUrl("/apps/accessibility/css/user-style.css"),document.head.appendChild(o)}}).catch(function(e){console.log(e,e.response),OC.Notification.showTemporary(t("accessibility",e.response.data.ocs.meta.message+". Unable to apply the setting."))})}}},o,[],!1,null,null,null);p.options.__file="src/App.vue";var d=p.exports;i.a.prototype.OC=OC,i.a.prototype.t=t,new i.a({el:"#accessibility",render:function(e){return e(d)}})}]);
+e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){"use strict";var r=n(3),i=n(0),o=n(24),a=n(25);function s(e){this.defaults=e,this.interceptors={request:new o,response:new o}}s.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),(e=i.merge(r,{method:"get"},this.defaults,e)).method=e.method.toLowerCase();var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},i.forEach(["delete","get","head","options"],function(e){s.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}}),i.forEach(["post","put","patch"],function(e){s.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=s},function(e,t,n){"use strict";var r=n(0);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e}},function(e,t,n){"use strict";var r=n(0);function i(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(r.isURLSearchParams(t))o=t.toString();else{var a=[];r.forEach(t,function(e,t){null!==e&&void 0!==e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+"="+i(e))}))}),o=a.join("&")}return o&&(e+=(-1===e.indexOf("?")?"?":"&")+o),e}},function(e,t,n){"use strict";var r=n(0),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),function(e){if(o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}}),a):a}},function(e,t,n){"use strict";var r=n(0);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function i(){this.message="String contains an invalid character"}i.prototype=new Error,i.prototype.code=5,i.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,o=String(e),a="",s=0,c=r;o.charAt(0|s)||(c="=",s%1);a+=c.charAt(63&t>>8-s%1*8)){if((n=o.charCodeAt(s+=.75))>255)throw new i;t=t<<8|n}return a}},function(e,t,n){"use strict";var r=n(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";var r=n(0);function i(){this.handlers=[]}i.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=i},function(e,t,n){"use strict";var r=n(0),i=n(26),o=n(8),a=n(3),s=n(27),c=n(28);function u(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return u(e),e.baseURL&&!s(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||a.adapter)(e).then(function(t){return u(e),t.data=i(t.data,t.headers,e.transformResponse),t},function(t){return o(t)||(u(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(0);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(9);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i(function(t){e=t}),cancel:e}},e.exports=i},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,n,r){"use strict";r.r(n);var i=r(1),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"accessibility"}},[n("div",{staticClass:"section",attrs:{id:"themes"}},[n("h2",[e._v(e._s(e.t("accessibility","Themes")))]),e._v(" "),n("div",{staticClass:"themes-list preview-list"},e._l(e.themes,function(t){return n("preview",{key:t.id,attrs:{preview:t,selected:e.selected.theme},on:{select:e.selectTheme}})}))]),e._v(" "),n("div",{staticClass:"section",attrs:{id:"fonts"}},[n("h2",[e._v(e._s(e.t("accessibility","Fonts")))]),e._v(" "),n("div",{staticClass:"fonts-list preview-list"},e._l(e.fonts,function(t){return n("preview",{key:t.id,attrs:{preview:t,selected:e.selected.font},on:{select:e.selectFont}})}))])])};o._withStripped=!0;var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a",{class:{preview:!0,selected:e.preview.id===e.selected},attrs:{href:"#"},on:{click:e.selectItem}},[n("div",{staticClass:"preview-image",style:{backgroundImage:"url("+e.preview.img+")"}}),e._v(" "),n("h3",[n("span",[e._v(e._s(e.preview.title))]),e._v(" "),n("div",{staticClass:"icon-checkmark-color"},[e._v(e._s(e.t("accessibility","enabled")))])]),e._v(" "),n("p",[e._v(e._s(e.preview.text))])])};a._withStripped=!0;function s(e,t,n,r,i,o,a,s){var c,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=c):i&&(c=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:e,options:u}}var c=s({name:"itemPreview",props:["preview","selected"],methods:{selectItem:function(){this.$emit("select",this.preview.id!==this.selected&&this.preview.id)}}},a,[],!1,null,null,null);c.options.__file="src/components/itemPreview.vue";var u=c.exports,l=r(10),f=r.n(l),p=s({name:"Accessibility",components:{preview:u},beforeMount:function(){null!==document.getElementById("serverData")&&(this.serverData=JSON.parse(document.getElementById("serverData").dataset.server))},data:function(){return{serverData:[]}},computed:{themes:function(){return this.serverData.themes},fonts:function(){return this.serverData.fonts},selected:function(){return{theme:this.serverData.theme,font:this.serverData.font}},tokenHeaders:function(){return{headers:{requesttoken:OC.requestToken}}}},methods:{selectTheme:function(e){this.selectItem("theme",e)},selectFont:function(e){this.selectItem("font",e)},selectItem:function(e,n){var r=this;f.a.post(OC.linkToOCS("apps/accessibility/api/v1/config",2)+e,{value:n},this.tokenHeaders).then(function(t){r.serverData[e]=n;var i=document.querySelector("link[rel=stylesheet][href*=accessibility][href*=user-]");if(i)JSON.stringify(Object.values(r.selected))===JSON.stringify([!1,!1])?i.remove():i.href=i.href.split("?")[0]+"?v="+(new Date).getTime();else{var o=document.createElement("link");o.rel="stylesheet",o.href=OC.generateUrl("/apps/accessibility/css/user-style.css")+"?v="+(new Date).getTime(),document.head.appendChild(o)}}).catch(function(e){console.log(e,e.response),OC.Notification.showTemporary(t("accessibility",e.response.data.ocs.meta.message+". Unable to apply the setting."))})}}},o,[],!1,null,null,null);p.options.__file="src/App.vue";var d=p.exports;i.a.prototype.OC=OC,i.a.prototype.t=t,new i.a({el:"#accessibility",render:function(e){return e(d)}})}]);
//# sourceMappingURL=accessibility.js.map \ No newline at end of file
diff --git a/apps/accessibility/js/accessibility.js.map b/apps/accessibility/js/accessibility.js.map
index 4d9f8d4892a..a610aacf21a 100644
--- a/apps/accessibility/js/accessibility.js.map
+++ b/apps/accessibility/js/accessibility.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./src/App.vue?647a","webpack:///./src/components/itemPreview.vue?394f","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/components/itemPreview.vue","webpack:///src/components/itemPreview.vue","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","extend","a","b","thisArg","trim","str","replace","global","setImmediate","emptyObject","freeze","isUndef","v","undefined","isDef","isTrue","isPrimitive","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","String","Math","floor","isFinite","JSON","stringify","toNumber","isNaN","makeMap","expectsLowerCase","map","list","split","toLowerCase","isBuiltInTag","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","_","toUpperCase","capitalize","charAt","slice","hyphenateRE","hyphenate","Function","ctx","boundFn","apply","_length","toArray","start","ret","Array","to","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","e","keysA","keys","keysB","looseIndexOf","once","called","this","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","isReserved","charCodeAt","def","writable","configurable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","test","isIE9","isEdge","isIOS","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","set","has","add","clear","warn","uid","Dep","id","subs","addSub","sub","push","removeSub","depend","target","addDep","notify","update","targetStack","pushTarget","_target","popTarget","pop","VNode","tag","data","children","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","args","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","src","__proto__","observe","asRootData","isExtensible","_isVue","defineReactive","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","mergeAssets","hook","type","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","normalizeDirectives","extendsFrom","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","match","isSameType","expectedTypes","handleError","err","info","cur","$parent","hooks","errorCaptured","globalHandleError","logError","console","error","microTimerFunc","macroTimerFunc","callbacks","pending","flushCallbacks","copies","useMacroTask","MessageChannel","setTimeout","channel","port","port2","port1","onmessage","postMessage","Promise","resolve","then","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","old","event","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","last","isTextNode","shift","_isVList","isFalse","ensureCtor","comp","base","getFirstComponentChild","$once","$on","remove$1","$off","updateComponentListeners","listeners","oldListeners","resolveSlots","slots","attrs","slot","name$1","isWhitespace","resolveScopedSlots","activeInstance","isInInactiveTree","_inactive","activateChildComponent","direct","_directInactive","$children","callHook","handlers","j","_hasHookEvent","$emit","queue","activatedChildren","waiting","flushing","flushSchedulerQueue","watcher","sort","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","_isMounted","callUpdatedHooks","emit","uid$1","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","sync","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","proxy","sourceKey","initState","propsOptions","_propKeys","loop","initProps","initMethods","_data","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","handler","createWatcher","initWatch","shouldCache","createComputedGetter","$watch","resolveInject","filter","provideKey","source","_provided","provideDefault","renderList","render","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","slotNodes","$slots","_rendered","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","FunctionalRenderContext","contextVm","_original","isCompiled","_compiled","needNormalization","injections","scopedSlots","_scopeId","_c","createElement","cloneAndMarkFunctionalResult","clone","mergeProps","componentVNodeHooks","init","hydrating","parentElm","refElm","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","_parentElm","_refElm","inlineTemplate","createComponentInstanceForVnode","$mount","oldVnode","parentVnode","renderChildren","hasChildren","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_parentListeners","$forceUpdate","updateChildComponent","insert","queueActivatedComponent","destroy","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","_base","cid","factory","errorComp","resolved","loading","loadingComp","contexts","forceRender","reject","reason","component","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","callback","transformModel","extractPropsFromVNodeData","functional","renderContext","vnodes","createFunctionalComponent","nativeOn","abstract","installComponentHooks","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","applyNS","force","style","class","registerDeepBindings","_createElement","uid$3","super","superOptions","modifiedOptions","modified","latest","extended","extendOptions","sealed","sealedOptions","dedupe","resolveModifiedOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","constructor","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","cbs","i$1","eventsMixin","_update","prevEl","$el","prevVnode","prevActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","RegExp","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","this$1","parseInt","configDef","util","delete","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","attr","isEnumeratedAttr","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","selected","querySelector","nodeOps","tagName","multiple","setAttribute","createElementNS","namespace","createTextNode","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","chr","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","parseFilters","exp","prev","filters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","msg","pluckModuleFunction","addProp","plain","addAttr","addRawAttr","attrsMap","attrsList","addDirective","arg","addHandler","important","events","right","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","genComponentModel","number","valueExpression","assignment","genAssignmentCode","lastIndexOf","eof","isStringStart","next","parseString","parseBracket","parseModel","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","add$1","_withTask","withMacroTask","onceHandler","remove$2","createOnceHandler","updateDOMListeners","change","normalizeEvents","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","pre","hasChildNodes","innerHTML","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","hasAttribute","emptyNodeAt","oldElm","parentElm$1","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","createEvent","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","prevChildren","rawChildren","transitionData","kept","removed","c$1","beforeUpdate","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","HTMLUnknownElement","HTMLElement","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","open","close","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","html","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","IS_REGEX_CAPTURING_BROKEN","g","isPlainTextElement","reCache","decodingMap","&lt;","&gt;","&quot;","&amp;","&#10;","&#9;","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","warn$2","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","argRE","bindRE","modifierRE","decodeHTMLCached","createASTElement","makeAttrsMap","parse","template","isPreTag","root","currentParent","stack","preserveWhitespace","inPre","closeElement","element","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","all","chars","parseEndTag","textEnd","commentEnd","shouldKeepComment","substring","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","rest","unarySlash","unary","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","parseHTML","comments","ieNSBug","ieNSPrefix","guardIESVGBug","isForbiddenTag","forbidden","checkRootConstraints","processPre","processRawAttrs","processed","processFor","if","addIfCondition","block","else","elseif","processIf","processOnce","processElement","findPrevElement","processIfConditions","slotScope","slotTarget","lastNode","isTextTag","tagRE","tokenValue","tokens","rawTokens","exec","@binding","parseText","processKey","for","checkInFor","processRef","slotName","processSlot","processComponent","isProp","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","alias","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","code","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","reduce","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","static","isDirectChildOfTemplateFor","l$1","markStaticRoots","staticInFor","staticRoot","fnExpRE","simplePathRE","esc","tab","space","up","down","keyNames","genGuard","modifierCode","stop","prevent","self","ctrl","alt","meta","genHandlers","genHandler","isMethodPath","isFunctionExpression","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","keyCode","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","state","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","altGen","altHelper","genFor","ifProcessed","genIf","genChildren","bind$$1","genSlot","componentName","genData$2","genComponent","altEmpty","genIfConditions","conditions","genTernaryExp","needRuntime","hasRuntime","gen","genDirectives","genProps","genScopedSlot","inlineRenderFns","genInlineTemplate","genForScopedSlot","checkSkip","altGenElement","altGenNode","el$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","createFunction","errors","div","compileToFunctions","baseCompile","compile","finalOptions","tips","tip","compiled","fnGenErrors","createCompileToFunctionFn","createCompilerCreator","createCompiler","getShouldDecode","href","idToTemplate","mount","documentElement","outerHTML","container","getOuterHTML","__webpack_exports__","eval","process","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","headers","defaults","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","Accept","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","requestData","requestHeaders","request","loadEvent","xDomain","XDomainRequest","url","onprogress","ontimeout","auth","username","password","Authorization","paramsSerializer","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onerror","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","message","__CANCEL__","Cancel","scope","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","handle","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","attachEvent","installPostMessageImplementation","installMessageChannelImplementation","script","onreadystatechange","installReadyStateChangeImplementation","task","Axios","createInstance","defaultConfig","instance","axios","instanceConfig","CancelToken","isCancel","promises","spread","readFloatLE","isSlowBuffer","_isBuffer","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","encode","encodeURIComponent","serializedParams","parts","toISOString","ignoreDuplicateOf","parsed","line","substr","originURL","msie","urlParsingNode","resolveURL","protocol","host","search","hostname","pathname","location","requestURL","E","input","charCode","output","idx","write","expires","domain","secure","cookie","Date","toGMTString","decodeURIComponent","now","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","relativeURL","executor","TypeError","resolvePromise","token","Appvue_type_template_id_7ba5bd90_render","_vm","_h","themes","preview","theme","select","selectTheme","fonts","font","selectFont","_withStripped","itemPreviewvue_type_template_id_501a4e56_render","click","selectItem","backgroundImage","img","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","__file","itemPreview","App_component","beforeMount","getElementById","serverData","dataset","server","tokenHeaders","requesttoken","OC","requestToken","_this","axios_default","post","linkToOCS","link","getTime","_link","rel","generateUrl","head","catch","log","Notification","showTemporary","ocs","App"],"mappings":"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","file":"accessibility.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","/*!\n * Vue.js v2.5.17\n * (c) 2014-2018 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it... e.g.\n * PhantomJS 1.x. Technically we don't need this anymore since native bind is\n * now more performant in most browsers, but removing it would be breaking for\n * code that was able to run in PhantomJS 1.x, so this must be kept for\n * backwards compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n})\n\n/* */\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n if (!getter && arguments.length === 2) {\n val = obj[key];\n }\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false && isObject(value) && ('@binding' in value))\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both microtasks and (macro) tasks.\n// In < 2.4 we used microtasks everywhere, but there are some scenarios where\n// microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using (macro) tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use microtask by default, but expose a way to force (macro) task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine microtask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a (macro) task instead of a microtask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, def, cur, old, event;\n for (name in on) {\n def = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n /* istanbul ignore if */\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once) {\n if (once) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$off(event[i], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n if (fn) {\n // specific handler\n var cb;\n var i$1 = cbs.length;\n while (i$1--) {\n cb = cbs[i$1];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i$1, 1);\n break\n }\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n // no need for the ref nodes after initial patch\n // this prevents keeping a detached DOM tree in memory (#5851)\n vm.$options._parentElm = vm.$options._refElm = null;\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$1 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$1; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive(props, key, value, function () {\n if (vm.$parent && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : userDef;\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (methods[key] == null) {\n warn(\n \"Method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes) {\n if (process.env.NODE_ENV !== 'production' && slotNodes._rendered) {\n warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n }\n slotNodes._rendered = true;\n }\n nodes = slotNodes || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n\n\n\n// Register the component hook to weex native render engine.\n// The hook will be triggered by native, not javascript.\n\n\n// Updates the state of the component to weex native render engine.\n\n/* */\n\n// https://github.com/Hanks10100/weex-native-directive/tree/master/component\n\n// listening on native callback\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n // Weex specific: invoke recycle-list optimized @render function for\n // extracting cell-slot template.\n // https://github.com/Hanks10100/weex-native-directive/tree/master/component\n /* istanbul ignore if */\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var options = {\n _isComponent: true,\n parent: parent,\n _parentVnode: vnode,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n hooks[key] = componentVNodeHooks[key];\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n // reset _rendered flag on slots for duplicate slot check\n if (process.env.NODE_ENV !== 'production') {\n for (var key in vm.$slots) {\n // $flow-disable-line\n vm.$slots[key]._rendered = false;\n }\n }\n\n if (_parentVnode) {\n vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache, key, this$1.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n}\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n}\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.5.17';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n}\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove () {\n if (--remove.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove.listeners = listeners;\n return remove\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (ref$$1.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n}\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n]\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n}\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n}\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\nfunction baseWarn (msg) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n el.plain = false;\n}\n\nfunction addAttr (el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value) {\n el.attrsMap[name] = value;\n el.attrsList.push({ name: name, value: value });\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n modifiers\n) {\n (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n el.plain = false;\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.'\n );\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = '~' + name; // mark the event as once\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = '&' + name; // mark the event as passive\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (name === 'click') {\n if (modifiers.right) {\n name = 'contextmenu';\n delete modifiers.right;\n } else if (modifiers.middle) {\n name = 'mouseup';\n }\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = {\n value: value.trim()\n };\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: (\"\\\"\" + value + \"\\\"\"),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len;\nvar str;\nvar chr;\nvar index$1;\nvar expressionPos;\nvar expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\"\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.'\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally'\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler (handler, event, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n if (once$$1) { handler = createOnceHandler(handler, event, capture); }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n}\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.lazy) {\n // inputs with lazy should only be updated when not in focus\n return false\n }\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n}\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n}\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def) {\n if (!def) {\n return\n }\n /* istanbul ignore else */\n if (typeof def === 'object') {\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(def.name || 'v'));\n }\n extend(res, def);\n return res\n } else if (typeof def === 'string') {\n return autoCssTransition(def)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {}\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n]\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n}\n\nvar platformDirectives = {\n model: directive,\n show: show\n}\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n}\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n}\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n}\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n isChrome\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n}\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n}\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n}\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n * Modified by Juriy \"kangax\" Zaytsev\n * Original code by Erik Arvidsson, Mozilla Public License\n * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\nvar ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\nvar IS_REGEX_CAPTURING_BROKEN = false;\n'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n});\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n',\n '&#9;': '\\t'\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd));\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(lastTag, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n advance(textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n html = '';\n }\n\n if (options.chars && text) {\n options.chars(text);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') { delete args[3]; }\n if (args[4] === '') { delete args[4]; }\n if (args[5] === '') { delete args[5]; }\n }\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([^]*?)\\s+(?:in|of)\\s+([^]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^v-bind:/;\nvar modifierRE = /\\.[^.]+/g;\n\nvar decodeHTMLCached = cached(he.decode);\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\n\n\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg) {\n if (!warned) {\n warned = true;\n warn$2(msg);\n }\n }\n\n function closeElement (element) {\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n start: function start (tag, attrs, unary) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.'\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n // element-scope stuff\n processElement(element, options);\n }\n\n function checkRootConstraints (el) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.'\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.'\n );\n }\n }\n }\n\n // tree management\n if (!root) {\n root = element;\n checkRootConstraints(root);\n } else if (!stack.length) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n checkRootConstraints(element);\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\"\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else if (element.slotScope) { // scoped slot\n currentParent.plain = false;\n var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end () {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n closeElement(element);\n },\n\n chars: function chars (text) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.'\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n text = inPre || text.trim()\n ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && children.length ? ' ' : '';\n if (text) {\n var res;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n children.push({\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n });\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n children.push({\n type: 3,\n text: text\n });\n }\n }\n },\n comment: function comment (text) {\n currentParent.children.push({\n type: 3,\n text: text,\n isComment: true\n });\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (element, options) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !element.attrsList.length;\n\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production' && el.tag === 'template') {\n warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp)\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '');\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\"\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\nfunction processSlot (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\"\n );\n }\n } else {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n true\n );\n }\n el.slotScope = slotScope;\n }\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget);\n }\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, isProp;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isProp = false;\n if (modifiers) {\n if (modifiers.prop) {\n isProp = true;\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n genAssignmentCode(value, \"$event\")\n );\n }\n }\n if (isProp || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers, false, warn$2);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, rawName, value, arg, modifiers);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n );\n }\n }\n addAttr(el, name, JSON.stringify(value));\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true');\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\"\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\n/**\n * Expand input[v-model] with dyanmic type bindings into v-if-else chains\n * Turn this:\n * <input v-model=\"data[type]\" :type=\"type\">\n * into this:\n * <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\n * <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\n * <input v-else :type=\"type\" v-model=\"data[type]\">\n */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$2 = {\n preTransformNode: preTransformNode\n}\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$2\n]\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n}\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n esc: 'Escape',\n tab: 'Tab',\n enter: 'Enter',\n space: ' ',\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n 'delete': ['Backspace', 'Delete']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative,\n warn\n) {\n var res = isNative ? 'nativeOn:{' : 'on:{';\n for (var name in events) {\n res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, events[name])) + \",\";\n }\n return res.slice(0, -1) + '}'\n}\n\nfunction genHandler (\n name,\n handler\n) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n /* istanbul ignore if */\n return (\"function($event){\" + (handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : handler.value;\n /* istanbul ignore if */\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n}\n\n/* */\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data = el.plain ? undefined : genData$2(el, state);\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \"\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false, state.warn)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true, state.warn)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n slots,\n state\n) {\n return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) {\n return genScopedSlot(key, slots[key], state)\n }).join(',')) + \"])\")\n}\n\nfunction genScopedSlot (\n key,\n el,\n state\n) {\n if (el.for && !el.forProcessed) {\n return genForScopedSlot(key, el, state)\n }\n var fn = \"function(\" + (String(el.slotScope)) + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if\n ? ((el.if) + \"?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n return (\"{key:\" + key + \",fn:\" + fn + \"}\")\n}\n\nfunction genForScopedSlot (\n key,\n el,\n state\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genScopedSlot(key, el, state)) +\n '})'\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n return (altGenElement || genElement)(el$1, state)\n }\n var normalizationType = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n /* istanbul ignore if */\n {\n res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n }\n }\n return res.slice(0, -1)\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors\n}\n\nfunction checkNode (node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n}\n\nfunction checkEvent (exp, text, errors) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n errors.push(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n }\n checkExpression(exp, text, errors);\n}\n\nfunction checkFor (node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n errors\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n }\n }\n}\n\nfunction checkExpression (exp, text, errors) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim())\n );\n } else {\n errors.push(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\"\n );\n }\n }\n}\n\n/* */\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n if (compiled.tips && compiled.tips.length) {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n finalOptions.warn = function (msg, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n var compiled = baseCompile(template, finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n errors.push.apply(errors, detectErrors(compiled.ast));\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf('&#10;') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","module.exports = require('./lib/axios');","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"accessibility\" } }, [\n _c(\"div\", { staticClass: \"section\", attrs: { id: \"themes\" } }, [\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"accessibility\", \"Themes\")))]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"themes-list preview-list\" },\n _vm._l(_vm.themes, function(preview) {\n return _c(\"preview\", {\n key: preview.id,\n attrs: { preview: preview, selected: _vm.selected.theme },\n on: { select: _vm.selectTheme }\n })\n })\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"section\", attrs: { id: \"fonts\" } }, [\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"accessibility\", \"Fonts\")))]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"fonts-list preview-list\" },\n _vm._l(_vm.fonts, function(preview) {\n return _c(\"preview\", {\n key: preview.id,\n attrs: { preview: preview, selected: _vm.selected.font },\n on: { select: _vm.selectFont }\n })\n })\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"a\",\n {\n class: { preview: true, selected: _vm.preview.id === _vm.selected },\n attrs: { href: \"#\" },\n on: { click: _vm.selectItem }\n },\n [\n _c(\"div\", {\n staticClass: \"preview-image\",\n style: { backgroundImage: \"url(\" + _vm.preview.img + \")\" }\n }),\n _vm._v(\" \"),\n _c(\"h3\", [\n _c(\"span\", [_vm._v(_vm._s(_vm.preview.title))]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"icon-checkmark-color\" }, [\n _vm._v(_vm._s(_vm.t(\"accessibility\", \"enabled\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(_vm._s(_vm.preview.text))])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./itemPreview.vue?vue&type=template&id=501a4e56&\"\nimport script from \"./itemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./itemPreview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/Docker/server/apps/accessibility/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!module.hot.data) {\n api.createRecord('501a4e56', component.options)\n } else {\n api.reload('501a4e56', component.options)\n }\n module.hot.accept(\"./itemPreview.vue?vue&type=template&id=501a4e56&\", function () {\n api.rerender('501a4e56', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/itemPreview.vue\"\nexport default component.exports","<template>\n\t<a :class=\"{preview: true, selected: preview.id === selected}\"\n\t href=\"#\" @click=\"selectItem\">\n\t\t<div class=\"preview-image\" :style=\"{backgroundImage: 'url(' + preview.img + ')'}\"></div>\n\t\t<h3>\n\t\t\t<span>{{preview.title}}</span>\n\t\t\t<div class=\"icon-checkmark-color\">{{t('accessibility', 'enabled')}}</div>\n\t\t</h3>\n\t\t<p>{{preview.text}}</p>\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'itemPreview',\n\tprops: ['preview', 'selected'],\n\tmethods: {\n\t\tselectItem() {\n\t\t\tthis.$emit(\n\t\t\t\t'select',\n\t\t\t\t// if we clicked the already selected one: disable it\n\t\t\t\tthis.preview.id === this.selected ? false : this.preview.id\n\t\t\t);\n\t\t}\n\t}\n};\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7ba5bd90&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/Docker/server/apps/accessibility/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!module.hot.data) {\n api.createRecord('7ba5bd90', component.options)\n } else {\n api.reload('7ba5bd90', component.options)\n }\n module.hot.accept(\"./App.vue?vue&type=template&id=7ba5bd90&\", function () {\n api.rerender('7ba5bd90', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/App.vue\"\nexport default component.exports","<template>\n\t<div id=\"accessibility\">\n\t\t<div id=\"themes\" class=\"section\">\n\t\t\t<h2>{{t('accessibility', 'Themes')}}</h2>\n\t\t\t<div class=\"themes-list preview-list\">\n\t\t\t\t<preview v-for=\"preview in themes\" :preview=\"preview\"\n\t\t\t\t\t\t :key=\"preview.id\" :selected=\"selected.theme\"\n\t\t\t\t\t\t v-on:select=\"selectTheme\"></preview>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"fonts\" class=\"section\">\n\t\t\t<h2>{{t('accessibility', 'Fonts')}}</h2>\n\t\t\t<div class=\"fonts-list preview-list\">\n\t\t\t\t<preview v-for=\"preview in fonts\" :preview=\"preview\"\n\t\t\t\t\t\t :key=\"preview.id\" :selected=\"selected.font\"\n\t\t\t\t\t\t v-on:select=\"selectFont\"></preview>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport preview from './components/itemPreview';\nimport axios from 'axios';\n\nexport default {\n\tname: 'app',\n\tcomponents: { preview },\n\tbeforeMount() {\n\t\t// importing server data into the app\n\t\tconst serverDataElmt = document.getElementById('serverData');\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.serverData = JSON.parse(\n\t\t\t\tdocument.getElementById('serverData').dataset.server\n\t\t\t);\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tserverData: []\n\t\t};\n\t},\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.serverData.themes;\n\t\t},\n\t\tfonts() {\n\t\t\treturn this.serverData.fonts;\n\t\t},\n\t\tselected() {\n\t\t\treturn {\n\t\t\t\ttheme: this.serverData.theme,\n\t\t\t\tfont: this.serverData.font\n\t\t\t};\n\t\t},\n\t\ttokenHeaders() {\n\t\t\treturn { headers: { requesttoken: OC.requestToken } }\n\t\t}\n\t},\n\tmethods: {\n\t\tselectTheme(id) {\n\t\t\tthis.selectItem('theme', id);\n\t\t},\n\t\tselectFont(id) {\n\t\t\tthis.selectItem('font', id);\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {string} type type of the change (font or theme)\n\t\t * @param {string} id the data of the change\n\t\t */\n\t\tselectItem(type, id) {\n\t\t\taxios\n\t\t\t\t.post(OC.linkToOCS('apps/accessibility/api/v1/config', 2) + type, {value: id}, this.tokenHeaders)\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.serverData[type] = id;\n\n\t\t\t\t\t// Remove old link\n\t\t\t\t\tlet link = document.querySelector('link[rel=stylesheet][href*=accessibility][href*=user-]');\n\t\t\t\t\tif (!link) {\n\t\t\t\t\t\t// insert new css\n\t\t\t\t\t\tlet link = document.createElement('link');\n\t\t\t\t\t\tlink.rel = 'stylesheet';\n\t\t\t\t\t\tlink.href = OC.generateUrl('/apps/accessibility/css/user-style.css');\n\t\t\t\t\t\tdocument.head.appendChild(link)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// force update\n\t\t\t\t\t\tlink.href = link.href.split('?')[0] + '?v=' + new Date().getTime();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.log(err, err.response);\n\t\t\t\t\tOC.Notification.showTemporary(t('accessibility', err.response.data.ocs.meta.message + '. Unable to apply the setting.'));\n\t\t\t\t});\n\t\t}\n\t}\n};\n</script>\n","import Vue from 'vue';\nimport App from './App.vue';\n\n/* global t */\n// bind to window\nVue.prototype.OC = OC;\nVue.prototype.t = t;\n\nnew Vue({\n\tel: '#accessibility',\n\trender: h => h(App)\n});\n"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./src/App.vue?647a","webpack:///./src/components/itemPreview.vue?394f","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/components/itemPreview.vue","webpack:///src/components/itemPreview.vue","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","extend","a","b","thisArg","trim","str","replace","global","setImmediate","emptyObject","freeze","isUndef","v","undefined","isDef","isTrue","isPrimitive","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","String","Math","floor","isFinite","JSON","stringify","toNumber","isNaN","makeMap","expectsLowerCase","map","list","split","toLowerCase","isBuiltInTag","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","_","toUpperCase","capitalize","charAt","slice","hyphenateRE","hyphenate","Function","ctx","boundFn","apply","_length","toArray","start","ret","Array","to","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","e","keysA","keys","keysB","looseIndexOf","once","called","this","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","isReserved","charCodeAt","def","writable","configurable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","test","isIE9","isEdge","isIOS","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","set","has","add","clear","warn","uid","Dep","id","subs","addSub","sub","push","removeSub","depend","target","addDep","notify","update","targetStack","pushTarget","_target","popTarget","pop","VNode","tag","data","children","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","args","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","src","__proto__","observe","asRootData","isExtensible","_isVue","defineReactive","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","mergeAssets","hook","type","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","normalizeDirectives","extendsFrom","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","match","isSameType","expectedTypes","handleError","err","info","cur","$parent","hooks","errorCaptured","globalHandleError","logError","console","error","microTimerFunc","macroTimerFunc","callbacks","pending","flushCallbacks","copies","useMacroTask","MessageChannel","setTimeout","channel","port","port2","port1","onmessage","postMessage","Promise","resolve","then","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","old","event","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","last","isTextNode","shift","_isVList","isFalse","ensureCtor","comp","base","getFirstComponentChild","$once","$on","remove$1","$off","updateComponentListeners","listeners","oldListeners","resolveSlots","slots","attrs","slot","name$1","isWhitespace","resolveScopedSlots","activeInstance","isInInactiveTree","_inactive","activateChildComponent","direct","_directInactive","$children","callHook","handlers","j","_hasHookEvent","$emit","queue","activatedChildren","waiting","flushing","flushSchedulerQueue","watcher","sort","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","_isMounted","callUpdatedHooks","emit","uid$1","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","sync","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","proxy","sourceKey","initState","propsOptions","_propKeys","loop","initProps","initMethods","_data","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","handler","createWatcher","initWatch","shouldCache","createComputedGetter","$watch","resolveInject","filter","provideKey","source","_provided","provideDefault","renderList","render","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","slotNodes","$slots","_rendered","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","FunctionalRenderContext","contextVm","_original","isCompiled","_compiled","needNormalization","injections","scopedSlots","_scopeId","_c","createElement","cloneAndMarkFunctionalResult","clone","mergeProps","componentVNodeHooks","init","hydrating","parentElm","refElm","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","_parentElm","_refElm","inlineTemplate","createComponentInstanceForVnode","$mount","oldVnode","parentVnode","renderChildren","hasChildren","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_parentListeners","$forceUpdate","updateChildComponent","insert","queueActivatedComponent","destroy","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","_base","cid","factory","errorComp","resolved","loading","loadingComp","contexts","forceRender","reject","reason","component","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","callback","transformModel","extractPropsFromVNodeData","functional","renderContext","vnodes","createFunctionalComponent","nativeOn","abstract","installComponentHooks","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","applyNS","force","style","class","registerDeepBindings","_createElement","uid$3","super","superOptions","modifiedOptions","modified","latest","extended","extendOptions","sealed","sealedOptions","dedupe","resolveModifiedOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","constructor","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","cbs","i$1","eventsMixin","_update","prevEl","$el","prevVnode","prevActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","RegExp","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","this$1","parseInt","configDef","util","delete","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","attr","isEnumeratedAttr","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","selected","querySelector","nodeOps","tagName","multiple","setAttribute","createElementNS","namespace","createTextNode","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","chr","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","parseFilters","exp","prev","filters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","msg","pluckModuleFunction","addProp","plain","addAttr","addRawAttr","attrsMap","attrsList","addDirective","arg","addHandler","important","events","right","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","genComponentModel","number","valueExpression","assignment","genAssignmentCode","lastIndexOf","eof","isStringStart","next","parseString","parseBracket","parseModel","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","add$1","_withTask","withMacroTask","onceHandler","remove$2","createOnceHandler","updateDOMListeners","change","normalizeEvents","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","pre","hasChildNodes","innerHTML","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","hasAttribute","emptyNodeAt","oldElm","parentElm$1","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","createEvent","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","prevChildren","rawChildren","transitionData","kept","removed","c$1","beforeUpdate","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","HTMLUnknownElement","HTMLElement","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","open","close","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","html","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","IS_REGEX_CAPTURING_BROKEN","g","isPlainTextElement","reCache","decodingMap","&lt;","&gt;","&quot;","&amp;","&#10;","&#9;","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","warn$2","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","argRE","bindRE","modifierRE","decodeHTMLCached","createASTElement","makeAttrsMap","parse","template","isPreTag","root","currentParent","stack","preserveWhitespace","inPre","closeElement","element","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","all","chars","parseEndTag","textEnd","commentEnd","shouldKeepComment","substring","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","rest","unarySlash","unary","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","parseHTML","comments","ieNSBug","ieNSPrefix","guardIESVGBug","isForbiddenTag","forbidden","checkRootConstraints","processPre","processRawAttrs","processed","processFor","if","addIfCondition","block","else","elseif","processIf","processOnce","processElement","findPrevElement","processIfConditions","slotScope","slotTarget","lastNode","isTextTag","tagRE","tokenValue","tokens","rawTokens","exec","@binding","parseText","processKey","for","checkInFor","processRef","slotName","processSlot","processComponent","isProp","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","alias","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","code","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","reduce","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","static","isDirectChildOfTemplateFor","l$1","markStaticRoots","staticInFor","staticRoot","fnExpRE","simplePathRE","esc","tab","space","up","down","keyNames","genGuard","modifierCode","stop","prevent","self","ctrl","alt","meta","genHandlers","genHandler","isMethodPath","isFunctionExpression","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","keyCode","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","state","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","altGen","altHelper","genFor","ifProcessed","genIf","genChildren","bind$$1","genSlot","componentName","genData$2","genComponent","altEmpty","genIfConditions","conditions","genTernaryExp","needRuntime","hasRuntime","gen","genDirectives","genProps","genScopedSlot","inlineRenderFns","genInlineTemplate","genForScopedSlot","checkSkip","altGenElement","altGenNode","el$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","createFunction","errors","div","compileToFunctions","baseCompile","compile","finalOptions","tips","tip","compiled","fnGenErrors","createCompileToFunctionFn","createCompilerCreator","createCompiler","getShouldDecode","href","idToTemplate","mount","documentElement","outerHTML","container","getOuterHTML","__webpack_exports__","eval","process","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","headers","defaults","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","Accept","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","requestData","requestHeaders","request","loadEvent","xDomain","XDomainRequest","url","onprogress","ontimeout","auth","username","password","Authorization","paramsSerializer","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onerror","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","message","__CANCEL__","Cancel","scope","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","handle","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","attachEvent","installPostMessageImplementation","installMessageChannelImplementation","script","onreadystatechange","installReadyStateChangeImplementation","task","Axios","createInstance","defaultConfig","instance","axios","instanceConfig","CancelToken","isCancel","promises","spread","readFloatLE","isSlowBuffer","_isBuffer","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","encode","encodeURIComponent","serializedParams","parts","toISOString","ignoreDuplicateOf","parsed","line","substr","originURL","msie","urlParsingNode","resolveURL","protocol","host","search","hostname","pathname","location","requestURL","E","input","charCode","output","idx","write","expires","domain","secure","cookie","Date","toGMTString","decodeURIComponent","now","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","relativeURL","executor","TypeError","resolvePromise","token","Appvue_type_template_id_7ba5bd90_render","_vm","_h","themes","preview","theme","select","selectTheme","fonts","font","selectFont","_withStripped","itemPreviewvue_type_template_id_501a4e56_render","click","selectItem","backgroundImage","img","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","__file","itemPreview","App_component","beforeMount","getElementById","serverData","dataset","server","tokenHeaders","requesttoken","OC","requestToken","_this","axios_default","post","linkToOCS","link","values","getTime","_link","rel","generateUrl","head","catch","log","Notification","showTemporary","ocs","App"],"mappings":"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","file":"accessibility.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","/*!\n * Vue.js v2.5.17\n * (c) 2014-2018 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it... e.g.\n * PhantomJS 1.x. Technically we don't need this anymore since native bind is\n * now more performant in most browsers, but removing it would be breaking for\n * code that was able to run in PhantomJS 1.x, so this must be kept for\n * backwards compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n})\n\n/* */\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n if (!getter && arguments.length === 2) {\n val = obj[key];\n }\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false && isObject(value) && ('@binding' in value))\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both microtasks and (macro) tasks.\n// In < 2.4 we used microtasks everywhere, but there are some scenarios where\n// microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using (macro) tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use microtask by default, but expose a way to force (macro) task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine microtask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a (macro) task instead of a microtask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, def, cur, old, event;\n for (name in on) {\n def = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n /* istanbul ignore if */\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once) {\n if (once) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$off(event[i], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n if (fn) {\n // specific handler\n var cb;\n var i$1 = cbs.length;\n while (i$1--) {\n cb = cbs[i$1];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i$1, 1);\n break\n }\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n // no need for the ref nodes after initial patch\n // this prevents keeping a detached DOM tree in memory (#5851)\n vm.$options._parentElm = vm.$options._refElm = null;\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$1 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$1; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive(props, key, value, function () {\n if (vm.$parent && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : userDef;\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (methods[key] == null) {\n warn(\n \"Method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes) {\n if (process.env.NODE_ENV !== 'production' && slotNodes._rendered) {\n warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n }\n slotNodes._rendered = true;\n }\n nodes = slotNodes || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n\n\n\n// Register the component hook to weex native render engine.\n// The hook will be triggered by native, not javascript.\n\n\n// Updates the state of the component to weex native render engine.\n\n/* */\n\n// https://github.com/Hanks10100/weex-native-directive/tree/master/component\n\n// listening on native callback\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n // Weex specific: invoke recycle-list optimized @render function for\n // extracting cell-slot template.\n // https://github.com/Hanks10100/weex-native-directive/tree/master/component\n /* istanbul ignore if */\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var options = {\n _isComponent: true,\n parent: parent,\n _parentVnode: vnode,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n hooks[key] = componentVNodeHooks[key];\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n // reset _rendered flag on slots for duplicate slot check\n if (process.env.NODE_ENV !== 'production') {\n for (var key in vm.$slots) {\n // $flow-disable-line\n vm.$slots[key]._rendered = false;\n }\n }\n\n if (_parentVnode) {\n vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache, key, this$1.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n}\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n}\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.5.17';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n}\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove () {\n if (--remove.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove.listeners = listeners;\n return remove\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (ref$$1.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n}\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n]\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n}\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n}\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\nfunction baseWarn (msg) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n el.plain = false;\n}\n\nfunction addAttr (el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value) {\n el.attrsMap[name] = value;\n el.attrsList.push({ name: name, value: value });\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n modifiers\n) {\n (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });\n el.plain = false;\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.'\n );\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = '~' + name; // mark the event as once\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = '&' + name; // mark the event as passive\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (name === 'click') {\n if (modifiers.right) {\n name = 'contextmenu';\n delete modifiers.right;\n } else if (modifiers.middle) {\n name = 'mouseup';\n }\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = {\n value: value.trim()\n };\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: (\"\\\"\" + value + \"\\\"\"),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len;\nvar str;\nvar chr;\nvar index$1;\nvar expressionPos;\nvar expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\"\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.'\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally'\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler (handler, event, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n if (once$$1) { handler = createOnceHandler(handler, event, capture); }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n}\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.lazy) {\n // inputs with lazy should only be updated when not in focus\n return false\n }\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n}\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n}\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def) {\n if (!def) {\n return\n }\n /* istanbul ignore else */\n if (typeof def === 'object') {\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(def.name || 'v'));\n }\n extend(res, def);\n return res\n } else if (typeof def === 'string') {\n return autoCssTransition(def)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {}\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n]\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n}\n\nvar platformDirectives = {\n model: directive,\n show: show\n}\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n}\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n}\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n}\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n isChrome\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.'\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n}\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.'\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n}\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n}\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n/*!\n * HTML Parser By John Resig (ejohn.org)\n * Modified by Juriy \"kangax\" Zaytsev\n * Original code by Erik Arvidsson, Mozilla Public License\n * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n// but for Vue templates we can enforce a simple charset\nvar ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\nvar IS_REGEX_CAPTURING_BROKEN = false;\n'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n});\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n',\n '&#9;': '\\t'\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd));\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(lastTag, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n advance(textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n html = '';\n }\n\n if (options.chars && text) {\n options.chars(text);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"));\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') { delete args[3]; }\n if (args[4] === '') { delete args[4]; }\n if (args[5] === '') { delete args[5]; }\n }\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\")\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([^]*?)\\s+(?:in|of)\\s+([^]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^v-bind:/;\nvar modifierRE = /\\.[^.]+/g;\n\nvar decodeHTMLCached = cached(he.decode);\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\n\n\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg) {\n if (!warned) {\n warned = true;\n warn$2(msg);\n }\n }\n\n function closeElement (element) {\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n start: function start (tag, attrs, unary) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.'\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n // element-scope stuff\n processElement(element, options);\n }\n\n function checkRootConstraints (el) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.'\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.'\n );\n }\n }\n }\n\n // tree management\n if (!root) {\n root = element;\n checkRootConstraints(root);\n } else if (!stack.length) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n checkRootConstraints(element);\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\"\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else if (element.slotScope) { // scoped slot\n currentParent.plain = false;\n var name = element.slotTarget || '\"default\"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end () {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n closeElement(element);\n },\n\n chars: function chars (text) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.'\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\")\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n text = inPre || text.trim()\n ? isTextTag(currentParent) ? text : decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && children.length ? ' ' : '';\n if (text) {\n var res;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n children.push({\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n });\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n children.push({\n type: 3,\n text: text\n });\n }\n }\n },\n comment: function comment (text) {\n currentParent.children.push({\n type: 3,\n text: text,\n isComment: true\n });\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (element, options) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !element.attrsList.length;\n\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production' && el.tag === 'template') {\n warn$2(\"<template> cannot be keyed. Place the key on real elements instead.\");\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp)\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '');\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\"\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\"\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\nfunction processSlot (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\"\n );\n }\n } else {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n true\n );\n }\n el.slotScope = slotScope;\n }\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget);\n }\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, isProp;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isProp = false;\n if (modifiers) {\n if (modifiers.prop) {\n isProp = true;\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n genAssignmentCode(value, \"$event\")\n );\n }\n }\n if (isProp || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers, false, warn$2);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, rawName, value, arg, modifiers);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.'\n );\n }\n }\n addAttr(el, name, JSON.stringify(value));\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true');\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\"\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\n/**\n * Expand input[v-model] with dyanmic type bindings into v-if-else chains\n * Turn this:\n * <input v-model=\"data[type]\" :type=\"type\">\n * into this:\n * <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\n * <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\n * <input v-else :type=\"type\" v-model=\"data[type]\">\n */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$2 = {\n preTransformNode: preTransformNode\n}\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$2\n]\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"));\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n}\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n esc: 'Escape',\n tab: 'Tab',\n enter: 'Enter',\n space: ' ',\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n 'delete': ['Backspace', 'Delete']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative,\n warn\n) {\n var res = isNative ? 'nativeOn:{' : 'on:{';\n for (var name in events) {\n res += \"\\\"\" + name + \"\\\":\" + (genHandler(name, events[name])) + \",\";\n }\n return res.slice(0, -1) + '}'\n}\n\nfunction genHandler (\n name,\n handler\n) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n /* istanbul ignore if */\n return (\"function($event){\" + (handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : handler.value;\n /* istanbul ignore if */\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\"if(!('button' in $event)&&\" + (keys.map(genFilterCode).join('&&')) + \")return null;\")\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n}\n\n/* */\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data = el.plain ? undefined : genData$2(el, state);\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \"\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:{\" + (genProps(el.attrs)) + \"},\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:{\" + (genProps(el.props)) + \"},\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false, state.warn)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true, state.warn)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\\\"\" + (dir.arg) + \"\\\"\") : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n slots,\n state\n) {\n return (\"scopedSlots:_u([\" + (Object.keys(slots).map(function (key) {\n return genScopedSlot(key, slots[key], state)\n }).join(',')) + \"])\")\n}\n\nfunction genScopedSlot (\n key,\n el,\n state\n) {\n if (el.for && !el.forProcessed) {\n return genForScopedSlot(key, el, state)\n }\n var fn = \"function(\" + (String(el.slotScope)) + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if\n ? ((el.if) + \"?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n return (\"{key:\" + key + \",fn:\" + fn + \"}\")\n}\n\nfunction genForScopedSlot (\n key,\n el,\n state\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n el.forProcessed = true; // avoid recursion\n return \"_l((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + (genScopedSlot(key, el, state)) +\n '})'\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n return (altGenElement || genElement)(el$1, state)\n }\n var normalizationType = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType ? (\",\" + normalizationType) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs && (\"{\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \":\" + (a.value)); }).join(',')) + \"}\");\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n /* istanbul ignore if */\n {\n res += \"\\\"\" + (prop.name) + \"\\\":\" + (transformSpecialNewlines(prop.value)) + \",\";\n }\n }\n return res.slice(0, -1)\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors\n}\n\nfunction checkNode (node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), errors);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n}\n\nfunction checkEvent (exp, text, errors) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n errors.push(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim())\n );\n }\n checkExpression(exp, text, errors);\n}\n\nfunction checkFor (node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n errors\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n errors.push((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())));\n }\n }\n}\n\nfunction checkExpression (exp, text, errors) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim())\n );\n } else {\n errors.push(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\"\n );\n }\n }\n}\n\n/* */\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n if (compiled.tips && compiled.tips.length) {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n finalOptions.warn = function (msg, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n var compiled = baseCompile(template, finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n errors.push.apply(errors, detectErrors(compiled.ast));\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf('&#10;') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nexport default Vue;\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","module.exports = require('./lib/axios');","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"accessibility\" } }, [\n _c(\"div\", { staticClass: \"section\", attrs: { id: \"themes\" } }, [\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"accessibility\", \"Themes\")))]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"themes-list preview-list\" },\n _vm._l(_vm.themes, function(preview) {\n return _c(\"preview\", {\n key: preview.id,\n attrs: { preview: preview, selected: _vm.selected.theme },\n on: { select: _vm.selectTheme }\n })\n })\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"section\", attrs: { id: \"fonts\" } }, [\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"accessibility\", \"Fonts\")))]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"fonts-list preview-list\" },\n _vm._l(_vm.fonts, function(preview) {\n return _c(\"preview\", {\n key: preview.id,\n attrs: { preview: preview, selected: _vm.selected.font },\n on: { select: _vm.selectFont }\n })\n })\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"a\",\n {\n class: { preview: true, selected: _vm.preview.id === _vm.selected },\n attrs: { href: \"#\" },\n on: { click: _vm.selectItem }\n },\n [\n _c(\"div\", {\n staticClass: \"preview-image\",\n style: { backgroundImage: \"url(\" + _vm.preview.img + \")\" }\n }),\n _vm._v(\" \"),\n _c(\"h3\", [\n _c(\"span\", [_vm._v(_vm._s(_vm.preview.title))]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"icon-checkmark-color\" }, [\n _vm._v(_vm._s(_vm.t(\"accessibility\", \"enabled\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(_vm._s(_vm.preview.text))])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./itemPreview.vue?vue&type=template&id=501a4e56&\"\nimport script from \"./itemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./itemPreview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/Docker/server/apps/accessibility/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!module.hot.data) {\n api.createRecord('501a4e56', component.options)\n } else {\n api.reload('501a4e56', component.options)\n }\n module.hot.accept(\"./itemPreview.vue?vue&type=template&id=501a4e56&\", function () {\n api.rerender('501a4e56', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/itemPreview.vue\"\nexport default component.exports","<template>\n\t<a :class=\"{preview: true, selected: preview.id === selected}\"\n\t href=\"#\" @click=\"selectItem\">\n\t\t<div class=\"preview-image\" :style=\"{backgroundImage: 'url(' + preview.img + ')'}\"></div>\n\t\t<h3>\n\t\t\t<span>{{preview.title}}</span>\n\t\t\t<div class=\"icon-checkmark-color\">{{t('accessibility', 'enabled')}}</div>\n\t\t</h3>\n\t\t<p>{{preview.text}}</p>\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'itemPreview',\n\tprops: ['preview', 'selected'],\n\tmethods: {\n\t\tselectItem() {\n\t\t\tthis.$emit(\n\t\t\t\t'select',\n\t\t\t\t// if we clicked the already selected one: disable it\n\t\t\t\tthis.preview.id === this.selected ? false : this.preview.id\n\t\t\t);\n\t\t}\n\t}\n};\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7ba5bd90&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/Docker/server/apps/accessibility/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!module.hot.data) {\n api.createRecord('7ba5bd90', component.options)\n } else {\n api.reload('7ba5bd90', component.options)\n }\n module.hot.accept(\"./App.vue?vue&type=template&id=7ba5bd90&\", function () {\n api.rerender('7ba5bd90', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/App.vue\"\nexport default component.exports","<template>\n\t<div id=\"accessibility\">\n\t\t<div id=\"themes\" class=\"section\">\n\t\t\t<h2>{{t('accessibility', 'Themes')}}</h2>\n\t\t\t<div class=\"themes-list preview-list\">\n\t\t\t\t<preview v-for=\"preview in themes\" :preview=\"preview\"\n\t\t\t\t\t\t :key=\"preview.id\" :selected=\"selected.theme\"\n\t\t\t\t\t\t v-on:select=\"selectTheme\"></preview>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"fonts\" class=\"section\">\n\t\t\t<h2>{{t('accessibility', 'Fonts')}}</h2>\n\t\t\t<div class=\"fonts-list preview-list\">\n\t\t\t\t<preview v-for=\"preview in fonts\" :preview=\"preview\"\n\t\t\t\t\t\t :key=\"preview.id\" :selected=\"selected.font\"\n\t\t\t\t\t\t v-on:select=\"selectFont\"></preview>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport preview from './components/itemPreview';\nimport axios from 'axios';\n\nexport default {\n\tname: 'Accessibility',\n\tcomponents: { preview },\n\tbeforeMount() {\n\t\t// importing server data into the app\n\t\tconst serverDataElmt = document.getElementById('serverData');\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.serverData = JSON.parse(\n\t\t\t\tdocument.getElementById('serverData').dataset.server\n\t\t\t);\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tserverData: []\n\t\t};\n\t},\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.serverData.themes;\n\t\t},\n\t\tfonts() {\n\t\t\treturn this.serverData.fonts;\n\t\t},\n\t\tselected() {\n\t\t\treturn {\n\t\t\t\ttheme: this.serverData.theme,\n\t\t\t\tfont: this.serverData.font\n\t\t\t};\n\t\t},\n\t\ttokenHeaders() {\n\t\t\treturn { headers: { requesttoken: OC.requestToken } };\n\t\t}\n\t},\n\tmethods: {\n\t\tselectTheme(id) {\n\t\t\tthis.selectItem('theme', id);\n\t\t},\n\t\tselectFont(id) {\n\t\t\tthis.selectItem('font', id);\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {string} type type of the change (font or theme)\n\t\t * @param {string} id the data of the change\n\t\t */\n\t\tselectItem(type, id) {\n\t\t\taxios.post(\n\t\t\t\t\tOC.linkToOCS('apps/accessibility/api/v1/config', 2) + type,\n\t\t\t\t\t{ value: id },\n\t\t\t\t\tthis.tokenHeaders\n\t\t\t\t)\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.serverData[type] = id;\n\n\t\t\t\t\t// Remove old link\n\t\t\t\t\tlet link = document.querySelector('link[rel=stylesheet][href*=accessibility][href*=user-]');\n\t\t\t\t\tif (!link) {\n\t\t\t\t\t\t// insert new css\n\t\t\t\t\t\tlet link = document.createElement('link');\n\t\t\t\t\t\tlink.rel = 'stylesheet';\n\t\t\t\t\t\tlink.href = OC.generateUrl('/apps/accessibility/css/user-style.css') + '?v=' + new Date().getTime();\n\t\t\t\t\t\tdocument.head.appendChild(link);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// compare arrays\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tJSON.stringify(Object.values(this.selected)) ===\n\t\t\t\t\t\t\tJSON.stringify([false, false])\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// if nothing is selected, blindly remove the css\n\t\t\t\t\t\t\tlink.remove();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// force update\n\t\t\t\t\t\t\tlink.href =\n\t\t\t\t\t\t\t\tlink.href.split('?')[0] +\n\t\t\t\t\t\t\t\t'?v=' +\n\t\t\t\t\t\t\t\tnew Date().getTime();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.log(err, err.response);\n\t\t\t\t\tOC.Notification.showTemporary(t('accessibility', err.response.data.ocs.meta.message + '. Unable to apply the setting.'));\n\t\t\t\t});\n\t\t}\n\t}\n};\n</script>\n","import Vue from 'vue';\nimport App from './App.vue';\n\n/* global t */\n// bind to window\nVue.prototype.OC = OC;\nVue.prototype.t = t;\n\nnew Vue({\n\tel: '#accessibility',\n\trender: h => h(App)\n});\n"],"sourceRoot":""} \ No newline at end of file
diff --git a/apps/accessibility/lib/AppInfo/Application.php b/apps/accessibility/lib/AppInfo/Application.php
index 6e3dc789d97..e87341b6c1c 100644
--- a/apps/accessibility/lib/AppInfo/Application.php
+++ b/apps/accessibility/lib/AppInfo/Application.php
@@ -54,8 +54,10 @@ class Application extends App {
$loggedUser = $this->userSession->getUser();
if (!is_null($loggedUser)) {
$userValues = $this->config->getUserKeys($loggedUser->getUID(), $this->appName);
+ // we want to check if any theme or font is enabled.
if (count($userValues) > 0) {
- $linkToCSS = $this->urlGenerator->linkToRoute($this->appName . '.accessibility.getCss', ['md5' => md5(implode('-', $userValues))]);
+ $hash = $this->config->getUserValue($loggedUser->getUID(), $this->appName, 'icons-css', md5(implode('-', $userValues)));
+ $linkToCSS = $this->urlGenerator->linkToRoute($this->appName . '.accessibility.getCss', ['md5' => $hash]);
\OCP\Util::addHeader('link', ['rel' => 'stylesheet', 'href' => $linkToCSS]);
}
}
diff --git a/apps/accessibility/lib/Controller/AccessibilityController.php b/apps/accessibility/lib/Controller/AccessibilityController.php
index a8fba556acb..d679e37ed99 100644
--- a/apps/accessibility/lib/Controller/AccessibilityController.php
+++ b/apps/accessibility/lib/Controller/AccessibilityController.php
@@ -182,6 +182,9 @@ class AccessibilityController extends Controller {
$response->addHeader('Expires', $expires->format(\DateTime::RFC1123));
$response->addHeader('Pragma', 'cache');
+ // store current cache hash
+ $this->config->setUserValue($this->userSession->getUser()->getUID(), $this->appName, 'icons-css', md5($css));
+
return $response;
}
diff --git a/apps/accessibility/lib/Controller/ConfigController.php b/apps/accessibility/lib/Controller/ConfigController.php
index ba11faafa20..1fe2c4fbc13 100644
--- a/apps/accessibility/lib/Controller/ConfigController.php
+++ b/apps/accessibility/lib/Controller/ConfigController.php
@@ -37,6 +37,9 @@ class ConfigController extends OCSController {
protected $appName;
/** @var string */
+ protected $userId;
+
+ /** @var string */
protected $serverRoot;
/** @var IConfig */
@@ -67,6 +70,7 @@ class ConfigController extends OCSController {
$this->config = $config;
$this->userSession = $userSession;
$this->accessibilityProvider = $accessibilityProvider;
+ $this->userId = $userSession->getUser()->getUID();
}
/**
@@ -79,8 +83,8 @@ class ConfigController extends OCSController {
*/
public function getConfig(): DataResponse {
return new DataResponse([
- 'theme' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'theme', false),
- 'font' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'font', false)
+ 'theme' => $this->config->getUserValue($this->userId, $this->appName, 'theme', false),
+ 'font' => $this->config->getUserValue($this->userId, $this->appName, 'font', false)
]);
}
@@ -95,20 +99,28 @@ class ConfigController extends OCSController {
*/
public function setConfig(string $key, $value): DataResponse {
if ($key === 'theme' || $key === 'font') {
- $themes = $this->accessibilityProvider->getThemes();
- $fonts = $this->accessibilityProvider->getFonts();
if ($value === false) {
- $this->config->deleteUserValue($this->userSession->getUser()->getUID(), $this->appName, $key);
+ $this->config->deleteUserValue($this->userId, $this->appName, $key);
+ $userValues = $this->config->getUserKeys($this->userId, $this->appName);
+
+ // remove hash if no settings selected
+ if (count($userValues) === 1 && $userValues[0] === 'icons-css') {
+ $this->config->deleteUserValue($this->userId, $this->appName, 'icons-css');
+ }
+
return new DataResponse();
}
+ $themes = $this->accessibilityProvider->getThemes();
+ $fonts = $this->accessibilityProvider->getFonts();
+
$availableOptions = array_map(function($option) {
return $option['id'];
}, array_merge($themes, $fonts));
if (in_array($value, $availableOptions)) {
- $this->config->setUserValue($this->userSession->getUser()->getUID(), $this->appName, $key, $value);
+ $this->config->setUserValue($this->userId, $this->appName, $key, $value);
return new DataResponse();
}
diff --git a/apps/accessibility/package-lock.json b/apps/accessibility/package-lock.json
index a412f73adec..84f1f37890e 100644
--- a/apps/accessibility/package-lock.json
+++ b/apps/accessibility/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "accessibility",
- "version": "1.0.1",
+ "version": "1.0.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/apps/accessibility/package.json b/apps/accessibility/package.json
index 322f0033c17..1b2fdad035c 100644
--- a/apps/accessibility/package.json
+++ b/apps/accessibility/package.json
@@ -1,7 +1,7 @@
{
"name": "accessibility",
"description": "Provides multiple accessibilities options to ease your use of nextcloud",
- "version": "1.0.1",
+ "version": "1.0.2",
"author": "John Molakvoæ <skjnldsv@protonmail.com>",
"license": "agpl",
"private": true,
diff --git a/apps/accessibility/src/App.vue b/apps/accessibility/src/App.vue
index 37dcc41eb2c..5de1265c2cd 100644
--- a/apps/accessibility/src/App.vue
+++ b/apps/accessibility/src/App.vue
@@ -24,7 +24,7 @@ import preview from './components/itemPreview';
import axios from 'axios';
export default {
- name: 'app',
+ name: 'Accessibility',
components: { preview },
beforeMount() {
// importing server data into the app
@@ -54,7 +54,7 @@ export default {
};
},
tokenHeaders() {
- return { headers: { requesttoken: OC.requestToken } }
+ return { headers: { requesttoken: OC.requestToken } };
}
},
methods: {
@@ -73,8 +73,11 @@ export default {
* @param {string} id the data of the change
*/
selectItem(type, id) {
- axios
- .post(OC.linkToOCS('apps/accessibility/api/v1/config', 2) + type, {value: id}, this.tokenHeaders)
+ axios.post(
+ OC.linkToOCS('apps/accessibility/api/v1/config', 2) + type,
+ { value: id },
+ this.tokenHeaders
+ )
.then(response => {
this.serverData[type] = id;
@@ -84,11 +87,23 @@ export default {
// insert new css
let link = document.createElement('link');
link.rel = 'stylesheet';
- link.href = OC.generateUrl('/apps/accessibility/css/user-style.css');
- document.head.appendChild(link)
+ link.href = OC.generateUrl('/apps/accessibility/css/user-style.css') + '?v=' + new Date().getTime();
+ document.head.appendChild(link);
} else {
- // force update
- link.href = link.href.split('?')[0] + '?v=' + new Date().getTime();
+ // compare arrays
+ if (
+ JSON.stringify(Object.values(this.selected)) ===
+ JSON.stringify([false, false])
+ ) {
+ // if nothing is selected, blindly remove the css
+ link.remove();
+ } else {
+ // force update
+ link.href =
+ link.href.split('?')[0] +
+ '?v=' +
+ new Date().getTime();
+ }
}
})
.catch(err => {
diff --git a/apps/comments/l10n/hu.js b/apps/comments/l10n/hu.js
index c2ed42b66f1..485f42adc79 100644
--- a/apps/comments/l10n/hu.js
+++ b/apps/comments/l10n/hu.js
@@ -12,7 +12,7 @@ OC.L10N.register(
"More comments …" : "Több hozzászólás...",
"Save" : "Mentés",
"Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
- "Error occurred while retrieving comment with ID {id}" : "Hiba a {id} számú komment betöltésekor",
+ "Error occurred while retrieving comment with ID {id}" : "Hiba a {id} számú hozzászólás betöltésekor",
"Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}",
"Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben",
"_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"],
diff --git a/apps/comments/l10n/hu.json b/apps/comments/l10n/hu.json
index eaac121e82c..325a87ab532 100644
--- a/apps/comments/l10n/hu.json
+++ b/apps/comments/l10n/hu.json
@@ -10,7 +10,7 @@
"More comments …" : "Több hozzászólás...",
"Save" : "Mentés",
"Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
- "Error occurred while retrieving comment with ID {id}" : "Hiba a {id} számú komment betöltésekor",
+ "Error occurred while retrieving comment with ID {id}" : "Hiba a {id} számú hozzászólás betöltésekor",
"Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}",
"Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben",
"_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"],
diff --git a/apps/comments/l10n/sl.js b/apps/comments/l10n/sl.js
index a6714b982b2..37e039418dc 100644
--- a/apps/comments/l10n/sl.js
+++ b/apps/comments/l10n/sl.js
@@ -18,6 +18,7 @@ OC.L10N.register(
"You commented" : "Vaša opomba",
"%1$s commented" : "%1$s opomb",
"%1$s commented on %2$s" : "%1$s opomb ob %2$s",
+ "<strong>Comments</strong> for files" : "<strong>Opombe</strong> za datoteke",
"Unknown user" : "Nepoznan uporabnik"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/comments/l10n/sl.json b/apps/comments/l10n/sl.json
index 9e8dd148a28..17841f16977 100644
--- a/apps/comments/l10n/sl.json
+++ b/apps/comments/l10n/sl.json
@@ -16,6 +16,7 @@
"You commented" : "Vaša opomba",
"%1$s commented" : "%1$s opomb",
"%1$s commented on %2$s" : "%1$s opomb ob %2$s",
+ "<strong>Comments</strong> for files" : "<strong>Opombe</strong> za datoteke",
"Unknown user" : "Nepoznan uporabnik"
},"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/dav/l10n/cs.js b/apps/dav/l10n/cs.js
index ad5472e5061..7c39cae6c3a 100644
--- a/apps/dav/l10n/cs.js
+++ b/apps/dav/l10n/cs.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"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",
"Contact birthdays" : "Narozeniny kontaktů",
+ "%1$s via %2$s" : "%1$s prostřednictvím %2$s",
"Invitation canceled" : "Pozvánka zrušena",
"Hello %s," : "Dobrý den %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Setkání „%1$s“ sc%2$s bylo zrušeno.",
"Invitation updated" : "Pozvánka aktualizována",
+ "The meeting »%1$s« with %2$s was updated." : "Setkání „%1$s“ s %2$s bylo zrušeno.",
+ "%1$s invited you to »%2$s«" : "%1$s vás pozval(a) na „%2$s“",
"When:" : "Kdy:",
"Where:" : "Kde:",
"Description:" : "Popis:",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Další volby…",
"More options at %s" : "Další volby viz %s",
"Contacts" : "Kontakty",
+ "%s (group)" : "%s (skupina)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Technical details" : "Technické podrobnosti",
diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json
index 19bfb037f8d..d3d2279b4e5 100644
--- a/apps/dav/l10n/cs.json
+++ b/apps/dav/l10n/cs.json
@@ -41,9 +41,13 @@
"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",
"Contact birthdays" : "Narozeniny kontaktů",
+ "%1$s via %2$s" : "%1$s prostřednictvím %2$s",
"Invitation canceled" : "Pozvánka zrušena",
"Hello %s," : "Dobrý den %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Setkání „%1$s“ sc%2$s bylo zrušeno.",
"Invitation updated" : "Pozvánka aktualizována",
+ "The meeting »%1$s« with %2$s was updated." : "Setkání „%1$s“ s %2$s bylo zrušeno.",
+ "%1$s invited you to »%2$s«" : "%1$s vás pozval(a) na „%2$s“",
"When:" : "Kdy:",
"Where:" : "Kde:",
"Description:" : "Popis:",
@@ -53,6 +57,7 @@
"More options …" : "Další volby…",
"More options at %s" : "Další volby viz %s",
"Contacts" : "Kontakty",
+ "%s (group)" : "%s (skupina)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Technical details" : "Technické podrobnosti",
diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js
index 76d173e1619..adde6b900f9 100644
--- a/apps/dav/l10n/de.js
+++ b/apps/dav/l10n/de.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"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",
+ "%1$s via %2$s" : "%1$s über %2$s",
"Invitation canceled" : "Einladung abgebrochen",
"Hello %s," : "Hallo %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Der Termin »%1$s« mit %2$s wurde abgesagt.",
"Invitation updated" : "Einladung aktualisiert",
+ "The meeting »%1$s« with %2$s was updated." : "Der Termin »%1$s« mit %2$s wurde aktualisiert.",
+ "%1$s invited you to »%2$s«" : "%1$s hat Dich zu »%2$s« eingeladen",
"When:" : "Wann:",
"Where:" : "Wo:",
"Description:" : "Beschreibung:",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Weitere Optionen...",
"More options at %s" : "Weitere Optionen unter %s",
"Contacts" : "Kontakte",
+ "%s (group)" : "%s (Gruppe)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Technical details" : "Technische Details",
diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json
index 5b5e8582af7..89e8fd79771 100644
--- a/apps/dav/l10n/de.json
+++ b/apps/dav/l10n/de.json
@@ -41,9 +41,13 @@
"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",
+ "%1$s via %2$s" : "%1$s über %2$s",
"Invitation canceled" : "Einladung abgebrochen",
"Hello %s," : "Hallo %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Der Termin »%1$s« mit %2$s wurde abgesagt.",
"Invitation updated" : "Einladung aktualisiert",
+ "The meeting »%1$s« with %2$s was updated." : "Der Termin »%1$s« mit %2$s wurde aktualisiert.",
+ "%1$s invited you to »%2$s«" : "%1$s hat Dich zu »%2$s« eingeladen",
"When:" : "Wann:",
"Where:" : "Wo:",
"Description:" : "Beschreibung:",
@@ -53,6 +57,7 @@
"More options …" : "Weitere Optionen...",
"More options at %s" : "Weitere Optionen unter %s",
"Contacts" : "Kontakte",
+ "%s (group)" : "%s (Gruppe)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Technical details" : "Technische Details",
diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js
index dce623dea22..39622f04162 100644
--- a/apps/dav/l10n/de_DE.js
+++ b/apps/dav/l10n/de_DE.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"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",
+ "%1$s via %2$s" : "%1$s über %2$s",
"Invitation canceled" : "Einladung abgebrochen",
"Hello %s," : "Hallo %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Der Termin »%1$s« mit %2$s wurde abgesagt.",
"Invitation updated" : "Einladung aktualisiert",
+ "The meeting »%1$s« with %2$s was updated." : "Der Termin »%1$s« mit %2$s wurde aktualisiert.",
+ "%1$s invited you to »%2$s«" : "%1$s hat Sie zu »%2$s« eingeladen",
"When:" : "Wann:",
"Where:" : "Wo:",
"Description:" : "Beschreibung:",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Weitere Optionen...",
"More options at %s" : "Weitere Optionen unter %s",
"Contacts" : "Kontakte",
+ "%s (group)" : "%s (Gruppe)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Technical details" : "Technische Details",
diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json
index af246a957af..2e6b2595211 100644
--- a/apps/dav/l10n/de_DE.json
+++ b/apps/dav/l10n/de_DE.json
@@ -41,9 +41,13 @@
"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",
+ "%1$s via %2$s" : "%1$s über %2$s",
"Invitation canceled" : "Einladung abgebrochen",
"Hello %s," : "Hallo %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Der Termin »%1$s« mit %2$s wurde abgesagt.",
"Invitation updated" : "Einladung aktualisiert",
+ "The meeting »%1$s« with %2$s was updated." : "Der Termin »%1$s« mit %2$s wurde aktualisiert.",
+ "%1$s invited you to »%2$s«" : "%1$s hat Sie zu »%2$s« eingeladen",
"When:" : "Wann:",
"Where:" : "Wo:",
"Description:" : "Beschreibung:",
@@ -53,6 +57,7 @@
"More options …" : "Weitere Optionen...",
"More options at %s" : "Weitere Optionen unter %s",
"Contacts" : "Kontakte",
+ "%s (group)" : "%s (Gruppe)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Technical details" : "Technische Details",
diff --git a/apps/dav/l10n/es.js b/apps/dav/l10n/es.js
index f194116ad39..b67b8ad104b 100644
--- a/apps/dav/l10n/es.js
+++ b/apps/dav/l10n/es.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "Un <strong>evento</strong> del calendario fue modificado.",
"A calendar <strong>todo</strong> was modified" : "Una <strong>lista de tareas</strong> fue modificada",
"Contact birthdays" : "Cumpleaños del contacto",
+ "%1$s via %2$s" : "%1$s vía %2$s",
"Invitation canceled" : "Invitación cancelada",
"Hello %s," : "Hola, %s:",
+ "The meeting »%1$s« with %2$s was canceled." : "La reunión »%1$s« con %2$s se ha cancelado.",
"Invitation updated" : "Invitación actualizada",
+ "The meeting »%1$s« with %2$s was updated." : "La reunión »%1$s« con %2$s se ha actualizado.",
+ "%1$s invited you to »%2$s«" : "%1$s te ha invitado a »%2$s«",
"When:" : "Cuándo:",
"Where:" : "Dónde:",
"Description:" : "Descripción:",
diff --git a/apps/dav/l10n/es.json b/apps/dav/l10n/es.json
index 293606f2a2b..223704d7163 100644
--- a/apps/dav/l10n/es.json
+++ b/apps/dav/l10n/es.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "Un <strong>evento</strong> del calendario fue modificado.",
"A calendar <strong>todo</strong> was modified" : "Una <strong>lista de tareas</strong> fue modificada",
"Contact birthdays" : "Cumpleaños del contacto",
+ "%1$s via %2$s" : "%1$s vía %2$s",
"Invitation canceled" : "Invitación cancelada",
"Hello %s," : "Hola, %s:",
+ "The meeting »%1$s« with %2$s was canceled." : "La reunión »%1$s« con %2$s se ha cancelado.",
"Invitation updated" : "Invitación actualizada",
+ "The meeting »%1$s« with %2$s was updated." : "La reunión »%1$s« con %2$s se ha actualizado.",
+ "%1$s invited you to »%2$s«" : "%1$s te ha invitado a »%2$s«",
"When:" : "Cuándo:",
"Where:" : "Dónde:",
"Description:" : "Descripción:",
diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js
index 04fe4b3f462..74c1867d866 100644
--- a/apps/dav/l10n/fr.js
+++ b/apps/dav/l10n/fr.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié",
"A calendar <strong>todo</strong> was modified" : "Une <strong>liste de tâches</strong> de l'agenda a été modifiée",
"Contact birthdays" : "Anniversaires des contacts",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Invitation annulée",
"Hello %s," : "Bonjour %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "La réunion «%1$s» avec %2$s a été annulée.",
"Invitation updated" : "Invitation mise à jour",
+ "The meeting »%1$s« with %2$s was updated." : "La réunion «%1$s» avec %2$s a été mise à jour.",
+ "%1$s invited you to »%2$s«" : "%1$s vous a invité à «%2$s»",
"When:" : "Quand :",
"Where:" : "Où :",
"Description:" : "Description :",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Plus d'options …",
"More options at %s" : "Plus d'options à %s",
"Contacts" : "Contacts",
+ "%s (group)" : "%s",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Point d'accès WebDAV",
"Technical details" : "Détails techniques",
diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json
index cdfd93830bf..072cfdb0456 100644
--- a/apps/dav/l10n/fr.json
+++ b/apps/dav/l10n/fr.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié",
"A calendar <strong>todo</strong> was modified" : "Une <strong>liste de tâches</strong> de l'agenda a été modifiée",
"Contact birthdays" : "Anniversaires des contacts",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Invitation annulée",
"Hello %s," : "Bonjour %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "La réunion «%1$s» avec %2$s a été annulée.",
"Invitation updated" : "Invitation mise à jour",
+ "The meeting »%1$s« with %2$s was updated." : "La réunion «%1$s» avec %2$s a été mise à jour.",
+ "%1$s invited you to »%2$s«" : "%1$s vous a invité à «%2$s»",
"When:" : "Quand :",
"Where:" : "Où :",
"Description:" : "Description :",
@@ -53,6 +57,7 @@
"More options …" : "Plus d'options …",
"More options at %s" : "Plus d'options à %s",
"Contacts" : "Contacts",
+ "%s (group)" : "%s",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Point d'accès WebDAV",
"Technical details" : "Détails techniques",
diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js
index 8253fe26121..6e3ba357dae 100644
--- a/apps/dav/l10n/hu.js
+++ b/apps/dav/l10n/hu.js
@@ -55,6 +55,7 @@ OC.L10N.register(
"Technical details" : "Technikai adatok",
"Remote Address: %s" : "Távoli cím: %s",
"Request ID: %s" : "Kérelem azonosító: %s",
+ "Save" : "Mentés",
"Send invitations to attendees" : "Meghívó küldése a résztvevőknek",
"Please make sure to properly set up the email settings above." : "Győződj meg róla, hogy a fenti e-mail beállítások helyesek.",
"Automatically generate a birthday calendar" : "Születésnapokat tartalmazó naptár automatikus létrehozása",
diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json
index 9c4ae3e8582..896f0b317cf 100644
--- a/apps/dav/l10n/hu.json
+++ b/apps/dav/l10n/hu.json
@@ -53,6 +53,7 @@
"Technical details" : "Technikai adatok",
"Remote Address: %s" : "Távoli cím: %s",
"Request ID: %s" : "Kérelem azonosító: %s",
+ "Save" : "Mentés",
"Send invitations to attendees" : "Meghívó küldése a résztvevőknek",
"Please make sure to properly set up the email settings above." : "Győződj meg róla, hogy a fenti e-mail beállítások helyesek.",
"Automatically generate a birthday calendar" : "Születésnapokat tartalmazó naptár automatikus létrehozása",
diff --git a/apps/dav/l10n/it.js b/apps/dav/l10n/it.js
index ede61ea7812..f18e0efe15b 100644
--- a/apps/dav/l10n/it.js
+++ b/apps/dav/l10n/it.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "Un <strong>evento</strong> del calendario è stato modificato",
"A calendar <strong>todo</strong> was modified" : "Una <strong>cosa da fare</strong> del calendario è stata modificata",
"Contact birthdays" : "Date di nascita dei contatti",
+ "%1$s via %2$s" : "%1$s tramite %2$s",
"Invitation canceled" : "Invito annullato",
"Hello %s," : "Ciao %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "L'incontro «%1$s» con %2$s è stato annullato.",
"Invitation updated" : "Invito aggiornato",
+ "The meeting »%1$s« with %2$s was updated." : "L'incontro «%1$s» con %2$s è stato aggiornato.",
+ "%1$s invited you to »%2$s«" : "%1$s ti ha invitato a «%2$s»",
"When:" : "Quando:",
"Where:" : "Dove:",
"Description:" : "Descrizione:",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Altre opzioni...",
"More options at %s" : "Altre opzioni alle %s",
"Contacts" : "Contatti",
+ "%s (group)" : "%s (gruppo)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminatore WebDAV",
"Technical details" : "Dettagli tecnici",
diff --git a/apps/dav/l10n/it.json b/apps/dav/l10n/it.json
index d07eda0ed09..4099f923166 100644
--- a/apps/dav/l10n/it.json
+++ b/apps/dav/l10n/it.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "Un <strong>evento</strong> del calendario è stato modificato",
"A calendar <strong>todo</strong> was modified" : "Una <strong>cosa da fare</strong> del calendario è stata modificata",
"Contact birthdays" : "Date di nascita dei contatti",
+ "%1$s via %2$s" : "%1$s tramite %2$s",
"Invitation canceled" : "Invito annullato",
"Hello %s," : "Ciao %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "L'incontro «%1$s» con %2$s è stato annullato.",
"Invitation updated" : "Invito aggiornato",
+ "The meeting »%1$s« with %2$s was updated." : "L'incontro «%1$s» con %2$s è stato aggiornato.",
+ "%1$s invited you to »%2$s«" : "%1$s ti ha invitato a «%2$s»",
"When:" : "Quando:",
"Where:" : "Dove:",
"Description:" : "Descrizione:",
@@ -53,6 +57,7 @@
"More options …" : "Altre opzioni...",
"More options at %s" : "Altre opzioni alle %s",
"Contacts" : "Contatti",
+ "%s (group)" : "%s (gruppo)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminatore WebDAV",
"Technical details" : "Dettagli tecnici",
diff --git a/apps/dav/l10n/nl.js b/apps/dav/l10n/nl.js
index 55869d7a08f..91df26e7acc 100644
--- a/apps/dav/l10n/nl.js
+++ b/apps/dav/l10n/nl.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "Een agenda <strong>gebeurtenis</strong> is aangepast",
"A calendar <strong>todo</strong> was modified" : "Een agenda <strong>Te doen</strong> was aangepast",
"Contact birthdays" : "Verjaardagen",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Uitnodiging geannuleerd",
"Hello %s," : "Hallo %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "De vergadering »%1$s« met %2$s is geannuleerd.",
"Invitation updated" : "Uitnodiging bijgewerkt",
+ "The meeting »%1$s« with %2$s was updated." : "De vergadering »%1$s« met %2$s is bijgewerkt.",
+ "%1$s invited you to »%2$s«" : "%1$s heeft je uitgenodigd voor »%2$s«",
"When:" : "Wanneer:",
"Where:" : "Waar:",
"Description:" : "Omschrijving:",
diff --git a/apps/dav/l10n/nl.json b/apps/dav/l10n/nl.json
index d801c5705e0..edc8640ab1c 100644
--- a/apps/dav/l10n/nl.json
+++ b/apps/dav/l10n/nl.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "Een agenda <strong>gebeurtenis</strong> is aangepast",
"A calendar <strong>todo</strong> was modified" : "Een agenda <strong>Te doen</strong> was aangepast",
"Contact birthdays" : "Verjaardagen",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Uitnodiging geannuleerd",
"Hello %s," : "Hallo %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "De vergadering »%1$s« met %2$s is geannuleerd.",
"Invitation updated" : "Uitnodiging bijgewerkt",
+ "The meeting »%1$s« with %2$s was updated." : "De vergadering »%1$s« met %2$s is bijgewerkt.",
+ "%1$s invited you to »%2$s«" : "%1$s heeft je uitgenodigd voor »%2$s«",
"When:" : "Wanneer:",
"Where:" : "Waar:",
"Description:" : "Omschrijving:",
diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js
index d6cf76a4cec..991b424fd03 100644
--- a/apps/dav/l10n/pt_BR.js
+++ b/apps/dav/l10n/pt_BR.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> do calendário foi modificado",
"A calendar <strong>todo</strong> was modified" : "Uma <strong>tarefa</strong> do calendário foi modificada",
"Contact birthdays" : "Aniversário dos contatos",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Convite cancelado",
"Hello %s," : "Olá %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "A reunião »%1$s« com %2$s foi cancelada.",
"Invitation updated" : "Convite atualizado",
+ "The meeting »%1$s« with %2$s was updated." : "A reunião »%1$s« com %2$s foi atualizada.",
+ "%1$s invited you to »%2$s«" : "%1$s convidou você para »%2$s«",
"When:" : "Quando:",
"Where:" : "Onde:",
"Description:" : "Descrição:",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Mais opções...",
"More options at %s" : "Mais opções em %s",
"Contacts" : "Contatos",
+ "%s (group)" : "%s (grupo)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Endpoint WebDAV",
"Technical details" : "Detalhes técnicos",
diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json
index a20dbedf879..4b2a5dedff3 100644
--- a/apps/dav/l10n/pt_BR.json
+++ b/apps/dav/l10n/pt_BR.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> do calendário foi modificado",
"A calendar <strong>todo</strong> was modified" : "Uma <strong>tarefa</strong> do calendário foi modificada",
"Contact birthdays" : "Aniversário dos contatos",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Convite cancelado",
"Hello %s," : "Olá %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "A reunião »%1$s« com %2$s foi cancelada.",
"Invitation updated" : "Convite atualizado",
+ "The meeting »%1$s« with %2$s was updated." : "A reunião »%1$s« com %2$s foi atualizada.",
+ "%1$s invited you to »%2$s«" : "%1$s convidou você para »%2$s«",
"When:" : "Quando:",
"Where:" : "Onde:",
"Description:" : "Descrição:",
@@ -53,6 +57,7 @@
"More options …" : "Mais opções...",
"More options at %s" : "Mais opções em %s",
"Contacts" : "Contatos",
+ "%s (group)" : "%s (grupo)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Endpoint WebDAV",
"Technical details" : "Detalhes técnicos",
diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js
index 086422939b4..af15a91ff99 100644
--- a/apps/dav/l10n/ru.js
+++ b/apps/dav/l10n/ru.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "<strong>Событие</strong> календаря была изменено",
"A calendar <strong>todo</strong> was modified" : "<strong>Задача</strong> календаря была изменена",
"Contact birthdays" : "Дни рождения контакта",
+ "%1$s via %2$s" : "%1$sчерез %2$s",
"Invitation canceled" : "Приглашение отменено",
"Hello %s," : "Привет, %s!",
+ "The meeting »%1$s« with %2$s was canceled." : "Встреча «%1$s» с %2$s отменена.",
"Invitation updated" : "Приглашение обновлено",
+ "The meeting »%1$s« with %2$s was updated." : "Встреча «%1$s» с %2$s обновлена.",
+ "%1$s invited you to »%2$s«" : "%1$sприглашает вас в »%2$s«",
"When:" : "Когда:",
"Where:" : "Где:",
"Description:" : "Описание:",
diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json
index c9590a1db4f..8c425f1c661 100644
--- a/apps/dav/l10n/ru.json
+++ b/apps/dav/l10n/ru.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "<strong>Событие</strong> календаря была изменено",
"A calendar <strong>todo</strong> was modified" : "<strong>Задача</strong> календаря была изменена",
"Contact birthdays" : "Дни рождения контакта",
+ "%1$s via %2$s" : "%1$sчерез %2$s",
"Invitation canceled" : "Приглашение отменено",
"Hello %s," : "Привет, %s!",
+ "The meeting »%1$s« with %2$s was canceled." : "Встреча «%1$s» с %2$s отменена.",
"Invitation updated" : "Приглашение обновлено",
+ "The meeting »%1$s« with %2$s was updated." : "Встреча «%1$s» с %2$s обновлена.",
+ "%1$s invited you to »%2$s«" : "%1$sприглашает вас в »%2$s«",
"When:" : "Когда:",
"Where:" : "Где:",
"Description:" : "Описание:",
diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js
index 65b87027c71..6273342e9ed 100644
--- a/apps/dav/l10n/sk.js
+++ b/apps/dav/l10n/sk.js
@@ -43,23 +43,40 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená",
"A calendar <strong>todo</strong> was modified" : "<strong>Pripomienka</strong> v kalendári bola upravená",
"Contact birthdays" : "Narodeniny kontaktu",
+ "%1$s via %2$s" : "%1$s cez %2$s",
"Invitation canceled" : "Pozvánka bola zrušená",
"Hello %s," : "Ahoj %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Stretnutie »%1$s« s %2$s bolo zrušené.",
"Invitation updated" : "Pozvánka bola aktualizovaná",
+ "The meeting »%1$s« with %2$s was updated." : "Stretnutie »%1$s« s %2$s bolo aktualizované.",
+ "%1$s invited you to »%2$s«" : "%1$s vám poslal pozvánku na »%2$s«",
"When:" : "Kedy:",
"Where:" : "Kde:",
"Description:" : "Popis:",
"Link:" : "Odkaz:",
+ "Accept" : "Schváliť",
+ "Decline" : "Odmietnuť",
+ "More options …" : "Ďalšie nastavenia ...",
+ "More options at %s" : "Ďalšie nastavenia %s",
"Contacts" : "Kontakty",
"WebDAV" : "WebDAV",
+ "WebDAV endpoint" : "Koncový bod WebDAV",
"Technical details" : "Technické podrobnosti",
"Remote Address: %s" : "Vzdialená adresa: %s",
"Request ID: %s" : "ID požiadavky: %s",
+ "There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.",
+ "Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.",
+ "Are you accepting the invitation?" : "Príjmate pozvánku?",
+ "Tentative" : "Neistý",
+ "Save" : "Uložiť",
+ "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne.",
+ "Calendar server" : "Kalendárový server",
"Send invitations to attendees" : "Odoslanie pozvánok účastníkom",
"Please make sure to properly set up the email settings above." : "Uistite sa, že máte správne nastavené vyššie uvedené nastavenia e-mailu.",
"Automatically generate a birthday calendar" : "Automaticky generovať narodeninový kalendár",
"Birthday calendars will be generated by a background job." : "Narodeninové kalendáre budú generované úlohou na pozadí.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Preto nebudú dostupné hneď po povolení, ale zobrazia sa po určitom čase",
+ "%s via %s" : "%s cez %s",
"The meeting »%s« with %s was canceled." : "Stretnutie »%s« s %s bolo zrušené.",
"The meeting »%s« with %s was updated." : "Stretnutie »%s« s %s bolo aktualizované.",
"%s invited you to »%s«" : "%s vám poslal pozvánku na »%s«",
diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json
index 89d9d4241bb..66ddcd6ee55 100644
--- a/apps/dav/l10n/sk.json
+++ b/apps/dav/l10n/sk.json
@@ -41,23 +41,40 @@
"A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená",
"A calendar <strong>todo</strong> was modified" : "<strong>Pripomienka</strong> v kalendári bola upravená",
"Contact birthdays" : "Narodeniny kontaktu",
+ "%1$s via %2$s" : "%1$s cez %2$s",
"Invitation canceled" : "Pozvánka bola zrušená",
"Hello %s," : "Ahoj %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Stretnutie »%1$s« s %2$s bolo zrušené.",
"Invitation updated" : "Pozvánka bola aktualizovaná",
+ "The meeting »%1$s« with %2$s was updated." : "Stretnutie »%1$s« s %2$s bolo aktualizované.",
+ "%1$s invited you to »%2$s«" : "%1$s vám poslal pozvánku na »%2$s«",
"When:" : "Kedy:",
"Where:" : "Kde:",
"Description:" : "Popis:",
"Link:" : "Odkaz:",
+ "Accept" : "Schváliť",
+ "Decline" : "Odmietnuť",
+ "More options …" : "Ďalšie nastavenia ...",
+ "More options at %s" : "Ďalšie nastavenia %s",
"Contacts" : "Kontakty",
"WebDAV" : "WebDAV",
+ "WebDAV endpoint" : "Koncový bod WebDAV",
"Technical details" : "Technické podrobnosti",
"Remote Address: %s" : "Vzdialená adresa: %s",
"Request ID: %s" : "ID požiadavky: %s",
+ "There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.",
+ "Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.",
+ "Are you accepting the invitation?" : "Príjmate pozvánku?",
+ "Tentative" : "Neistý",
+ "Save" : "Uložiť",
+ "Your attendance was updated successfully." : "Vaša účasť bola aktualizovaná úspešne.",
+ "Calendar server" : "Kalendárový server",
"Send invitations to attendees" : "Odoslanie pozvánok účastníkom",
"Please make sure to properly set up the email settings above." : "Uistite sa, že máte správne nastavené vyššie uvedené nastavenia e-mailu.",
"Automatically generate a birthday calendar" : "Automaticky generovať narodeninový kalendár",
"Birthday calendars will be generated by a background job." : "Narodeninové kalendáre budú generované úlohou na pozadí.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Preto nebudú dostupné hneď po povolení, ale zobrazia sa po určitom čase",
+ "%s via %s" : "%s cez %s",
"The meeting »%s« with %s was canceled." : "Stretnutie »%s« s %s bolo zrušené.",
"The meeting »%s« with %s was updated." : "Stretnutie »%s« s %s bolo aktualizované.",
"%s invited you to »%s«" : "%s vám poslal pozvánku na »%s«",
diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js
index 35da4c5850f..81343f9694b 100644
--- a/apps/dav/l10n/sr.js
+++ b/apps/dav/l10n/sr.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "<strong>Догађај</strong> из календара је измењен",
"A calendar <strong>todo</strong> was modified" : "<strong>Подсетник</strong> из календара је измењен",
"Contact birthdays" : "Рођендани контаката",
+ "%1$s via %2$s" : "%1$s преко %2$s",
"Invitation canceled" : "Позивница отказана",
"Hello %s," : "Здраво %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Састанак „%1$s“ са %2$s је отказан.",
"Invitation updated" : "Позивница ажурирана",
+ "The meeting »%1$s« with %2$s was updated." : "Састанак „%1$s“ са %2$s је ажуриран.",
+ "%1$s invited you to »%2$s«" : "%1$s Вас је позвао на „%2$s“",
"When:" : "Време:",
"Where:" : "Место:",
"Description:" : "Опис:",
@@ -73,9 +77,9 @@ OC.L10N.register(
"Birthday calendars will be generated by a background job." : "Календари рођендана ће бити генерисани као позадински послови.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Зато можда неће бити видљиви баш одмах по укључивању, али ће се појавити после неког времена.",
"%s via %s" : "%s путем %s",
- "The meeting »%s« with %s was canceled." : "Састанак »%s« са %s је отказан.",
- "The meeting »%s« with %s was updated." : "Састанак »%s« са %s је ажуриран.",
- "%s invited you to »%s«" : "%s Вас је позвао на »%s«",
+ "The meeting »%s« with %s was canceled." : "Састанак „%s“ са %s је отказан.",
+ "The meeting »%s« with %s was updated." : "Састанак „%s“ са %s је ажуриран.",
+ "%s invited you to »%s«" : "%s Вас је позвао на „%s“",
"CalDAV server" : "CalDAV сервер"
},
"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/dav/l10n/sr.json b/apps/dav/l10n/sr.json
index 22dd44cc954..9632e44b33e 100644
--- a/apps/dav/l10n/sr.json
+++ b/apps/dav/l10n/sr.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "<strong>Догађај</strong> из календара је измењен",
"A calendar <strong>todo</strong> was modified" : "<strong>Подсетник</strong> из календара је измењен",
"Contact birthdays" : "Рођендани контаката",
+ "%1$s via %2$s" : "%1$s преко %2$s",
"Invitation canceled" : "Позивница отказана",
"Hello %s," : "Здраво %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Састанак „%1$s“ са %2$s је отказан.",
"Invitation updated" : "Позивница ажурирана",
+ "The meeting »%1$s« with %2$s was updated." : "Састанак „%1$s“ са %2$s је ажуриран.",
+ "%1$s invited you to »%2$s«" : "%1$s Вас је позвао на „%2$s“",
"When:" : "Време:",
"Where:" : "Место:",
"Description:" : "Опис:",
@@ -71,9 +75,9 @@
"Birthday calendars will be generated by a background job." : "Календари рођендана ће бити генерисани као позадински послови.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Зато можда неће бити видљиви баш одмах по укључивању, али ће се појавити после неког времена.",
"%s via %s" : "%s путем %s",
- "The meeting »%s« with %s was canceled." : "Састанак »%s« са %s је отказан.",
- "The meeting »%s« with %s was updated." : "Састанак »%s« са %s је ажуриран.",
- "%s invited you to »%s«" : "%s Вас је позвао на »%s«",
+ "The meeting »%s« with %s was canceled." : "Састанак „%s“ са %s је отказан.",
+ "The meeting »%s« with %s was updated." : "Састанак „%s“ са %s је ажуриран.",
+ "%s invited you to »%s«" : "%s Вас је позвао на „%s“",
"CalDAV server" : "CalDAV сервер"
},"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/dav/l10n/sv.js b/apps/dav/l10n/sv.js
index de6921d8e1f..9a33396878a 100644
--- a/apps/dav/l10n/sv.js
+++ b/apps/dav/l10n/sv.js
@@ -45,7 +45,10 @@ OC.L10N.register(
"Contact birthdays" : "Födelsedagar",
"Invitation canceled" : "Inbjudan avbruten",
"Hello %s," : "He %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Mötet »%1$s« med %2$s avbröts.",
"Invitation updated" : "Inbjudan uppdaterad",
+ "The meeting »%1$s« with %2$s was updated." : "Mötet »%1$s« med %2$s uppdaterades.",
+ "%1$s invited you to »%2$s«" : "%1$s bjöd in dig till »%2$s«",
"When:" : "När",
"Where:" : "Var:",
"Description:" : "Beskrivning:",
diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json
index e6070c1a40f..8149e984419 100644
--- a/apps/dav/l10n/sv.json
+++ b/apps/dav/l10n/sv.json
@@ -43,7 +43,10 @@
"Contact birthdays" : "Födelsedagar",
"Invitation canceled" : "Inbjudan avbruten",
"Hello %s," : "He %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "Mötet »%1$s« med %2$s avbröts.",
"Invitation updated" : "Inbjudan uppdaterad",
+ "The meeting »%1$s« with %2$s was updated." : "Mötet »%1$s« med %2$s uppdaterades.",
+ "%1$s invited you to »%2$s«" : "%1$s bjöd in dig till »%2$s«",
"When:" : "När",
"Where:" : "Var:",
"Description:" : "Beskrivning:",
diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js
index f53c4fa2620..1afd4b23e11 100644
--- a/apps/dav/l10n/tr.js
+++ b/apps/dav/l10n/tr.js
@@ -43,9 +43,13 @@ OC.L10N.register(
"A calendar <strong>event</strong> was modified" : "Bir takvim <strong>etkinliği</strong> düzenlendi",
"A calendar <strong>todo</strong> was modified" : "Bir takvim <strong>yapılacak işi</strong> düzenlendi",
"Contact birthdays" : "Kişi doğum günleri",
+ "%1$s via %2$s" : "%1$s, %2$s aracılığıyla",
"Invitation canceled" : "Çağrı iptal edildi",
"Hello %s," : "Merhaba %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "%2$s ile yapılacak »%1$s« görüşmesi iptal edildi.",
"Invitation updated" : "Çağrı güncellendi",
+ "The meeting »%1$s« with %2$s was updated." : "%2$s ile yapılacak »%1$s« görüşmesi güncellendi.",
+ "%1$s invited you to »%2$s«" : "%1$s sizi »%2$s« görüşmesine çağırdı",
"When:" : "Zaman:",
"Where:" : "Yer:",
"Description:" : "Açıklama:",
@@ -55,6 +59,7 @@ OC.L10N.register(
"More options …" : "Diğer seçenekler…",
"More options at %s" : "%s üzerindeki diğer seçenekler",
"Contacts" : "Kişiler",
+ "%s (group)" : "%s (grup)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV Bağlantı Noktası",
"Technical details" : "Teknik ayrıntılar",
@@ -70,7 +75,7 @@ OC.L10N.register(
"Send invitations to attendees" : "Katılımcılara çağrıları gönder",
"Please make sure to properly set up the email settings above." : "Lütfen yukarıdaki e-posta ayarlarını doğru olarak yaptığınızdan emin olun.",
"Automatically generate a birthday calendar" : "Doğum günü takvimi otomatik oluşturulsun",
- "Birthday calendars will be generated by a background job." : "Bu seçenek etkinleştirildiğinde, doğum günü takvimi art alan görevi olarak oluşturulur.",
+ "Birthday calendars will be generated by a background job." : "Bu seçenek etkinleştirildiğinde, doğum günü takvimi arka plan görevi olarak oluşturulur.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Etkinleştirildikten hemen sonra görüntülenmez, bir süre sonra görüntülenir.",
"%s via %s" : "%s, %s aracılığıyla",
"The meeting »%s« with %s was canceled." : "Bu »%s« görüşmesi %s ile yapılacakken iptal edildi.",
diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json
index d799e074d0b..71d930d8fe2 100644
--- a/apps/dav/l10n/tr.json
+++ b/apps/dav/l10n/tr.json
@@ -41,9 +41,13 @@
"A calendar <strong>event</strong> was modified" : "Bir takvim <strong>etkinliği</strong> düzenlendi",
"A calendar <strong>todo</strong> was modified" : "Bir takvim <strong>yapılacak işi</strong> düzenlendi",
"Contact birthdays" : "Kişi doğum günleri",
+ "%1$s via %2$s" : "%1$s, %2$s aracılığıyla",
"Invitation canceled" : "Çağrı iptal edildi",
"Hello %s," : "Merhaba %s,",
+ "The meeting »%1$s« with %2$s was canceled." : "%2$s ile yapılacak »%1$s« görüşmesi iptal edildi.",
"Invitation updated" : "Çağrı güncellendi",
+ "The meeting »%1$s« with %2$s was updated." : "%2$s ile yapılacak »%1$s« görüşmesi güncellendi.",
+ "%1$s invited you to »%2$s«" : "%1$s sizi »%2$s« görüşmesine çağırdı",
"When:" : "Zaman:",
"Where:" : "Yer:",
"Description:" : "Açıklama:",
@@ -53,6 +57,7 @@
"More options …" : "Diğer seçenekler…",
"More options at %s" : "%s üzerindeki diğer seçenekler",
"Contacts" : "Kişiler",
+ "%s (group)" : "%s (grup)",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV Bağlantı Noktası",
"Technical details" : "Teknik ayrıntılar",
@@ -68,7 +73,7 @@
"Send invitations to attendees" : "Katılımcılara çağrıları gönder",
"Please make sure to properly set up the email settings above." : "Lütfen yukarıdaki e-posta ayarlarını doğru olarak yaptığınızdan emin olun.",
"Automatically generate a birthday calendar" : "Doğum günü takvimi otomatik oluşturulsun",
- "Birthday calendars will be generated by a background job." : "Bu seçenek etkinleştirildiğinde, doğum günü takvimi art alan görevi olarak oluşturulur.",
+ "Birthday calendars will be generated by a background job." : "Bu seçenek etkinleştirildiğinde, doğum günü takvimi arka plan görevi olarak oluşturulur.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Etkinleştirildikten hemen sonra görüntülenmez, bir süre sonra görüntülenir.",
"%s via %s" : "%s, %s aracılığıyla",
"The meeting »%s« with %s was canceled." : "Bu »%s« görüşmesi %s ile yapılacakken iptal edildi.",
diff --git a/apps/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js
index 3eac70bab21..700db581385 100644
--- a/apps/dav/l10n/zh_CN.js
+++ b/apps/dav/l10n/zh_CN.js
@@ -12,17 +12,17 @@ OC.L10N.register(
"You updated calendar {calendar}" : "您更新了日历 {calendar}",
"You shared calendar {calendar} as public link" : "您已将日历{calendar}共享为公开链接",
"You removed public link for calendar {calendar}" : "您移除了日历{calendar}的公开链接",
- "{actor} shared calendar {calendar} with you" : "{actor} 收到的日历分享 {calendar}",
- "You shared calendar {calendar} with {user}" : "您与 {user} 分享了日历 {calendar}",
- "{actor} shared calendar {calendar} with {user}" : "{actor} 与 {user} 分享了日历 {calendar}",
- "{actor} unshared calendar {calendar} from you" : "{actor} 取消分享 {calendar} 给您",
- "You unshared calendar {calendar} from {user}" : "您取消分享给 {user} 的日历 {calendar}",
- "{actor} unshared calendar {calendar} from {user}" : "{actor} 取消分享给 {uesr} 的日历 {calendar}",
- "{actor} unshared calendar {calendar} from themselves" : "{actor} 取消分享日历 {calendar}",
- "You shared calendar {calendar} with group {group}" : "您通过组 {group} 分享了日历 {calendar}",
- "{actor} shared calendar {calendar} with group {group}" : "{actor} 通过组 {group} 分享了日历 {calendar}",
- "You unshared calendar {calendar} from group {group}" : "您取消分享给组 {group} 的日历 {calendar}",
- "{actor} unshared calendar {calendar} from group {group}" : "{actor} 取消分享给组 {group} 的日历 {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} 收到的日历共享 {calendar}",
+ "You shared calendar {calendar} with {user}" : "您与 {user} 共享了日历 {calendar}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} 与 {user} 共享了日历 {calendar}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} 取消共享 {calendar} 给您",
+ "You unshared calendar {calendar} from {user}" : "您取消共享给 {user} 的日历 {calendar}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} 取消共享给 {uesr} 的日历 {calendar}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} 取消共享日历 {calendar}",
+ "You shared calendar {calendar} with group {group}" : "您通过组 {group} 共享了日历 {calendar}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} 通过组 {group} 共享了日历 {calendar}",
+ "You unshared calendar {calendar} from group {group}" : "您取消共享给组 {group} 的日历 {calendar}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} 取消共享给组 {group} 的日历 {calendar}",
"{actor} created event {event} in calendar {calendar}" : "{actor} 在日历 {calendar} 中创建了事件 {event}",
"You created event {event} in calendar {calendar}" : "您在日历 {calendar} 中创建了事件 {event}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} 在日历 {calendar} 中删除了事件 {event}",
diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json
index b4a920ac431..8493d72c541 100644
--- a/apps/dav/l10n/zh_CN.json
+++ b/apps/dav/l10n/zh_CN.json
@@ -10,17 +10,17 @@
"You updated calendar {calendar}" : "您更新了日历 {calendar}",
"You shared calendar {calendar} as public link" : "您已将日历{calendar}共享为公开链接",
"You removed public link for calendar {calendar}" : "您移除了日历{calendar}的公开链接",
- "{actor} shared calendar {calendar} with you" : "{actor} 收到的日历分享 {calendar}",
- "You shared calendar {calendar} with {user}" : "您与 {user} 分享了日历 {calendar}",
- "{actor} shared calendar {calendar} with {user}" : "{actor} 与 {user} 分享了日历 {calendar}",
- "{actor} unshared calendar {calendar} from you" : "{actor} 取消分享 {calendar} 给您",
- "You unshared calendar {calendar} from {user}" : "您取消分享给 {user} 的日历 {calendar}",
- "{actor} unshared calendar {calendar} from {user}" : "{actor} 取消分享给 {uesr} 的日历 {calendar}",
- "{actor} unshared calendar {calendar} from themselves" : "{actor} 取消分享日历 {calendar}",
- "You shared calendar {calendar} with group {group}" : "您通过组 {group} 分享了日历 {calendar}",
- "{actor} shared calendar {calendar} with group {group}" : "{actor} 通过组 {group} 分享了日历 {calendar}",
- "You unshared calendar {calendar} from group {group}" : "您取消分享给组 {group} 的日历 {calendar}",
- "{actor} unshared calendar {calendar} from group {group}" : "{actor} 取消分享给组 {group} 的日历 {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} 收到的日历共享 {calendar}",
+ "You shared calendar {calendar} with {user}" : "您与 {user} 共享了日历 {calendar}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} 与 {user} 共享了日历 {calendar}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} 取消共享 {calendar} 给您",
+ "You unshared calendar {calendar} from {user}" : "您取消共享给 {user} 的日历 {calendar}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} 取消共享给 {uesr} 的日历 {calendar}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} 取消共享日历 {calendar}",
+ "You shared calendar {calendar} with group {group}" : "您通过组 {group} 共享了日历 {calendar}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} 通过组 {group} 共享了日历 {calendar}",
+ "You unshared calendar {calendar} from group {group}" : "您取消共享给组 {group} 的日历 {calendar}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} 取消共享给组 {group} 的日历 {calendar}",
"{actor} created event {event} in calendar {calendar}" : "{actor} 在日历 {calendar} 中创建了事件 {event}",
"You created event {event} in calendar {calendar}" : "您在日历 {calendar} 中创建了事件 {event}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} 在日历 {calendar} 中删除了事件 {event}",
diff --git a/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php
index dcd393b512e..d658c3433f2 100644
--- a/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php
+++ b/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php
@@ -50,6 +50,9 @@ abstract class AbstractPrincipalBackend implements BackendInterface {
/** @var string */
private $dbTableName;
+ /** @var string */
+ private $cuType;
+
/**
* @param IDBConnection $dbConnection
* @param IUserSession $userSession
@@ -57,18 +60,22 @@ abstract class AbstractPrincipalBackend implements BackendInterface {
* @param ILogger $logger
* @param string $principalPrefix
* @param string $dbPrefix
+ * @param string $cuType
*/
public function __construct(IDBConnection $dbConnection,
IUserSession $userSession,
IGroupManager $groupManager,
ILogger $logger,
- $principalPrefix, $dbPrefix) {
+ string $principalPrefix,
+ string $dbPrefix,
+ string $cuType) {
$this->db = $dbConnection;
$this->userSession = $userSession;
$this->groupManager = $groupManager;
$this->logger = $logger;
$this->principalPrefix = $principalPrefix;
$this->dbTableName = 'calendar_' . $dbPrefix;
+ $this->cuType = $cuType;
}
/**
@@ -328,7 +335,8 @@ abstract class AbstractPrincipalBackend implements BackendInterface {
return [
'uri' => $this->principalPrefix . '/' . $row['backend_id'] . '-' . $row['resource_id'],
'{DAV:}displayname' => $row['displayname'],
- '{http://sabredav.org/ns}email-address' => $row['email']
+ '{http://sabredav.org/ns}email-address' => $row['email'],
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => $this->cuType,
];
}
diff --git a/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php
index a1030376c11..f8f10e78f94 100644
--- a/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php
+++ b/apps/dav/lib/CalDAV/ResourceBooking/ResourcePrincipalBackend.php
@@ -40,6 +40,6 @@ class ResourcePrincipalBackend extends AbstractPrincipalBackend {
IGroupManager $groupManager,
ILogger $logger) {
parent::__construct($dbConnection, $userSession, $groupManager, $logger,
- 'principals/calendar-resources', 'resources');
+ 'principals/calendar-resources', 'resources', 'RESOURCE');
}
}
diff --git a/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php
index 1d22299515f..3059ed80ea6 100644
--- a/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php
+++ b/apps/dav/lib/CalDAV/ResourceBooking/RoomPrincipalBackend.php
@@ -40,6 +40,6 @@ class RoomPrincipalBackend extends AbstractPrincipalBackend {
IGroupManager $groupManager,
ILogger $logger) {
parent::__construct($dbConnection, $userSession, $groupManager, $logger,
- 'principals/calendar-rooms', 'rooms');
+ 'principals/calendar-rooms', 'rooms', 'ROOM');
}
}
diff --git a/apps/dav/lib/CalDAV/Schedule/Plugin.php b/apps/dav/lib/CalDAV/Schedule/Plugin.php
index b3f7232c2fe..227a1c11eda 100644
--- a/apps/dav/lib/CalDAV/Schedule/Plugin.php
+++ b/apps/dav/lib/CalDAV/Schedule/Plugin.php
@@ -50,6 +50,31 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
}
/**
+ * This method handler is invoked during fetching of properties.
+ *
+ * We use this event to add calendar-auto-schedule-specific properties.
+ *
+ * @param PropFind $propFind
+ * @param INode $node
+ * @return void
+ */
+ function propFind(PropFind $propFind, INode $node) {
+ // overwrite Sabre/Dav's implementation
+ $propFind->handle('{' . self::NS_CALDAV . '}calendar-user-type', function() use ($node) {
+ $calendarUserType = '{' . self::NS_CALDAV . '}calendar-user-type';
+ $props = $node->getProperties([$calendarUserType]);
+
+ if (isset($props[$calendarUserType])) {
+ return $props[$calendarUserType];
+ }
+
+ return 'INDIVIDUAL';
+ });
+
+ parent::propFind($propFind, $node);
+ }
+
+ /**
* Returns a list of addresses that are associated with a principal.
*
* @param string $principal
diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php
index cbfa1bc83e0..2574fbcd436 100644
--- a/apps/dav/lib/Connector/Sabre/Principal.php
+++ b/apps/dav/lib/Connector/Sabre/Principal.php
@@ -1,6 +1,7 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2018, Georg Ehrke
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Jakob Sack <mail@jakobsack.de>
@@ -11,6 +12,7 @@
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license AGPL-3.0
*
@@ -249,6 +251,23 @@ class Principal implements BackendInterface {
}, []);
break;
+ case '{DAV:}displayname':
+ $users = $this->userManager->searchDisplayName($value);
+
+ $results[] = array_reduce($users, function(array $carry, IUser $user) use ($restrictGroups) {
+ // is sharing restricted to groups only?
+ if ($restrictGroups !== false) {
+ $userGroups = $this->groupManager->getUserGroupIds($user);
+ if (count(array_intersect($userGroups, $restrictGroups)) === 0) {
+ return $carry;
+ }
+ }
+
+ $carry[] = $this->principalPrefix . '/' . $user->getUID();
+ return $carry;
+ }, []);
+ break;
+
default:
$results[] = [];
break;
@@ -263,11 +282,11 @@ class Principal implements BackendInterface {
switch ($test) {
case 'anyof':
- return array_unique(array_merge(...$results));
+ return array_values(array_unique(array_merge(...$results)));
case 'allof':
default:
- return array_intersect(...$results);
+ return array_values(array_intersect(...$results));
}
}
@@ -354,6 +373,7 @@ class Principal implements BackendInterface {
$principal = [
'uri' => $this->principalPrefix . '/' . $userId,
'{DAV:}displayname' => is_null($displayName) ? $userId : $displayName,
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'INDIVIDUAL',
];
$email = $user->getEMailAddress();
diff --git a/apps/dav/lib/DAV/GroupPrincipalBackend.php b/apps/dav/lib/DAV/GroupPrincipalBackend.php
index 1f182445dbd..166af7c6b27 100644
--- a/apps/dav/lib/DAV/GroupPrincipalBackend.php
+++ b/apps/dav/lib/DAV/GroupPrincipalBackend.php
@@ -1,9 +1,11 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2018, Georg Ehrke
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license AGPL-3.0
*
@@ -24,6 +26,9 @@ namespace OCA\DAV\DAV;
use OCP\IGroup;
use OCP\IGroupManager;
+use OCP\IUserSession;
+use OCP\Share\IManager as IShareManager;
+use OCP\IL10N;
use OCP\IUser;
use Sabre\DAV\Exception;
use \Sabre\DAV\PropPatch;
@@ -36,11 +41,29 @@ class GroupPrincipalBackend implements BackendInterface {
/** @var IGroupManager */
private $groupManager;
+ /** @var IUserSession */
+ private $userSession;
+
+ /** @var IShareManager */
+ private $shareManager;
+
+ /** @var IL10N */
+ private $l10n;
+
/**
* @param IGroupManager $IGroupManager
+ * @param IUserSession $userSession
+ * @param IShareManager $shareManager
+ * @param IL10N $l10n
*/
- public function __construct(IGroupManager $IGroupManager) {
+ public function __construct(IGroupManager $IGroupManager,
+ IUserSession $userSession,
+ IShareManager $shareManager,
+ IL10N $l10n) {
$this->groupManager = $IGroupManager;
+ $this->userSession = $userSession;
+ $this->shareManager = $shareManager;
+ $this->l10n = $l10n;
}
/**
@@ -161,7 +184,71 @@ class GroupPrincipalBackend implements BackendInterface {
* @return array
*/
function searchPrincipals($prefixPath, array $searchProperties, $test = 'allof') {
- return [];
+ $results = [];
+
+ if (\count($searchProperties) === 0) {
+ return [];
+ }
+ if ($prefixPath !== self::PRINCIPAL_PREFIX) {
+ return [];
+ }
+ // If sharing is disabled, return the empty array
+ $shareAPIEnabled = $this->shareManager->shareApiEnabled();
+ if (!$shareAPIEnabled) {
+ return [];
+ }
+
+ // If sharing is restricted to group members only,
+ // return only members that have groups in common
+ $restrictGroups = false;
+ if ($this->shareManager->shareWithGroupMembersOnly()) {
+ $user = $this->userSession->getUser();
+ if (!$user) {
+ return [];
+ }
+
+ $restrictGroups = $this->groupManager->getUserGroupIds($user);
+ }
+
+ foreach ($searchProperties as $prop => $value) {
+ switch ($prop) {
+ case '{DAV:}displayname':
+ $groups = $this->groupManager->search($value);
+
+ $results[] = array_reduce($groups, function(array $carry, IGroup $group) use ($restrictGroups) {
+ $gid = $group->getGID();
+ // is sharing restricted to groups only?
+ if ($restrictGroups !== false) {
+ if (!\in_array($gid, $restrictGroups, true)) {
+ return $carry;
+ }
+ }
+
+ $carry[] = self::PRINCIPAL_PREFIX . '/' . $gid;
+ return $carry;
+ }, []);
+ break;
+
+ default:
+ $results[] = [];
+ break;
+ }
+ }
+
+ // results is an array of arrays, so this is not the first search result
+ // but the results of the first searchProperty
+ if (count($results) === 1) {
+ return $results[0];
+ }
+
+ switch ($test) {
+ case 'anyof':
+ return array_values(array_unique(array_merge(...$results)));
+
+ case 'allof':
+ default:
+ return array_values(array_intersect(...$results));
+ }
}
/**
@@ -170,7 +257,34 @@ class GroupPrincipalBackend implements BackendInterface {
* @return string
*/
function findByUri($uri, $principalPrefix) {
- return '';
+ // If sharing is disabled, return the empty array
+ $shareAPIEnabled = $this->shareManager->shareApiEnabled();
+ if (!$shareAPIEnabled) {
+ return null;
+ }
+
+ // If sharing is restricted to group members only,
+ // return only members that have groups in common
+ $restrictGroups = false;
+ if ($this->shareManager->shareWithGroupMembersOnly()) {
+ $user = $this->userSession->getUser();
+ if (!$user) {
+ return null;
+ }
+
+ $restrictGroups = $this->groupManager->getUserGroupIds($user);
+ }
+
+ if (strpos($uri, 'principal:principals/groups/') === 0) {
+ $name = urlencode(substr($uri, 28));
+ if ($restrictGroups !== false && !\in_array($name, $restrictGroups, true)) {
+ return null;
+ }
+
+ return substr($uri, 10);
+ }
+
+ return null;
}
/**
@@ -179,12 +293,12 @@ class GroupPrincipalBackend implements BackendInterface {
*/
protected function groupToPrincipal($group) {
$groupId = $group->getGID();
- $principal = [
+
+ return [
'uri' => 'principals/groups/' . urlencode($groupId),
- '{DAV:}displayname' => $groupId,
+ '{DAV:}displayname' => $this->l10n->t('%s (group)', [$groupId]),
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'GROUP',
];
-
- return $principal;
}
/**
@@ -192,11 +306,20 @@ class GroupPrincipalBackend implements BackendInterface {
* @return array
*/
protected function userToPrincipal($user) {
+ $userId = $user->getUID();
+ $displayName = $user->getDisplayName();
+
$principal = [
- 'uri' => 'principals/users/' . $user->getUID(),
- '{DAV:}displayname' => $user->getDisplayName(),
+ 'uri' => 'principals/users/' . $userId,
+ '{DAV:}displayname' => is_null($displayName) ? $userId : $displayName,
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'INDIVIDUAL',
];
+ $email = $user->getEMailAddress();
+ if (!empty($email)) {
+ $principal['{http://sabredav.org/ns}email-address'] = $email;
+ }
+
return $principal;
}
}
diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php
index 9a3261c388c..a05781a7621 100644
--- a/apps/dav/lib/RootCollection.php
+++ b/apps/dav/lib/RootCollection.php
@@ -57,7 +57,7 @@ class RootCollection extends SimpleCollection {
\OC::$server->getUserSession(),
$config
);
- $groupPrincipalBackend = new GroupPrincipalBackend($groupManager);
+ $groupPrincipalBackend = new GroupPrincipalBackend($groupManager, $userSession, $shareManager, $l10n);
$calendarResourcePrincipalBackend = new ResourcePrincipalBackend($db, $userSession, $groupManager, $logger);
$calendarRoomPrincipalBackend = new RoomPrincipalBackend($db, $userSession, $groupManager, $logger);
// as soon as debug mode is enabled we allow listing of principals
diff --git a/apps/dav/lib/Upload/AssemblyStream.php b/apps/dav/lib/Upload/AssemblyStream.php
index 24417851f2f..95e324f0468 100644
--- a/apps/dav/lib/Upload/AssemblyStream.php
+++ b/apps/dav/lib/Upload/AssemblyStream.php
@@ -76,9 +76,6 @@ class AssemblyStream implements \Icewind\Streams\File {
return strnatcmp($a->getName(), $b->getName());
});
$this->nodes = array_values($nodes);
- if (count($this->nodes) > 0) {
- $this->currentStream = $this->getStream($this->nodes[0]);
- }
$this->size = array_reduce($this->nodes, function ($size, IFile $file) {
return $size + $file->getSize();
}, 0);
@@ -107,7 +104,11 @@ class AssemblyStream implements \Icewind\Streams\File {
*/
public function stream_read($count) {
if (is_null($this->currentStream)) {
- return '';
+ if ($this->currentNode < count($this->nodes)) {
+ $this->currentStream = $this->getStream($this->nodes[$this->currentNode]);
+ } else {
+ return '';
+ }
}
do {
@@ -191,7 +192,7 @@ class AssemblyStream implements \Icewind\Streams\File {
* @return bool
*/
public function stream_eof() {
- return $this->pos >= $this->size || $this->currentStream === null;
+ return $this->pos >= $this->size || ($this->currentNode >= count($this->nodes) && $this->currentNode === null);
}
/**
diff --git a/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php b/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php
index 4dee0220fc8..aca36fb77ea 100644
--- a/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php
+++ b/apps/dav/tests/unit/CalDAV/ResourceBooking/AbstractPrincipalBackendTest.php
@@ -53,6 +53,9 @@ abstract class AbstractPrincipalBackendTest extends TestCase {
/** @var string */
protected $principalPrefix;
+ /** @var string */
+ protected $expectedCUType;
+
public function setUp() {
parent::setUp();
@@ -127,16 +130,19 @@ abstract class AbstractPrincipalBackendTest extends TestCase {
'uri' => $this->principalPrefix . '/db-123',
'{DAV:}displayname' => 'Resource 123',
'{http://sabredav.org/ns}email-address' => 'foo@bar.com',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => $this->expectedCUType,
],
[
'uri' => $this->principalPrefix . '/ldap-123',
'{DAV:}displayname' => 'Resource 123 ldap',
'{http://sabredav.org/ns}email-address' => 'ldap@bar.com',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => $this->expectedCUType,
],
[
'uri' => $this->principalPrefix . '/db-456',
'{DAV:}displayname' => 'Resource 456',
'{http://sabredav.org/ns}email-address' => 'bli@bar.com',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => $this->expectedCUType,
],
], $actual);
@@ -209,6 +215,7 @@ abstract class AbstractPrincipalBackendTest extends TestCase {
'uri' => $this->principalPrefix . '/db-123',
'{DAV:}displayname' => 'Resource 123',
'{http://sabredav.org/ns}email-address' => 'foo@bar.com',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => $this->expectedCUType,
], $actual);
}
diff --git a/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php b/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php
index 90db4bb4b7b..d3c774417c0 100644
--- a/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php
+++ b/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php
@@ -31,5 +31,6 @@ Class ResourcePrincipalBackendTest extends AbstractPrincipalBackendTest {
$this->userSession, $this->groupManager, $this->logger);
$this->expectedDbTable = 'calendar_resources';
$this->principalPrefix = 'principals/calendar-resources';
+ $this->expectedCUType = 'RESOURCE';
}
}
diff --git a/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php b/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php
index b55c6ddceb6..a10aaa26b35 100644
--- a/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php
+++ b/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php
@@ -31,5 +31,6 @@ Class RoomPrincipalBackendTest extends AbstractPrincipalBackendTest {
$this->userSession, $this->groupManager, $this->logger);
$this->expectedDbTable = 'calendar_rooms';
$this->principalPrefix = 'principals/calendar-rooms';
+ $this->expectedCUType = 'ROOM';
}
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
index 01907c85836..b72ae0a743d 100644
--- a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
@@ -1,12 +1,14 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2018, Georg Ehrke
*
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license AGPL-3.0
*
@@ -38,16 +40,22 @@ use OCP\IUserManager;
use Test\TestCase;
class PrincipalTest extends TestCase {
+
/** @var IUserManager | \PHPUnit_Framework_MockObject_MockObject */
private $userManager;
+
/** @var \OCA\DAV\Connector\Sabre\Principal */
private $connector;
+
/** @var IGroupManager | \PHPUnit_Framework_MockObject_MockObject */
private $groupManager;
+
/** @var IManager | \PHPUnit_Framework_MockObject_MockObject */
private $shareManager;
+
/** @var IUserSession | \PHPUnit_Framework_MockObject_MockObject */
private $userSession;
+
/** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */
private $config;
@@ -94,7 +102,7 @@ class PrincipalTest extends TestCase {
$barUser
->expects($this->exactly(1))
->method('getEMailAddress')
- ->will($this->returnValue('bar@owncloud.org'));
+ ->will($this->returnValue('bar@nextcloud.com'));
$this->userManager
->expects($this->once())
->method('search')
@@ -104,12 +112,14 @@ class PrincipalTest extends TestCase {
$expectedResponse = [
0 => [
'uri' => 'principals/users/foo',
- '{DAV:}displayname' => 'Dr. Foo-Bar'
+ '{DAV:}displayname' => 'Dr. Foo-Bar',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'INDIVIDUAL',
],
1 => [
'uri' => 'principals/users/bar',
'{DAV:}displayname' => 'bar',
- '{http://sabredav.org/ns}email-address' => 'bar@owncloud.org'
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'INDIVIDUAL',
+ '{http://sabredav.org/ns}email-address' => 'bar@nextcloud.com',
]
];
$response = $this->connector->getPrincipalsByPrefix('principals/users');
@@ -141,7 +151,8 @@ class PrincipalTest extends TestCase {
$expectedResponse = [
'uri' => 'principals/users/foo',
- '{DAV:}displayname' => 'foo'
+ '{DAV:}displayname' => 'foo',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'INDIVIDUAL',
];
$response = $this->connector->getPrincipalByPath('principals/users/foo');
$this->assertSame($expectedResponse, $response);
@@ -152,7 +163,7 @@ class PrincipalTest extends TestCase {
$fooUser
->expects($this->exactly(1))
->method('getEMailAddress')
- ->will($this->returnValue('foo@owncloud.org'));
+ ->will($this->returnValue('foo@nextcloud.com'));
$fooUser
->expects($this->exactly(1))
->method('getUID')
@@ -166,7 +177,8 @@ class PrincipalTest extends TestCase {
$expectedResponse = [
'uri' => 'principals/users/foo',
'{DAV:}displayname' => 'foo',
- '{http://sabredav.org/ns}email-address' => 'foo@owncloud.org'
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'INDIVIDUAL',
+ '{http://sabredav.org/ns}email-address' => 'foo@nextcloud.com',
];
$response = $this->connector->getPrincipalByPath('principals/users/foo');
$this->assertSame($expectedResponse, $response);
@@ -283,7 +295,7 @@ class PrincipalTest extends TestCase {
/**
* @dataProvider searchPrincipalsDataProvider
*/
- public function testSearchPrincipals($sharingEnabled, $groupsOnly, $result) {
+ public function testSearchPrincipals($sharingEnabled, $groupsOnly, $test, $result) {
$this->shareManager->expects($this->once())
->method('shareAPIEnabled')
->will($this->returnValue($sharingEnabled));
@@ -302,7 +314,7 @@ class PrincipalTest extends TestCase {
$this->groupManager->expects($this->at(0))
->method('getUserGroupIds')
->with($user)
- ->will($this->returnValue(['group1', 'group2']));
+ ->will($this->returnValue(['group1', 'group2', 'group5']));
}
} else {
$this->shareManager->expects($this->never())
@@ -315,15 +327,25 @@ class PrincipalTest extends TestCase {
$user2->method('getUID')->will($this->returnValue('user2'));
$user3 = $this->createMock(IUser::class);
$user3->method('getUID')->will($this->returnValue('user3'));
+ $user4 = $this->createMock(IUser::class);
+ $user4->method('getUID')->will($this->returnValue('user4'));
if ($sharingEnabled) {
$this->userManager->expects($this->at(0))
->method('getByEmail')
- ->with('user')
+ ->with('user@example.com')
->will($this->returnValue([$user2, $user3]));
+
+ $this->userManager->expects($this->at(1))
+ ->method('searchDisplayName')
+ ->with('User 12')
+ ->will($this->returnValue([$user3, $user4]));
} else {
$this->userManager->expects($this->never())
->method('getByEmail');
+
+ $this->userManager->expects($this->never())
+ ->method('searchDisplayName');
}
if ($sharingEnabled && $groupsOnly) {
@@ -335,18 +357,30 @@ class PrincipalTest extends TestCase {
->method('getUserGroupIds')
->with($user3)
->will($this->returnValue(['group3', 'group4']));
+ $this->groupManager->expects($this->at(3))
+ ->method('getUserGroupIds')
+ ->with($user3)
+ ->will($this->returnValue(['group3', 'group4']));
+ $this->groupManager->expects($this->at(4))
+ ->method('getUserGroupIds')
+ ->with($user4)
+ ->will($this->returnValue(['group4', 'group5']));
}
$this->assertEquals($result, $this->connector->searchPrincipals('principals/users',
- ['{http://sabredav.org/ns}email-address' => 'user']));
+ ['{http://sabredav.org/ns}email-address' => 'user@example.com',
+ '{DAV:}displayname' => 'User 12'], $test));
}
public function searchPrincipalsDataProvider() {
return [
- [true, false, ['principals/users/user2', 'principals/users/user3']],
- [true, true, ['principals/users/user2']],
- [false, false, []],
+ [true, false, 'allof', ['principals/users/user3']],
+ [true, false, 'anyof', ['principals/users/user2', 'principals/users/user3', 'principals/users/user4']],
+ [true, true, 'allof', []],
+ [true, true, 'anyof', ['principals/users/user2', 'principals/users/user4']],
+ [false, false, 'allof', []],
+ [false, false, 'anyof', []],
];
}
diff --git a/apps/dav/tests/unit/DAV/GroupPrincipalTest.php b/apps/dav/tests/unit/DAV/GroupPrincipalTest.php
index 214054176ae..af94df05254 100644
--- a/apps/dav/tests/unit/DAV/GroupPrincipalTest.php
+++ b/apps/dav/tests/unit/DAV/GroupPrincipalTest.php
@@ -1,10 +1,12 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2018, Georg Ehrke
*
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license AGPL-3.0
*
@@ -26,22 +28,42 @@ namespace OCA\DAV\Tests\unit\DAV;
use OC\Group\Group;
use OCA\DAV\DAV\GroupPrincipalBackend;
+use OCP\IGroup;
use OCP\IGroupManager;
-use PHPUnit_Framework_MockObject_MockObject;
+use OCP\IL10N;
+use OCP\IUser;
+use OCP\IUserSession;
+use OCP\Share\IManager;
use \Sabre\DAV\PropPatch;
class GroupPrincipalTest extends \Test\TestCase {
- /** @var IGroupManager | PHPUnit_Framework_MockObject_MockObject */
+ /** @var IGroupManager | \PHPUnit_Framework_MockObject_MockObject */
private $groupManager;
+ /** @var IUserSession | \PHPUnit_Framework_MockObject_MockObject */
+ private $userSession;
+
+ /** @var IManager | \PHPUnit_Framework_MockObject_MockObject */
+ private $shareManager;
+
+ /** @var IL10N | \PHPUnit_Framework_MockObject_MockObject */
+ private $l10n;
+
/** @var GroupPrincipalBackend */
private $connector;
public function setUp() {
$this->groupManager = $this->createMock(IGroupManager::class);
+ $this->userSession = $this->createMock(IUserSession::class);
+ $this->shareManager = $this->createMock(IManager::class);
+ $this->l10n = $this->createMock(IL10N::class);
- $this->connector = new GroupPrincipalBackend($this->groupManager);
+ $this->connector = new GroupPrincipalBackend(
+ $this->groupManager,
+ $this->userSession,
+ $this->shareManager,
+ $this->l10n);
parent::setUp();
}
@@ -59,14 +81,26 @@ class GroupPrincipalTest extends \Test\TestCase {
->with('')
->will($this->returnValue([$group1, $group2]));
+ $this->l10n->expects($this->at(0))
+ ->method('t')
+ ->with('%s (group)', ['foo'])
+ ->will($this->returnValue('foo (Gruppe)'));
+
+ $this->l10n->expects($this->at(1))
+ ->method('t')
+ ->with('%s (group)', ['bar'])
+ ->will($this->returnValue('bar (Gruppe)'));
+
$expectedResponse = [
0 => [
'uri' => 'principals/groups/foo',
- '{DAV:}displayname' => 'foo'
+ '{DAV:}displayname' => 'foo (Gruppe)',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'GROUP',
],
1 => [
'uri' => 'principals/groups/bar',
- '{DAV:}displayname' => 'bar',
+ '{DAV:}displayname' => 'bar (Gruppe)',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'GROUP',
]
];
$response = $this->connector->getPrincipalsByPrefix('principals/groups');
@@ -92,9 +126,15 @@ class GroupPrincipalTest extends \Test\TestCase {
->with('foo')
->will($this->returnValue($group1));
+ $this->l10n->expects($this->at(0))
+ ->method('t')
+ ->with('%s (group)', ['foo'])
+ ->will($this->returnValue('foo (Gruppe)'));
+
$expectedResponse = [
'uri' => 'principals/groups/foo',
- '{DAV:}displayname' => 'foo'
+ '{DAV:}displayname' => 'foo (Gruppe)',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'GROUP',
];
$response = $this->connector->getPrincipalByPath('principals/groups/foo');
$this->assertSame($expectedResponse, $response);
@@ -108,9 +148,15 @@ class GroupPrincipalTest extends \Test\TestCase {
->with('foo')
->will($this->returnValue($fooUser));
+ $this->l10n->expects($this->at(0))
+ ->method('t')
+ ->with('%s (group)', ['foo'])
+ ->will($this->returnValue('foo (Gruppe)'));
+
$expectedResponse = [
'uri' => 'principals/groups/foo',
- '{DAV:}displayname' => 'foo',
+ '{DAV:}displayname' => 'foo (Gruppe)',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'GROUP',
];
$response = $this->connector->getPrincipalByPath('principals/groups/foo');
$this->assertSame($expectedResponse, $response);
@@ -135,9 +181,15 @@ class GroupPrincipalTest extends \Test\TestCase {
->with('foo/bar')
->will($this->returnValue($group1));
+ $this->l10n->expects($this->at(0))
+ ->method('t')
+ ->with('%s (group)', ['foo/bar'])
+ ->will($this->returnValue('foo/bar (Gruppe)'));
+
$expectedResponse = [
'uri' => 'principals/groups/foo%2Fbar',
- '{DAV:}displayname' => 'foo/bar'
+ '{DAV:}displayname' => 'foo/bar (Gruppe)',
+ '{urn:ietf:params:xml:ns:caldav}calendar-user-type' => 'GROUP',
];
$response = $this->connector->getPrincipalByPath('principals/groups/foo/bar');
$this->assertSame($expectedResponse, $response);
@@ -165,10 +217,129 @@ class GroupPrincipalTest extends \Test\TestCase {
$this->assertSame(0, $this->connector->updatePrincipal('foo', new PropPatch(array())));
}
- public function testSearchPrincipals() {
+ public function testSearchPrincipalsWithEmptySearchProperties() {
$this->assertSame([], $this->connector->searchPrincipals('principals/groups', []));
}
+ public function testSearchPrincipalsWithWrongPrefixPath() {
+ $this->assertSame([], $this->connector->searchPrincipals('principals/users',
+ ['{DAV:}displayname' => 'Foo']));
+ }
+
+ /**
+ * @dataProvider searchPrincipalsDataProvider
+ */
+ public function testSearchPrincipals($sharingEnabled, $groupsOnly, $test, $result) {
+ $this->shareManager->expects($this->once())
+ ->method('shareAPIEnabled')
+ ->will($this->returnValue($sharingEnabled));
+
+ if ($sharingEnabled) {
+ $this->shareManager->expects($this->once())
+ ->method('shareWithGroupMembersOnly')
+ ->will($this->returnValue($groupsOnly));
+
+ if ($groupsOnly) {
+ $user = $this->createMock(IUser::class);
+ $this->userSession->expects($this->once())
+ ->method('getUser')
+ ->will($this->returnValue($user));
+
+ $this->groupManager->expects($this->once())
+ ->method('getUserGroupIds')
+ ->with($user)
+ ->will($this->returnValue(['group1', 'group2', 'group5']));
+ }
+ } else {
+ $this->shareManager->expects($this->never())
+ ->method('shareWithGroupMembersOnly');
+ $this->groupManager->expects($this->never())
+ ->method($this->anything());
+ }
+
+ $group1 = $this->createMock(IGroup::class);
+ $group1->method('getGID')->will($this->returnValue('group1'));
+ $group2 = $this->createMock(IGroup::class);
+ $group2->method('getGID')->will($this->returnValue('group2'));
+ $group3 = $this->createMock(IGroup::class);
+ $group3->method('getGID')->will($this->returnValue('group3'));
+ $group4 = $this->createMock(IGroup::class);
+ $group4->method('getGID')->will($this->returnValue('group4'));
+ $group5 = $this->createMock(IGroup::class);
+ $group5->method('getGID')->will($this->returnValue('group5'));
+
+ if ($sharingEnabled) {
+ $this->groupManager->expects($this->once())
+ ->method('search')
+ ->with('Foo')
+ ->will($this->returnValue([$group1, $group2, $group3, $group4, $group5]));
+ } else {
+ $this->groupManager->expects($this->never())
+ ->method('search');
+ }
+
+ $this->assertSame($result, $this->connector->searchPrincipals('principals/groups',
+ ['{DAV:}displayname' => 'Foo'], $test));
+ }
+
+ public function searchPrincipalsDataProvider() {
+ return [
+ [true, false, 'allof', ['principals/groups/group1', 'principals/groups/group2', 'principals/groups/group3', 'principals/groups/group4', 'principals/groups/group5']],
+ [true, false, 'anyof', ['principals/groups/group1', 'principals/groups/group2', 'principals/groups/group3', 'principals/groups/group4', 'principals/groups/group5']],
+ [true, true, 'allof', ['principals/groups/group1', 'principals/groups/group2', 'principals/groups/group5']],
+ [true, true, 'anyof', ['principals/groups/group1', 'principals/groups/group2', 'principals/groups/group5']],
+ [false, false, 'allof', []],
+ [false, false, 'anyof', []],
+ ];
+ }
+
+ /**
+ * @dataProvider findByUriDataProvider
+ */
+ public function testFindByUri($sharingEnabled, $groupsOnly, $findUri, $result) {
+ $this->shareManager->expects($this->once())
+ ->method('shareAPIEnabled')
+ ->will($this->returnValue($sharingEnabled));
+
+ if ($sharingEnabled) {
+ $this->shareManager->expects($this->once())
+ ->method('shareWithGroupMembersOnly')
+ ->will($this->returnValue($groupsOnly));
+
+ if ($groupsOnly) {
+ $user = $this->createMock(IUser::class);
+ $this->userSession->expects($this->once())
+ ->method('getUser')
+ ->will($this->returnValue($user));
+
+ $this->groupManager->expects($this->at(0))
+ ->method('getUserGroupIds')
+ ->with($user)
+ ->will($this->returnValue(['group1', 'group2', 'group5']));
+ }
+ } else {
+ $this->shareManager->expects($this->never())
+ ->method('shareWithGroupMembersOnly');
+ $this->groupManager->expects($this->never())
+ ->method($this->anything());
+ }
+
+ $this->assertEquals($result, $this->connector->findByUri($findUri, 'principals/groups'));
+ }
+
+ public function findByUriDataProvider() {
+ return [
+ [false, false, 'principal:principals/groups/group1', null],
+ [false, false, 'principal:principals/groups/group3', null],
+ [false, true, 'principal:principals/groups/group1', null],
+ [false, true, 'principal:principals/groups/group3', null],
+ [true, true, 'principal:principals/groups/group1', 'principals/groups/group1'],
+ [true, true, 'principal:principals/groups/group3', null],
+ [true, false, 'principal:principals/groups/group1', 'principals/groups/group1'],
+ [true, false, 'principal:principals/groups/group3', 'principals/groups/group3'],
+ ];
+ }
+
/**
* @return Group|\PHPUnit_Framework_MockObject_MockObject
*/
diff --git a/apps/encryption/l10n/ca.js b/apps/encryption/l10n/ca.js
index cae7072d0e8..61658f72d3a 100644
--- a/apps/encryption/l10n/ca.js
+++ b/apps/encryption/l10n/ca.js
@@ -21,20 +21,23 @@ OC.L10N.register(
"The old password was not correct, please try again." : "La contrasenya antiga no es correcta, Si us plau, Intenteu-ho de nou.",
"The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, torneu-ho a provar.",
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
- "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no vàlida per a l'aplicació de xifrat. Actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
- "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està habilitada, però les vostres claus no s'inicialitzen. Tanqueu la sessió d'inici de sessió i torneu a iniciar sessió.",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no và lida per a l'aplicació de xifrat. Actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està  habilitada, però les vostres claus no s'inicialitzen. Tanqueu la sessió d'inici de sessió i torneu a iniciar sessió.",
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Activeu el xifratge del servidor en la configuració de l'administrador per poder utilitzar el mòdul de xifratge.",
- "Encryption app is enabled and ready" : "L'aplicació de xifrat està habilitada i preparada",
+ "Encryption app is enabled and ready" : "L'aplicació de xifrat està  habilitada i preparada",
"Bad Signature" : "Signatura incorrecta",
"Missing Signature" : "Falta Signatura",
"one-time password for server-side-encryption" : "contrasenya única per al xifrat del costat del servidor",
- "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb vós.",
+ "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb và³s.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.",
"Default encryption module" : "Mòdul de xifrat per defecte",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha activat l'encriptació de part del servidor. Els teus fitxers s'han encriptat utilitzant la contrasenya '%s'.\n\nInicia sessió a la web, vés a la secció 'encriptació bàsica' de la teva configuració personal i actualitza la contrasenya antiga substituint-la per aquesta altra.\n\n",
+ "Default encryption module for server-side encryption" : "Mòdul criptogràfic per defecte per a xifrat de servidor",
+ "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per utilitzar aquest mòdul criptogràfic s’ha de permetre encriptació\n\t\tal servidor en la configuració d'admin. Una vegada activat, aquest mòdul xifrarà\n\t\ttots els seus arxius de forma transparent. L'encriptació està basada en claus de AES 256.\n\t\tEl mòdul no tocarà arxius existents, només els nous arxius nous s’encriptaràn després\n\t\td’activar la encriptació des d’el servidor. No és possible desactivar\n\t\tl'encriptació i tornar a un sistema sense encriptació.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar l’encriptació des del servidor.",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha activat l'encriptació de part del servidor. Els teus fitxers s'han encriptat utilitzant la contrasenya '%s'.\n\nInicia sessió a la web, vés a la secció 'encriptació bà sica' de la teva configuració personal i actualitza la contrasenya antiga substituint-la per aquesta altra.\n\n",
"The share will expire on %s." : "La compartició venç el %s.",
"Cheers!" : "Salut!",
- "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
+ "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>" : "Hola,<br><br>l'admin ha activat encriptació des del servidor. Els fitxers s'encriptaràn utilitzant la contrasenya <strong>%s</strong>. <br><br>Si us plau connectar-se a la interfície web, aneu a la secció \"mòdul d'encriptació bàsica” de la configuració personal i actualitzar la contrasenya d'encriptació introduint aquesta contrasenya al camp “anterior contrasenya d’entrada” i la teva contrasenya d’entrada actual.<br><br>",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està  activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
"Encrypt the home storage" : "Xifra l'emmagatzematge de casa",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció xifra tots els fitxers emmagatzemats a l'emmagatzematge principal, en cas contrari, només es codificaran els fitxers en emmagatzematge extern",
"Enable recovery key" : "Activa la clau de recuperació",
@@ -47,7 +50,7 @@ OC.L10N.register(
"New recovery key password" : "Nova contrasenya de clau de recuperació",
"Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova",
"Change Password" : "Canvia la contrasenya",
- "Basic encryption module" : "Mòdul bàsic de xifratge",
+ "Basic encryption module" : "Mòdul bà sic de xifratge",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
@@ -55,7 +58,7 @@ OC.L10N.register(
"Current log-in password" : "Contrasenya d'accés actual",
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà  obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
"Enabled" : "Activat",
"Disabled" : "Desactivat",
"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" : "Necessiteu migrar les claus de xifratge des del xifratge antic (ownCloud <= 8.0) al nou. Si us plau, executeu 'encryption d'occ: migrate' o poseu-vos en contacte amb l'administrador"
diff --git a/apps/encryption/l10n/ca.json b/apps/encryption/l10n/ca.json
index 3754827764c..c32b450d050 100644
--- a/apps/encryption/l10n/ca.json
+++ b/apps/encryption/l10n/ca.json
@@ -19,20 +19,23 @@
"The old password was not correct, please try again." : "La contrasenya antiga no es correcta, Si us plau, Intenteu-ho de nou.",
"The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, torneu-ho a provar.",
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
- "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no vàlida per a l'aplicació de xifrat. Actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
- "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està habilitada, però les vostres claus no s'inicialitzen. Tanqueu la sessió d'inici de sessió i torneu a iniciar sessió.",
+ "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no và lida per a l'aplicació de xifrat. Actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
+ "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està  habilitada, però les vostres claus no s'inicialitzen. Tanqueu la sessió d'inici de sessió i torneu a iniciar sessió.",
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Activeu el xifratge del servidor en la configuració de l'administrador per poder utilitzar el mòdul de xifratge.",
- "Encryption app is enabled and ready" : "L'aplicació de xifrat està habilitada i preparada",
+ "Encryption app is enabled and ready" : "L'aplicació de xifrat està  habilitada i preparada",
"Bad Signature" : "Signatura incorrecta",
"Missing Signature" : "Falta Signatura",
"one-time password for server-side-encryption" : "contrasenya única per al xifrat del costat del servidor",
- "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb vós.",
+ "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb và³s.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.",
"Default encryption module" : "Mòdul de xifrat per defecte",
- "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha activat l'encriptació de part del servidor. Els teus fitxers s'han encriptat utilitzant la contrasenya '%s'.\n\nInicia sessió a la web, vés a la secció 'encriptació bàsica' de la teva configuració personal i actualitza la contrasenya antiga substituint-la per aquesta altra.\n\n",
+ "Default encryption module for server-side encryption" : "Mòdul criptogràfic per defecte per a xifrat de servidor",
+ "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per utilitzar aquest mòdul criptogràfic s’ha de permetre encriptació\n\t\tal servidor en la configuració d'admin. Una vegada activat, aquest mòdul xifrarà\n\t\ttots els seus arxius de forma transparent. L'encriptació està basada en claus de AES 256.\n\t\tEl mòdul no tocarà arxius existents, només els nous arxius nous s’encriptaràn després\n\t\td’activar la encriptació des d’el servidor. No és possible desactivar\n\t\tl'encriptació i tornar a un sistema sense encriptació.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar l’encriptació des del servidor.",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha activat l'encriptació de part del servidor. Els teus fitxers s'han encriptat utilitzant la contrasenya '%s'.\n\nInicia sessió a la web, vés a la secció 'encriptació bà sica' de la teva configuració personal i actualitza la contrasenya antiga substituint-la per aquesta altra.\n\n",
"The share will expire on %s." : "La compartició venç el %s.",
"Cheers!" : "Salut!",
- "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
+ "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>" : "Hola,<br><br>l'admin ha activat encriptació des del servidor. Els fitxers s'encriptaràn utilitzant la contrasenya <strong>%s</strong>. <br><br>Si us plau connectar-se a la interfície web, aneu a la secció \"mòdul d'encriptació bàsica” de la configuració personal i actualitzar la contrasenya d'encriptació introduint aquesta contrasenya al camp “anterior contrasenya d’entrada” i la teva contrasenya d’entrada actual.<br><br>",
+ "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està  activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
"Encrypt the home storage" : "Xifra l'emmagatzematge de casa",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció xifra tots els fitxers emmagatzemats a l'emmagatzematge principal, en cas contrari, només es codificaran els fitxers en emmagatzematge extern",
"Enable recovery key" : "Activa la clau de recuperació",
@@ -45,7 +48,7 @@
"New recovery key password" : "Nova contrasenya de clau de recuperació",
"Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova",
"Change Password" : "Canvia la contrasenya",
- "Basic encryption module" : "Mòdul bàsic de xifratge",
+ "Basic encryption module" : "Mòdul bà sic de xifratge",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
@@ -53,7 +56,7 @@
"Current log-in password" : "Contrasenya d'accés actual",
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà  obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
"Enabled" : "Activat",
"Disabled" : "Desactivat",
"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" : "Necessiteu migrar les claus de xifratge des del xifratge antic (ownCloud <= 8.0) al nou. Si us plau, executeu 'encryption d'occ: migrate' o poseu-vos en contacte amb l'administrador"
diff --git a/apps/encryption/l10n/hu.js b/apps/encryption/l10n/hu.js
index c38840e3e0a..e0bf45fbd33 100644
--- a/apps/encryption/l10n/hu.js
+++ b/apps/encryption/l10n/hu.js
@@ -16,14 +16,14 @@ OC.L10N.register(
"Could not change the password. Maybe the old password was not correct." : "A jelszót nem lehet megváltoztatni! Lehet, hogy hibás volt a régi jelszó.",
"Recovery Key disabled" : "Visszaállítási kulcs letilva",
"Recovery Key enabled" : "Visszaállítási kulcs engedélyezve",
- "Could not enable the recovery key, please try again or contact your administrator" : "Nem sikerült engedélyezni a visszaállítási kulcsot, kérlek próbáld újra vagy lép kapcsolatba az adminisztrátorral",
- "Could not update the private key password." : "Nem sikerült frissíteni a privát kulcs jelszavát.",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nem sikerült engedélyezni a visszaállítási kulcsot, kérlek próbáld újra vagy lép kapcsolatba a rendszergazdával",
+ "Could not update the private key password." : "Nem sikerült frissíteni a titkos kulcs jelszavát.",
"The old password was not correct, please try again." : "A régi jelszó nem volt helyes, kérlek próbáld újra.",
"The current log-in password was not correct, please try again." : "Az aktuális bejelentkezési jelszó nem volt helyes, kérlek próbáld újra.",
- "Private key password successfully updated." : "A személyes kulcsának jelszava frissítésre került.",
- "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.",
+ "Private key password successfully updated." : "A titkos kulcs jelszava frissítésre került.",
+ "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 titkos kulcsa érvénytelen. A titkosított fájljaidhoz való hozzáféréshez frissítsd a titkos kulcsod jelszavát a személyes beállításoknál.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "A fájlok titkosítása engedélyezve van, de az Ön titkos kulcsai nincsenek beállítva. Ezért kérlek, hogy jelentkezz ki, és lépj be újra!",
- "Please enable server side encryption in the admin settings in order to use the encryption module." : "Kérem engedélyezze a szerver oldali titkosítást az adminisztrátor beállítasokban ahhoz, hogy a titkosítás modult tudja használni.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Kérem engedélyezze a szerver oldali titkosítást a rendszergazdai beállításokban ahhoz, hogy a titkosítás modult tudja használni.",
"Encryption app is enabled and ready" : "A titkosító alkalmazás engedélyezve és készen áll",
"Bad Signature" : "Rossz aláírás",
"Missing Signature" : "Hiányzó aláírás",
@@ -31,10 +31,10 @@ OC.L10N.register(
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "A fájlt nem sikerült visszafejteni, valószínűleg ez egy megosztott fájl. Kérje meg a fájl tulajdonosát, hogy újra ossza meg veled ezt az állományt!",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ez a fájl nem olvasható, valószínűleg ez egy megosztott fájl. Kérd meg a tulajdonosát, hogy ossza meg veled újra ezt a fájlt.",
"Default encryption module" : "Alapértelmezett titkosítási modul",
- "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" : "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 '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,\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" : "Szia!\n\nA rendszergazda 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 '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",
"The share will expire on %s." : "A megosztás lejár ekkor %s",
"Cheers!" : "Üdv.",
- "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>" : "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 '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>",
+ "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>" : "Szia!<br><br>A rendszergazda 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 '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>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A titkosító alkalmazás engedélyezve van, de a kulcsaid még nincsenek inicializálva. Kérlek lépj ki, majd lépj be újra",
"Encrypt the home storage" : "Helyi tároló titkosítása",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "A lehetőség engedélyezésekor minden fájlt titkosít a fő tárolóban, egyébként csak a külső tárolókon lévő fájlok lesznek titkosítva",
@@ -49,16 +49,16 @@ OC.L10N.register(
"Repeat new recovery key password" : "Ismételd meg az új helyreállítási kulcs jelszavát",
"Change Password" : "Jelszó megváltoztatása",
"Basic encryption module" : "Alap titkosítási modul",
- "Your private key password no longer matches your log-in password." : "A privát kulcs jelszavad már nem egyezik meg a bejelentkezési jelszavaddal. ",
- "Set your old private key password to your current log-in password:" : "Állítsd át a régi privát kulcs jelszavadat az aktuális bejelentkezési jelszavadra:",
+ "Your private key password no longer matches your log-in password." : "A titkos kulcs jelszavad már nem egyezik meg a bejelentkezési jelszavaddal. ",
+ "Set your old private key password to your current log-in password:" : "Állítsd át a régi titkos kulcs jelszavadat az aktuális bejelentkezési jelszavadra:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Ha nem emlékszik a régi jelszavára akkor megkérheti a rendszergazdát, hogy állítsa vissza a fájljait.",
"Old log-in password" : "Régi bejelentkezési jelszó",
"Current log-in password" : "Jelenlegi bejelentkezési jelszó",
- "Update Private Key Password" : "A személyest kulcs jelszó frissítése",
+ "Update Private Key Password" : "A titkos kulcs jelszavának frissítése",
"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",
+ "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 elfelejted a jelszavat",
"Enabled" : "Bekapcsolva",
"Disabled" : "Kikapcsolva",
- "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" : "Migrálni kell a titkosítási kulcsaidat a rég titkosításról (ownCloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba az adminisztrátorral"
+ "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" : "Át kell telepíteni a titkosítási kulcsaidat a rég titkosításról (ownCloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba a rendszergazdával."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/hu.json b/apps/encryption/l10n/hu.json
index 4a6b824ca2a..1d08162c1eb 100644
--- a/apps/encryption/l10n/hu.json
+++ b/apps/encryption/l10n/hu.json
@@ -14,14 +14,14 @@
"Could not change the password. Maybe the old password was not correct." : "A jelszót nem lehet megváltoztatni! Lehet, hogy hibás volt a régi jelszó.",
"Recovery Key disabled" : "Visszaállítási kulcs letilva",
"Recovery Key enabled" : "Visszaállítási kulcs engedélyezve",
- "Could not enable the recovery key, please try again or contact your administrator" : "Nem sikerült engedélyezni a visszaállítási kulcsot, kérlek próbáld újra vagy lép kapcsolatba az adminisztrátorral",
- "Could not update the private key password." : "Nem sikerült frissíteni a privát kulcs jelszavát.",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nem sikerült engedélyezni a visszaállítási kulcsot, kérlek próbáld újra vagy lép kapcsolatba a rendszergazdával",
+ "Could not update the private key password." : "Nem sikerült frissíteni a titkos kulcs jelszavát.",
"The old password was not correct, please try again." : "A régi jelszó nem volt helyes, kérlek próbáld újra.",
"The current log-in password was not correct, please try again." : "Az aktuális bejelentkezési jelszó nem volt helyes, kérlek próbáld újra.",
- "Private key password successfully updated." : "A személyes kulcsának jelszava frissítésre került.",
- "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.",
+ "Private key password successfully updated." : "A titkos kulcs jelszava frissítésre került.",
+ "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 titkos kulcsa érvénytelen. A titkosított fájljaidhoz való hozzáféréshez frissítsd a titkos kulcsod jelszavát a személyes beállításoknál.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "A fájlok titkosítása engedélyezve van, de az Ön titkos kulcsai nincsenek beállítva. Ezért kérlek, hogy jelentkezz ki, és lépj be újra!",
- "Please enable server side encryption in the admin settings in order to use the encryption module." : "Kérem engedélyezze a szerver oldali titkosítást az adminisztrátor beállítasokban ahhoz, hogy a titkosítás modult tudja használni.",
+ "Please enable server side encryption in the admin settings in order to use the encryption module." : "Kérem engedélyezze a szerver oldali titkosítást a rendszergazdai beállításokban ahhoz, hogy a titkosítás modult tudja használni.",
"Encryption app is enabled and ready" : "A titkosító alkalmazás engedélyezve és készen áll",
"Bad Signature" : "Rossz aláírás",
"Missing Signature" : "Hiányzó aláírás",
@@ -29,10 +29,10 @@
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "A fájlt nem sikerült visszafejteni, valószínűleg ez egy megosztott fájl. Kérje meg a fájl tulajdonosát, hogy újra ossza meg veled ezt az állományt!",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ez a fájl nem olvasható, valószínűleg ez egy megosztott fájl. Kérd meg a tulajdonosát, hogy ossza meg veled újra ezt a fájlt.",
"Default encryption module" : "Alapértelmezett titkosítási modul",
- "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" : "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 '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,\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" : "Szia!\n\nA rendszergazda 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 '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",
"The share will expire on %s." : "A megosztás lejár ekkor %s",
"Cheers!" : "Üdv.",
- "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>" : "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 '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>",
+ "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>" : "Szia!<br><br>A rendszergazda 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 '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>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A titkosító alkalmazás engedélyezve van, de a kulcsaid még nincsenek inicializálva. Kérlek lépj ki, majd lépj be újra",
"Encrypt the home storage" : "Helyi tároló titkosítása",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "A lehetőség engedélyezésekor minden fájlt titkosít a fő tárolóban, egyébként csak a külső tárolókon lévő fájlok lesznek titkosítva",
@@ -47,16 +47,16 @@
"Repeat new recovery key password" : "Ismételd meg az új helyreállítási kulcs jelszavát",
"Change Password" : "Jelszó megváltoztatása",
"Basic encryption module" : "Alap titkosítási modul",
- "Your private key password no longer matches your log-in password." : "A privát kulcs jelszavad már nem egyezik meg a bejelentkezési jelszavaddal. ",
- "Set your old private key password to your current log-in password:" : "Állítsd át a régi privát kulcs jelszavadat az aktuális bejelentkezési jelszavadra:",
+ "Your private key password no longer matches your log-in password." : "A titkos kulcs jelszavad már nem egyezik meg a bejelentkezési jelszavaddal. ",
+ "Set your old private key password to your current log-in password:" : "Állítsd át a régi titkos kulcs jelszavadat az aktuális bejelentkezési jelszavadra:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Ha nem emlékszik a régi jelszavára akkor megkérheti a rendszergazdát, hogy állítsa vissza a fájljait.",
"Old log-in password" : "Régi bejelentkezési jelszó",
"Current log-in password" : "Jelenlegi bejelentkezési jelszó",
- "Update Private Key Password" : "A személyest kulcs jelszó frissítése",
+ "Update Private Key Password" : "A titkos kulcs jelszavának frissítése",
"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",
+ "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 elfelejted a jelszavat",
"Enabled" : "Bekapcsolva",
"Disabled" : "Kikapcsolva",
- "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" : "Migrálni kell a titkosítási kulcsaidat a rég titkosításról (ownCloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba az adminisztrátorral"
+ "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" : "Át kell telepíteni a titkosítási kulcsaidat a rég titkosításról (ownCloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba a rendszergazdával."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/zh_CN.js b/apps/encryption/l10n/zh_CN.js
index fb1a4377fa3..e830ca6973c 100644
--- a/apps/encryption/l10n/zh_CN.js
+++ b/apps/encryption/l10n/zh_CN.js
@@ -28,11 +28,11 @@ OC.L10N.register(
"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 decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : " 无法解密这个文件(或许这是一个共享文件?),请询问文件所有者重新与您共享这个文件。",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请让文件所有者重新共享该文件。",
"Default encryption module" : "默认加密模块",
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "您好,\n管理员已启用服务器端加密,您的文件已使用密码 '%s' 加密。\n\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。\n",
- "The share will expire on %s." : "此分享将在 %s 过期。",
+ "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>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用程序已启用,但您的密钥未初始化,请注销并再次登录",
diff --git a/apps/encryption/l10n/zh_CN.json b/apps/encryption/l10n/zh_CN.json
index 6bc612f20d5..b03c6fba0bc 100644
--- a/apps/encryption/l10n/zh_CN.json
+++ b/apps/encryption/l10n/zh_CN.json
@@ -26,11 +26,11 @@
"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 decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : " 无法解密这个文件(或许这是一个共享文件?),请询问文件所有者重新与您共享这个文件。",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请让文件所有者重新共享该文件。",
"Default encryption module" : "默认加密模块",
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "您好,\n管理员已启用服务器端加密,您的文件已使用密码 '%s' 加密。\n\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。\n",
- "The share will expire on %s." : "此分享将在 %s 过期。",
+ "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>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用程序已启用,但您的密钥未初始化,请注销并再次登录",
diff --git a/apps/encryption/lib/Crypto/EncryptAll.php b/apps/encryption/lib/Crypto/EncryptAll.php
index c2619dc8ef1..ee13fee9eef 100644
--- a/apps/encryption/lib/Crypto/EncryptAll.php
+++ b/apps/encryption/lib/Crypto/EncryptAll.php
@@ -295,6 +295,12 @@ class EncryptAll {
*/
protected function encryptFile($path) {
+ // skip already encrypted files
+ $fileInfo = $this->rootView->getFileInfo($path);
+ if ($fileInfo !== false && $fileInfo->isEncrypted()) {
+ return true;
+ }
+
$source = $path;
$target = $path . '.encrypted.' . time();
diff --git a/apps/encryption/tests/Crypto/EncryptAllTest.php b/apps/encryption/tests/Crypto/EncryptAllTest.php
index a39bf7befb6..647b951a0a6 100644
--- a/apps/encryption/tests/Crypto/EncryptAllTest.php
+++ b/apps/encryption/tests/Crypto/EncryptAllTest.php
@@ -33,6 +33,7 @@ use OCA\Encryption\Crypto\EncryptAll;
use OCA\Encryption\KeyManager;
use OCA\Encryption\Users\Setup;
use OCA\Encryption\Util;
+use OCP\Files\FileInfo;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IUserManager;
@@ -354,4 +355,36 @@ class EncryptAllTest extends TestCase {
$this->assertSame($password, $userPasswords['user1']);
}
+ /**
+ * @dataProvider dataTestEncryptFile
+ * @param $isEncrypted
+ */
+ public function testEncryptFile($isEncrypted) {
+ $fileInfo = $this->createMock(FileInfo::class);
+ $fileInfo->expects($this->any())->method('isEncrypted')
+ ->willReturn($isEncrypted);
+ $this->view->expects($this->any())->method('getFileInfo')
+ ->willReturn($fileInfo);
+
+
+ if($isEncrypted) {
+ $this->view->expects($this->never())->method('copy');
+ $this->view->expects($this->never())->method('rename');
+ } else {
+ $this->view->expects($this->once())->method('copy');
+ $this->view->expects($this->once())->method('rename');
+ }
+
+ $this->assertTrue(
+ $this->invokePrivate($this->encryptAll, 'encryptFile', ['foo.txt'])
+ );
+ }
+
+ public function dataTestEncryptFile() {
+ return [
+ [true],
+ [false],
+ ];
+ }
+
}
diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js
index 525c7383df1..193a6b98788 100644
--- a/apps/federatedfilesharing/l10n/cs.js
+++ b/apps/federatedfilesharing/l10n/cs.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Požadavek na spojené sdílení byl odeslán, obdržíte pozvánku. Zkontrolujte vaše upozornění.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Nepodařilo se ustavit federované sdílení, vypadá to, že server, se kterým má být federováno je příliš starý (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Z tohoto serveru není povoleno posílat federovaná skupinová sdílení.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
"Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
"File is already shared with %s" : "Soubor je už sdílen s %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Sdílení %1$s se nezdařilo, %2$s se nepodařilo nalézt, server pravděpodobně právě není dostupný nebo používá self-signed certifikát.",
"Could not find share" : "Nedaří se nalézt sdílení",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Obdržel(a) jste %3$s jako vzdálené sdílení od %1$s (jménem %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Obdržel(a) jste {share} jako vzdálené sdílení od {user} (jménem {behalf})",
diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json
index d90f85d429d..7b9701f569e 100644
--- a/apps/federatedfilesharing/l10n/cs.json
+++ b/apps/federatedfilesharing/l10n/cs.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Požadavek na spojené sdílení byl odeslán, obdržíte pozvánku. Zkontrolujte vaše upozornění.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Nepodařilo se ustavit federované sdílení, vypadá to, že server, se kterým má být federováno je příliš starý (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Z tohoto serveru není povoleno posílat federovaná skupinová sdílení.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
"Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
"File is already shared with %s" : "Soubor je už sdílen s %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Sdílení %1$s se nezdařilo, %2$s se nepodařilo nalézt, server pravděpodobně právě není dostupný nebo používá self-signed certifikát.",
"Could not find share" : "Nedaří se nalézt sdílení",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Obdržel(a) jste %3$s jako vzdálené sdílení od %1$s (jménem %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Obdržel(a) jste {share} jako vzdálené sdílení od {user} (jménem {behalf})",
diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js
index 457dec8a5c0..a3260cbb5b8 100644
--- a/apps/federatedfilesharing/l10n/de.js
+++ b/apps/federatedfilesharing/l10n/de.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).",
"It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht erlaubt.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"File is already shared with %s" : "Datei wird bereits mit %s geteilt",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst zertifiziertes Zertifikat.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du hast \"%3$s\" als eine externe Freigabe von \"%1$s\" empfangen (im Auftrag von %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Du hast {share} als eine externe Freigabe von {user} empfangen (im Auftrag von {behalf})",
diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json
index 418676d086e..43067188b5b 100644
--- a/apps/federatedfilesharing/l10n/de.json
+++ b/apps/federatedfilesharing/l10n/de.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).",
"It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht erlaubt.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"File is already shared with %s" : "Datei wird bereits mit %s geteilt",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst zertifiziertes Zertifikat.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Du hast \"%3$s\" als eine externe Freigabe von \"%1$s\" empfangen (im Auftrag von %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Du hast {share} als eine externe Freigabe von {user} empfangen (im Auftrag von {behalf})",
diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js
index f233c712c98..ba03ac2cd2a 100644
--- a/apps/federatedfilesharing/l10n/de_DE.js
+++ b/apps/federatedfilesharing/l10n/de_DE.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen. ",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).",
"It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht zugelassen.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"File is already shared with %s" : "Datei wird bereits geteilt mit %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst zertifiziertes Zertifikat.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Sie empfingen \"%3$s\" als eine externe Freigabe von \"%1$s\" (im Auftrag von %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Sie empfingen {share} als eine externe Freigabe von {user} (im Auftrag von {behalf})",
diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json
index 72d977eea01..ec112519996 100644
--- a/apps/federatedfilesharing/l10n/de_DE.json
+++ b/apps/federatedfilesharing/l10n/de_DE.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Sie erhalten eine Einladung. Bitte prüfen Sie Ihre Benachrichtigungen. ",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).",
"It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht zugelassen.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"File is already shared with %s" : "Datei wird bereits geteilt mit %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst zertifiziertes Zertifikat.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Sie empfingen \"%3$s\" als eine externe Freigabe von \"%1$s\" (im Auftrag von %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Sie empfingen {share} als eine externe Freigabe von {user} (im Auftrag von {behalf})",
diff --git a/apps/federatedfilesharing/l10n/es.js b/apps/federatedfilesharing/l10n/es.js
index 34461dc3a57..4a9b1426d74 100644
--- a/apps/federatedfilesharing/l10n/es.js
+++ b/apps/federatedfilesharing/l10n/es.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Petición de recurso compartido federado enviada, recibirás una invitación. Comprueba tus notificaciones.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "No se ha podido establecer un compartido federado, parece ser que el servidor a federar es demasiado antiguo (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "No está permitido enviar compartidos de grupos federados desde este servidor.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Compartir %1$s ha fallado porque este objeto ya se comparte con %2$s",
"Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
"File is already shared with %s" : "El archivo ya está siendo compartido con %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Compartir %1$s ha fallado, no se ha podido encontrar %2$s, quizás el servidor no se puede alcanzar ahora mismo o usa un certificado autofirmado.",
"Could not find share" : "No se ha podido encontrar el compartido",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has recibido \"/%3$s\" como un recurso compartido remoto de %1$s (en nombre de %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Has recibido {share} como un recurso compartido remoto de {user} (en nombre de {behalf})",
diff --git a/apps/federatedfilesharing/l10n/es.json b/apps/federatedfilesharing/l10n/es.json
index 9b0d71190b6..68053d24e68 100644
--- a/apps/federatedfilesharing/l10n/es.json
+++ b/apps/federatedfilesharing/l10n/es.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Petición de recurso compartido federado enviada, recibirás una invitación. Comprueba tus notificaciones.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "No se ha podido establecer un compartido federado, parece ser que el servidor a federar es demasiado antiguo (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "No está permitido enviar compartidos de grupos federados desde este servidor.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Compartir %1$s ha fallado porque este objeto ya se comparte con %2$s",
"Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
"File is already shared with %s" : "El archivo ya está siendo compartido con %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Compartir %1$s ha fallado, no se ha podido encontrar %2$s, quizás el servidor no se puede alcanzar ahora mismo o usa un certificado autofirmado.",
"Could not find share" : "No se ha podido encontrar el compartido",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has recibido \"/%3$s\" como un recurso compartido remoto de %1$s (en nombre de %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Has recibido {share} como un recurso compartido remoto de {user} (en nombre de {behalf})",
diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js
index 667ca3bad21..ccd994d95eb 100644
--- a/apps/federatedfilesharing/l10n/fr.js
+++ b/apps/federatedfilesharing/l10n/fr.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Demande de partage fédéré envoyée, vous allez recevoir une invitation. Vérifiez vos notifications.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Impossible d'établir un partage fédére, il semble que le serveur avec lequel fédérer est trop vieux (Nextcloud <=9)",
"It is not allowed to send federated group shares from this server." : "Il n'est pas autorisé d'envoyer des partages à des groupes fédérés depuis ce serveur.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
"File is already shared with %s" : "Le fichier est déjà partagé avec %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Le partage de %1$s a échoué, impossible de trouver %2$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 {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})",
diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json
index 37ebe6a5b0f..83414471391 100644
--- a/apps/federatedfilesharing/l10n/fr.json
+++ b/apps/federatedfilesharing/l10n/fr.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Demande de partage fédéré envoyée, vous allez recevoir une invitation. Vérifiez vos notifications.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Impossible d'établir un partage fédére, il semble que le serveur avec lequel fédérer est trop vieux (Nextcloud <=9)",
"It is not allowed to send federated group shares from this server." : "Il n'est pas autorisé d'envoyer des partages à des groupes fédérés depuis ce serveur.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
"File is already shared with %s" : "Le fichier est déjà partagé avec %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Le partage de %1$s a échoué, impossible de trouver %2$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 {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})",
diff --git a/apps/federatedfilesharing/l10n/it.js b/apps/federatedfilesharing/l10n/it.js
index 247615b83e3..ea42bd12809 100644
--- a/apps/federatedfilesharing/l10n/it.js
+++ b/apps/federatedfilesharing/l10n/it.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Richiesta della condivisione federata inviata, riceverai un invito. Controlla le tue notifiche.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Impossibile stabilire una condivisione federata, sembra che il server da federare sia troppo datato (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Non è consentito inviare condivisioni di gruppo federate da questo server.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
"Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
"File is already shared with %s" : "Il file è già condiviso con %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile o che utilizzi un certificato auto-firmato.",
"Could not find share" : "Impossibile trovare la condivisione",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Hai ricevuto \"%3$s\" come condivisione remota da %1$s (per conto di %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Hai ricevuto {share} come condivisione remota da {user} (per conto di {behalf})",
diff --git a/apps/federatedfilesharing/l10n/it.json b/apps/federatedfilesharing/l10n/it.json
index 49371b33ced..9624df0da0e 100644
--- a/apps/federatedfilesharing/l10n/it.json
+++ b/apps/federatedfilesharing/l10n/it.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Richiesta della condivisione federata inviata, riceverai un invito. Controlla le tue notifiche.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Impossibile stabilire una condivisione federata, sembra che il server da federare sia troppo datato (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Non è consentito inviare condivisioni di gruppo federate da questo server.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
"Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
"File is already shared with %s" : "Il file è già condiviso con %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile o che utilizzi un certificato auto-firmato.",
"Could not find share" : "Impossibile trovare la condivisione",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Hai ricevuto \"%3$s\" come condivisione remota da %1$s (per conto di %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Hai ricevuto {share} come condivisione remota da {user} (per conto di {behalf})",
diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js
index e7cbd614d31..14d44890e7a 100644
--- a/apps/federatedfilesharing/l10n/nl.js
+++ b/apps/federatedfilesharing/l10n/nl.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "De gefedereerde share aanvraag is verzonden, je ontvangt een uitnodiging. Controleer je meldingen.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Kon geen gefedereerde share tot stand brengen, waarschijnlijk was de federatieserver te oud (Nextcloud <=9).",
"It is not allowed to send federated group shares from this server." : "Het is niet toegestaan om gefedereerde groepsshares vanaf deze server te versturen.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
"File is already shared with %s" : "Bestand is al gedeeld met %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar of je gebruikt een zelf-ondertekend certificaat.",
"Could not find share" : "Kon share niet vinden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})",
diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json
index 0b67a9bb661..904d3dee095 100644
--- a/apps/federatedfilesharing/l10n/nl.json
+++ b/apps/federatedfilesharing/l10n/nl.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "De gefedereerde share aanvraag is verzonden, je ontvangt een uitnodiging. Controleer je meldingen.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Kon geen gefedereerde share tot stand brengen, waarschijnlijk was de federatieserver te oud (Nextcloud <=9).",
"It is not allowed to send federated group shares from this server." : "Het is niet toegestaan om gefedereerde groepsshares vanaf deze server te versturen.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
"File is already shared with %s" : "Bestand is al gedeeld met %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar of je gebruikt een zelf-ondertekend certificaat.",
"Could not find share" : "Kon share niet vinden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js
index 638f0bfffd9..4a5c846625f 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.js
+++ b/apps/federatedfilesharing/l10n/pt_BR.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Não foi possível estabelecer um compartilhamento federado, parece que o servidor a se federar é muito antigo (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Não é permitido enviar compartilhamentos de grupos federados deste servidor.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento%1$s falhou, porque este item já está compartilhado com %2$s",
"Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário",
"File is already shared with %s" : "O arquivo já é compartilhado com %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível ou usa um certificado auto-assinado.",
"Could not find share" : "Não foi possível encontrar o compartilhamento",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Você recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Você recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})",
diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json
index d8422c551bb..95ac85dc9d1 100644
--- a/apps/federatedfilesharing/l10n/pt_BR.json
+++ b/apps/federatedfilesharing/l10n/pt_BR.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Não foi possível estabelecer um compartilhamento federado, parece que o servidor a se federar é muito antigo (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Não é permitido enviar compartilhamentos de grupos federados deste servidor.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento%1$s falhou, porque este item já está compartilhado com %2$s",
"Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário",
"File is already shared with %s" : "O arquivo já é compartilhado com %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível ou usa um certificado auto-assinado.",
"Could not find share" : "Não foi possível encontrar o compartilhamento",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Você recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Você recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})",
diff --git a/apps/federatedfilesharing/l10n/sr.js b/apps/federatedfilesharing/l10n/sr.js
index fe23dc43c72..f473d541273 100644
--- a/apps/federatedfilesharing/l10n/sr.js
+++ b/apps/federatedfilesharing/l10n/sr.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Послат захтев за здружено дељење, добићете позивницу. Проверавајте обавештења.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Не могу да успоставим здружено дељење, изгледа да је сервер са којим се треба здружити превише стар (Некстклауд верзија <=9).",
"It is not allowed to send federated group shares from this server." : "Са овог сервера није дозвољено да шаљете групна дељења ка здруженим серверима.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
"Not allowed to create a federated share with the same user" : "Није дозвољено да се направи здружено дељење са истим корисником",
"File is already shared with %s" : "Фајл је већ дељен са %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Дељење %1$s није успело, не могу да нађем %2$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})",
diff --git a/apps/federatedfilesharing/l10n/sr.json b/apps/federatedfilesharing/l10n/sr.json
index cdff38cd007..76a43dba23a 100644
--- a/apps/federatedfilesharing/l10n/sr.json
+++ b/apps/federatedfilesharing/l10n/sr.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Послат захтев за здружено дељење, добићете позивницу. Проверавајте обавештења.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Не могу да успоставим здружено дељење, изгледа да је сервер са којим се треба здружити превише стар (Некстклауд верзија <=9).",
"It is not allowed to send federated group shares from this server." : "Са овог сервера није дозвољено да шаљете групна дељења ка здруженим серверима.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
"Not allowed to create a federated share with the same user" : "Није дозвољено да се направи здружено дељење са истим корисником",
"File is already shared with %s" : "Фајл је већ дељен са %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Дељење %1$s није успело, не могу да нађем %2$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})",
diff --git a/apps/federatedfilesharing/l10n/tr.js b/apps/federatedfilesharing/l10n/tr.js
index daf7b81d196..d6467feb7cd 100644
--- a/apps/federatedfilesharing/l10n/tr.js
+++ b/apps/federatedfilesharing/l10n/tr.js
@@ -19,8 +19,10 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Birleşmiş paylaşım isteği gönderildi. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Birleşmiş bir paylaşım oluşturulamadı. Birleşilecek sunucunun sürümü çok eski gibi görünüyor (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Bu sunucudan birleşmiş grup paylaşımları gönderilemez",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
"Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz",
"File is already shared with %s" : "Dosya %s ile zaten paylaşılmış",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s paylaşılamadı. %2$s bulunamadı. Sunucuya erişilemiyor ya da sunucu kendinden imzalı bir güvenlik sertifikası kullanıyor olabilir.",
"Could not find share" : "Paylaşım bulunamadı",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "%1$s kullanıcısından \"%3$s\" uzak paylaşımını aldınız (%2$s adına)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "{user} kullanıcısından {share} uzak paylaşımını aldınız ( {behalf} adına)",
diff --git a/apps/federatedfilesharing/l10n/tr.json b/apps/federatedfilesharing/l10n/tr.json
index 1bd40673514..8fca5b76855 100644
--- a/apps/federatedfilesharing/l10n/tr.json
+++ b/apps/federatedfilesharing/l10n/tr.json
@@ -17,8 +17,10 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Birleşmiş paylaşım isteği gönderildi. Bir çağrı alacaksınız. Bildirimlerinizi denetleyin.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Birleşmiş bir paylaşım oluşturulamadı. Birleşilecek sunucunun sürümü çok eski gibi görünüyor (Nextcloud <= 9).",
"It is not allowed to send federated group shares from this server." : "Bu sunucudan birleşmiş grup paylaşımları gönderilemez",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
"Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz",
"File is already shared with %s" : "Dosya %s ile zaten paylaşılmış",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s paylaşılamadı. %2$s bulunamadı. Sunucuya erişilemiyor ya da sunucu kendinden imzalı bir güvenlik sertifikası kullanıyor olabilir.",
"Could not find share" : "Paylaşım bulunamadı",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "%1$s kullanıcısından \"%3$s\" uzak paylaşımını aldınız (%2$s adına)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "{user} kullanıcısından {share} uzak paylaşımını aldınız ( {behalf} adına)",
diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js
index 2a9ed0c0828..666d03ae316 100644
--- a/apps/federatedfilesharing/l10n/zh_CN.js
+++ b/apps/federatedfilesharing/l10n/zh_CN.js
@@ -3,43 +3,43 @@ OC.L10N.register(
{
"Federated sharing" : "联合云共享",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "你想要添加远程共享 {名称} 来自 {所属}@{远程}?",
- "Remote share" : "远程分享",
- "Remote share password" : "远程分享密码",
+ "Remote share" : "远程共享",
+ "Remote share password" : "远程共享密码",
"Cancel" : "取消",
- "Add remote share" : "添加远程分享",
+ "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." : "无法建立分享,可能密码是错误的。",
+ "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 sent, you will receive an invitation. Check your notifications." : "共享协作请求发送成功!通过你将收到通知。注意留意你的通知提醒",
- "Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
+ "Not allowed to create a federated share with the same user" : "不能给你自己共享文件",
"File is already shared with %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 \"%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})" : "你得到[共享]是从[用户]做为远程共享(代替原来的)",
"You received \"%3$s\" as a remote share from %1$s" : "你从“%1$s\"得到\"%3$s\"做为远程共享",
"You received {share} as a remote share from {user}" : "您从 {user} 收到了 {share} 作为远程共享",
"Accept" : "接受",
"Decline" : "拒绝",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,分享给我,看%s",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,共享给我,看%s",
"Share with me through my #Nextcloud Federated Cloud ID" : "通过我的#Nextcloud联合云ID与我共享",
- "Sharing" : "分享中",
+ "Sharing" : "共享",
"Federated Cloud Sharing" : "联合云共享",
"Open documentation" : "打开文档",
"Adjust how people can share between servers." : "调整人们如何在服务器之间共享。",
- "Allow users on this server to send shares to other servers" : "允许用户分享文件给其他服务器上的用户",
- "Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享",
+ "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" : "在全局和公开地址簿中寻找用户",
"Allow users to publish their data to a global and public address book" : "允许用户将其数据发布到全球和公共通讯录",
"Federated Cloud" : "联合云",
- "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以与任何使用Nextcloud,ownCloud或Pydio的人分享! 只需将它们的联合云ID放在共享对话框中。 看起来像person@cloud.example.com",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以与任何使用Nextcloud,ownCloud或Pydio的人共享! 只需将它们的联合云ID放在共享对话框中。 看起来像person@cloud.example.com",
"Your Federated Cloud ID:" : "你的联合云ID:",
- "Share it so your friends can share files with you:" : "使用分享,以便您的朋友可以与您共享文件:",
+ "Share it so your friends can share files with you:" : "使用共享,以便您的朋友可以与您共享文件:",
"Add to your website" : "添加到您的网站",
"Share with me via Nextcloud" : "通过联合云与我共享",
"HTML Code:" : "HTML 代码:",
diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json
index c823e03114a..49569b5f6d2 100644
--- a/apps/federatedfilesharing/l10n/zh_CN.json
+++ b/apps/federatedfilesharing/l10n/zh_CN.json
@@ -1,43 +1,43 @@
{ "translations": {
"Federated sharing" : "联合云共享",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "你想要添加远程共享 {名称} 来自 {所属}@{远程}?",
- "Remote share" : "远程分享",
- "Remote share password" : "远程分享密码",
+ "Remote share" : "远程共享",
+ "Remote share password" : "远程共享密码",
"Cancel" : "取消",
- "Add remote share" : "添加远程分享",
+ "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." : "无法建立分享,可能密码是错误的。",
+ "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 sent, you will receive an invitation. Check your notifications." : "共享协作请求发送成功!通过你将收到通知。注意留意你的通知提醒",
- "Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
+ "Not allowed to create a federated share with the same user" : "不能给你自己共享文件",
"File is already shared with %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 \"%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})" : "你得到[共享]是从[用户]做为远程共享(代替原来的)",
"You received \"%3$s\" as a remote share from %1$s" : "你从“%1$s\"得到\"%3$s\"做为远程共享",
"You received {share} as a remote share from {user}" : "您从 {user} 收到了 {share} 作为远程共享",
"Accept" : "接受",
"Decline" : "拒绝",
- "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,分享给我,看%s",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,共享给我,看%s",
"Share with me through my #Nextcloud Federated Cloud ID" : "通过我的#Nextcloud联合云ID与我共享",
- "Sharing" : "分享中",
+ "Sharing" : "共享",
"Federated Cloud Sharing" : "联合云共享",
"Open documentation" : "打开文档",
"Adjust how people can share between servers." : "调整人们如何在服务器之间共享。",
- "Allow users on this server to send shares to other servers" : "允许用户分享文件给其他服务器上的用户",
- "Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享",
+ "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" : "在全局和公开地址簿中寻找用户",
"Allow users to publish their data to a global and public address book" : "允许用户将其数据发布到全球和公共通讯录",
"Federated Cloud" : "联合云",
- "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以与任何使用Nextcloud,ownCloud或Pydio的人分享! 只需将它们的联合云ID放在共享对话框中。 看起来像person@cloud.example.com",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以与任何使用Nextcloud,ownCloud或Pydio的人共享! 只需将它们的联合云ID放在共享对话框中。 看起来像person@cloud.example.com",
"Your Federated Cloud ID:" : "你的联合云ID:",
- "Share it so your friends can share files with you:" : "使用分享,以便您的朋友可以与您共享文件:",
+ "Share it so your friends can share files with you:" : "使用共享,以便您的朋友可以与您共享文件:",
"Add to your website" : "添加到您的网站",
"Share with me via Nextcloud" : "通过联合云与我共享",
"HTML Code:" : "HTML 代码:",
diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php
index 1147bdf9c4f..06806309cac 100644
--- a/apps/files/appinfo/routes.php
+++ b/apps/files/appinfo/routes.php
@@ -62,6 +62,16 @@ $application->registerRoutes(
'verb' => 'POST'
],
[
+ 'name' => 'API#showGridView',
+ 'url' => '/api/v1/showgridview',
+ 'verb' => 'POST'
+ ],
+ [
+ 'name' => 'API#getGridView',
+ 'url' => '/api/v1/showgridview',
+ 'verb' => 'GET'
+ ],
+ [
'name' => 'view#index',
'url' => '/',
'verb' => 'GET',
@@ -81,6 +91,11 @@ $application->registerRoutes(
'url' => '/api/v1/toggleShowFolder/{key}',
'verb' => 'POST'
],
+ [
+ 'name' => 'API#getNodeType',
+ 'url' => '/api/v1/quickaccess/get/NodeType',
+ 'verb' => 'GET',
+ ],
]
]
);
diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss
index 5d8a20d86a6..a643cb6258f 100644
--- a/apps/files/css/files.scss
+++ b/apps/files/css/files.scss
@@ -172,7 +172,7 @@ table th, table th a {
color: var(--color-text-maxcontrast);
}
table.multiselect th a {
- color: #000;
+ color: var(--color-main-text);
}
table th .columntitle {
display: block;
@@ -262,8 +262,7 @@ table.multiselect thead {
}
table.multiselect thead th {
- background-color: rgba(255, 255, 255, 0.95); /* like controls bar */
- color: #000;
+ background-color: var(--color-main-background);
font-weight: bold;
border-bottom: 0;
}
@@ -595,7 +594,13 @@ a.action > img {
.summary {
opacity: .3;
/* add whitespace to bottom of files list to correctly show dropdowns */
- height: 300px;
+ height: 250px;
+}
+/* Less whitespace needed on link share page
+ * as there is a footer and action menus have fewer entries.
+ */
+#body-public .summary {
+ height: 180px;
}
.summary:hover,
.summary:focus,
@@ -693,9 +698,6 @@ table.dragshadow td.size {
.app-files .actions .button.new {
position: relative;
}
-.app-files .actions .button.new .icon {
- margin-bottom: 2px;
-}
.breadcrumb .canDrop > a,
#filestable tbody tr.canDrop {
@@ -726,3 +728,277 @@ table.dragshadow td.size {
height: 30px;
line-height: 30px;
}
+
+/* GRID */
+#filestable.view-grid:not(.hidden) {
+ $grid-size: 160px;
+ $grid-pad: 14px;
+
+ /* HEADER and MULTISELECT */
+ thead {
+ tr {
+ display: block;
+ border-bottom: 1px solid var(--color-border);
+ background-color: var(--color-main-background);
+ th {
+ width: auto;
+ border: none;
+ }
+ }
+ }
+
+ /* MAIN FILE LIST */
+ tbody {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, $grid-size);
+ justify-content: space-around;
+ row-gap: 15px;
+ margin: 15px 0;
+
+ tr {
+ display: block;
+ position: relative;
+ height: $grid-size + 44px - $grid-pad;
+ border-radius: var(--border-radius);
+
+ &:hover, &:focus, &:active,
+ &.selected,
+ &.searchresult,
+ .name:focus,
+ &.highlighted {
+ background-color: transparent;
+
+ .thumbnail-wrapper,
+ .nametext,
+ .fileactions {
+ transition: background-color 0.3s ease;
+ background-color: var(--color-background-dark);
+ }
+ }
+ }
+
+ td {
+ display: inline;
+ border-bottom: none;
+
+ &.filename {
+ .thumbnail-wrapper {
+ min-width: 0;
+ max-width: none;
+ position: absolute;
+ width: $grid-size;
+ height: $grid-size;
+ padding: $grid-pad; // same as action icon bottom and right padding
+ top: 0;
+ left: 0;
+ z-index: -1; // make sure the default click is the link
+
+ .thumbnail {
+ width: calc(100% - 2 * #{$grid-pad});
+ height: calc(100% - 2 * #{$grid-pad}); //action icon padding
+ background-size: contain;
+ margin: 0;
+ border-radius: var(--border-radius);
+ background-repeat: no-repeat;
+ background-position: center;
+
+ /* Position favorite star related to checkbox to left and 3-dot menu below
+ * Position is inherited from the selection while in grid view
+ */
+ .favorite-mark {
+ padding: $grid-pad;
+ left: auto;
+ top: -22px; // center in corner of thumbnail
+ right: -22px; // center in corner of thumbnail
+ }
+ }
+ }
+
+ .name {
+ height: 100%;
+ border-radius: var(--border-radius);
+ // since we're using thumbnail, name and actions bg
+ // we need to hide the overflow for the radius to show
+ // luckily the popovermenu is outside .name
+ overflow: hidden;
+ // we but the thumbnail in background to ensure
+ // the name is the default click handler
+ // force back the cursor which have been overrided
+ // and disabled for some reason...
+ cursor: pointer !important;
+
+ .nametext {
+ display: flex;
+ height: 44px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ margin-top: $grid-size - $grid-pad;
+ padding-right: 0;
+ text-align: right;
+ line-height: 44px;
+ padding-left: $grid-pad; // same as action icon right padding
+
+ .innernametext {
+ display: inline-block;
+ max-width: 80px;
+ }
+
+ /* No space for extension in grid view */
+ .extension {
+ display: none;
+ }
+ }
+
+ .fileactions {
+ height: initial;
+ margin-top: $grid-size - $grid-pad;
+ display: flex;
+ align-items: center;
+
+ .action {
+ padding: $grid-pad;
+ width: 44px;
+ height: 44px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ &.action-share.permanent.shared-style span {
+ /* Do not show "Shared" text next to icon as there is no space */
+ &:not(.icon) {
+ display: none;
+ }
+
+ /* If an avatar is present, show that instead of the icon */
+ &.avatar {
+ display: inline-block;
+ position: absolute;
+ }
+ }
+
+ /* In "Deleted files", do not show "Restore" text next to icon as there is no space */
+ &.action-restore.permanent span {
+ &:not(.icon) {
+ display: none;
+ }
+ }
+
+ /* If there is a comment, show it instead of the share icon */
+ &.action-comment ~ .action-share {
+ display: none;
+ }
+ }
+ }
+ }
+ }
+
+ /* No space for filesize and date in grid view */
+ &.filesize,
+ &.date {
+ display: none;
+ }
+
+ &.selection,
+ &.filename .favorite-mark {
+ position: absolute;
+ top: -8px; // half the checkbox width, center on corner of thumbnail
+ left: -8px; // half the checkbox width, center on corner of thumbnail
+ display: flex;
+ width: 44px;
+ height: 44px;
+ z-index: 10;
+ background: transparent;
+
+ label {
+ width: 44px;
+ height: 44px;
+ display: inline-flex;
+ padding: $grid-pad; // like any action icon
+ &::before {
+ margin: 0;
+ width: $grid-pad; // 16px - border
+ height: $grid-pad; // 16px - border
+ }
+ }
+ }
+
+ /* Position actions menu below file */
+ .popovermenu {
+ left: 0;
+ width: $grid-size - 10px; // 2 * margin
+ margin: 0 5px;
+
+ /* Ellipsize long entries, normally menu width is adjusted but for grid we use fixed width. */
+ .menuitem span:not(.icon) {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+ }
+ }
+
+ /* Center align the footer file number & size summary */
+ tfoot {
+ display: grid;
+
+ .summary:not(.hidden) {
+ display: inline-block;
+ margin: 0 auto;
+
+ td {
+ padding-top: 50px;
+
+ &:first-child,
+ &.date {
+ display: none;
+ }
+
+ .info {
+ margin-left: 0;
+ }
+ }
+ }
+ }
+}
+
+/* Grid view toggle */
+#view-toggle {
+ background-color: transparent;
+ border: none;
+ margin: 0;
+ padding: 22px;
+ opacity: .5;
+
+ &:hover,
+ &:focus,
+ #showgridview:focus + & {
+ opacity: 1;
+ }
+}
+
+/* Adjustments for link share page */
+#body-public {
+ #filestable.view-grid:not(.hidden) tbody td {
+ /* More space for filename since there is no share icon */
+ &.filename .name .nametext .innernametext {
+ max-width: 124px;
+ }
+
+ /* Position actions menu correctly below 3-dot-menu */
+ .popovermenu {
+ left: -80px;
+ }
+ }
+
+ /* Right-align view toggle on link share page */
+ #view-toggle {
+ position: absolute;
+ right: 0;
+ }
+}
+
+/* Hide legacy Gallery toggle */
+#gallery-button {
+ display: none;
+}
diff --git a/apps/files/js/favoritesfilelist.js b/apps/files/js/favoritesfilelist.js
index 8c9c125d0a1..44adf5d7b5b 100644
--- a/apps/files/js/favoritesfilelist.js
+++ b/apps/files/js/favoritesfilelist.js
@@ -94,12 +94,6 @@ $(document).ready(function() {
return OCA.Files.FileList.prototype.reloadCallback.call(this, status, result);
},
-
- _onUrlChanged: function (e) {
- if (e && _.isString(e.dir)) {
- this.changeDirectory(e.dir, false, true);
- }
- }
});
OCA.Files.FavoritesFileList = FavoritesFileList;
diff --git a/apps/files/js/favoritesplugin.js b/apps/files/js/favoritesplugin.js
index 7294ef9461c..3ceadca826d 100644
--- a/apps/files/js/favoritesplugin.js
+++ b/apps/files/js/favoritesplugin.js
@@ -67,6 +67,11 @@
return new OCA.Files.FavoritesFileList(
$el, {
fileActions: fileActions,
+ // The file list is created when a "show" event is handled,
+ // so it should be marked as "shown" like it would have been
+ // done if handling the event with the file list already
+ // created.
+ shown: true
}
);
},
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 0a6620ab22c..9cc1856d52b 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -221,6 +221,10 @@
return;
}
+ if (options.shown) {
+ this.shown = options.shown;
+ }
+
if (options.config) {
this._filesConfig = options.config;
} else if (!_.isUndefined(OCA.Files) && !_.isUndefined(OCA.Files.App)) {
@@ -327,6 +331,11 @@
this.$el.find('thead th .columntitle').click(_.bind(this._onClickHeader, this));
+ // Toggle for grid view
+ this.$showGridView = $('input#showgridview');
+ this.$showGridView.on('change', _.bind(this._onGridviewChange, this));
+ $('#view-toggle').tooltip({placement: 'bottom', trigger: 'hover'});
+
this._onResize = _.debounce(_.bind(this._onResize, this), 250);
$('#app-content').on('appresized', this._onResize);
$(window).resize(this._onResize);
@@ -588,6 +597,26 @@
},
/**
+ * Toggle showing gridview by default or not
+ *
+ * @returns {undefined}
+ */
+ _onGridviewChange: function() {
+ var show = this.$showGridView.is(':checked');
+ // only save state if user is logged in
+ if (OC.currentUser) {
+ $.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {
+ show: show
+ });
+ }
+ this.$showGridView.next('#view-toggle')
+ .removeClass('icon-toggle-filelist icon-toggle-pictures')
+ .addClass(show ? 'icon-toggle-filelist' : 'icon-toggle-pictures')
+
+ $('.list-container').toggleClass('view-grid', show);
+ },
+
+ /**
* Event handler when leaving previously hidden state
*/
_onShow: function(e) {
@@ -2772,7 +2801,9 @@
var permissions = this.getDirectoryPermissions();
var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0;
this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
this.$el.find('#emptycontent .uploadmessage').toggleClass('hidden', !isCreatable || !this.isEmpty);
+ this.$el.find('#filestable').toggleClass('hidden', this.isEmpty);
this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
},
/**
@@ -3172,9 +3203,9 @@
* update counter when uploading to sub folder
*/
uploader.on('done', function(e, upload) {
+ var data = upload.data;
self._uploader.log('filelist handle fileuploaddone', e, data);
- var data = upload.data;
var status = data.jqXHR.status;
if (status < 200 || status >= 300) {
// error was handled in OC.Uploads already
diff --git a/apps/files/js/recentplugin.js b/apps/files/js/recentplugin.js
index 524b556a517..c1b013ef1b8 100644
--- a/apps/files/js/recentplugin.js
+++ b/apps/files/js/recentplugin.js
@@ -67,6 +67,11 @@
return new OCA.Files.RecentFileList(
$el, {
fileActions: fileActions,
+ // The file list is created when a "show" event is handled,
+ // so it should be marked as "shown" like it would have been
+ // done if handling the event with the file list already
+ // created.
+ shown: true
}
);
},
diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js
index 81d2eea9ef5..70c1047be4c 100644
--- a/apps/files/l10n/bg.js
+++ b/apps/files/l10n/bg.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Could not create folder \"{dir}\"" : "Папката \"{dir}\" не може да бъде създадена",
"Upload cancelled." : "Качването е прекъснато.",
"…" : "…",
+ "Processing files …" : "Обработване на файлове ...",
"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}\" не съществува",
@@ -30,7 +31,7 @@ OC.L10N.register(
"Unshare" : "Прекратяване на споделяне",
"Could not load info for file \"{file}\"" : "Информацията за файла \"{file}\" не може да бъде заредена",
"Files" : "Файлове",
- "Details" : "Детайли",
+ "Details" : "Подробности",
"Select" : "Избери",
"Pending" : "Чакащо",
"Unable to determine date" : "Неуспешно установяване на дата",
@@ -111,6 +112,8 @@ OC.L10N.register(
"Save" : "Запиши",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако ползвате PHP-FPM прилагането на промени може да отнеме 5 минути.",
"Missing permissions to edit from here." : "Липсва разрешение за редакция от тук.",
+ "%1$s of %2$s used" : "%1$s от %2$s използвани",
+ "%s used" : "%s използвани",
"Settings" : "Настройки",
"Show hidden files" : "Показвай и скрити файлове",
"WebDAV" : "WebDAV",
@@ -135,6 +138,7 @@ OC.L10N.register(
"New text file.txt" : "Текстов файл.txt",
"Move" : "Премести",
"Target folder" : "Дестинация",
+ "%s of %s used" : "%s от %s използвани",
"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>"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json
index 8787cb93733..3cc0bcd86d1 100644
--- a/apps/files/l10n/bg.json
+++ b/apps/files/l10n/bg.json
@@ -14,6 +14,7 @@
"Could not create folder \"{dir}\"" : "Папката \"{dir}\" не може да бъде създадена",
"Upload cancelled." : "Качването е прекъснато.",
"…" : "…",
+ "Processing files …" : "Обработване на файлове ...",
"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}\" не съществува",
@@ -28,7 +29,7 @@
"Unshare" : "Прекратяване на споделяне",
"Could not load info for file \"{file}\"" : "Информацията за файла \"{file}\" не може да бъде заредена",
"Files" : "Файлове",
- "Details" : "Детайли",
+ "Details" : "Подробности",
"Select" : "Избери",
"Pending" : "Чакащо",
"Unable to determine date" : "Неуспешно установяване на дата",
@@ -109,6 +110,8 @@
"Save" : "Запиши",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако ползвате PHP-FPM прилагането на промени може да отнеме 5 минути.",
"Missing permissions to edit from here." : "Липсва разрешение за редакция от тук.",
+ "%1$s of %2$s used" : "%1$s от %2$s използвани",
+ "%s used" : "%s използвани",
"Settings" : "Настройки",
"Show hidden files" : "Показвай и скрити файлове",
"WebDAV" : "WebDAV",
@@ -133,6 +136,7 @@
"New text file.txt" : "Текстов файл.txt",
"Move" : "Премести",
"Target folder" : "Дестинация",
+ "%s of %s used" : "%s от %s използвани",
"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>"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index 7bb85805045..cbd6c72d572 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"Actions" : "Činnosti",
"Rename" : "Přejmenovat",
"Copy" : "Kopírovat",
+ "Choose target folder" : "Zvolte cílovou složku",
"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}",
@@ -134,6 +135,7 @@ OC.L10N.register(
"Save" : "Uložit",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Při použití PHP-FPM může změna nastavení trvat až 5 minut od uložení.",
"Missing permissions to edit from here." : "Pro úpravy v aktuálním náhledu chybí oprávnění.",
+ "%1$s of %2$s used" : "%1$s z %2$s použito",
"%s used" : "%s použito",
"Settings" : "Nastavení",
"Show hidden files" : "Zobrazit skryté soubory",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index a3acf6898a4..a8f82c5c5d7 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -27,6 +27,7 @@
"Actions" : "Činnosti",
"Rename" : "Přejmenovat",
"Copy" : "Kopírovat",
+ "Choose target folder" : "Zvolte cílovou složku",
"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}",
@@ -132,6 +133,7 @@
"Save" : "Uložit",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Při použití PHP-FPM může změna nastavení trvat až 5 minut od uložení.",
"Missing permissions to edit from here." : "Pro úpravy v aktuálním náhledu chybí oprávnění.",
+ "%1$s of %2$s used" : "%1$s z %2$s použito",
"%s used" : "%s použito",
"Settings" : "Nastavení",
"Show hidden files" : "Zobrazit skryté soubory",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index b014c31f5a4..2eeb3a613a3 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Speichern",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Mit PHP-FPM kann es bis zu 5 Minuten dauern, bis die Einstellungen übernommen werden.",
"Missing permissions to edit from here." : "Fehlende Berechtigungen, um dies von hier aus zu bearbeiten.",
+ "%1$s of %2$s used" : "%1$s von %2$s verwendet",
"%s used" : "%s verwendet",
"Settings" : "Einstellungen",
"Show hidden files" : "Versteckte Dateien anzeigen",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 3f4fb676fc4..5d902b4dd13 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -133,6 +133,7 @@
"Save" : "Speichern",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Mit PHP-FPM kann es bis zu 5 Minuten dauern, bis die Einstellungen übernommen werden.",
"Missing permissions to edit from here." : "Fehlende Berechtigungen, um dies von hier aus zu bearbeiten.",
+ "%1$s of %2$s used" : "%1$s von %2$s verwendet",
"%s used" : "%s verwendet",
"Settings" : "Einstellungen",
"Show hidden files" : "Versteckte Dateien anzeigen",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index e6b5df46eed..2560536c2e0 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Speichern",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Mit PHP-FPM kann es 5 Minuten dauern, bis Änderungen angewendet sind.",
"Missing permissions to edit from here." : "Fehlende Berechtigungen um von hier aus zu bearbeiten.",
+ "%1$s of %2$s used" : "%1$s von %2$s verwendet",
"%s used" : " %s verwendet",
"Settings" : "Einstellungen",
"Show hidden files" : "Versteckte Dateien anzeigen",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 9c3bdde6af8..7e14025f224 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -133,6 +133,7 @@
"Save" : "Speichern",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Mit PHP-FPM kann es 5 Minuten dauern, bis Änderungen angewendet sind.",
"Missing permissions to edit from here." : "Fehlende Berechtigungen um von hier aus zu bearbeiten.",
+ "%1$s of %2$s used" : "%1$s von %2$s verwendet",
"%s used" : " %s verwendet",
"Settings" : "Einstellungen",
"Show hidden files" : "Versteckte Dateien anzeigen",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 9b0f99c57f3..677f22e5d37 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Guardar",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Con PHP-FPM podría tardar hasta 5 minutos en realizarse los cambios.",
"Missing permissions to edit from here." : "Faltan permisos para poder editar desde aquí.",
+ "%1$s of %2$s used" : "%1$s de %2$s utilizados",
"%s used" : "usado %s",
"Settings" : "Ajustes",
"Show hidden files" : "Mostrar archivos ocultos",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index e152a4d27da..11d44ca3b4b 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -133,6 +133,7 @@
"Save" : "Guardar",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Con PHP-FPM podría tardar hasta 5 minutos en realizarse los cambios.",
"Missing permissions to edit from here." : "Faltan permisos para poder editar desde aquí.",
+ "%1$s of %2$s used" : "%1$s de %2$s utilizados",
"%s used" : "usado %s",
"Settings" : "Ajustes",
"Show hidden files" : "Mostrar archivos ocultos",
diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js
index 3720ec9e59a..60ea8edd76f 100644
--- a/apps/files/l10n/fi.js
+++ b/apps/files/l10n/fi.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"Actions" : "Toiminnot",
"Rename" : "Nimeä uudelleen",
"Copy" : "Kopioi",
+ "Choose target folder" : "Valitse kohdekansio",
"Disconnect storage" : "Katkaise yhteys tallennustilaan",
"Unshare" : "Peru jakaminen",
"Could not load info for file \"{file}\"" : "Ei voida ladata tiedoston \"{file}\" tietoja",
@@ -126,6 +127,7 @@ OC.L10N.register(
"Save" : "Tallenna",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM:tä käyttäen muutoksien voimaantulossa saattaa kestää 5 minuuttia.",
"Missing permissions to edit from here." : "Käyttöoikeudet eivät riitä tätä kautta muokkaamiseen.",
+ "%1$s of %2$s used" : "%1$s/%2$s käytetty",
"%s used" : "%s käytetty",
"Settings" : "Asetukset",
"Show hidden files" : "Näytä piilotetut tiedostot",
diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json
index e7c395be2be..5bfe0f9724f 100644
--- a/apps/files/l10n/fi.json
+++ b/apps/files/l10n/fi.json
@@ -27,6 +27,7 @@
"Actions" : "Toiminnot",
"Rename" : "Nimeä uudelleen",
"Copy" : "Kopioi",
+ "Choose target folder" : "Valitse kohdekansio",
"Disconnect storage" : "Katkaise yhteys tallennustilaan",
"Unshare" : "Peru jakaminen",
"Could not load info for file \"{file}\"" : "Ei voida ladata tiedoston \"{file}\" tietoja",
@@ -124,6 +125,7 @@
"Save" : "Tallenna",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM:tä käyttäen muutoksien voimaantulossa saattaa kestää 5 minuuttia.",
"Missing permissions to edit from here." : "Käyttöoikeudet eivät riitä tätä kautta muokkaamiseen.",
+ "%1$s of %2$s used" : "%1$s/%2$s käytetty",
"%s used" : "%s käytetty",
"Settings" : "Asetukset",
"Show hidden files" : "Näytä piilotetut tiedostot",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 1e0de06750e..2b102e9d12f 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"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." : "Permissions insuffisantes pour modifier à partir d'ici.",
+ "%1$s of %2$s used" : "%1$s utilisés sur %2$s",
"%s used" : "%s utilisé",
"Settings" : "Paramètres",
"Show hidden files" : "Afficher les fichiers cachés",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 749a46f1126..375704fe5f6 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -133,6 +133,7 @@
"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." : "Permissions insuffisantes pour modifier à partir d'ici.",
+ "%1$s of %2$s used" : "%1$s utilisés sur %2$s",
"%s used" : "%s utilisé",
"Settings" : "Paramètres",
"Show hidden files" : "Afficher les fichiers cachés",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index e06f16fed80..36976f81ed5 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -16,17 +16,20 @@ OC.L10N.register(
"Could not create folder \"{dir}\"" : "{dir} mappa nem hozható létre",
"Upload cancelled." : "A feltöltést megszakítottuk.",
"…" : "...",
+ "Processing files …" : "Fájlok feldolgozása …",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "A(z) {filename} fájl nem tölthető fel, mert ez vagy egy könyvtár, vagy pedig 0 bájtból áll.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nincs elég szabad hely. A feltöltés mérete {size1}, de csak ennyi hely van: {size2}.",
- "Target folder \"{dir}\" does not exist any more" : "A cél mappa már nem létezik: \"{dir}\"",
+ "Target folder \"{dir}\" does not exist any more" : "A célmappa már nem létezik: \"{dir}\"",
"Not enough free space" : "Nincs elég szabad hely",
"Uploading …" : "Feltöltés...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
+ "Uploading that item is not supported" : "Ennek az elemnek a feltöltése nem támogatott",
"Target folder does not exist any more" : "A célmappa már nem létezik",
"Error when assembling chunks, status code {status}" : "Hiba a darabok összerakásakor, Állapotkód {status}",
"Actions" : "Műveletek",
"Rename" : "Átnevezés",
- "Copy" : "Másol",
+ "Copy" : "Másolás",
+ "Choose target folder" : "Célmappa kiválasztása",
"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}\"",
@@ -36,7 +39,7 @@ OC.L10N.register(
"Pending" : "Folyamatban",
"Unable to determine date" : "Nem lehet meghatározni a dátumot",
"This operation is forbidden" : "Tiltott művelet",
- "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse a rendszergazdát",
"Could not move \"{file}\", target exists" : "{file} fájl nem áthelyezhető, mert a cél már létezik",
"Could not move \"{file}\"" : "{file} fájl nem áthelyezhető",
"Could not copy \"{file}\", target exists" : "Nem sikerült \"{file}\" másolása, a cél már létezik",
@@ -125,6 +128,7 @@ OC.L10N.register(
"A file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"Unlimited" : "Korlátlan",
"Upload (max. %s)" : "Feltöltés (max.: %s)",
+ "File Management" : "Fájlkezelés",
"File handling" : "Fájlkezelés",
"Maximum upload size" : "Maximális feltölthető fájlméret",
"max. possible: " : "max. lehetséges: ",
@@ -147,13 +151,15 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg",
"Tags" : "Címkék",
"Deleted files" : "Törölt fájlok",
+ "Shares" : "Megosztások",
"Shared with others" : "Megosztva másokkal",
"Shared with you" : "Megosztva veled",
"Shared by link" : "Megosztva hivatkozással",
+ "Deleted shares" : "Törölt megosztások",
"Text file" : "Szövegfájl",
"New text file.txt" : "Új szöveges fájl.txt",
"Move" : "Áthelyezés",
- "Target folder" : "Cél mappa",
+ "Target folder" : "Célmappa",
"A new file or folder has been <strong>deleted</strong>" : "Egy új fájl vagy mappa <strong>törölve</strong>",
"A new file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"%s of %s used" : "%s / %s használt",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 4447b8dbc14..a8167476a09 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -14,17 +14,20 @@
"Could not create folder \"{dir}\"" : "{dir} mappa nem hozható létre",
"Upload cancelled." : "A feltöltést megszakítottuk.",
"…" : "...",
+ "Processing files …" : "Fájlok feldolgozása …",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "A(z) {filename} fájl nem tölthető fel, mert ez vagy egy könyvtár, vagy pedig 0 bájtból áll.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nincs elég szabad hely. A feltöltés mérete {size1}, de csak ennyi hely van: {size2}.",
- "Target folder \"{dir}\" does not exist any more" : "A cél mappa már nem létezik: \"{dir}\"",
+ "Target folder \"{dir}\" does not exist any more" : "A célmappa már nem létezik: \"{dir}\"",
"Not enough free space" : "Nincs elég szabad hely",
"Uploading …" : "Feltöltés...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})",
+ "Uploading that item is not supported" : "Ennek az elemnek a feltöltése nem támogatott",
"Target folder does not exist any more" : "A célmappa már nem létezik",
"Error when assembling chunks, status code {status}" : "Hiba a darabok összerakásakor, Állapotkód {status}",
"Actions" : "Műveletek",
"Rename" : "Átnevezés",
- "Copy" : "Másol",
+ "Copy" : "Másolás",
+ "Choose target folder" : "Célmappa kiválasztása",
"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}\"",
@@ -34,7 +37,7 @@
"Pending" : "Folyamatban",
"Unable to determine date" : "Nem lehet meghatározni a dátumot",
"This operation is forbidden" : "Tiltott művelet",
- "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse a rendszergazdát",
"Could not move \"{file}\", target exists" : "{file} fájl nem áthelyezhető, mert a cél már létezik",
"Could not move \"{file}\"" : "{file} fájl nem áthelyezhető",
"Could not copy \"{file}\", target exists" : "Nem sikerült \"{file}\" másolása, a cél már létezik",
@@ -123,6 +126,7 @@
"A file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"Unlimited" : "Korlátlan",
"Upload (max. %s)" : "Feltöltés (max.: %s)",
+ "File Management" : "Fájlkezelés",
"File handling" : "Fájlkezelés",
"Maximum upload size" : "Maximális feltölthető fájlméret",
"max. possible: " : "max. lehetséges: ",
@@ -145,13 +149,15 @@
"Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg",
"Tags" : "Címkék",
"Deleted files" : "Törölt fájlok",
+ "Shares" : "Megosztások",
"Shared with others" : "Megosztva másokkal",
"Shared with you" : "Megosztva veled",
"Shared by link" : "Megosztva hivatkozással",
+ "Deleted shares" : "Törölt megosztások",
"Text file" : "Szövegfájl",
"New text file.txt" : "Új szöveges fájl.txt",
"Move" : "Áthelyezés",
- "Target folder" : "Cél mappa",
+ "Target folder" : "Célmappa",
"A new file or folder has been <strong>deleted</strong>" : "Egy új fájl vagy mappa <strong>törölve</strong>",
"A new file or folder has been <strong>restored</strong>" : "Egy új fájl vagy mappa <strong>visszaállítva</strong>",
"%s of %s used" : "%s / %s használt",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 6329adb5063..a3927dfbadc 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Salva",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Con PHP-FPM potrebbe richiedere 5 minuti perché le modifiche siano applicate.",
"Missing permissions to edit from here." : "Permessi mancanti per modificare da qui.",
+ "%1$s of %2$s used" : "%1$s di %2$s utilizzati",
"%s used" : "%s utilizzato",
"Settings" : "Impostazioni",
"Show hidden files" : "Mostra i file nascosti",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index ab0e452f107..36f42743eff 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -133,6 +133,7 @@
"Save" : "Salva",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Con PHP-FPM potrebbe richiedere 5 minuti perché le modifiche siano applicate.",
"Missing permissions to edit from here." : "Permessi mancanti per modificare da qui.",
+ "%1$s of %2$s used" : "%1$s di %2$s utilizzati",
"%s used" : "%s utilizzato",
"Settings" : "Impostazioni",
"Show hidden files" : "Mostra i file nascosti",
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index ff9cb25c0c5..6a91f74ac57 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Bewaren",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Met PHP-FPM kan het 5 minuten duren voordat wijzigingen zijn doorgevoerd.",
"Missing permissions to edit from here." : "Ontbrekende rechten om vanaf hier te bewerken.",
+ "%1$s of %2$s used" : "%1$s van %2$s gebruikt",
"%s used" : "%s gebruikt",
"Settings" : "Instellingen",
"Show hidden files" : "Verborgen bestanden tonen",
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 9df41e6c42b..9a9651c70bf 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -133,6 +133,7 @@
"Save" : "Bewaren",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Met PHP-FPM kan het 5 minuten duren voordat wijzigingen zijn doorgevoerd.",
"Missing permissions to edit from here." : "Ontbrekende rechten om vanaf hier te bewerken.",
+ "%1$s of %2$s used" : "%1$s van %2$s gebruikt",
"%s used" : "%s gebruikt",
"Settings" : "Instellingen",
"Show hidden files" : "Verborgen bestanden tonen",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 80a1202045f..f14f78199aa 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Salvar",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Com PHP-FPM pode demorar 5 minutos para que as alterações sejam aplicadas.",
"Missing permissions to edit from here." : "Faltando permissões para editar aqui.",
+ "%1$s of %2$s used" : "%1$s usado de %2$s",
"%s used" : "%s usado",
"Settings" : "Configurações",
"Show hidden files" : "Mostrar arquivos ocultos",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 370debdfce9..c71474a5c4a 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -133,6 +133,7 @@
"Save" : "Salvar",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Com PHP-FPM pode demorar 5 minutos para que as alterações sejam aplicadas.",
"Missing permissions to edit from here." : "Faltando permissões para editar aqui.",
+ "%1$s of %2$s used" : "%1$s usado de %2$s",
"%s used" : "%s usado",
"Settings" : "Configurações",
"Show hidden files" : "Mostrar arquivos ocultos",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 8e5d59f2bac..4d3e3b778ab 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Could not create folder \"{dir}\"" : "Невозможно создать каталог «{dir}»",
"Upload cancelled." : "Выгрузка отменена.",
"…" : "…",
+ "Processing files …" : "Обработка файлов…",
"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}» более не существует",
@@ -28,6 +29,7 @@ OC.L10N.register(
"Actions" : "Действия",
"Rename" : "Переименовать",
"Copy" : "Копировать",
+ "Choose target folder" : "Выберите каталога назначения",
"Disconnect storage" : "Отсоединить хранилище",
"Unshare" : "Закрыть доступ",
"Could not load info for file \"{file}\"" : "Не удаётся загрузить информацию для файла \"{file}\"",
@@ -133,6 +135,7 @@ OC.L10N.register(
"Save" : "Сохранить",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "В режиме PHP-FPM применение изменений может занять до 5 минут.",
"Missing permissions to edit from here." : "Отсутствуют права на внесение здесь изменений.",
+ "%1$s of %2$s used" : "использовано %1$s из %2$s ",
"%s used" : "%s использовано",
"Settings" : "Настройки",
"Show hidden files" : "Показывать скрытые файлы",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 67631c7a6df..ef200c454d1 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -14,6 +14,7 @@
"Could not create folder \"{dir}\"" : "Невозможно создать каталог «{dir}»",
"Upload cancelled." : "Выгрузка отменена.",
"…" : "…",
+ "Processing files …" : "Обработка файлов…",
"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}» более не существует",
@@ -26,6 +27,7 @@
"Actions" : "Действия",
"Rename" : "Переименовать",
"Copy" : "Копировать",
+ "Choose target folder" : "Выберите каталога назначения",
"Disconnect storage" : "Отсоединить хранилище",
"Unshare" : "Закрыть доступ",
"Could not load info for file \"{file}\"" : "Не удаётся загрузить информацию для файла \"{file}\"",
@@ -131,6 +133,7 @@
"Save" : "Сохранить",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "В режиме PHP-FPM применение изменений может занять до 5 минут.",
"Missing permissions to edit from here." : "Отсутствуют права на внесение здесь изменений.",
+ "%1$s of %2$s used" : "использовано %1$s из %2$s ",
"%s used" : "%s использовано",
"Settings" : "Настройки",
"Show hidden files" : "Показывать скрытые файлы",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 1c7273ed9b8..5eb62809f4b 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Сачувај",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако користите PHP-FPM, промене се могу применити и тек после 5 минута.",
"Missing permissions to edit from here." : "Недостају дозволе да се мења одавде.",
+ "%1$s of %2$s used" : "Заузето %1$s од %2$s",
"%s used" : "%s искоришћено",
"Settings" : "Поставке",
"Show hidden files" : "Прикажи скривене фајлове",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index cb297110cf0..bd54197d1e3 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -133,6 +133,7 @@
"Save" : "Сачувај",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Ако користите PHP-FPM, промене се могу применити и тек после 5 минута.",
"Missing permissions to edit from here." : "Недостају дозволе да се мења одавде.",
+ "%1$s of %2$s used" : "Заузето %1$s од %2$s",
"%s used" : "%s искоришћено",
"Settings" : "Поставке",
"Show hidden files" : "Прикажи скривене фајлове",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 44fb3331495..e64dc8fc79a 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Could not create folder \"{dir}\"" : "Kunde inte skapa mapp \"{dir}\"",
"Upload cancelled." : "Uppladdning avbruten.",
"…" : "...",
+ "Processing files …" : "Bearbetar filer ...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan inte ladda upp {filename} eftersom den antingen är en mapp eller har 0 bytes.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Inte tillräckligt med ledigt utrymme, du laddar upp {size1} men endast {size2} finns kvar.",
"Target folder \"{dir}\" does not exist any more" : "Målmapp \"{dir}\" existerar inte mer",
@@ -28,6 +29,7 @@ OC.L10N.register(
"Actions" : "Åtgärder",
"Rename" : "Byt namn",
"Copy" : "Kopiera",
+ "Choose target folder" : "Välj målmapp",
"Disconnect storage" : "Koppla bort lagring",
"Unshare" : "Sluta dela",
"Could not load info for file \"{file}\"" : "Kunde inte ladda information för fil \"{file}\"",
@@ -133,6 +135,7 @@ OC.L10N.register(
"Save" : "Spara",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Med PHP-FPM kan det ta cirka 5 minuter för ändringarna att träda i kraft.",
"Missing permissions to edit from here." : "Saknar rättigheter att ändra härifrån.",
+ "%1$s of %2$s used" : "%1$s av %2$s använt",
"%s used" : "%s använt",
"Settings" : "Inställningar",
"Show hidden files" : "Visa dolda filer",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index 8ae16cbf0b2..30f5b415fb4 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -14,6 +14,7 @@
"Could not create folder \"{dir}\"" : "Kunde inte skapa mapp \"{dir}\"",
"Upload cancelled." : "Uppladdning avbruten.",
"…" : "...",
+ "Processing files …" : "Bearbetar filer ...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan inte ladda upp {filename} eftersom den antingen är en mapp eller har 0 bytes.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Inte tillräckligt med ledigt utrymme, du laddar upp {size1} men endast {size2} finns kvar.",
"Target folder \"{dir}\" does not exist any more" : "Målmapp \"{dir}\" existerar inte mer",
@@ -26,6 +27,7 @@
"Actions" : "Åtgärder",
"Rename" : "Byt namn",
"Copy" : "Kopiera",
+ "Choose target folder" : "Välj målmapp",
"Disconnect storage" : "Koppla bort lagring",
"Unshare" : "Sluta dela",
"Could not load info for file \"{file}\"" : "Kunde inte ladda information för fil \"{file}\"",
@@ -131,6 +133,7 @@
"Save" : "Spara",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "Med PHP-FPM kan det ta cirka 5 minuter för ändringarna att träda i kraft.",
"Missing permissions to edit from here." : "Saknar rättigheter att ändra härifrån.",
+ "%1$s of %2$s used" : "%1$s av %2$s använt",
"%s used" : "%s använt",
"Settings" : "Inställningar",
"Show hidden files" : "Visa dolda filer",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index eae9e0859d4..61a8fd9ce45 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -135,6 +135,7 @@ OC.L10N.register(
"Save" : "Kaydet",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM üzerinde değişikliklerin uygulanması 5 dakika sürebilir.",
"Missing permissions to edit from here." : "Buradan düzenleme için izinler eksik.",
+ "%1$s of %2$s used" : "%1$s / %2$s kullanıldı",
"%s used" : "%s kullanılıyor",
"Settings" : "Ayarlar",
"Show hidden files" : "Gizli dosyaları görüntüle",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 275124d7e16..f5cfb30fbca 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -133,6 +133,7 @@
"Save" : "Kaydet",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM üzerinde değişikliklerin uygulanması 5 dakika sürebilir.",
"Missing permissions to edit from here." : "Buradan düzenleme için izinler eksik.",
+ "%1$s of %2$s used" : "%1$s / %2$s kullanıldı",
"%s used" : "%s kullanılıyor",
"Settings" : "Ayarlar",
"Show hidden files" : "Gizli dosyaları görüntüle",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 3e75c5dc87a..c9c922bf523 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"",
"Upload cancelled." : "上传已取消",
"…" : "…",
+ "Processing files …" : "文件处理中…",
"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}\" 不存在",
@@ -28,6 +29,7 @@ OC.L10N.register(
"Actions" : "操作",
"Rename" : "重命名",
"Copy" : "复制",
+ "Choose target folder" : "选择目标文件夹",
"Disconnect storage" : "断开存储链接",
"Unshare" : "取消共享",
"Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index a914fd2d93c..70b4a887b9d 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -14,6 +14,7 @@
"Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"",
"Upload cancelled." : "上传已取消",
"…" : "…",
+ "Processing files …" : "文件处理中…",
"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}\" 不存在",
@@ -26,6 +27,7 @@
"Actions" : "操作",
"Rename" : "重命名",
"Copy" : "复制",
+ "Choose target folder" : "选择目标文件夹",
"Disconnect storage" : "断开存储链接",
"Unshare" : "取消共享",
"Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息",
diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php
index 9443b9776ae..3085b72ac7a 100644
--- a/apps/files/lib/Controller/ApiController.php
+++ b/apps/files/lib/Controller/ApiController.php
@@ -38,6 +38,7 @@ use OCP\Files\NotFoundException;
use OCP\IConfig;
use OCP\IRequest;
use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\FileDisplayResponse;
use OCP\AppFramework\Http\Response;
use OCA\Files\Service\TagService;
@@ -268,6 +269,28 @@ class ApiController extends Controller {
}
/**
+ * Toggle default for files grid view
+ *
+ * @NoAdminRequired
+ *
+ * @param bool $show
+ */
+ public function showGridView($show) {
+ $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'show_grid', (int)$show);
+ return new Response();
+ }
+
+ /**
+ * Get default settings for the grid view
+ *
+ * @NoAdminRequired
+ */
+ public function getGridView() {
+ $status = $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'show_grid', '1') === '1';
+ return new JSONResponse(['gridview' => $status]);
+ }
+
+ /**
* Toggle default for showing/hiding xxx folder
*
* @NoAdminRequired
@@ -292,5 +315,17 @@ class ApiController extends Controller {
return $response;
}
+ /**
+ * Get sorting-order for custom sorting
+ *
+ * @NoAdminRequired
+ *
+ * @param String
+ * @return String
+ */
+ public function getNodeType($folderpath) {
+ $node = $this->userFolder->get($folderpath);
+ return $node->getType();
+ }
}
diff --git a/apps/files/list.php b/apps/files/list.php
index 93044d4c587..f18dc5964b8 100644
--- a/apps/files/list.php
+++ b/apps/files/list.php
@@ -22,11 +22,14 @@
*/
$config = \OC::$server->getConfig();
+$userSession = \OC::$server->getUserSession();
// TODO: move this to the generated config.js
$publicUploadEnabled = $config->getAppValue('core', 'shareapi_allow_public_upload', 'yes');
+$showgridview = $config->getUserValue($userSession->getUser()->getUID(), 'files', 'show_grid', true);
// renders the controls and table headers template
$tmpl = new OCP\Template('files', 'list', '');
$tmpl->assign('publicUploadEnabled', $publicUploadEnabled);
+$tmpl->assign('showgridview', $showgridview);
$tmpl->printPage();
diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php
index 9cae72a176f..27403594368 100644
--- a/apps/files/templates/list.php
+++ b/apps/files/templates/list.php
@@ -24,6 +24,10 @@
<?php endif;?>
<input type="hidden" class="max_human_file_size"
value="(max <?php isset($_['uploadMaxHumanFilesize']) ? p($_['uploadMaxHumanFilesize']) : ''; ?>)">
+ <input type="checkbox" class="hidden-visually" id="showgridview"
+ <?php if($_['showgridview']) { ?>checked="checked" <?php } ?>/>
+ <label id="view-toggle" for="showgridview" class="button <?php p($_['showgridview'] ? 'icon-toggle-filelist' : 'icon-toggle-pictures') ?>"
+ title="<?php p($l->t('Toggle grid view'))?>"></label>
</div>
<div id="emptycontent" class="hidden">
@@ -38,7 +42,7 @@
<p></p>
</div>
-<table id="filestable" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="32" data-preview-y="32">
+<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="250" data-preview-y="250">
<thead>
<tr>
<th id="headerSelection" class="hidden column-selection">
diff --git a/apps/files/templates/recentlist.php b/apps/files/templates/recentlist.php
index cfdb95c80a0..4c269c20256 100644
--- a/apps/files/templates/recentlist.php
+++ b/apps/files/templates/recentlist.php
@@ -11,7 +11,7 @@
<p></p>
</div>
-<table id="filestable">
+<table id="filestable" class="list-container view-grid">
<thead>
<tr>
<th id='headerName' class="hidden column-name">
diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php
index 78adb21922f..a99607ea642 100644
--- a/apps/files/templates/simplelist.php
+++ b/apps/files/templates/simplelist.php
@@ -13,7 +13,7 @@
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
<p></p>
</div>
-<table id="filestable">
+<table id="filestable" class="list-container view-grid">
<thead>
<tr>
<th id='headerName' class="hidden column-name">
diff --git a/apps/files/tests/js/favoritesfilelistspec.js b/apps/files/tests/js/favoritesfilelistspec.js
index d1421c84ee2..5a206ca4dec 100644
--- a/apps/files/tests/js/favoritesfilelistspec.js
+++ b/apps/files/tests/js/favoritesfilelistspec.js
@@ -25,7 +25,7 @@ describe('OCA.Files.FavoritesFileList tests', function() {
'</div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead><tr>' +
'<th id="headerName" class="hidden column-name">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
diff --git a/apps/files/tests/js/fileUploadSpec.js b/apps/files/tests/js/fileUploadSpec.js
index 6dde2734f1d..ca88461fafb 100644
--- a/apps/files/tests/js/fileUploadSpec.js
+++ b/apps/files/tests/js/fileUploadSpec.js
@@ -117,7 +117,7 @@ describe('OC.Upload tests', function() {
beforeEach(function() {
$('#testArea').append(
'<div id="tableContainer">' +
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead><tr>' +
'<th id="headerName" class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js
index 00d13859b5b..024993b310d 100644
--- a/apps/files/tests/js/fileactionsSpec.js
+++ b/apps/files/tests/js/fileactionsSpec.js
@@ -28,7 +28,7 @@ describe('OCA.Files.FileActions tests', function() {
var $body = $('#testArea');
$body.append('<input type="hidden" id="dir" value="/subdir"></input>');
$body.append('<input type="hidden" id="permissions" value="31"></input>');
- $body.append('<table id="filestable"><tbody id="fileList"></tbody></table>');
+ $body.append('<table id="filestable" class="list-container view-grid"><tbody id="fileList"></tbody></table>');
// dummy files table
fileActions = new OCA.Files.FileActions();
fileActions.registerAction({
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 04102a84754..961761c3e86 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -88,7 +88,7 @@ describe('OCA.Files.FileList tests', function() {
'<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead><tr>' +
'<th id="headerName" class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all checkbox">' +
diff --git a/apps/files_external/l10n/ast.js b/apps/files_external/l10n/ast.js
index 2ed182bec26..c0a158059a9 100644
--- a/apps/files_external/l10n/ast.js
+++ b/apps/files_external/l10n/ast.js
@@ -11,6 +11,9 @@ OC.L10N.register(
"Error generating key pair" : "Fallu xenerando'l par de claves",
"All users. Type to select user or group." : "Tolos usuarios. Escribe pa seleccionar usuariu o grupu.",
"(group)" : "(grupu)",
+ "Enable encryption" : "Habilitar cifráu",
+ "Never" : "Enxamás",
+ "Delete" : "Desaniciar",
"Delete storage?" : "¿Desaniciar almacenamientu?",
"Saved" : "Guardáu",
"Saving..." : "Guardando...",
@@ -62,8 +65,6 @@ OC.L10N.register(
"Name" : "Nome",
"Storage type" : "Triba d'almacenamientu",
"Scope" : "Ámbitu",
- "Enable encryption" : "Habilitar cifráu",
- "Never" : "Enxamás",
"Folder name" : "Nome de la carpeta",
"External storage" : "Almacenamientu esternu",
"Authentication" : "Autenticación",
@@ -74,7 +75,6 @@ OC.L10N.register(
"OpenStack" : "OpenStack",
"No external storage configured" : "Nun se configuraron almacenamientos esternos",
"You can add external storages in the personal settings" : "Pues amestar almacenamientos enternos nos axustes personales",
- "Delete" : "Desaniciar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamientu esternu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/ast.json b/apps/files_external/l10n/ast.json
index 376457ecfdc..d737b3cfa53 100644
--- a/apps/files_external/l10n/ast.json
+++ b/apps/files_external/l10n/ast.json
@@ -9,6 +9,9 @@
"Error generating key pair" : "Fallu xenerando'l par de claves",
"All users. Type to select user or group." : "Tolos usuarios. Escribe pa seleccionar usuariu o grupu.",
"(group)" : "(grupu)",
+ "Enable encryption" : "Habilitar cifráu",
+ "Never" : "Enxamás",
+ "Delete" : "Desaniciar",
"Delete storage?" : "¿Desaniciar almacenamientu?",
"Saved" : "Guardáu",
"Saving..." : "Guardando...",
@@ -60,8 +63,6 @@
"Name" : "Nome",
"Storage type" : "Triba d'almacenamientu",
"Scope" : "Ámbitu",
- "Enable encryption" : "Habilitar cifráu",
- "Never" : "Enxamás",
"Folder name" : "Nome de la carpeta",
"External storage" : "Almacenamientu esternu",
"Authentication" : "Autenticación",
@@ -72,7 +73,6 @@
"OpenStack" : "OpenStack",
"No external storage configured" : "Nun se configuraron almacenamientos esternos",
"You can add external storages in the personal settings" : "Pues amestar almacenamientos enternos nos axustes personales",
- "Delete" : "Desaniciar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamientu esternu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js
index 647e8952b11..58b70b2cb66 100644
--- a/apps/files_external/l10n/ca.js
+++ b/apps/files_external/l10n/ca.js
@@ -9,6 +9,13 @@ OC.L10N.register(
"Error generating key pair" : "Error en generar el parell de claus",
"All users. Type to select user or group." : "Tots els usuaris. Escriu per seleccionar un usuari o grup.",
"(group)" : "(grup)",
+ "Enable encryption" : "Habilitar xifrat",
+ "Enable previews" : "Habilitar vistes prèvies",
+ "Enable sharing" : "Habilita la compartició",
+ "Check for changes" : "Comproveu si hi ha canvis",
+ "Never" : "Mai",
+ "Once every direct access" : "Un cop cada accés directe",
+ "Delete" : "Esborra",
"Admin defined" : "Administrador definit",
"Delete storage?" : "Esborro l'emmagatzematge?",
"Saved" : "Desat",
@@ -61,12 +68,6 @@ OC.L10N.register(
"Name" : "Nom",
"Storage type" : "Tipus d'emmagatzematge",
"Scope" : "Abast",
- "Enable encryption" : "Habilitar xifrat",
- "Enable previews" : "Habilitar vistes prèvies",
- "Enable sharing" : "Habilita la compartició",
- "Check for changes" : "Comproveu si hi ha canvis",
- "Never" : "Mai",
- "Once every direct access" : "Un cop cada accés directe",
"Folder name" : "Nom de la carpeta",
"External storage" : "Emmagatzematge extern",
"Authentication" : "Autenticació",
@@ -76,7 +77,6 @@ OC.L10N.register(
"Advanced settings" : "Configuració avançada",
"No external storage configured" : "Sense emmagatzematge extern configurat",
"You can add external storages in the personal settings" : "Pot agregar emmagatzematges externs en la configuració personal",
- "Delete" : "Esborra",
"Allow users to mount the following external storage" : "Permet als usuaris muntar els dispositius externs següents"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json
index 86dcc8bade9..b3a8439eb3f 100644
--- a/apps/files_external/l10n/ca.json
+++ b/apps/files_external/l10n/ca.json
@@ -7,6 +7,13 @@
"Error generating key pair" : "Error en generar el parell de claus",
"All users. Type to select user or group." : "Tots els usuaris. Escriu per seleccionar un usuari o grup.",
"(group)" : "(grup)",
+ "Enable encryption" : "Habilitar xifrat",
+ "Enable previews" : "Habilitar vistes prèvies",
+ "Enable sharing" : "Habilita la compartició",
+ "Check for changes" : "Comproveu si hi ha canvis",
+ "Never" : "Mai",
+ "Once every direct access" : "Un cop cada accés directe",
+ "Delete" : "Esborra",
"Admin defined" : "Administrador definit",
"Delete storage?" : "Esborro l'emmagatzematge?",
"Saved" : "Desat",
@@ -59,12 +66,6 @@
"Name" : "Nom",
"Storage type" : "Tipus d'emmagatzematge",
"Scope" : "Abast",
- "Enable encryption" : "Habilitar xifrat",
- "Enable previews" : "Habilitar vistes prèvies",
- "Enable sharing" : "Habilita la compartició",
- "Check for changes" : "Comproveu si hi ha canvis",
- "Never" : "Mai",
- "Once every direct access" : "Un cop cada accés directe",
"Folder name" : "Nom de la carpeta",
"External storage" : "Emmagatzematge extern",
"Authentication" : "Autenticació",
@@ -74,7 +75,6 @@
"Advanced settings" : "Configuració avançada",
"No external storage configured" : "Sense emmagatzematge extern configurat",
"You can add external storages in the personal settings" : "Pot agregar emmagatzematges externs en la configuració personal",
- "Delete" : "Esborra",
"Allow users to mount the following external storage" : "Permet als usuaris muntar els dispositius externs següents"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js
index 20dc3614b9b..6b7e69b806d 100644
--- a/apps/files_external/l10n/cs.js
+++ b/apps/files_external/l10n/cs.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Všichni uživatelé. Začněte psát pro výběr uživatelů a skupin.",
"(group)" : "(skupina)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD kódováním (pomalé)",
+ "Enable encryption" : "Povolit šifrování",
+ "Enable previews" : "Povolit náhledy",
+ "Enable sharing" : "Povolit sdílení",
+ "Check for changes" : "Zkontrolovat změny",
+ "Never" : "Nikdy",
+ "Once every direct access" : "Jednou pro každý přímý přístup",
+ "Read only" : "Pouze pro čtení",
+ "Delete" : "Smazat",
"Admin defined" : "Nastaveno správcem",
"Are you sure you want to delete this external storage?" : "Opravdu chcete smazat toto vnější úložiště?",
"Delete storage?" : "Odstranit úložiště?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Časový limit požadavku (sekundy)",
"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 podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Požádejte svého správce systému ať ji nainstaluje.",
"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 podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Požádejte svého správce systému ať ji nainstaluje.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ není nainstalované. Připojení %2$s proto není možné. Požádejte svého správce systémů o instalaci.",
"External storage support" : "Podpora Externího úložiště",
"Adds basic external storage support" : "Přidá základní podporu vnějšího úložiště",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Tato aplikace umožňuje správcům nastavit propojení na poskytovatele vnějších úložišť, jako například FTP servery, S3 nebo SWIFT objektová úložiště, Google Drive, Dropbox, ostatní Nextcloud servery, WebDAV servery a další. Správci mohou zvolit které typy úložiště zapnout a mohou je připojit pro uživatele, skupinu nebo celý systém. Uživatelé uvidí novou složku v jejich kořenové Nextcloud složce, do které mohou přistupovat a používat jako kteroukoli jinou Nextcloud složku. Vnější úložiště také umožňuje uživatelům sdílet na něm uložené soubory. V takových případech jsou použity přihlašovací údaje vlastníka souboru když si příjemce vyžádá soubor z vnějšího úložiště, čímž je zajištěno že příjemce může přistupovat ke sdílenému souboru.\n\nVnější úložiště je možné nastavit pomocí webového rozhraní nebo z příkazového řádku. Tato druhá možnost poskytuje pokročilému uživateli více přizpůsobivosti pro nastavování vícero připojení vnějších úložišť a nastavení priorit připojování. Další informace jsou k dispozici v dokumentaci k vnějším úložištím ve webovém rozhraní a dokumentaci k souboru s nastaveními pro vnější úložiště.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Název",
"Storage type" : "Typ úložiště",
"Scope" : "Rozsah",
- "Enable encryption" : "Povolit šifrování",
- "Enable previews" : "Povolit náhledy",
- "Enable sharing" : "Povolit sdílení",
- "Check for changes" : "Zkontrolovat změny",
- "Never" : "Nikdy",
- "Once every direct access" : "Jednou pro každý přímý přístup",
- "Read only" : "Pouze pro čtení",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externí úložiště umožňuje připojit úložiště externích služeb a zařízení jako vedlejší úložná zařízení pro Nextcloud. Je také možné umožnit uživatelům připojovat jejich vlastní externí úložiště.",
"Folder name" : "Název adresáře",
"External storage" : "Externí úložiště",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Tato aplikace umožňuje správcům nastavit propojení na poskytovatele vnějších úložišť, jako například FTP servery, S3 nebo SWIFT objektová úložiště, Google Drive, Dropbox, ostatní Nextcloud servery, WebDAV servery a další. Správci mohou zvolit které typy úložiště zapnout a mohou je připojit pro uživatele, skupinu nebo celý systém. Uživatelé uvidí novou složku v jejich kořenové Nextcloud složce, do které mohou přistupovat a používat jako kteroukoli jinou Nextcloud složku. Vnější úložiště také umožňuje uživatelům sdílet na něm uložené soubory. V takových případech jsou použity přihlašovací údaje vlastníka souboru když si příjemce vyžádá soubor z vnějšího úložiště, čímž je zajištěno že příjemce může přistupovat ke sdílenému souboru.\n\nVnější úložiště je možné nastavit pomocí webového rozhraní nebo z příkazového řádku. Tato druhá možnost poskytuje pokročilému uživateli více přizpůsobivosti pro nastavování vícero připojení vnějších úložišť a nastavení priorit připojování. Další informace jsou k dispozici v dokumentaci k vnějším úložištím ve webovém rozhraní a dokumentaci k souboru s nastaveními pro vnější úložiště.",
"No external storage configured" : "Není nastavené žádné externí úložiště",
"You can add external storages in the personal settings" : "Externí úložiště můžete přidat v osobních nastaveních",
- "Delete" : "Smazat",
"Allow users to mount the following external storage" : "Povolit uživatelů připojit následující externí úložiště",
"Are you sure you want to delete this external storage" : "Opravdu chcete odstranit toto externí úložiště"
},
diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json
index 383b799090f..af636bb83df 100644
--- a/apps/files_external/l10n/cs.json
+++ b/apps/files_external/l10n/cs.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Všichni uživatelé. Začněte psát pro výběr uživatelů a skupin.",
"(group)" : "(skupina)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD kódováním (pomalé)",
+ "Enable encryption" : "Povolit šifrování",
+ "Enable previews" : "Povolit náhledy",
+ "Enable sharing" : "Povolit sdílení",
+ "Check for changes" : "Zkontrolovat změny",
+ "Never" : "Nikdy",
+ "Once every direct access" : "Jednou pro každý přímý přístup",
+ "Read only" : "Pouze pro čtení",
+ "Delete" : "Smazat",
"Admin defined" : "Nastaveno správcem",
"Are you sure you want to delete this external storage?" : "Opravdu chcete smazat toto vnější úložiště?",
"Delete storage?" : "Odstranit úložiště?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Časový limit požadavku (sekundy)",
"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 podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Požádejte svého správce systému ať ji nainstaluje.",
"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 podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Požádejte svého správce systému ať ji nainstaluje.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ není nainstalované. Připojení %2$s proto není možné. Požádejte svého správce systémů o instalaci.",
"External storage support" : "Podpora Externího úložiště",
"Adds basic external storage support" : "Přidá základní podporu vnějšího úložiště",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Tato aplikace umožňuje správcům nastavit propojení na poskytovatele vnějších úložišť, jako například FTP servery, S3 nebo SWIFT objektová úložiště, Google Drive, Dropbox, ostatní Nextcloud servery, WebDAV servery a další. Správci mohou zvolit které typy úložiště zapnout a mohou je připojit pro uživatele, skupinu nebo celý systém. Uživatelé uvidí novou složku v jejich kořenové Nextcloud složce, do které mohou přistupovat a používat jako kteroukoli jinou Nextcloud složku. Vnější úložiště také umožňuje uživatelům sdílet na něm uložené soubory. V takových případech jsou použity přihlašovací údaje vlastníka souboru když si příjemce vyžádá soubor z vnějšího úložiště, čímž je zajištěno že příjemce může přistupovat ke sdílenému souboru.\n\nVnější úložiště je možné nastavit pomocí webového rozhraní nebo z příkazového řádku. Tato druhá možnost poskytuje pokročilému uživateli více přizpůsobivosti pro nastavování vícero připojení vnějších úložišť a nastavení priorit připojování. Další informace jsou k dispozici v dokumentaci k vnějším úložištím ve webovém rozhraní a dokumentaci k souboru s nastaveními pro vnější úložiště.",
@@ -108,13 +117,6 @@
"Name" : "Název",
"Storage type" : "Typ úložiště",
"Scope" : "Rozsah",
- "Enable encryption" : "Povolit šifrování",
- "Enable previews" : "Povolit náhledy",
- "Enable sharing" : "Povolit sdílení",
- "Check for changes" : "Zkontrolovat změny",
- "Never" : "Nikdy",
- "Once every direct access" : "Jednou pro každý přímý přístup",
- "Read only" : "Pouze pro čtení",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externí úložiště umožňuje připojit úložiště externích služeb a zařízení jako vedlejší úložná zařízení pro Nextcloud. Je také možné umožnit uživatelům připojovat jejich vlastní externí úložiště.",
"Folder name" : "Název adresáře",
"External storage" : "Externí úložiště",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Tato aplikace umožňuje správcům nastavit propojení na poskytovatele vnějších úložišť, jako například FTP servery, S3 nebo SWIFT objektová úložiště, Google Drive, Dropbox, ostatní Nextcloud servery, WebDAV servery a další. Správci mohou zvolit které typy úložiště zapnout a mohou je připojit pro uživatele, skupinu nebo celý systém. Uživatelé uvidí novou složku v jejich kořenové Nextcloud složce, do které mohou přistupovat a používat jako kteroukoli jinou Nextcloud složku. Vnější úložiště také umožňuje uživatelům sdílet na něm uložené soubory. V takových případech jsou použity přihlašovací údaje vlastníka souboru když si příjemce vyžádá soubor z vnějšího úložiště, čímž je zajištěno že příjemce může přistupovat ke sdílenému souboru.\n\nVnější úložiště je možné nastavit pomocí webového rozhraní nebo z příkazového řádku. Tato druhá možnost poskytuje pokročilému uživateli více přizpůsobivosti pro nastavování vícero připojení vnějších úložišť a nastavení priorit připojování. Další informace jsou k dispozici v dokumentaci k vnějším úložištím ve webovém rozhraní a dokumentaci k souboru s nastaveními pro vnější úložiště.",
"No external storage configured" : "Není nastavené žádné externí úložiště",
"You can add external storages in the personal settings" : "Externí úložiště můžete přidat v osobních nastaveních",
- "Delete" : "Smazat",
"Allow users to mount the following external storage" : "Povolit uživatelů připojit následující externí úložiště",
"Are you sure you want to delete this external storage" : "Opravdu chcete odstranit toto externí úložiště"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
diff --git a/apps/files_external/l10n/da.js b/apps/files_external/l10n/da.js
index 6b8b4726871..1eafc483c8d 100644
--- a/apps/files_external/l10n/da.js
+++ b/apps/files_external/l10n/da.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Alle brugere. Indtast for at vælge bruger eller gruppe.",
"(group)" : "(gruppe)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)",
+ "Enable encryption" : "Slå kryptering til",
+ "Enable previews" : "Slå forhåndsvisninger til",
+ "Enable sharing" : "Slå deling til",
+ "Check for changes" : "Tjek for ændringer",
+ "Never" : "Aldrig",
+ "Once every direct access" : "Kun ved hver direkte tilgang",
+ "Delete" : "Slet",
"Admin defined" : "Bestemt af administrator",
"Delete storage?" : "Slet lager?",
"Saved" : "Gemt",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Navn",
"Storage type" : "Lagertype",
"Scope" : "Anvendelsesområde",
- "Enable encryption" : "Slå kryptering til",
- "Enable previews" : "Slå forhåndsvisninger til",
- "Enable sharing" : "Slå deling til",
- "Check for changes" : "Tjek for ændringer",
- "Never" : "Aldrig",
- "Once every direct access" : "Kun ved hver direkte tilgang",
"Folder name" : "Mappenavn",
"External storage" : "Eksternt lager",
"Authentication" : "Godkendelse",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ikke installeret. Monteringen af %s er ikke mulig. Anmod din systemadministrator om at installere det.",
"No external storage configured" : "Der er ingen konfigurerede eksterne lagre",
"You can add external storages in the personal settings" : "Du kan tilføje eksterne lagerenheder i de personlige indstillinger",
- "Delete" : "Slet",
"Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager",
"Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lager?"
},
diff --git a/apps/files_external/l10n/da.json b/apps/files_external/l10n/da.json
index 33fb072d13c..7c6108efd72 100644
--- a/apps/files_external/l10n/da.json
+++ b/apps/files_external/l10n/da.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Alle brugere. Indtast for at vælge bruger eller gruppe.",
"(group)" : "(gruppe)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)",
+ "Enable encryption" : "Slå kryptering til",
+ "Enable previews" : "Slå forhåndsvisninger til",
+ "Enable sharing" : "Slå deling til",
+ "Check for changes" : "Tjek for ændringer",
+ "Never" : "Aldrig",
+ "Once every direct access" : "Kun ved hver direkte tilgang",
+ "Delete" : "Slet",
"Admin defined" : "Bestemt af administrator",
"Delete storage?" : "Slet lager?",
"Saved" : "Gemt",
@@ -97,12 +104,6 @@
"Name" : "Navn",
"Storage type" : "Lagertype",
"Scope" : "Anvendelsesområde",
- "Enable encryption" : "Slå kryptering til",
- "Enable previews" : "Slå forhåndsvisninger til",
- "Enable sharing" : "Slå deling til",
- "Check for changes" : "Tjek for ændringer",
- "Never" : "Aldrig",
- "Once every direct access" : "Kun ved hver direkte tilgang",
"Folder name" : "Mappenavn",
"External storage" : "Eksternt lager",
"Authentication" : "Godkendelse",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ikke installeret. Monteringen af %s er ikke mulig. Anmod din systemadministrator om at installere det.",
"No external storage configured" : "Der er ingen konfigurerede eksterne lagre",
"You can add external storages in the personal settings" : "Du kan tilføje eksterne lagerenheder i de personlige indstillinger",
- "Delete" : "Slet",
"Allow users to mount the following external storage" : "Tillad brugere at montere følgende som eksternt lager",
"Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lager?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js
index c633f77ee00..b7189189cd7 100644
--- a/apps/files_external/l10n/de.js
+++ b/apps/files_external/l10n/de.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.",
"(group)" : "(group)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
+ "Enable encryption" : "Verschlüsselung aktivieren",
+ "Enable previews" : "Vorschau aktivieren",
+ "Enable sharing" : "Teilen aktivieren",
+ "Check for changes" : "Auf Änderungen prüfen",
+ "Never" : "Nie",
+ "Once every direct access" : "Einmal bei jedem Direktzugriff",
+ "Read only" : "Schreibgeschützt",
+ "Delete" : "Löschen",
"Admin defined" : "Vom Administrator festgelegt",
"Are you sure you want to delete this external storage?" : "Möchtest du wirklich diesen externen Speicher löschen?",
"Delete storage?" : "Speicher löschen?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende Dich zur Installation an den Administrator.",
"External storage support" : "Unterstützung für externen Speicher",
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Name",
"Storage type" : "Speichertyp",
"Scope" : "Anwendungsbereich",
- "Enable encryption" : "Verschlüsselung aktivieren",
- "Enable previews" : "Vorschau aktivieren",
- "Enable sharing" : "Teilen aktivieren",
- "Check for changes" : "Auf Änderungen prüfen",
- "Never" : "Nie",
- "Once every direct access" : "Einmal bei jedem Direktzugriff",
- "Read only" : "Schreibgeschützt",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
"External storage" : "Externer Speicher",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
"No external storage configured" : "Kein externer Speicher konfiguriert",
"You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden",
- "Delete" : "Löschen",
"Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:",
"Are you sure you want to delete this external storage" : "Möchtest Du wirklich diesen externen Speicher löschen?"
},
diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json
index 8d0e081e43e..dd5837b46f4 100644
--- a/apps/files_external/l10n/de.json
+++ b/apps/files_external/l10n/de.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.",
"(group)" : "(group)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
+ "Enable encryption" : "Verschlüsselung aktivieren",
+ "Enable previews" : "Vorschau aktivieren",
+ "Enable sharing" : "Teilen aktivieren",
+ "Check for changes" : "Auf Änderungen prüfen",
+ "Never" : "Nie",
+ "Once every direct access" : "Einmal bei jedem Direktzugriff",
+ "Read only" : "Schreibgeschützt",
+ "Delete" : "Löschen",
"Admin defined" : "Vom Administrator festgelegt",
"Are you sure you want to delete this external storage?" : "Möchtest du wirklich diesen externen Speicher löschen?",
"Delete storage?" : "Speicher löschen?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende Dich zur Installation an den Administrator.",
"External storage support" : "Unterstützung für externen Speicher",
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
@@ -108,13 +117,6 @@
"Name" : "Name",
"Storage type" : "Speichertyp",
"Scope" : "Anwendungsbereich",
- "Enable encryption" : "Verschlüsselung aktivieren",
- "Enable previews" : "Vorschau aktivieren",
- "Enable sharing" : "Teilen aktivieren",
- "Check for changes" : "Auf Änderungen prüfen",
- "Never" : "Nie",
- "Once every direct access" : "Einmal bei jedem Direktzugriff",
- "Read only" : "Schreibgeschützt",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
"External storage" : "Externer Speicher",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
"No external storage configured" : "Kein externer Speicher konfiguriert",
"You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden",
- "Delete" : "Löschen",
"Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:",
"Are you sure you want to delete this external storage" : "Möchtest Du wirklich diesen externen Speicher löschen?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index 19bfb9ad0fc..c13bb4c54ba 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.",
"(group)" : "(group)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
+ "Enable encryption" : "Verschlüsselung aktivieren",
+ "Enable previews" : "Vorschau aktivieren",
+ "Enable sharing" : "Teilen aktivieren",
+ "Check for changes" : "Auf Änderungen prüfen",
+ "Never" : "Nie",
+ "Once every direct access" : "Einmal bei jedem Direktzugriff",
+ "Read only" : "Schreibgeschützt",
+ "Delete" : "Löschen",
"Admin defined" : "Vom Administrator festgelegt",
"Are you sure you want to delete this external storage?" : "Möchten Sie wirklich diesen externen Speicher löschen?",
"Delete storage?" : "Speicher löschen?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.",
"External storage support" : "Unterstützung für externen Speicher",
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Name",
"Storage type" : "Speichertyp",
"Scope" : "Anwendungsbereich",
- "Enable encryption" : "Verschlüsselung aktivieren",
- "Enable previews" : "Vorschau aktivieren",
- "Enable sharing" : "Teilen aktivieren",
- "Check for changes" : "Auf Änderungen prüfen",
- "Never" : "Nie",
- "Once every direct access" : "Einmal bei jedem Direktzugriff",
- "Read only" : "Schreibgeschützt",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
"External storage" : "Externer Speicher",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
"No external storage configured" : "Kein externer Speicher konfiguriert",
"You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden",
- "Delete" : "Löschen",
"Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:",
"Are you sure you want to delete this external storage" : "Möchten Sie wirklich diesen externen Speicher löschen?"
},
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index c1dfe20eb49..4cf369f2465 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.",
"(group)" : "(group)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
+ "Enable encryption" : "Verschlüsselung aktivieren",
+ "Enable previews" : "Vorschau aktivieren",
+ "Enable sharing" : "Teilen aktivieren",
+ "Check for changes" : "Auf Änderungen prüfen",
+ "Never" : "Nie",
+ "Once every direct access" : "Einmal bei jedem Direktzugriff",
+ "Read only" : "Schreibgeschützt",
+ "Delete" : "Löschen",
"Admin defined" : "Vom Administrator festgelegt",
"Are you sure you want to delete this external storage?" : "Möchten Sie wirklich diesen externen Speicher löschen?",
"Delete storage?" : "Speicher löschen?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.",
"External storage support" : "Unterstützung für externen Speicher",
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
@@ -108,13 +117,6 @@
"Name" : "Name",
"Storage type" : "Speichertyp",
"Scope" : "Anwendungsbereich",
- "Enable encryption" : "Verschlüsselung aktivieren",
- "Enable previews" : "Vorschau aktivieren",
- "Enable sharing" : "Teilen aktivieren",
- "Check for changes" : "Auf Änderungen prüfen",
- "Never" : "Nie",
- "Once every direct access" : "Einmal bei jedem Direktzugriff",
- "Read only" : "Schreibgeschützt",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
"External storage" : "Externer Speicher",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.",
"No external storage configured" : "Kein externer Speicher konfiguriert",
"You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden",
- "Delete" : "Löschen",
"Allow users to mount the following external storage" : "Benutzern erlauben, den folgenden externen Speicher einzubinden:",
"Are you sure you want to delete this external storage" : "Möchten Sie wirklich diesen externen Speicher löschen?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js
index d6a6bcb81f6..9ea13532e4a 100644
--- a/apps/files_external/l10n/el.js
+++ b/apps/files_external/l10n/el.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Όλοι οι χρήστες. Πληκτρολογήστε για να επιλέξετε χρήστη ή ομάδα.",
"(group)" : "(ομάδα)",
"Compatibility with Mac NFD encoding (slow)" : "Συμβατότητα με Mac NFD κωδικόποιηση (αργό) ",
+ "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης",
+ "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων",
+ "Enable sharing" : "Ενεργοποίηση διαμοιρασμού",
+ "Check for changes" : "Έλεγχος για αλλαγές",
+ "Never" : "Ποτέ",
+ "Once every direct access" : "Σε κάθε απευθείας πρόσβαση",
+ "Read only" : "Μόνο για ανάγνωση",
+ "Delete" : "Διαγραφή",
"Admin defined" : "Ορίσθηκε διαχειριστής ",
"Delete storage?" : "Διαγραφή αποθηκευτικού χώρου;",
"Saved" : "Αποθηκεύτηκαν",
@@ -101,13 +109,6 @@ OC.L10N.register(
"Name" : "Όνομα",
"Storage type" : "Τύπος αποθηκευτικού χώρου",
"Scope" : "Εύρος",
- "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης",
- "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων",
- "Enable sharing" : "Ενεργοποίηση διαμοιρασμού",
- "Check for changes" : "Έλεγχος για αλλαγές",
- "Never" : "Ποτέ",
- "Once every direct access" : "Σε κάθε απευθείας πρόσβαση",
- "Read only" : "Μόνο για ανάγνωση",
"Folder name" : "Όνομα φακέλου",
"External storage" : "Εξωτερική αποθήκευση",
"Authentication" : "Πιστοποίηση",
@@ -121,7 +122,6 @@ OC.L10N.register(
"\"%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" : "Μπορείτε να προσθέσετε εξωτερικά μέσα αποθήκευσης στις προσωπικές ρυθμίσεις",
- "Delete" : "Διαγραφή",
"Allow users to mount the following external storage" : "Χορήγηση άδειας στους χρήστες να συνδέσουν τα παρακάτω εξωτερικά μέσα αποθήκευσης"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json
index c12f87e849a..dd76a5d7973 100644
--- a/apps/files_external/l10n/el.json
+++ b/apps/files_external/l10n/el.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Όλοι οι χρήστες. Πληκτρολογήστε για να επιλέξετε χρήστη ή ομάδα.",
"(group)" : "(ομάδα)",
"Compatibility with Mac NFD encoding (slow)" : "Συμβατότητα με Mac NFD κωδικόποιηση (αργό) ",
+ "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης",
+ "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων",
+ "Enable sharing" : "Ενεργοποίηση διαμοιρασμού",
+ "Check for changes" : "Έλεγχος για αλλαγές",
+ "Never" : "Ποτέ",
+ "Once every direct access" : "Σε κάθε απευθείας πρόσβαση",
+ "Read only" : "Μόνο για ανάγνωση",
+ "Delete" : "Διαγραφή",
"Admin defined" : "Ορίσθηκε διαχειριστής ",
"Delete storage?" : "Διαγραφή αποθηκευτικού χώρου;",
"Saved" : "Αποθηκεύτηκαν",
@@ -99,13 +107,6 @@
"Name" : "Όνομα",
"Storage type" : "Τύπος αποθηκευτικού χώρου",
"Scope" : "Εύρος",
- "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης",
- "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων",
- "Enable sharing" : "Ενεργοποίηση διαμοιρασμού",
- "Check for changes" : "Έλεγχος για αλλαγές",
- "Never" : "Ποτέ",
- "Once every direct access" : "Σε κάθε απευθείας πρόσβαση",
- "Read only" : "Μόνο για ανάγνωση",
"Folder name" : "Όνομα φακέλου",
"External storage" : "Εξωτερική αποθήκευση",
"Authentication" : "Πιστοποίηση",
@@ -119,7 +120,6 @@
"\"%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" : "Μπορείτε να προσθέσετε εξωτερικά μέσα αποθήκευσης στις προσωπικές ρυθμίσεις",
- "Delete" : "Διαγραφή",
"Allow users to mount the following external storage" : "Χορήγηση άδειας στους χρήστες να συνδέσουν τα παρακάτω εξωτερικά μέσα αποθήκευσης"
},"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 6744965df42..73555043098 100644
--- a/apps/files_external/l10n/en_GB.js
+++ b/apps/files_external/l10n/en_GB.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "All users. Type to select user or group.",
"(group)" : "(group)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)",
+ "Enable encryption" : "Enable encryption",
+ "Enable previews" : "Enable previews",
+ "Enable sharing" : "Enable sharing",
+ "Check for changes" : "Check for changes",
+ "Never" : "Never",
+ "Once every direct access" : "Once every direct access",
+ "Read only" : "Read only",
+ "Delete" : "Delete",
"Admin defined" : "Admin defined",
"Are you sure you want to delete this external storage?" : "Are you sure you want to delete this external storage?",
"Delete storage?" : "Delete storage?",
@@ -107,13 +115,6 @@ OC.L10N.register(
"Name" : "Name",
"Storage type" : "Storage type",
"Scope" : "Scope",
- "Enable encryption" : "Enable encryption",
- "Enable previews" : "Enable previews",
- "Enable sharing" : "Enable sharing",
- "Check for changes" : "Check for changes",
- "Never" : "Never",
- "Once every direct access" : "Once every direct access",
- "Read only" : "Read only",
"Folder name" : "Folder name",
"External storage" : "External storage",
"Authentication" : "Authentication",
@@ -135,7 +136,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
"No external storage configured" : "No external storage configured",
"You can add external storages in the personal settings" : "You can add external storages in the personal settings",
- "Delete" : "Delete",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage",
"Are you sure you want to delete this external storage" : "Are you sure you want to delete this external storage"
},
diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json
index e0edafc098c..00a6b8fa275 100644
--- a/apps/files_external/l10n/en_GB.json
+++ b/apps/files_external/l10n/en_GB.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "All users. Type to select user or group.",
"(group)" : "(group)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)",
+ "Enable encryption" : "Enable encryption",
+ "Enable previews" : "Enable previews",
+ "Enable sharing" : "Enable sharing",
+ "Check for changes" : "Check for changes",
+ "Never" : "Never",
+ "Once every direct access" : "Once every direct access",
+ "Read only" : "Read only",
+ "Delete" : "Delete",
"Admin defined" : "Admin defined",
"Are you sure you want to delete this external storage?" : "Are you sure you want to delete this external storage?",
"Delete storage?" : "Delete storage?",
@@ -105,13 +113,6 @@
"Name" : "Name",
"Storage type" : "Storage type",
"Scope" : "Scope",
- "Enable encryption" : "Enable encryption",
- "Enable previews" : "Enable previews",
- "Enable sharing" : "Enable sharing",
- "Check for changes" : "Check for changes",
- "Never" : "Never",
- "Once every direct access" : "Once every direct access",
- "Read only" : "Read only",
"Folder name" : "Folder name",
"External storage" : "External storage",
"Authentication" : "Authentication",
@@ -133,7 +134,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
"No external storage configured" : "No external storage configured",
"You can add external storages in the personal settings" : "You can add external storages in the personal settings",
- "Delete" : "Delete",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage",
"Are you sure you want to delete this external storage" : "Are you sure you want to delete this external storage"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js
index 3ca1741d530..e99a041057e 100644
--- a/apps/files_external/l10n/es.js
+++ b/apps/files_external/l10n/es.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Teclee para seleccionar un usuario o grupo.",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)",
+ "Enable encryption" : "Habilitar cifrado",
+ "Enable previews" : "Habilitar previsualizaciones",
+ "Enable sharing" : "Habilitar el uso compartido",
+ "Check for changes" : "Comprobar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Solo lectura",
+ "Delete" : "Eliminar",
"Admin defined" : "Admin definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro de querer eliminar el almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Tiempo agotado para petición (segundos)",
"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.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" No está installado. El montaje de %2$s no es posible. Por favor, pide a tu administrador del sistema que lo instale.",
"External storage support" : "Soporte de almacenamiento externo",
"Adds basic external storage support" : "Añade soporte básico de almacenamiento externo",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esta aplicación permite a los administradores configurar conexiones a proveedores externos de almacenamiento, como servidores FTP, almacenamientos de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento activar y pueden montar estas localizaciones de almacenamiento para un usuario, un grupo o el sistema entero. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que pueden acceder y que pueden usar como cualquier otra carpeta. El almacenamiento externo también permite a los usuarios compartir los archivos almacenados en estas localizaciones externas. En estos casos, se usan las credenciales para el dueño del archivos cuando el receptor pide el archivo del almacenamiento externo, asegurando así que el receptor puede acceder al archivo compartido.\n\nEl almacenamiento externo se puede configurar usando la GUI o con la línea de comandos. La segunda opción proporciona al usuario avanzado más flexibilidad para configurar montajes de almacenamientos externos en bloque y para configurar prioridades de montaje. Más información disponible en la documentación del almacenamiento externo y la documentación del archivo de configuración de almacenamiento externo.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Ámbito",
- "Enable encryption" : "Habilitar cifrado",
- "Enable previews" : "Habilitar previsualizaciones",
- "Enable sharing" : "Habilitar el uso compartido",
- "Check for changes" : "Comprobar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Solo lectura",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo te permite montar servicios y dispositivos de almacenamiento externo como dispositivos de almacenamiento secundarios de Nextcloud. También puedes permitir que los usuarios monten sus propios servicios de almacenamiento externos.",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esta aplicación permite a los administradores configurar conexiones a proveedores externos de almacenamiento, como servidores FTP, almacenamientos de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento activar y pueden montar estas localizaciones de almacenamiento para un usuario, un grupo o el sistema entero. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que pueden acceder y que pueden usar como cualquier otra carpeta. El almacenamiento externo también permite a los usuarios compartir los archivos almacenados en estas localizaciones externas. En estos casos, se usan las credenciales para el dueño del archivos cuando el receptor pide el archivo del almacenamiento externo, asegurando así que el receptor puede acceder al archivo compartido.\n\nEl almacenamiento externo se puede configurar usando la GUI o con la línea de comandos. La segunda opción proporciona al usuario avanzado más flexibilidad para configurar montajes de almacenamientos externos al por mayor y para configurar prioridades de montaje. Más información disponible en la documentación del almacenamiento externo y la documentación del archivo de configuración de almacenamiento externo.",
"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",
- "Delete" : "Eliminar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres eliminar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json
index 61a65c15af3..de071ff367b 100644
--- a/apps/files_external/l10n/es.json
+++ b/apps/files_external/l10n/es.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Teclee para seleccionar un usuario o grupo.",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)",
+ "Enable encryption" : "Habilitar cifrado",
+ "Enable previews" : "Habilitar previsualizaciones",
+ "Enable sharing" : "Habilitar el uso compartido",
+ "Check for changes" : "Comprobar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Solo lectura",
+ "Delete" : "Eliminar",
"Admin defined" : "Admin definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro de querer eliminar el almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Tiempo agotado para petición (segundos)",
"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.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" No está installado. El montaje de %2$s no es posible. Por favor, pide a tu administrador del sistema que lo instale.",
"External storage support" : "Soporte de almacenamiento externo",
"Adds basic external storage support" : "Añade soporte básico de almacenamiento externo",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esta aplicación permite a los administradores configurar conexiones a proveedores externos de almacenamiento, como servidores FTP, almacenamientos de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento activar y pueden montar estas localizaciones de almacenamiento para un usuario, un grupo o el sistema entero. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que pueden acceder y que pueden usar como cualquier otra carpeta. El almacenamiento externo también permite a los usuarios compartir los archivos almacenados en estas localizaciones externas. En estos casos, se usan las credenciales para el dueño del archivos cuando el receptor pide el archivo del almacenamiento externo, asegurando así que el receptor puede acceder al archivo compartido.\n\nEl almacenamiento externo se puede configurar usando la GUI o con la línea de comandos. La segunda opción proporciona al usuario avanzado más flexibilidad para configurar montajes de almacenamientos externos en bloque y para configurar prioridades de montaje. Más información disponible en la documentación del almacenamiento externo y la documentación del archivo de configuración de almacenamiento externo.",
@@ -108,13 +117,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Ámbito",
- "Enable encryption" : "Habilitar cifrado",
- "Enable previews" : "Habilitar previsualizaciones",
- "Enable sharing" : "Habilitar el uso compartido",
- "Check for changes" : "Comprobar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Solo lectura",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo te permite montar servicios y dispositivos de almacenamiento externo como dispositivos de almacenamiento secundarios de Nextcloud. También puedes permitir que los usuarios monten sus propios servicios de almacenamiento externos.",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esta aplicación permite a los administradores configurar conexiones a proveedores externos de almacenamiento, como servidores FTP, almacenamientos de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento activar y pueden montar estas localizaciones de almacenamiento para un usuario, un grupo o el sistema entero. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que pueden acceder y que pueden usar como cualquier otra carpeta. El almacenamiento externo también permite a los usuarios compartir los archivos almacenados en estas localizaciones externas. En estos casos, se usan las credenciales para el dueño del archivos cuando el receptor pide el archivo del almacenamiento externo, asegurando así que el receptor puede acceder al archivo compartido.\n\nEl almacenamiento externo se puede configurar usando la GUI o con la línea de comandos. La segunda opción proporciona al usuario avanzado más flexibilidad para configurar montajes de almacenamientos externos al por mayor y para configurar prioridades de montaje. Más información disponible en la documentación del almacenamiento externo y la documentación del archivo de configuración de almacenamiento externo.",
"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",
- "Delete" : "Eliminar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres eliminar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_419.js b/apps/files_external/l10n/es_419.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_419.js
+++ b/apps/files_external/l10n/es_419.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_419.json b/apps/files_external/l10n/es_419.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_419.json
+++ b/apps/files_external/l10n/es_419.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_AR.js b/apps/files_external/l10n/es_AR.js
index 2c1f38cfb8a..a3748944da4 100644
--- a/apps/files_external/l10n/es_AR.js
+++ b/apps/files_external/l10n/es_AR.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escriba para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Saved" : "Guardado",
"Saving..." : "Guardando...",
@@ -96,12 +103,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -114,7 +115,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Favor de solicitar a su administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Usted puede agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/es_AR.json b/apps/files_external/l10n/es_AR.json
index 691fe676e53..8cab1f57227 100644
--- a/apps/files_external/l10n/es_AR.json
+++ b/apps/files_external/l10n/es_AR.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escriba para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Saved" : "Guardado",
"Saving..." : "Guardando...",
@@ -94,12 +101,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -112,7 +113,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Favor de solicitar a su administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Usted puede agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/es_CL.js b/apps/files_external/l10n/es_CL.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_CL.js
+++ b/apps/files_external/l10n/es_CL.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_CL.json b/apps/files_external/l10n/es_CL.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_CL.json
+++ b/apps/files_external/l10n/es_CL.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_CO.js b/apps/files_external/l10n/es_CO.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_CO.js
+++ b/apps/files_external/l10n/es_CO.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_CO.json b/apps/files_external/l10n/es_CO.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_CO.json
+++ b/apps/files_external/l10n/es_CO.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_CR.js b/apps/files_external/l10n/es_CR.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_CR.js
+++ b/apps/files_external/l10n/es_CR.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_CR.json b/apps/files_external/l10n/es_CR.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_CR.json
+++ b/apps/files_external/l10n/es_CR.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_DO.js b/apps/files_external/l10n/es_DO.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_DO.js
+++ b/apps/files_external/l10n/es_DO.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_DO.json b/apps/files_external/l10n/es_DO.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_DO.json
+++ b/apps/files_external/l10n/es_DO.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_EC.js b/apps/files_external/l10n/es_EC.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_EC.js
+++ b/apps/files_external/l10n/es_EC.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_EC.json b/apps/files_external/l10n/es_EC.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_EC.json
+++ b/apps/files_external/l10n/es_EC.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_GT.js b/apps/files_external/l10n/es_GT.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_GT.js
+++ b/apps/files_external/l10n/es_GT.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_GT.json b/apps/files_external/l10n/es_GT.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_GT.json
+++ b/apps/files_external/l10n/es_GT.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_HN.js b/apps/files_external/l10n/es_HN.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_HN.js
+++ b/apps/files_external/l10n/es_HN.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_HN.json b/apps/files_external/l10n/es_HN.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_HN.json
+++ b/apps/files_external/l10n/es_HN.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_MX.js
+++ b/apps/files_external/l10n/es_MX.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_MX.json
+++ b/apps/files_external/l10n/es_MX.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_NI.js b/apps/files_external/l10n/es_NI.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_NI.js
+++ b/apps/files_external/l10n/es_NI.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_NI.json b/apps/files_external/l10n/es_NI.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_NI.json
+++ b/apps/files_external/l10n/es_NI.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_PA.js b/apps/files_external/l10n/es_PA.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_PA.js
+++ b/apps/files_external/l10n/es_PA.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_PA.json b/apps/files_external/l10n/es_PA.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_PA.json
+++ b/apps/files_external/l10n/es_PA.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_PE.js b/apps/files_external/l10n/es_PE.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_PE.js
+++ b/apps/files_external/l10n/es_PE.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_PE.json b/apps/files_external/l10n/es_PE.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_PE.json
+++ b/apps/files_external/l10n/es_PE.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_PR.js b/apps/files_external/l10n/es_PR.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_PR.js
+++ b/apps/files_external/l10n/es_PR.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_PR.json b/apps/files_external/l10n/es_PR.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_PR.json
+++ b/apps/files_external/l10n/es_PR.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_PY.js b/apps/files_external/l10n/es_PY.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_PY.js
+++ b/apps/files_external/l10n/es_PY.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_PY.json b/apps/files_external/l10n/es_PY.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_PY.json
+++ b/apps/files_external/l10n/es_PY.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_SV.js b/apps/files_external/l10n/es_SV.js
index a1cdb7bd522..b53ecd4cb1d 100644
--- a/apps/files_external/l10n/es_SV.js
+++ b/apps/files_external/l10n/es_SV.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -105,13 +113,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_SV.json b/apps/files_external/l10n/es_SV.json
index c7f8711a075..469e09c01f9 100644
--- a/apps/files_external/l10n/es_SV.json
+++ b/apps/files_external/l10n/es_SV.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Read only" : "Sólo lectura",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?",
"Delete storage?" : "¿Borrar almacenamiento?",
@@ -103,13 +111,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
- "Read only" : "Sólo lectura",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/es_UY.js b/apps/files_external/l10n/es_UY.js
index 5c9f4c29798..7ffc0ecc4a9 100644
--- a/apps/files_external/l10n/es_UY.js
+++ b/apps/files_external/l10n/es_UY.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},
diff --git a/apps/files_external/l10n/es_UY.json b/apps/files_external/l10n/es_UY.json
index 1ca5a2b7168..c77d61d1d57 100644
--- a/apps/files_external/l10n/es_UY.json
+++ b/apps/files_external/l10n/es_UY.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos los usuarios. Escribe para seleccionar el usuario o grupo",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)",
+ "Enable encryption" : "Habilitar encripción",
+ "Enable previews" : "Habilitar vistas previas",
+ "Enable sharing" : "Habilitar compartir",
+ "Check for changes" : "Verificar si hay cambios",
+ "Never" : "Nunca",
+ "Once every direct access" : "Una vez cada acceso directo",
+ "Delete" : "Borrar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "¿Borrar almacenamiento?",
"Saved" : "Guardado",
@@ -97,12 +104,6 @@
"Name" : "Nombre",
"Storage type" : "Tipo de almacenamiento",
"Scope" : "Alcance",
- "Enable encryption" : "Habilitar encripción",
- "Enable previews" : "Habilitar vistas previas",
- "Enable sharing" : "Habilitar compartir",
- "Check for changes" : "Verificar si hay cambios",
- "Never" : "Nunca",
- "Once every direct access" : "Una vez cada acceso directo",
"Folder name" : "Nombre de la carpeta",
"External storage" : "Almacenamiento externo",
"Authentication" : "Autenticación",
@@ -115,7 +116,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Por favor solicita a tu administrador su instalación. ",
"No external storage configured" : "No se ha configurado el almacenamiento externo",
"You can add external storages in the personal settings" : "Puedes agregar almacenamiento externo en las configuraciones personales",
- "Delete" : "Borrar",
"Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo",
"Are you sure you want to delete this external storage" : "¿Estás seguro de que quieres borrar este almacenamiento externo?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js
index 9ea8fa80656..6ced3e73a2a 100644
--- a/apps/files_external/l10n/et_EE.js
+++ b/apps/files_external/l10n/et_EE.js
@@ -11,6 +11,13 @@ OC.L10N.register(
"Error generating key pair" : "Viga võtmepaari loomisel",
"All users. Type to select user or group." : "Kõik kasutajad. Kirjuta, et valida kasutaja või grupp.",
"(group)" : "(grupp)",
+ "Enable encryption" : "Luba krüpteerimine",
+ "Enable previews" : "Luba eelvaated",
+ "Enable sharing" : "Luba jagamine",
+ "Check for changes" : "Otsi uuendusi",
+ "Never" : "Mitte kunagi",
+ "Once every direct access" : "Kord iga otsese pöördumise korral",
+ "Delete" : "Kustuta",
"Admin defined" : "Admini poolt määratud",
"Saved" : "Salvestatud",
"Save" : "Salvesta",
@@ -70,12 +77,6 @@ OC.L10N.register(
"Name" : "Nimi",
"Storage type" : "Andmehoidla tüüp",
"Scope" : "Skoop",
- "Enable encryption" : "Luba krüpteerimine",
- "Enable previews" : "Luba eelvaated",
- "Enable sharing" : "Luba jagamine",
- "Check for changes" : "Otsi uuendusi",
- "Never" : "Mitte kunagi",
- "Once every direct access" : "Kord iga otsese pöördumise korral",
"Folder name" : "Kausta nimi",
"External storage" : "Väline andmehoidla",
"Authentication" : "Autentimine",
@@ -86,7 +87,6 @@ OC.L10N.register(
"OpenStack" : "OpenStack",
"No external storage configured" : "Välist salvestuskohta pole seadistatud",
"You can add external storages in the personal settings" : "Sa võid lisada välise salvestuskoha isiklikes seadetes",
- "Delete" : "Kustuta",
"Allow users to mount the following external storage" : "Võimalda kasutajatel ühendada järgmist välist andmehoidlat"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json
index 9adcc0976a5..295711b5c2d 100644
--- a/apps/files_external/l10n/et_EE.json
+++ b/apps/files_external/l10n/et_EE.json
@@ -9,6 +9,13 @@
"Error generating key pair" : "Viga võtmepaari loomisel",
"All users. Type to select user or group." : "Kõik kasutajad. Kirjuta, et valida kasutaja või grupp.",
"(group)" : "(grupp)",
+ "Enable encryption" : "Luba krüpteerimine",
+ "Enable previews" : "Luba eelvaated",
+ "Enable sharing" : "Luba jagamine",
+ "Check for changes" : "Otsi uuendusi",
+ "Never" : "Mitte kunagi",
+ "Once every direct access" : "Kord iga otsese pöördumise korral",
+ "Delete" : "Kustuta",
"Admin defined" : "Admini poolt määratud",
"Saved" : "Salvestatud",
"Save" : "Salvesta",
@@ -68,12 +75,6 @@
"Name" : "Nimi",
"Storage type" : "Andmehoidla tüüp",
"Scope" : "Skoop",
- "Enable encryption" : "Luba krüpteerimine",
- "Enable previews" : "Luba eelvaated",
- "Enable sharing" : "Luba jagamine",
- "Check for changes" : "Otsi uuendusi",
- "Never" : "Mitte kunagi",
- "Once every direct access" : "Kord iga otsese pöördumise korral",
"Folder name" : "Kausta nimi",
"External storage" : "Väline andmehoidla",
"Authentication" : "Autentimine",
@@ -84,7 +85,6 @@
"OpenStack" : "OpenStack",
"No external storage configured" : "Välist salvestuskohta pole seadistatud",
"You can add external storages in the personal settings" : "Sa võid lisada välise salvestuskoha isiklikes seadetes",
- "Delete" : "Kustuta",
"Allow users to mount the following external storage" : "Võimalda kasutajatel ühendada järgmist välist andmehoidlat"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js
index 3ac263eae6c..7ec9eb5ebc4 100644
--- a/apps/files_external/l10n/fi.js
+++ b/apps/files_external/l10n/fi.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Kaikki käyttäjät. Kirjoita valitaksesi käyttäjän tai ryhmän.",
"(group)" : "(ryhmä)",
"Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD -enkoodauksen kanssa (hidas)",
+ "Enable encryption" : "Käytä salausta",
+ "Enable previews" : "Käytä esikatseluja",
+ "Enable sharing" : "Käytä jakamista",
+ "Check for changes" : "Tarkista muutokset",
+ "Never" : "Ei koskaan",
+ "Once every direct access" : "Kerran aina suoran käytön yhteydessä",
+ "Read only" : "Vain luku",
+ "Delete" : "Poista",
"Admin defined" : "Ylläpitäjän määrittämä",
"Are you sure you want to delete this external storage?" : "Haluatko varmasti poistaa tämän erillisen tallennustilan?",
"Delete storage?" : "Poistetaanko tallennustila?",
@@ -109,13 +117,6 @@ OC.L10N.register(
"Name" : "Nimi",
"Storage type" : "Tallennustilan tyyppi",
"Scope" : "Näkyvyysalue",
- "Enable encryption" : "Käytä salausta",
- "Enable previews" : "Käytä esikatseluja",
- "Enable sharing" : "Käytä jakamista",
- "Check for changes" : "Tarkista muutokset",
- "Never" : "Ei koskaan",
- "Once every direct access" : "Kerran aina suoran käytön yhteydessä",
- "Read only" : "Vain luku",
"Folder name" : "Kansion nimi",
"External storage" : "Erillinen tallennustila",
"Authentication" : "Tunnistautuminen",
@@ -135,7 +136,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.",
"No external storage configured" : "Erillistä tallennustilaa ei ole määritetty",
"You can add external storages in the personal settings" : "Voit lisätä erillisiä tallennustiloja henkilökohtaisista asetuksistasi",
- "Delete" : "Poista",
"Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet",
"Are you sure you want to delete this external storage" : "Haluatko varmasti poistaa tämän erillisen tallennustilan"
},
diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json
index 1966b6e258d..9033d677ce6 100644
--- a/apps/files_external/l10n/fi.json
+++ b/apps/files_external/l10n/fi.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Kaikki käyttäjät. Kirjoita valitaksesi käyttäjän tai ryhmän.",
"(group)" : "(ryhmä)",
"Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD -enkoodauksen kanssa (hidas)",
+ "Enable encryption" : "Käytä salausta",
+ "Enable previews" : "Käytä esikatseluja",
+ "Enable sharing" : "Käytä jakamista",
+ "Check for changes" : "Tarkista muutokset",
+ "Never" : "Ei koskaan",
+ "Once every direct access" : "Kerran aina suoran käytön yhteydessä",
+ "Read only" : "Vain luku",
+ "Delete" : "Poista",
"Admin defined" : "Ylläpitäjän määrittämä",
"Are you sure you want to delete this external storage?" : "Haluatko varmasti poistaa tämän erillisen tallennustilan?",
"Delete storage?" : "Poistetaanko tallennustila?",
@@ -107,13 +115,6 @@
"Name" : "Nimi",
"Storage type" : "Tallennustilan tyyppi",
"Scope" : "Näkyvyysalue",
- "Enable encryption" : "Käytä salausta",
- "Enable previews" : "Käytä esikatseluja",
- "Enable sharing" : "Käytä jakamista",
- "Check for changes" : "Tarkista muutokset",
- "Never" : "Ei koskaan",
- "Once every direct access" : "Kerran aina suoran käytön yhteydessä",
- "Read only" : "Vain luku",
"Folder name" : "Kansion nimi",
"External storage" : "Erillinen tallennustila",
"Authentication" : "Tunnistautuminen",
@@ -133,7 +134,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.",
"No external storage configured" : "Erillistä tallennustilaa ei ole määritetty",
"You can add external storages in the personal settings" : "Voit lisätä erillisiä tallennustiloja henkilökohtaisista asetuksistasi",
- "Delete" : "Poista",
"Allow users to mount the following external storage" : "Salli käyttäjien liittää seuraavat erilliset tallennusvälineet",
"Are you sure you want to delete this external storage" : "Haluatko varmasti poistaa tämän erillisen tallennustilan"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index 485d14616ea..0ee04d1c35b 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Tous les utilisateurs. Cliquez ici pour restreindre.",
"(group)" : "(groupe)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)",
+ "Enable encryption" : "Activer le chiffrement",
+ "Enable previews" : "Activer les prévisualisations",
+ "Enable sharing" : "Permettre le partage",
+ "Check for changes" : "Rechercher les modifications",
+ "Never" : "Jamais",
+ "Once every direct access" : "Une fois à chaque accès direct",
+ "Read only" : "Lecture seule",
+ "Delete" : "Supprimer",
"Admin defined" : "Défini par l'administrateur",
"Are you sure you want to delete this external storage?" : "Êtes-vous sûr de vouloir supprimer ce stockage externe ?",
"Delete storage?" : "Supprimer ce support de stockage ?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Délai d'expiration des requêtes (en secondes)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support de cURL dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Veuillez demander à votre administrateur système de l'installer.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support du FTP dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Merci de demander à votre administrateur de l'installer.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" n'est pas installé. Le montage de %2$s n'est pas possible. Merci de demander à l'administrateur système de l'installer.",
"External storage support" : "Support de stockage externe",
"Adds basic external storage support" : "Ajoute la prise en charge de base du stockage externe",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre àaux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Nom",
"Storage type" : "Type de stockage",
"Scope" : "Portée",
- "Enable encryption" : "Activer le chiffrement",
- "Enable previews" : "Activer les prévisualisations",
- "Enable sharing" : "Permettre le partage",
- "Check for changes" : "Rechercher les modifications",
- "Never" : "Jamais",
- "Once every direct access" : "Une fois à chaque accès direct",
- "Read only" : "Lecture seule",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Le stockage externe vous permet de monter des périphériques et services externes en tant que périphériques de stockage secondaires sous Nextcloud. Vous pouvez aussi autoriser les utilisateurs à monter leurs propres services de stockage externes.",
"Folder name" : "Nom du dossier",
"External storage" : "Stockage externe",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Cette application permet aux administrateurs de configurer des connexions à des fournisseurs de stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, Google Drive, Dropbox, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre aux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.",
"No external storage configured" : "Aucun stockage externe configuré",
"You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels",
- "Delete" : "Supprimer",
"Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants",
"Are you sure you want to delete this external storage" : "Êtes-vous sûr de vouloir supprimer ce stockage externe ?"
},
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index 0e09e3b0bc7..b394d228e39 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Tous les utilisateurs. Cliquez ici pour restreindre.",
"(group)" : "(groupe)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)",
+ "Enable encryption" : "Activer le chiffrement",
+ "Enable previews" : "Activer les prévisualisations",
+ "Enable sharing" : "Permettre le partage",
+ "Check for changes" : "Rechercher les modifications",
+ "Never" : "Jamais",
+ "Once every direct access" : "Une fois à chaque accès direct",
+ "Read only" : "Lecture seule",
+ "Delete" : "Supprimer",
"Admin defined" : "Défini par l'administrateur",
"Are you sure you want to delete this external storage?" : "Êtes-vous sûr de vouloir supprimer ce stockage externe ?",
"Delete storage?" : "Supprimer ce support de stockage ?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Délai d'expiration des requêtes (en secondes)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support de cURL dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Veuillez demander à votre administrateur système de l'installer.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support du FTP dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Merci de demander à votre administrateur de l'installer.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" n'est pas installé. Le montage de %2$s n'est pas possible. Merci de demander à l'administrateur système de l'installer.",
"External storage support" : "Support de stockage externe",
"Adds basic external storage support" : "Ajoute la prise en charge de base du stockage externe",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre àaux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.",
@@ -108,13 +117,6 @@
"Name" : "Nom",
"Storage type" : "Type de stockage",
"Scope" : "Portée",
- "Enable encryption" : "Activer le chiffrement",
- "Enable previews" : "Activer les prévisualisations",
- "Enable sharing" : "Permettre le partage",
- "Check for changes" : "Rechercher les modifications",
- "Never" : "Jamais",
- "Once every direct access" : "Une fois à chaque accès direct",
- "Read only" : "Lecture seule",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Le stockage externe vous permet de monter des périphériques et services externes en tant que périphériques de stockage secondaires sous Nextcloud. Vous pouvez aussi autoriser les utilisateurs à monter leurs propres services de stockage externes.",
"Folder name" : "Nom du dossier",
"External storage" : "Stockage externe",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Cette application permet aux administrateurs de configurer des connexions à des fournisseurs de stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, Google Drive, Dropbox, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre aux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.",
"No external storage configured" : "Aucun stockage externe configuré",
"You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels",
- "Delete" : "Supprimer",
"Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants",
"Are you sure you want to delete this external storage" : "Êtes-vous sûr de vouloir supprimer ce stockage externe ?"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js
index 35606ed46c2..470f17a75e3 100644
--- a/apps/files_external/l10n/he.js
+++ b/apps/files_external/l10n/he.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "כל המשתמשים. יש להקיש לבחירת משתמש או קבוצה.",
"(group)" : "(קבוצה)",
"Compatibility with Mac NFD encoding (slow)" : "תואם של קידוד Mac NFD (איטי)",
+ "Enable encryption" : "אפשר הצפנה",
+ "Enable previews" : "מאפשר תצוגות מקדימות",
+ "Enable sharing" : "הפעלת שיתוף",
+ "Check for changes" : "בדיקה אחר שינויים",
+ "Never" : "לעולם לא",
+ "Once every direct access" : "פעם אחת כל כניסה ישירה",
+ "Read only" : "קריאה בלבד",
+ "Delete" : "מחיקה",
"Admin defined" : "הוגדר מנהל",
"Are you sure you want to delete this external storage?" : "למחוק את האחסון החיצוני הזה?",
"Delete storage?" : "למחוק אחסון?",
@@ -106,13 +114,6 @@ OC.L10N.register(
"Name" : "שם",
"Storage type" : "סוג אחסון",
"Scope" : "היקף",
- "Enable encryption" : "אפשר הצפנה",
- "Enable previews" : "מאפשר תצוגות מקדימות",
- "Enable sharing" : "הפעלת שיתוף",
- "Check for changes" : "בדיקה אחר שינויים",
- "Never" : "לעולם לא",
- "Once every direct access" : "פעם אחת כל כניסה ישירה",
- "Read only" : "קריאה בלבד",
"Folder name" : "שם התיקייה",
"External storage" : "אחסון חיצוני",
"Authentication" : "אימות",
@@ -133,7 +134,6 @@ OC.L10N.register(
"Google Drive" : "Google Drive",
"No external storage configured" : "לא מוגדר אחסון חיצוני",
"You can add external storages in the personal settings" : "ניתן להוסיף אחסונים חיצוניים בהגדרות האישיות",
- "Delete" : "מחיקה",
"Allow users to mount the following external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני הבא",
"Are you sure you want to delete this external storage" : "למחוק את התקן האחסון החיצוני הזה"
},
diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json
index da4da4da160..5bb83b0fabd 100644
--- a/apps/files_external/l10n/he.json
+++ b/apps/files_external/l10n/he.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "כל המשתמשים. יש להקיש לבחירת משתמש או קבוצה.",
"(group)" : "(קבוצה)",
"Compatibility with Mac NFD encoding (slow)" : "תואם של קידוד Mac NFD (איטי)",
+ "Enable encryption" : "אפשר הצפנה",
+ "Enable previews" : "מאפשר תצוגות מקדימות",
+ "Enable sharing" : "הפעלת שיתוף",
+ "Check for changes" : "בדיקה אחר שינויים",
+ "Never" : "לעולם לא",
+ "Once every direct access" : "פעם אחת כל כניסה ישירה",
+ "Read only" : "קריאה בלבד",
+ "Delete" : "מחיקה",
"Admin defined" : "הוגדר מנהל",
"Are you sure you want to delete this external storage?" : "למחוק את האחסון החיצוני הזה?",
"Delete storage?" : "למחוק אחסון?",
@@ -104,13 +112,6 @@
"Name" : "שם",
"Storage type" : "סוג אחסון",
"Scope" : "היקף",
- "Enable encryption" : "אפשר הצפנה",
- "Enable previews" : "מאפשר תצוגות מקדימות",
- "Enable sharing" : "הפעלת שיתוף",
- "Check for changes" : "בדיקה אחר שינויים",
- "Never" : "לעולם לא",
- "Once every direct access" : "פעם אחת כל כניסה ישירה",
- "Read only" : "קריאה בלבד",
"Folder name" : "שם התיקייה",
"External storage" : "אחסון חיצוני",
"Authentication" : "אימות",
@@ -131,7 +132,6 @@
"Google Drive" : "Google Drive",
"No external storage configured" : "לא מוגדר אחסון חיצוני",
"You can add external storages in the personal settings" : "ניתן להוסיף אחסונים חיצוניים בהגדרות האישיות",
- "Delete" : "מחיקה",
"Allow users to mount the following external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני הבא",
"Are you sure you want to delete this external storage" : "למחוק את התקן האחסון החיצוני הזה"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
diff --git a/apps/files_external/l10n/hu.js b/apps/files_external/l10n/hu.js
index 452c6919f35..5a93a65b854 100644
--- a/apps/files_external/l10n/hu.js
+++ b/apps/files_external/l10n/hu.js
@@ -13,7 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Összes felhasználó. Írj be egy felhasználót vagy csoportot.",
"(group)" : "(csoport)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilitás a Mac NFD kódolással (lassú)",
- "Admin defined" : "Adminisztrátor definiálva",
+ "Enable encryption" : "Titkosítás engedélyezése",
+ "Enable previews" : "Előnézet engedélyezése",
+ "Enable sharing" : "Megosztás engedélyezése",
+ "Check for changes" : "Változások keresése",
+ "Never" : "Soha",
+ "Once every direct access" : "Minden közvetlen elérésnél",
+ "Delete" : "Törlés",
+ "Admin defined" : "Rendszergazda definiálva",
"Are you sure you want to delete this external storage?" : "Biztosan törlöd ezt a külső tárolót?",
"Delete storage?" : "Tároló törlése?",
"Saved" : "Elmentve",
@@ -35,14 +42,14 @@ OC.L10N.register(
"Credentials saving failed" : "Azonosítók mentése sikertelen",
"Credentials required" : "Azonosító szükséges",
"Storage with ID \"%d\" not found" : "A(z) \"%d\" azonosítójú tároló nincs meg",
- "Invalid backend or authentication mechanism class" : "Érvénytelen háttér vagy autentikációs mechanizmus osztály",
+ "Invalid backend or authentication mechanism class" : "Érvénytelen háttér vagy hitelesítési mechanizmus osztály",
"Invalid mount point" : "Érvénytelen csatolási pont",
"Objectstore forbidden" : "Objektumtár tiltott",
"Invalid storage backend \"%s\"" : "Érvénytelen háttértár kezelő \"%s\"",
"Not permitted to use backend \"%s\"" : "A(z) \"%s\" háttér használata nem engedélyezett",
- "Not permitted to use authentication mechanism \"%s\"" : "Nem engedélyezett a \"%s\" autentikációs mechanizmus használata",
+ "Not permitted to use authentication mechanism \"%s\"" : "Nem engedélyezett a \"%s\" hitelesítési mechanizmus használata",
"Unsatisfied backend parameters" : "Elégtelen háttér adatok",
- "Unsatisfied authentication mechanism parameters" : "Elégtelen autentikációs mechanizmus paraméterek",
+ "Unsatisfied authentication mechanism parameters" : "Elégtelen hitelesítési mechanizmus paraméterek",
"Insufficient data: %s" : "Nem elegendő adat: %s",
"%s" : "%s",
"Storage with ID \"%d\" is not user editable" : "A(z) \"%d\" azonosítójú tároló nem szerkeszthető a felhasználók által",
@@ -70,6 +77,8 @@ OC.L10N.register(
"User entered, store in database" : "Felhasználó megadva, tárolás az adatbázisban",
"RSA public key" : "RSA nyilvános kulcs",
"Public key" : "Nyilvános kulcs",
+ "RSA private key" : "RSA-titkos kulcs",
+ "Private key" : "Titkos kulcs",
"Amazon S3" : "Amazon S3",
"Bucket" : "Bucket",
"Hostname" : "Hosztnév",
@@ -77,7 +86,7 @@ OC.L10N.register(
"Region" : "Megye",
"Enable SSL" : "SSL engedélyezése",
"Enable Path Style" : "Útvonal stílus engedélyezés",
- "Legacy (v2) authentication" : "Elavult (v2) authetikáció",
+ "Legacy (v2) authentication" : "Elavult (v2) hitelesítés",
"WebDAV" : "WebDAV",
"URL" : "URL",
"Remote subfolder" : "Távoli almappa",
@@ -105,15 +114,9 @@ OC.L10N.register(
"Name" : "Név",
"Storage type" : "Tároló típusa",
"Scope" : "Hatáskör",
- "Enable encryption" : "Titkosítás engedélyezése",
- "Enable previews" : "Előnézet engedélyezése",
- "Enable sharing" : "Megosztás engedélyezése",
- "Check for changes" : "Változások keresése",
- "Never" : "Soha",
- "Once every direct access" : "Minden közvetlen elérésnél",
"Folder name" : "Mappa neve",
"External storage" : "Külső tárolók",
- "Authentication" : "Azonisítás",
+ "Authentication" : "Hitelesítés",
"Configuration" : "Beállítások",
"Available for" : "Elérhető számukra",
"Click to recheck the configuration" : "Kattints ide a konfiguráció újraellenőrzéséhez",
@@ -132,7 +135,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
"No external storage configured" : "Nincs külső tároló beállítva.",
"You can add external storages in the personal settings" : "Hozzáadhatsz külső tárolókat a személyes beállítások közt.",
- "Delete" : "Törlés",
"Allow users to mount the following external storage" : "A felhasználók számára engedélyezett külső tárolók csatolása:",
"Are you sure you want to delete this external storage" : "Biztosan törlöd ezt a külső tárolót"
},
diff --git a/apps/files_external/l10n/hu.json b/apps/files_external/l10n/hu.json
index f5d9aa2027e..5c87b145f08 100644
--- a/apps/files_external/l10n/hu.json
+++ b/apps/files_external/l10n/hu.json
@@ -11,7 +11,14 @@
"All users. Type to select user or group." : "Összes felhasználó. Írj be egy felhasználót vagy csoportot.",
"(group)" : "(csoport)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilitás a Mac NFD kódolással (lassú)",
- "Admin defined" : "Adminisztrátor definiálva",
+ "Enable encryption" : "Titkosítás engedélyezése",
+ "Enable previews" : "Előnézet engedélyezése",
+ "Enable sharing" : "Megosztás engedélyezése",
+ "Check for changes" : "Változások keresése",
+ "Never" : "Soha",
+ "Once every direct access" : "Minden közvetlen elérésnél",
+ "Delete" : "Törlés",
+ "Admin defined" : "Rendszergazda definiálva",
"Are you sure you want to delete this external storage?" : "Biztosan törlöd ezt a külső tárolót?",
"Delete storage?" : "Tároló törlése?",
"Saved" : "Elmentve",
@@ -33,14 +40,14 @@
"Credentials saving failed" : "Azonosítók mentése sikertelen",
"Credentials required" : "Azonosító szükséges",
"Storage with ID \"%d\" not found" : "A(z) \"%d\" azonosítójú tároló nincs meg",
- "Invalid backend or authentication mechanism class" : "Érvénytelen háttér vagy autentikációs mechanizmus osztály",
+ "Invalid backend or authentication mechanism class" : "Érvénytelen háttér vagy hitelesítési mechanizmus osztály",
"Invalid mount point" : "Érvénytelen csatolási pont",
"Objectstore forbidden" : "Objektumtár tiltott",
"Invalid storage backend \"%s\"" : "Érvénytelen háttértár kezelő \"%s\"",
"Not permitted to use backend \"%s\"" : "A(z) \"%s\" háttér használata nem engedélyezett",
- "Not permitted to use authentication mechanism \"%s\"" : "Nem engedélyezett a \"%s\" autentikációs mechanizmus használata",
+ "Not permitted to use authentication mechanism \"%s\"" : "Nem engedélyezett a \"%s\" hitelesítési mechanizmus használata",
"Unsatisfied backend parameters" : "Elégtelen háttér adatok",
- "Unsatisfied authentication mechanism parameters" : "Elégtelen autentikációs mechanizmus paraméterek",
+ "Unsatisfied authentication mechanism parameters" : "Elégtelen hitelesítési mechanizmus paraméterek",
"Insufficient data: %s" : "Nem elegendő adat: %s",
"%s" : "%s",
"Storage with ID \"%d\" is not user editable" : "A(z) \"%d\" azonosítójú tároló nem szerkeszthető a felhasználók által",
@@ -68,6 +75,8 @@
"User entered, store in database" : "Felhasználó megadva, tárolás az adatbázisban",
"RSA public key" : "RSA nyilvános kulcs",
"Public key" : "Nyilvános kulcs",
+ "RSA private key" : "RSA-titkos kulcs",
+ "Private key" : "Titkos kulcs",
"Amazon S3" : "Amazon S3",
"Bucket" : "Bucket",
"Hostname" : "Hosztnév",
@@ -75,7 +84,7 @@
"Region" : "Megye",
"Enable SSL" : "SSL engedélyezése",
"Enable Path Style" : "Útvonal stílus engedélyezés",
- "Legacy (v2) authentication" : "Elavult (v2) authetikáció",
+ "Legacy (v2) authentication" : "Elavult (v2) hitelesítés",
"WebDAV" : "WebDAV",
"URL" : "URL",
"Remote subfolder" : "Távoli almappa",
@@ -103,15 +112,9 @@
"Name" : "Név",
"Storage type" : "Tároló típusa",
"Scope" : "Hatáskör",
- "Enable encryption" : "Titkosítás engedélyezése",
- "Enable previews" : "Előnézet engedélyezése",
- "Enable sharing" : "Megosztás engedélyezése",
- "Check for changes" : "Változások keresése",
- "Never" : "Soha",
- "Once every direct access" : "Minden közvetlen elérésnél",
"Folder name" : "Mappa neve",
"External storage" : "Külső tárolók",
- "Authentication" : "Azonisítás",
+ "Authentication" : "Hitelesítés",
"Configuration" : "Beállítások",
"Available for" : "Elérhető számukra",
"Click to recheck the configuration" : "Kattints ide a konfiguráció újraellenőrzéséhez",
@@ -130,7 +133,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.",
"No external storage configured" : "Nincs külső tároló beállítva.",
"You can add external storages in the personal settings" : "Hozzáadhatsz külső tárolókat a személyes beállítások közt.",
- "Delete" : "Törlés",
"Allow users to mount the following external storage" : "A felhasználók számára engedélyezett külső tárolók csatolása:",
"Are you sure you want to delete this external storage" : "Biztosan törlöd ezt a külső tárolót"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/ia.js b/apps/files_external/l10n/ia.js
index c7753889f20..9a48cdc3c46 100644
--- a/apps/files_external/l10n/ia.js
+++ b/apps/files_external/l10n/ia.js
@@ -11,6 +11,13 @@ OC.L10N.register(
"Generate keys" : "Generar claves",
"Error generating key pair" : "Error durante creation de par de claves",
"All users. Type to select user or group." : "Tote usatores. Scribe pro selectionar usator o gruppo.",
+ "Enable encryption" : "Activar cryptographia",
+ "Enable previews" : "Activar previsualisationes",
+ "Enable sharing" : "Activar compartimento",
+ "Check for changes" : "Verificar nove modificationes",
+ "Never" : "Nunquam",
+ "Once every direct access" : "A cata accesso directe",
+ "Delete" : "Deler",
"Saved" : "Salveguardate",
"Saving..." : "Salveguardante...",
"Save" : "Salveguardar",
@@ -59,12 +66,6 @@ OC.L10N.register(
"Service name" : "Nomine del servicio",
"Name" : "Nomine",
"Storage type" : "Typo de immagazinage",
- "Enable encryption" : "Activar cryptographia",
- "Enable previews" : "Activar previsualisationes",
- "Enable sharing" : "Activar compartimento",
- "Check for changes" : "Verificar nove modificationes",
- "Never" : "Nunquam",
- "Once every direct access" : "A cata accesso directe",
"Folder name" : "Nomine de dossier",
"External storage" : "Immagazinage externe",
"Authentication" : "Authentication",
@@ -74,7 +75,6 @@ OC.L10N.register(
"Advanced settings" : "Configurationes avantiate",
"Allow users to mount external storage" : "Permitter usatores montar immagazinage externe",
"OpenStack" : "OpenStack",
- "Delete" : "Deler",
"Allow users to mount the following external storage" : "Permitter usatores montar le sequente immagazinage externe"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/ia.json b/apps/files_external/l10n/ia.json
index 17140f358d7..1a055876b67 100644
--- a/apps/files_external/l10n/ia.json
+++ b/apps/files_external/l10n/ia.json
@@ -9,6 +9,13 @@
"Generate keys" : "Generar claves",
"Error generating key pair" : "Error durante creation de par de claves",
"All users. Type to select user or group." : "Tote usatores. Scribe pro selectionar usator o gruppo.",
+ "Enable encryption" : "Activar cryptographia",
+ "Enable previews" : "Activar previsualisationes",
+ "Enable sharing" : "Activar compartimento",
+ "Check for changes" : "Verificar nove modificationes",
+ "Never" : "Nunquam",
+ "Once every direct access" : "A cata accesso directe",
+ "Delete" : "Deler",
"Saved" : "Salveguardate",
"Saving..." : "Salveguardante...",
"Save" : "Salveguardar",
@@ -57,12 +64,6 @@
"Service name" : "Nomine del servicio",
"Name" : "Nomine",
"Storage type" : "Typo de immagazinage",
- "Enable encryption" : "Activar cryptographia",
- "Enable previews" : "Activar previsualisationes",
- "Enable sharing" : "Activar compartimento",
- "Check for changes" : "Verificar nove modificationes",
- "Never" : "Nunquam",
- "Once every direct access" : "A cata accesso directe",
"Folder name" : "Nomine de dossier",
"External storage" : "Immagazinage externe",
"Authentication" : "Authentication",
@@ -72,7 +73,6 @@
"Advanced settings" : "Configurationes avantiate",
"Allow users to mount external storage" : "Permitter usatores montar immagazinage externe",
"OpenStack" : "OpenStack",
- "Delete" : "Deler",
"Allow users to mount the following external storage" : "Permitter usatores montar le sequente immagazinage externe"
},"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 de7e42a6534..8ae6a4992b5 100644
--- a/apps/files_external/l10n/id.js
+++ b/apps/files_external/l10n/id.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.",
"(group)" : "(grup)",
"Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)",
+ "Enable encryption" : "Aktifkan enkripsi",
+ "Enable previews" : "Aktifkan pratinjau",
+ "Enable sharing" : "Aktifkan pembagian",
+ "Check for changes" : "Periksa perubahan",
+ "Never" : "Jangan pernah",
+ "Once every direct access" : "Setiap kali akses langsung",
+ "Delete" : "Hapus",
"Admin defined" : "Terdefinisi Admin",
"Saved" : "Disimpan",
"Saving..." : "Menyimpan...",
@@ -94,12 +101,6 @@ OC.L10N.register(
"Name" : "Nama",
"Storage type" : "Tipe penyimpanan",
"Scope" : "Skop",
- "Enable encryption" : "Aktifkan enkripsi",
- "Enable previews" : "Aktifkan pratinjau",
- "Enable sharing" : "Aktifkan pembagian",
- "Check for changes" : "Periksa perubahan",
- "Never" : "Jangan pernah",
- "Once every direct access" : "Setiap kali akses langsung",
"Folder name" : "Nama folder",
"External storage" : "Penyimpanan eksternal",
"Authentication" : "Otentikasi",
@@ -112,7 +113,6 @@ OC.L10N.register(
"\"%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",
- "Delete" : "Hapus",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json
index 3f27ba398b2..a650100ba2e 100644
--- a/apps/files_external/l10n/id.json
+++ b/apps/files_external/l10n/id.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.",
"(group)" : "(grup)",
"Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)",
+ "Enable encryption" : "Aktifkan enkripsi",
+ "Enable previews" : "Aktifkan pratinjau",
+ "Enable sharing" : "Aktifkan pembagian",
+ "Check for changes" : "Periksa perubahan",
+ "Never" : "Jangan pernah",
+ "Once every direct access" : "Setiap kali akses langsung",
+ "Delete" : "Hapus",
"Admin defined" : "Terdefinisi Admin",
"Saved" : "Disimpan",
"Saving..." : "Menyimpan...",
@@ -92,12 +99,6 @@
"Name" : "Nama",
"Storage type" : "Tipe penyimpanan",
"Scope" : "Skop",
- "Enable encryption" : "Aktifkan enkripsi",
- "Enable previews" : "Aktifkan pratinjau",
- "Enable sharing" : "Aktifkan pembagian",
- "Check for changes" : "Periksa perubahan",
- "Never" : "Jangan pernah",
- "Once every direct access" : "Setiap kali akses langsung",
"Folder name" : "Nama folder",
"External storage" : "Penyimpanan eksternal",
"Authentication" : "Otentikasi",
@@ -110,7 +111,6 @@
"\"%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",
- "Delete" : "Hapus",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut"
},"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 6c153ec630a..8f301ac59e5 100644
--- a/apps/files_external/l10n/is.js
+++ b/apps/files_external/l10n/is.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Allir notendur. Skrifaðu til að velja notanda eða hóp.",
"(group)" : "(hópur)",
"Compatibility with Mac NFD encoding (slow)" : "Samhæfni við Mac NFD kóðun (hægvirkt)",
+ "Enable encryption" : "Virkja dulritun",
+ "Enable previews" : "Virkja forskoðanir",
+ "Enable sharing" : "Virkja deilingu",
+ "Check for changes" : "Fylgjast með breytingum",
+ "Never" : "Aldrei",
+ "Once every direct access" : "Einu sinni við hvern beinan aðgang",
+ "Read only" : "Skrifvarið",
+ "Delete" : "Eyða",
"Admin defined" : "Skilgreindur kerfisstjóri",
"Are you sure you want to delete this external storage?" : "Ertu viss um að þú viljir eyða þessari ytri geymslu?",
"Delete storage?" : "Eyða geymslu?",
@@ -109,13 +117,6 @@ OC.L10N.register(
"Name" : "Nafn",
"Storage type" : "Tegund gagnageymslu",
"Scope" : "Umfang",
- "Enable encryption" : "Virkja dulritun",
- "Enable previews" : "Virkja forskoðanir",
- "Enable sharing" : "Virkja deilingu",
- "Check for changes" : "Fylgjast með breytingum",
- "Never" : "Aldrei",
- "Once every direct access" : "Einu sinni við hvern beinan aðgang",
- "Read only" : "Skrifvarið",
"Folder name" : "Nafn möppu",
"External storage" : "Ytri gagnageymsla",
"Authentication" : "Auðkenning",
@@ -137,7 +138,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ekki uppsett. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
"No external storage configured" : "Engin ytri-gagnageymsla stillt",
"You can add external storages in the personal settings" : "Þú getur bætt við ytri gagnageymslum í einkastillingunum þínum",
- "Delete" : "Eyða",
"Allow users to mount the following external storage" : "Leyfa notendum að tengja eftirfarandi ytri gagnageymslu í skráakerfi",
"Are you sure you want to delete this external storage" : "Ertu viss um að þú viljir eyða þessari ytri geymslu?"
},
diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json
index 31a44e7e638..2290d6f05ed 100644
--- a/apps/files_external/l10n/is.json
+++ b/apps/files_external/l10n/is.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Allir notendur. Skrifaðu til að velja notanda eða hóp.",
"(group)" : "(hópur)",
"Compatibility with Mac NFD encoding (slow)" : "Samhæfni við Mac NFD kóðun (hægvirkt)",
+ "Enable encryption" : "Virkja dulritun",
+ "Enable previews" : "Virkja forskoðanir",
+ "Enable sharing" : "Virkja deilingu",
+ "Check for changes" : "Fylgjast með breytingum",
+ "Never" : "Aldrei",
+ "Once every direct access" : "Einu sinni við hvern beinan aðgang",
+ "Read only" : "Skrifvarið",
+ "Delete" : "Eyða",
"Admin defined" : "Skilgreindur kerfisstjóri",
"Are you sure you want to delete this external storage?" : "Ertu viss um að þú viljir eyða þessari ytri geymslu?",
"Delete storage?" : "Eyða geymslu?",
@@ -107,13 +115,6 @@
"Name" : "Nafn",
"Storage type" : "Tegund gagnageymslu",
"Scope" : "Umfang",
- "Enable encryption" : "Virkja dulritun",
- "Enable previews" : "Virkja forskoðanir",
- "Enable sharing" : "Virkja deilingu",
- "Check for changes" : "Fylgjast með breytingum",
- "Never" : "Aldrei",
- "Once every direct access" : "Einu sinni við hvern beinan aðgang",
- "Read only" : "Skrifvarið",
"Folder name" : "Nafn möppu",
"External storage" : "Ytri gagnageymsla",
"Authentication" : "Auðkenning",
@@ -135,7 +136,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ekki uppsett. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.",
"No external storage configured" : "Engin ytri-gagnageymsla stillt",
"You can add external storages in the personal settings" : "Þú getur bætt við ytri gagnageymslum í einkastillingunum þínum",
- "Delete" : "Eyða",
"Allow users to mount the following external storage" : "Leyfa notendum að tengja eftirfarandi ytri gagnageymslu í skráakerfi",
"Are you sure you want to delete this external storage" : "Ertu viss um að þú viljir eyða þessari ytri geymslu?"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index 3a301ac804f..f39e087f36b 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Tutti gli utenti. Digita per selezionare utente o gruppo.",
"(group)" : "(gruppo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)",
+ "Enable encryption" : "Abilita cifratura",
+ "Enable previews" : "Abilita le anteprime",
+ "Enable sharing" : "Abilita condivisione",
+ "Check for changes" : "Controlla le modifiche",
+ "Never" : "Mai",
+ "Once every direct access" : "Una volta per ogni accesso diretto",
+ "Read only" : "Sola lettura",
+ "Delete" : "Elimina",
"Admin defined" : "Definito dall'amministratore",
"Are you sure you want to delete this external storage?" : "Se sicuro di voler eliminare questa archiviazione esterna?",
"Delete storage?" : "Vuoi eliminare l'archiviazione?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Tempo massimo della richiesta (secondi)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto cURL di PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto FTP in PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" non è installato. Impossibile montare %2$s. Chiedi al tuo amministratore di sistema di installarlo.",
"External storage support" : "Supporto archiviazioni esterne",
"Adds basic external storage support" : "Aggiunge un supporto di base per archiviazioni esterne",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Nome",
"Storage type" : "Tipo di archiviazione",
"Scope" : "Ambito",
- "Enable encryption" : "Abilita cifratura",
- "Enable previews" : "Abilita le anteprime",
- "Enable sharing" : "Abilita condivisione",
- "Check for changes" : "Controlla le modifiche",
- "Never" : "Mai",
- "Once every direct access" : "Una volta per ogni accesso diretto",
- "Read only" : "Sola lettura",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Archiviazione esterna ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere agli utenti di montare i propri servizi di archiviazione esterna.",
"Folder name" : "Nome della cartella",
"External storage" : "Archiviazione esterna",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, Google Drive, Dropbox, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne",
"No external storage configured" : "Nessuna archiviazione esterna configurata",
"You can add external storages in the personal settings" : "Puoi aggiungere archiviazioni esterne nelle impostazioni personali",
- "Delete" : "Elimina",
"Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna",
"Are you sure you want to delete this external storage" : "Sei sicuro di voler eliminare questa archiviazione esterna?"
},
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index 330ed5fbc2d..4b9154b157e 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Tutti gli utenti. Digita per selezionare utente o gruppo.",
"(group)" : "(gruppo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)",
+ "Enable encryption" : "Abilita cifratura",
+ "Enable previews" : "Abilita le anteprime",
+ "Enable sharing" : "Abilita condivisione",
+ "Check for changes" : "Controlla le modifiche",
+ "Never" : "Mai",
+ "Once every direct access" : "Una volta per ogni accesso diretto",
+ "Read only" : "Sola lettura",
+ "Delete" : "Elimina",
"Admin defined" : "Definito dall'amministratore",
"Are you sure you want to delete this external storage?" : "Se sicuro di voler eliminare questa archiviazione esterna?",
"Delete storage?" : "Vuoi eliminare l'archiviazione?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Tempo massimo della richiesta (secondi)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto cURL di PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto FTP in PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" non è installato. Impossibile montare %2$s. Chiedi al tuo amministratore di sistema di installarlo.",
"External storage support" : "Supporto archiviazioni esterne",
"Adds basic external storage support" : "Aggiunge un supporto di base per archiviazioni esterne",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne.",
@@ -108,13 +117,6 @@
"Name" : "Nome",
"Storage type" : "Tipo di archiviazione",
"Scope" : "Ambito",
- "Enable encryption" : "Abilita cifratura",
- "Enable previews" : "Abilita le anteprime",
- "Enable sharing" : "Abilita condivisione",
- "Check for changes" : "Controlla le modifiche",
- "Never" : "Mai",
- "Once every direct access" : "Una volta per ogni accesso diretto",
- "Read only" : "Sola lettura",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Archiviazione esterna ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere agli utenti di montare i propri servizi di archiviazione esterna.",
"Folder name" : "Nome della cartella",
"External storage" : "Archiviazione esterna",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, Google Drive, Dropbox, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne",
"No external storage configured" : "Nessuna archiviazione esterna configurata",
"You can add external storages in the personal settings" : "Puoi aggiungere archiviazioni esterne nelle impostazioni personali",
- "Delete" : "Elimina",
"Allow users to mount the following external storage" : "Consenti agli utenti di montare la seguente archiviazione esterna",
"Are you sure you want to delete this external storage" : "Sei sicuro di voler eliminare questa archiviazione esterna?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js
index 77da8bec70c..346dc788ab1 100644
--- a/apps/files_external/l10n/ja.js
+++ b/apps/files_external/l10n/ja.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "すべてのユーザー。ユーザー、グループを追加",
"(group)" : "(グループ)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)",
+ "Enable encryption" : "暗号化を有効に",
+ "Enable previews" : "プレビューを有効に",
+ "Enable sharing" : "共有の有効化",
+ "Check for changes" : "変更点を確認",
+ "Never" : "更新無",
+ "Once every direct access" : "直指定時のみ",
+ "Delete" : "削除",
"Admin defined" : "管理者設定済",
"Delete storage?" : "ストレージを削除しますか?",
"Saved" : "保存しました",
@@ -103,12 +110,6 @@ OC.L10N.register(
"Name" : "名前",
"Storage type" : "ストレージ種別",
"Scope" : "スコープ",
- "Enable encryption" : "暗号化を有効に",
- "Enable previews" : "プレビューを有効に",
- "Enable sharing" : "共有の有効化",
- "Check for changes" : "変更点を確認",
- "Never" : "更新無",
- "Once every direct access" : "直指定時のみ",
"Folder name" : "フォルダー名",
"External storage" : "外部ストレージ",
"Authentication" : "認証",
@@ -129,7 +130,6 @@ OC.L10N.register(
"\"%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" : "個人設定で外部ストレージを設定することができます。",
- "Delete" : "削除",
"Allow users to mount the following external storage" : "ユーザーに次の外部ストレージのマウントを許可する",
"Are you sure you want to delete this external storage" : "この外部ストレージを本当に削除しますか?"
},
diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json
index 9c019416a55..861a4231a60 100644
--- a/apps/files_external/l10n/ja.json
+++ b/apps/files_external/l10n/ja.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "すべてのユーザー。ユーザー、グループを追加",
"(group)" : "(グループ)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)",
+ "Enable encryption" : "暗号化を有効に",
+ "Enable previews" : "プレビューを有効に",
+ "Enable sharing" : "共有の有効化",
+ "Check for changes" : "変更点を確認",
+ "Never" : "更新無",
+ "Once every direct access" : "直指定時のみ",
+ "Delete" : "削除",
"Admin defined" : "管理者設定済",
"Delete storage?" : "ストレージを削除しますか?",
"Saved" : "保存しました",
@@ -101,12 +108,6 @@
"Name" : "名前",
"Storage type" : "ストレージ種別",
"Scope" : "スコープ",
- "Enable encryption" : "暗号化を有効に",
- "Enable previews" : "プレビューを有効に",
- "Enable sharing" : "共有の有効化",
- "Check for changes" : "変更点を確認",
- "Never" : "更新無",
- "Once every direct access" : "直指定時のみ",
"Folder name" : "フォルダー名",
"External storage" : "外部ストレージ",
"Authentication" : "認証",
@@ -127,7 +128,6 @@
"\"%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" : "個人設定で外部ストレージを設定することができます。",
- "Delete" : "削除",
"Allow users to mount the following external storage" : "ユーザーに次の外部ストレージのマウントを許可する",
"Are you sure you want to delete this external storage" : "この外部ストレージを本当に削除しますか?"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_external/l10n/ka_GE.js b/apps/files_external/l10n/ka_GE.js
index 953d6642547..0a46873173d 100644
--- a/apps/files_external/l10n/ka_GE.js
+++ b/apps/files_external/l10n/ka_GE.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "ყველა მომხმარებელი. მოხმარებლის ან ჯგუფის ასარჩევად დაიწყეთ ბეჭდვა.",
"(group)" : "(ჯგუფი)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)",
+ "Enable encryption" : "შიფრაციის ამოქმედება",
+ "Enable previews" : "პრევიუების ამოქმედება",
+ "Enable sharing" : "გაზიარების ამოქმედება",
+ "Check for changes" : "ცვლილებების შემოწმება",
+ "Never" : "არასდროს",
+ "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას",
+ "Delete" : "წაშლა",
"Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ",
"Delete storage?" : "გავაუქმოთ საცავი?",
"Saved" : "შენახულია",
@@ -104,12 +111,6 @@ OC.L10N.register(
"Name" : "სახელი",
"Storage type" : "საცავის სახეობა",
"Scope" : "ფარგლები",
- "Enable encryption" : "შიფრაციის ამოქმედება",
- "Enable previews" : "პრევიუების ამოქმედება",
- "Enable sharing" : "გაზიარების ამოქმედება",
- "Check for changes" : "ცვლილებების შემოწმება",
- "Never" : "არასდროს",
- "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას",
"Folder name" : "დირექტორიის სახელი",
"External storage" : "ექსტერნალური საცავი",
"Authentication" : "აუტენტიფიკაცია",
@@ -131,7 +132,6 @@ OC.L10N.register(
"\"%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" : "გარე საცავები შეგიძლიათ დაამატოთ პირად პარამეტრებში",
- "Delete" : "წაშლა",
"Allow users to mount the following external storage" : "მივცეთ მომხმარებლებს შემდეგი გარე საცავების მონტაჟის უფლება",
"Are you sure you want to delete this external storage" : "დარწმუნებული ხართ, რომ გსურთ ამ გარე საცავის გაუქმება?"
},
diff --git a/apps/files_external/l10n/ka_GE.json b/apps/files_external/l10n/ka_GE.json
index aaea094c821..2742cef50d5 100644
--- a/apps/files_external/l10n/ka_GE.json
+++ b/apps/files_external/l10n/ka_GE.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "ყველა მომხმარებელი. მოხმარებლის ან ჯგუფის ასარჩევად დაიწყეთ ბეჭდვა.",
"(group)" : "(ჯგუფი)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)",
+ "Enable encryption" : "შიფრაციის ამოქმედება",
+ "Enable previews" : "პრევიუების ამოქმედება",
+ "Enable sharing" : "გაზიარების ამოქმედება",
+ "Check for changes" : "ცვლილებების შემოწმება",
+ "Never" : "არასდროს",
+ "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას",
+ "Delete" : "წაშლა",
"Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ",
"Delete storage?" : "გავაუქმოთ საცავი?",
"Saved" : "შენახულია",
@@ -102,12 +109,6 @@
"Name" : "სახელი",
"Storage type" : "საცავის სახეობა",
"Scope" : "ფარგლები",
- "Enable encryption" : "შიფრაციის ამოქმედება",
- "Enable previews" : "პრევიუების ამოქმედება",
- "Enable sharing" : "გაზიარების ამოქმედება",
- "Check for changes" : "ცვლილებების შემოწმება",
- "Never" : "არასდროს",
- "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას",
"Folder name" : "დირექტორიის სახელი",
"External storage" : "ექსტერნალური საცავი",
"Authentication" : "აუტენტიფიკაცია",
@@ -129,7 +130,6 @@
"\"%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" : "გარე საცავები შეგიძლიათ დაამატოთ პირად პარამეტრებში",
- "Delete" : "წაშლა",
"Allow users to mount the following external storage" : "მივცეთ მომხმარებლებს შემდეგი გარე საცავების მონტაჟის უფლება",
"Are you sure you want to delete this external storage" : "დარწმუნებული ხართ, რომ გსურთ ამ გარე საცავის გაუქმება?"
},"pluralForm" :"nplurals=2; plural=(n!=1);"
diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js
index 130eabae822..b5176a6d3da 100644
--- a/apps/files_external/l10n/ko.js
+++ b/apps/files_external/l10n/ko.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오.",
"(group)" : "(그룹)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)",
+ "Enable encryption" : "암호화 사용",
+ "Enable previews" : "미리 보기 사용",
+ "Enable sharing" : "공유 사용",
+ "Check for changes" : "변경 사항 감시",
+ "Never" : "하지 않음",
+ "Once every direct access" : "한 번 직접 접근할 때마다",
+ "Delete" : "삭제",
"Admin defined" : "관리자 지정",
"Delete storage?" : "저장소를 삭제하시겠습니까?",
"Saved" : "저장됨",
@@ -100,12 +107,6 @@ OC.L10N.register(
"Name" : "이름",
"Storage type" : "저장소 종류",
"Scope" : "범위",
- "Enable encryption" : "암호화 사용",
- "Enable previews" : "미리 보기 사용",
- "Enable sharing" : "공유 사용",
- "Check for changes" : "변경 사항 감시",
- "Never" : "하지 않음",
- "Once every direct access" : "한 번 직접 접근할 때마다",
"Folder name" : "폴더 이름",
"External storage" : "외부 저장소",
"Authentication" : "인증",
@@ -126,7 +127,6 @@ OC.L10N.register(
"\"%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" : "개인 설정에서 외부 저장소를 추가할 수 있습니다",
- "Delete" : "삭제",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용",
"Are you sure you want to delete this external storage" : "이 외부 저장소를 삭제하시겠습니까"
},
diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json
index a4d3e9aa21b..4b8e795f488 100644
--- a/apps/files_external/l10n/ko.json
+++ b/apps/files_external/l10n/ko.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오.",
"(group)" : "(그룹)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)",
+ "Enable encryption" : "암호화 사용",
+ "Enable previews" : "미리 보기 사용",
+ "Enable sharing" : "공유 사용",
+ "Check for changes" : "변경 사항 감시",
+ "Never" : "하지 않음",
+ "Once every direct access" : "한 번 직접 접근할 때마다",
+ "Delete" : "삭제",
"Admin defined" : "관리자 지정",
"Delete storage?" : "저장소를 삭제하시겠습니까?",
"Saved" : "저장됨",
@@ -98,12 +105,6 @@
"Name" : "이름",
"Storage type" : "저장소 종류",
"Scope" : "범위",
- "Enable encryption" : "암호화 사용",
- "Enable previews" : "미리 보기 사용",
- "Enable sharing" : "공유 사용",
- "Check for changes" : "변경 사항 감시",
- "Never" : "하지 않음",
- "Once every direct access" : "한 번 직접 접근할 때마다",
"Folder name" : "폴더 이름",
"External storage" : "외부 저장소",
"Authentication" : "인증",
@@ -124,7 +125,6 @@
"\"%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" : "개인 설정에서 외부 저장소를 추가할 수 있습니다",
- "Delete" : "삭제",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용",
"Are you sure you want to delete this external storage" : "이 외부 저장소를 삭제하시겠습니까"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js
index 348189040c2..2123241159e 100644
--- a/apps/files_external/l10n/lt_LT.js
+++ b/apps/files_external/l10n/lt_LT.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Visi naudotojai. Pradėkite rašyti, jei norite pasirinkti konkretų naudotoją ar grupę.",
"(group)" : "(grupė)",
"Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)",
+ "Enable encryption" : "Įjungti šifravimą",
+ "Enable previews" : "Leisti peržiūras",
+ "Enable sharing" : "Leisti bendrinti",
+ "Check for changes" : "Patikrinti ar nėra pakeitimų",
+ "Never" : "Niekada",
+ "Once every direct access" : "Kartą per tiesioginę peržiūrą",
+ "Delete" : "Ištrinti",
"Admin defined" : "Administratorius apibrėžtas",
"Saved" : "Įrašyta",
"Saving..." : "Įrašoma...",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Name" : "Pavadinimas",
"Storage type" : "Saugyklos tipas",
"Scope" : "Leidimas",
- "Enable encryption" : "Įjungti šifravimą",
- "Enable previews" : "Leisti peržiūras",
- "Enable sharing" : "Leisti bendrinti",
- "Check for changes" : "Patikrinti ar nėra pakeitimų",
- "Never" : "Niekada",
- "Once every direct access" : "Kartą per tiesioginę peržiūrą",
"Folder name" : "Aplanko pavadinimas",
"External storage" : "Išorinė saugykla",
"Authentication" : "Prisijungimas",
@@ -116,7 +117,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nėra įdiegta \"%s\". %s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad įdiegtų trūkstamą paketą.",
"No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla",
"You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje",
- "Delete" : "Ištrinti",
"Allow users to mount the following external storage" : "Leisti naudotojams prijungti šias išorines saugyklas"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json
index ff1833270d8..0cbae928573 100644
--- a/apps/files_external/l10n/lt_LT.json
+++ b/apps/files_external/l10n/lt_LT.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Visi naudotojai. Pradėkite rašyti, jei norite pasirinkti konkretų naudotoją ar grupę.",
"(group)" : "(grupė)",
"Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)",
+ "Enable encryption" : "Įjungti šifravimą",
+ "Enable previews" : "Leisti peržiūras",
+ "Enable sharing" : "Leisti bendrinti",
+ "Check for changes" : "Patikrinti ar nėra pakeitimų",
+ "Never" : "Niekada",
+ "Once every direct access" : "Kartą per tiesioginę peržiūrą",
+ "Delete" : "Ištrinti",
"Admin defined" : "Administratorius apibrėžtas",
"Saved" : "Įrašyta",
"Saving..." : "Įrašoma...",
@@ -96,12 +103,6 @@
"Name" : "Pavadinimas",
"Storage type" : "Saugyklos tipas",
"Scope" : "Leidimas",
- "Enable encryption" : "Įjungti šifravimą",
- "Enable previews" : "Leisti peržiūras",
- "Enable sharing" : "Leisti bendrinti",
- "Check for changes" : "Patikrinti ar nėra pakeitimų",
- "Never" : "Niekada",
- "Once every direct access" : "Kartą per tiesioginę peržiūrą",
"Folder name" : "Aplanko pavadinimas",
"External storage" : "Išorinė saugykla",
"Authentication" : "Prisijungimas",
@@ -114,7 +115,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nėra įdiegta \"%s\". %s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad įdiegtų trūkstamą paketą.",
"No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla",
"You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje",
- "Delete" : "Ištrinti",
"Allow users to mount the following external storage" : "Leisti naudotojams prijungti šias išorines saugyklas"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/lv.js b/apps/files_external/l10n/lv.js
index 20c2447768a..075ae6b0a2c 100644
--- a/apps/files_external/l10n/lv.js
+++ b/apps/files_external/l10n/lv.js
@@ -13,6 +13,12 @@ OC.L10N.register(
"All users. Type to select user or group." : "Visiem lietotājiem. Klikšķini, lai atlasītu lietotāju vai grupu.",
"(group)" : "(grupa)",
"Compatibility with Mac NFD encoding (slow)" : "Saderība ar Mac NFD kodēšanu (lēni)",
+ "Enable encryption" : "Ieslēgt šifrēšanu",
+ "Enable previews" : "Iespējot priekšskatījumu",
+ "Enable sharing" : "Koplietošanas iespējošana",
+ "Check for changes" : "Pārbaudīt, vai nav izmaiņu",
+ "Never" : "Nekad",
+ "Delete" : "Dzēst",
"Admin defined" : "Administrators definētās",
"Saved" : "Saglabāts",
"Saving..." : "Saglabā...",
@@ -64,11 +70,6 @@ OC.L10N.register(
"Name" : "Nosaukums",
"Storage type" : "Krātuves tips",
"Scope" : "Darbības joma",
- "Enable encryption" : "Ieslēgt šifrēšanu",
- "Enable previews" : "Iespējot priekšskatījumu",
- "Enable sharing" : "Koplietošanas iespējošana",
- "Check for changes" : "Pārbaudīt, vai nav izmaiņu",
- "Never" : "Nekad",
"Folder name" : "Mapes nosaukums",
"External storage" : "Ārējā krātuve",
"Authentication" : "Autentifikācija",
@@ -78,7 +79,6 @@ OC.L10N.register(
"Advanced settings" : "Paplašināti iestatījumi",
"Allow users to mount external storage" : "Atļaut lietotājiem uzstādīt ārējās krātuves",
"OpenStack" : "OpenStack",
- "No external storage configured" : "Nav konfigurēta ārējā krātuve",
- "Delete" : "Dzēst"
+ "No external storage configured" : "Nav konfigurēta ārējā krātuve"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/files_external/l10n/lv.json b/apps/files_external/l10n/lv.json
index 97557852971..9f5e0da3236 100644
--- a/apps/files_external/l10n/lv.json
+++ b/apps/files_external/l10n/lv.json
@@ -11,6 +11,12 @@
"All users. Type to select user or group." : "Visiem lietotājiem. Klikšķini, lai atlasītu lietotāju vai grupu.",
"(group)" : "(grupa)",
"Compatibility with Mac NFD encoding (slow)" : "Saderība ar Mac NFD kodēšanu (lēni)",
+ "Enable encryption" : "Ieslēgt šifrēšanu",
+ "Enable previews" : "Iespējot priekšskatījumu",
+ "Enable sharing" : "Koplietošanas iespējošana",
+ "Check for changes" : "Pārbaudīt, vai nav izmaiņu",
+ "Never" : "Nekad",
+ "Delete" : "Dzēst",
"Admin defined" : "Administrators definētās",
"Saved" : "Saglabāts",
"Saving..." : "Saglabā...",
@@ -62,11 +68,6 @@
"Name" : "Nosaukums",
"Storage type" : "Krātuves tips",
"Scope" : "Darbības joma",
- "Enable encryption" : "Ieslēgt šifrēšanu",
- "Enable previews" : "Iespējot priekšskatījumu",
- "Enable sharing" : "Koplietošanas iespējošana",
- "Check for changes" : "Pārbaudīt, vai nav izmaiņu",
- "Never" : "Nekad",
"Folder name" : "Mapes nosaukums",
"External storage" : "Ārējā krātuve",
"Authentication" : "Autentifikācija",
@@ -76,7 +77,6 @@
"Advanced settings" : "Paplašināti iestatījumi",
"Allow users to mount external storage" : "Atļaut lietotājiem uzstādīt ārējās krātuves",
"OpenStack" : "OpenStack",
- "No external storage configured" : "Nav konfigurēta ārējā krātuve",
- "Delete" : "Dzēst"
+ "No external storage configured" : "Nav konfigurēta ārējā krātuve"
},"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_external/l10n/nb.js b/apps/files_external/l10n/nb.js
index 5009763bee9..9a63b58caf9 100644
--- a/apps/files_external/l10n/nb.js
+++ b/apps/files_external/l10n/nb.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Alle brukere. Tast for å velge bruker eller gruppe.",
"(group)" : "(gruppe)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)",
+ "Enable encryption" : "Aktiver kryptering",
+ "Enable previews" : "Tillat fohåndsvisning",
+ "Enable sharing" : "Aktiver deling",
+ "Check for changes" : "Se etter endringer",
+ "Never" : "Aldri",
+ "Once every direct access" : "En gang pr. direkte tilgang",
+ "Delete" : "Slett",
"Admin defined" : "Admin-definert",
"Are you sure you want to delete this external storage?" : "Er du sikker på at du ønsker å slette dette eksterne lageret?",
"Delete storage?" : "Slett lagringsplass",
@@ -104,12 +111,6 @@ OC.L10N.register(
"Name" : "Navn",
"Storage type" : "Lagringstype",
"Scope" : "Omfang",
- "Enable encryption" : "Aktiver kryptering",
- "Enable previews" : "Tillat fohåndsvisning",
- "Enable sharing" : "Aktiver deling",
- "Check for changes" : "Se etter endringer",
- "Never" : "Aldri",
- "Once every direct access" : "En gang pr. direkte tilgang",
"Folder name" : "Mappenavn",
"External storage" : "Ekstern lagringsplass",
"Authentication" : "Autentisering",
@@ -131,7 +132,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ikke installert. Oppkobling av %s er ikke mulig. Spør din systemadministrator om å installere det.",
"No external storage configured" : "Eksternt lager er ikke konfigurert",
"You can add external storages in the personal settings" : "Du kan legge til eksterne lagre i personlige innstillinger",
- "Delete" : "Slett",
"Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring",
"Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lagringsplassen?"
},
diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json
index 20d2ad685c3..032e07c638b 100644
--- a/apps/files_external/l10n/nb.json
+++ b/apps/files_external/l10n/nb.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Alle brukere. Tast for å velge bruker eller gruppe.",
"(group)" : "(gruppe)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)",
+ "Enable encryption" : "Aktiver kryptering",
+ "Enable previews" : "Tillat fohåndsvisning",
+ "Enable sharing" : "Aktiver deling",
+ "Check for changes" : "Se etter endringer",
+ "Never" : "Aldri",
+ "Once every direct access" : "En gang pr. direkte tilgang",
+ "Delete" : "Slett",
"Admin defined" : "Admin-definert",
"Are you sure you want to delete this external storage?" : "Er du sikker på at du ønsker å slette dette eksterne lageret?",
"Delete storage?" : "Slett lagringsplass",
@@ -102,12 +109,6 @@
"Name" : "Navn",
"Storage type" : "Lagringstype",
"Scope" : "Omfang",
- "Enable encryption" : "Aktiver kryptering",
- "Enable previews" : "Tillat fohåndsvisning",
- "Enable sharing" : "Aktiver deling",
- "Check for changes" : "Se etter endringer",
- "Never" : "Aldri",
- "Once every direct access" : "En gang pr. direkte tilgang",
"Folder name" : "Mappenavn",
"External storage" : "Ekstern lagringsplass",
"Authentication" : "Autentisering",
@@ -129,7 +130,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ikke installert. Oppkobling av %s er ikke mulig. Spør din systemadministrator om å installere det.",
"No external storage configured" : "Eksternt lager er ikke konfigurert",
"You can add external storages in the personal settings" : "Du kan legge til eksterne lagre i personlige innstillinger",
- "Delete" : "Slett",
"Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring",
"Are you sure you want to delete this external storage" : "Er du sikker på at du vil slette denne eksterne lagringsplassen?"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js
index 4b1df848686..6faabf694f7 100644
--- a/apps/files_external/l10n/nl.js
+++ b/apps/files_external/l10n/nl.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Alle gebruikers. Tikken om een gebruiker of groep te selecteren.",
"(group)" : "(groep)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)",
+ "Enable encryption" : "Versleuteling inschakelen",
+ "Enable previews" : "Activeren voorbeelden",
+ "Enable sharing" : "Activeren delen",
+ "Check for changes" : "Controleren op wijzigingen",
+ "Never" : "Nooit",
+ "Once every direct access" : "Een keer bij elke directe toegang",
+ "Read only" : "Alleen lezen",
+ "Delete" : "Verwijder",
"Admin defined" : "Beheerder gedefinieerd",
"Are you sure you want to delete this external storage?" : "Weet je zeker dat je deze externe opslag wilt verwijderen",
"Delete storage?" : "Opslag verwijderen?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Aanvraag time-out (seconds)",
"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 ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je systeembeheerder dit te installeren.",
"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 ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder dit te installeren.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" is niet geïnstalleerd. Aankoppelen van %2$s is niet mogelijk. Vraag je beheerder om dit te installeren.",
"External storage support" : "Externe opslag ondersteuning",
"Adds basic external storage support" : "Toevoegen basale ondersteuning voor externe opslag",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Met deze applicatie kunnen beheerders verbindingen met externe opslagproviders configureren, zoals FTP-servers, S3- of SWIFT-objectwinkels, andere Nextcloud-servers, WebDAV-servers en meer. Beheerders kunnen kiezen welke opslagtypen moeten worden ingeschakeld en kunnen deze opslaglocaties koppelen aan een gebruiker, een groep of het hele systeem. Gebruikers zien in hun hoofdmap een nieuwe map verschijnen, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Externe opslag stelt gebruikers ook in staat bestanden te delen die zijn opgeslagen op deze externe locaties. In deze gevallen worden de inloggegevens voor de eigenaar van het bestand gebruikt wanneer de ontvanger ​​vanuit externe opslag het bestand opvraagt, waardoor de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan met behulp van de GUI of via de opdrachtregel worden geconfigureerd. Deze tweede optie biedt de geavanceerde gebruiker meer flexibiliteit bij het configureren van bulk externe opslagaankoppelpunten en het instellen van aankoppel-prioriteiten. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor de configuratie van externe opslag.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Naam",
"Storage type" : "Opslagtype",
"Scope" : "Scope",
- "Enable encryption" : "Versleuteling inschakelen",
- "Enable previews" : "Activeren voorbeelden",
- "Enable sharing" : "Activeren delen",
- "Check for changes" : "Controleren op wijzigingen",
- "Never" : "Nooit",
- "Once every direct access" : "Een keer bij elke directe toegang",
- "Read only" : "Alleen lezen",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externe opslag laat je externe opslag diensten en apparaten aankoppelen als secundaire Nextcloud opslag. Je kunt ook toestaan dat gebruikers hun eigen externe opslagdiensten aankoppelen.",
"Folder name" : "Mapnaam",
"External storage" : "Externe opslag",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Met deze applicatie kunnen beheerders verbindingen met externe opslagproviders configureren, zoals FTP-servers, S3- of SWIFT-objectwinkels, Google Drive, Dropbox, andere Nextcloud-servers, WebDAV-servers en meer. Beheerders kunnen kiezen welke opslagtypen moeten worden ingeschakeld en kunnen deze opslaglocaties koppelen aan een gebruiker, een groep of het hele systeem. Gebruikers zien in hun hoofdmap een nieuwe map verschijnen, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Externe opslag stelt gebruikers ook in staat bestanden te delen die zijn opgeslagen op deze externe locaties. In deze gevallen worden de inloggegevens voor de eigenaar van het bestand gebruikt wanneer de ontvanger ​​vanuit externe opslag het bestand opvraagt, waardoor de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan met behulp van de GUI of via de opdrachtregel worden geconfigureerd. Deze tweede optie biedt de geavanceerde gebruiker meer flexibiliteit bij het configureren van bulk externe opslagaankoppelpunten en het instellen van aankoppel-prioriteiten. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor de configuratie van externe opslag.",
"No external storage configured" : "Geen externe opslag geconfigureerd",
"You can add external storages in the personal settings" : "Je kunt externe opslag toevoegen in persoonlijke instellingen",
- "Delete" : "Verwijder",
"Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen",
"Are you sure you want to delete this external storage" : "Weet je zeker dat je de externe opslag wilt verwijderen"
},
diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json
index b4ba39f6404..3c11e10a1b6 100644
--- a/apps/files_external/l10n/nl.json
+++ b/apps/files_external/l10n/nl.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Alle gebruikers. Tikken om een gebruiker of groep te selecteren.",
"(group)" : "(groep)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)",
+ "Enable encryption" : "Versleuteling inschakelen",
+ "Enable previews" : "Activeren voorbeelden",
+ "Enable sharing" : "Activeren delen",
+ "Check for changes" : "Controleren op wijzigingen",
+ "Never" : "Nooit",
+ "Once every direct access" : "Een keer bij elke directe toegang",
+ "Read only" : "Alleen lezen",
+ "Delete" : "Verwijder",
"Admin defined" : "Beheerder gedefinieerd",
"Are you sure you want to delete this external storage?" : "Weet je zeker dat je deze externe opslag wilt verwijderen",
"Delete storage?" : "Opslag verwijderen?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Aanvraag time-out (seconds)",
"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 ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je systeembeheerder dit te installeren.",
"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 ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder dit te installeren.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" is niet geïnstalleerd. Aankoppelen van %2$s is niet mogelijk. Vraag je beheerder om dit te installeren.",
"External storage support" : "Externe opslag ondersteuning",
"Adds basic external storage support" : "Toevoegen basale ondersteuning voor externe opslag",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Met deze applicatie kunnen beheerders verbindingen met externe opslagproviders configureren, zoals FTP-servers, S3- of SWIFT-objectwinkels, andere Nextcloud-servers, WebDAV-servers en meer. Beheerders kunnen kiezen welke opslagtypen moeten worden ingeschakeld en kunnen deze opslaglocaties koppelen aan een gebruiker, een groep of het hele systeem. Gebruikers zien in hun hoofdmap een nieuwe map verschijnen, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Externe opslag stelt gebruikers ook in staat bestanden te delen die zijn opgeslagen op deze externe locaties. In deze gevallen worden de inloggegevens voor de eigenaar van het bestand gebruikt wanneer de ontvanger ​​vanuit externe opslag het bestand opvraagt, waardoor de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan met behulp van de GUI of via de opdrachtregel worden geconfigureerd. Deze tweede optie biedt de geavanceerde gebruiker meer flexibiliteit bij het configureren van bulk externe opslagaankoppelpunten en het instellen van aankoppel-prioriteiten. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor de configuratie van externe opslag.",
@@ -108,13 +117,6 @@
"Name" : "Naam",
"Storage type" : "Opslagtype",
"Scope" : "Scope",
- "Enable encryption" : "Versleuteling inschakelen",
- "Enable previews" : "Activeren voorbeelden",
- "Enable sharing" : "Activeren delen",
- "Check for changes" : "Controleren op wijzigingen",
- "Never" : "Nooit",
- "Once every direct access" : "Een keer bij elke directe toegang",
- "Read only" : "Alleen lezen",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externe opslag laat je externe opslag diensten en apparaten aankoppelen als secundaire Nextcloud opslag. Je kunt ook toestaan dat gebruikers hun eigen externe opslagdiensten aankoppelen.",
"Folder name" : "Mapnaam",
"External storage" : "Externe opslag",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Met deze applicatie kunnen beheerders verbindingen met externe opslagproviders configureren, zoals FTP-servers, S3- of SWIFT-objectwinkels, Google Drive, Dropbox, andere Nextcloud-servers, WebDAV-servers en meer. Beheerders kunnen kiezen welke opslagtypen moeten worden ingeschakeld en kunnen deze opslaglocaties koppelen aan een gebruiker, een groep of het hele systeem. Gebruikers zien in hun hoofdmap een nieuwe map verschijnen, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Externe opslag stelt gebruikers ook in staat bestanden te delen die zijn opgeslagen op deze externe locaties. In deze gevallen worden de inloggegevens voor de eigenaar van het bestand gebruikt wanneer de ontvanger ​​vanuit externe opslag het bestand opvraagt, waardoor de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan met behulp van de GUI of via de opdrachtregel worden geconfigureerd. Deze tweede optie biedt de geavanceerde gebruiker meer flexibiliteit bij het configureren van bulk externe opslagaankoppelpunten en het instellen van aankoppel-prioriteiten. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor de configuratie van externe opslag.",
"No external storage configured" : "Geen externe opslag geconfigureerd",
"You can add external storages in the personal settings" : "Je kunt externe opslag toevoegen in persoonlijke instellingen",
- "Delete" : "Verwijder",
"Allow users to mount the following external storage" : "Sta gebruikers toe de volgende externe opslag aan te koppelen",
"Are you sure you want to delete this external storage" : "Weet je zeker dat je de externe opslag wilt verwijderen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index 1c415a483ab..0fa670180f2 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Wszyscy użytkownicy. Zacznij pisać, aby wybrać użytkownika lub grupę.",
"(group)" : "(grupa)",
"Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)",
+ "Enable encryption" : "Włącz szyfrowanie",
+ "Enable previews" : "Włącz podgląd",
+ "Enable sharing" : "Włącz udostępnianie",
+ "Check for changes" : "Sprawdź zmiany",
+ "Never" : "Nigdy",
+ "Once every direct access" : "Jeden raz przy każdym dostępie",
+ "Delete" : "Usuń",
"Admin defined" : "Zdefiniowane przez Administratora",
"Are you sure you want to delete this external storage?" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?",
"Delete storage?" : "Usunąć magazyn?",
@@ -106,12 +113,6 @@ OC.L10N.register(
"Name" : "Nazwa",
"Storage type" : "Typ magazynu",
"Scope" : "Zakres",
- "Enable encryption" : "Włącz szyfrowanie",
- "Enable previews" : "Włącz podgląd",
- "Enable sharing" : "Włącz udostępnianie",
- "Check for changes" : "Sprawdź zmiany",
- "Never" : "Nigdy",
- "Once every direct access" : "Jeden raz przy każdym dostępie",
"Folder name" : "Nazwa folderu",
"External storage" : "Zewnętrzne zasoby dyskowe",
"Authentication" : "Poświadczenie",
@@ -133,7 +134,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nie jest zainstalowane. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby dokonał instalacji.",
"No external storage configured" : "Nie skonfigurowano żadnego zewnętrznego nośnika",
"You can add external storages in the personal settings" : "W ustawieniach osobistych możesz dodać zewnętrzne magazyny przechowywania",
- "Delete" : "Usuń",
"Allow users to mount the following external storage" : "Pozwól użytkownikom montować następujące zewnętrzne zasoby dyskowe",
"Are you sure you want to delete this external storage" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?"
},
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index 25e0c161f81..e63c3e3eebd 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Wszyscy użytkownicy. Zacznij pisać, aby wybrać użytkownika lub grupę.",
"(group)" : "(grupa)",
"Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)",
+ "Enable encryption" : "Włącz szyfrowanie",
+ "Enable previews" : "Włącz podgląd",
+ "Enable sharing" : "Włącz udostępnianie",
+ "Check for changes" : "Sprawdź zmiany",
+ "Never" : "Nigdy",
+ "Once every direct access" : "Jeden raz przy każdym dostępie",
+ "Delete" : "Usuń",
"Admin defined" : "Zdefiniowane przez Administratora",
"Are you sure you want to delete this external storage?" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?",
"Delete storage?" : "Usunąć magazyn?",
@@ -104,12 +111,6 @@
"Name" : "Nazwa",
"Storage type" : "Typ magazynu",
"Scope" : "Zakres",
- "Enable encryption" : "Włącz szyfrowanie",
- "Enable previews" : "Włącz podgląd",
- "Enable sharing" : "Włącz udostępnianie",
- "Check for changes" : "Sprawdź zmiany",
- "Never" : "Nigdy",
- "Once every direct access" : "Jeden raz przy każdym dostępie",
"Folder name" : "Nazwa folderu",
"External storage" : "Zewnętrzne zasoby dyskowe",
"Authentication" : "Poświadczenie",
@@ -131,7 +132,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nie jest zainstalowane. Zamontowanie %s jest niemożliwe. Proszę poprosić swojego administratora systemu, żeby dokonał instalacji.",
"No external storage configured" : "Nie skonfigurowano żadnego zewnętrznego nośnika",
"You can add external storages in the personal settings" : "W ustawieniach osobistych możesz dodać zewnętrzne magazyny przechowywania",
- "Delete" : "Usuń",
"Allow users to mount the following external storage" : "Pozwól użytkownikom montować następujące zewnętrzne zasoby dyskowe",
"Are you sure you want to delete this external storage" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js
index 6002990b86c..8540cb366cd 100644
--- a/apps/files_external/l10n/pt_BR.js
+++ b/apps/files_external/l10n/pt_BR.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos os usuários. Digite para selecionar usuário ou grupo.",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)",
+ "Enable encryption" : "Ativar criptografia",
+ "Enable previews" : "Habilitar visualizações prévias",
+ "Enable sharing" : "Habilitar compartilhamento",
+ "Check for changes" : "Verifique se há alterações",
+ "Never" : "Nunca",
+ "Once every direct access" : "Uma vez a cada acesso direto",
+ "Read only" : "Somente leitura",
+ "Delete" : "Excluir",
"Admin defined" : "Definido pelo administrador",
"Are you sure you want to delete this external storage?" : "Quer realmente excluir este armazenamento externo?",
"Delete storage?" : "Excluir armazenamento?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Tempo requerido esgotado (segundos)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte FTP no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" não está instalado. A montagem de %2$s não é possível. Peça ao administrador para instalá-lo.",
"External storage support" : "Suporte a armazenamento externo",
"Adds basic external storage support" : "Adiciona suporte básico para armazenamento externo",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esse aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. Os administradores podem escolher quais tipos de armazenamento serão habilitados e podem montar esses locais de armazenamento para um usuário, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer no diretório raiz do Nextcloud, que eles podem acessar e usar como qualquer outra pasta. O armazenamento externo também permite que os usuários compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo, assim, que o destinatário possa acessar o arquivo compartilhado.\n\nO armazenamento externo pode ser configurado usando a GUI ou pela linha de comando. Essa segunda opção fornece ao usuário avançado mais flexibilidade para configurar montagens em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do Arquivo de Configuração de armazenamento externo.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Nome",
"Storage type" : "Tipo de armazenamento",
"Scope" : "Alcance",
- "Enable encryption" : "Ativar criptografia",
- "Enable previews" : "Habilitar visualizações prévias",
- "Enable sharing" : "Habilitar compartilhamento",
- "Check for changes" : "Verifique se há alterações",
- "Never" : "Nunca",
- "Once every direct access" : "Uma vez a cada acesso direto",
- "Read only" : "Somente leitura",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "O armazenamento externo permite que você monte serviços e dispositivos como dispositivos de armazenamento secundários Nextcloud. Você também pode permitir que os usuários montem seus próprios serviços de armazenamento externo.",
"Folder name" : "Nome da pasta",
"External storage" : "Armazenamento Externo",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esse aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objeto S3 ou SWIFT, Google Drive, Dropbox, outros servidores Nextcloud, servidores WebDAV e muito mais. Os administradores podem escolher quais tipos de armazenamento serão habilitados e podem montá-los para um usuário, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer no diretório raiz do Nextcloud, que eles podem acessar e usar como qualquer outra pasta. O armazenamento externo também permite que os usuários compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo, assim, que o destinatário possa acessar o arquivo compartilhado.\n\nO armazenamento externo pode ser configurado usando a GUI ou pela linha de comando. Essa segunda opção fornece ao usuário avançado mais flexibilidade para configurar montagens em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do Arquivo de Configuração de armazenamento externo.",
"No external storage configured" : "Nenhum armazendo externo foi configurado",
"You can add external storages in the personal settings" : "Você pode adicionar armazenamentos externos nas configurações pessoais",
- "Delete" : "Excluir",
"Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo",
"Are you sure you want to delete this external storage" : "Quer realmente excluir este armazenamento externo"
},
diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json
index 9e21ce57db3..e97f66f3c29 100644
--- a/apps/files_external/l10n/pt_BR.json
+++ b/apps/files_external/l10n/pt_BR.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Todos os usuários. Digite para selecionar usuário ou grupo.",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)",
+ "Enable encryption" : "Ativar criptografia",
+ "Enable previews" : "Habilitar visualizações prévias",
+ "Enable sharing" : "Habilitar compartilhamento",
+ "Check for changes" : "Verifique se há alterações",
+ "Never" : "Nunca",
+ "Once every direct access" : "Uma vez a cada acesso direto",
+ "Read only" : "Somente leitura",
+ "Delete" : "Excluir",
"Admin defined" : "Definido pelo administrador",
"Are you sure you want to delete this external storage?" : "Quer realmente excluir este armazenamento externo?",
"Delete storage?" : "Excluir armazenamento?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Tempo requerido esgotado (segundos)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte FTP no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" não está instalado. A montagem de %2$s não é possível. Peça ao administrador para instalá-lo.",
"External storage support" : "Suporte a armazenamento externo",
"Adds basic external storage support" : "Adiciona suporte básico para armazenamento externo",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esse aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. Os administradores podem escolher quais tipos de armazenamento serão habilitados e podem montar esses locais de armazenamento para um usuário, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer no diretório raiz do Nextcloud, que eles podem acessar e usar como qualquer outra pasta. O armazenamento externo também permite que os usuários compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo, assim, que o destinatário possa acessar o arquivo compartilhado.\n\nO armazenamento externo pode ser configurado usando a GUI ou pela linha de comando. Essa segunda opção fornece ao usuário avançado mais flexibilidade para configurar montagens em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do Arquivo de Configuração de armazenamento externo.",
@@ -108,13 +117,6 @@
"Name" : "Nome",
"Storage type" : "Tipo de armazenamento",
"Scope" : "Alcance",
- "Enable encryption" : "Ativar criptografia",
- "Enable previews" : "Habilitar visualizações prévias",
- "Enable sharing" : "Habilitar compartilhamento",
- "Check for changes" : "Verifique se há alterações",
- "Never" : "Nunca",
- "Once every direct access" : "Uma vez a cada acesso direto",
- "Read only" : "Somente leitura",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "O armazenamento externo permite que você monte serviços e dispositivos como dispositivos de armazenamento secundários Nextcloud. Você também pode permitir que os usuários montem seus próprios serviços de armazenamento externo.",
"Folder name" : "Nome da pasta",
"External storage" : "Armazenamento Externo",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Esse aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objeto S3 ou SWIFT, Google Drive, Dropbox, outros servidores Nextcloud, servidores WebDAV e muito mais. Os administradores podem escolher quais tipos de armazenamento serão habilitados e podem montá-los para um usuário, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer no diretório raiz do Nextcloud, que eles podem acessar e usar como qualquer outra pasta. O armazenamento externo também permite que os usuários compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo, assim, que o destinatário possa acessar o arquivo compartilhado.\n\nO armazenamento externo pode ser configurado usando a GUI ou pela linha de comando. Essa segunda opção fornece ao usuário avançado mais flexibilidade para configurar montagens em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do Arquivo de Configuração de armazenamento externo.",
"No external storage configured" : "Nenhum armazendo externo foi configurado",
"You can add external storages in the personal settings" : "Você pode adicionar armazenamentos externos nas configurações pessoais",
- "Delete" : "Excluir",
"Allow users to mount the following external storage" : "Permitir que usuários montem o seguinte armazenamento externo",
"Are you sure you want to delete this external storage" : "Quer realmente excluir este armazenamento externo"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js
index c4c6ee61aee..ab7b2541e2c 100644
--- a/apps/files_external/l10n/pt_PT.js
+++ b/apps/files_external/l10n/pt_PT.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Todos os utilizadores. Digite para selecionar o utilizador ou grupo.",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação NFD Mac (lenta)",
+ "Enable encryption" : "Activar encriptação",
+ "Enable previews" : "Ativar pré-visualizações",
+ "Enable sharing" : "Ativar partilha",
+ "Check for changes" : "Verificar se há alterações",
+ "Never" : "Nunca",
+ "Once every direct access" : "Uma vez em cada acesso direto",
+ "Delete" : "Apagar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "Apagar armazenamento?",
"Saved" : "Guardado",
@@ -101,12 +108,6 @@ OC.L10N.register(
"Name" : "Nome",
"Storage type" : "Tipo de Armazenamento",
"Scope" : "Âmbito",
- "Enable encryption" : "Activar encriptação",
- "Enable previews" : "Ativar pré-visualizações",
- "Enable sharing" : "Ativar partilha",
- "Check for changes" : "Verificar se há alterações",
- "Never" : "Nunca",
- "Once every direct access" : "Uma vez em cada acesso direto",
"Folder name" : "Nome da pasta",
"External storage" : "Armazenamento Externo",
"Authentication" : "Autenticação",
@@ -127,7 +128,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. Não é possível montar %s. Por favor peça ao seu administrador que o instale.",
"No external storage configured" : "Sem armazenamentos externos configurados",
"You can add external storages in the personal settings" : "Pode adicionar armazenamentos externos nas definições pessoais",
- "Delete" : "Apagar",
"Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo",
"Are you sure you want to delete this external storage" : "De certeza que quer apagar este armazenamento externo"
},
diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json
index f6637e08ae0..6d36038fc53 100644
--- a/apps/files_external/l10n/pt_PT.json
+++ b/apps/files_external/l10n/pt_PT.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Todos os utilizadores. Digite para selecionar o utilizador ou grupo.",
"(group)" : "(grupo)",
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação NFD Mac (lenta)",
+ "Enable encryption" : "Activar encriptação",
+ "Enable previews" : "Ativar pré-visualizações",
+ "Enable sharing" : "Ativar partilha",
+ "Check for changes" : "Verificar se há alterações",
+ "Never" : "Nunca",
+ "Once every direct access" : "Uma vez em cada acesso direto",
+ "Delete" : "Apagar",
"Admin defined" : "Administrador definido",
"Delete storage?" : "Apagar armazenamento?",
"Saved" : "Guardado",
@@ -99,12 +106,6 @@
"Name" : "Nome",
"Storage type" : "Tipo de Armazenamento",
"Scope" : "Âmbito",
- "Enable encryption" : "Activar encriptação",
- "Enable previews" : "Ativar pré-visualizações",
- "Enable sharing" : "Ativar partilha",
- "Check for changes" : "Verificar se há alterações",
- "Never" : "Nunca",
- "Once every direct access" : "Uma vez em cada acesso direto",
"Folder name" : "Nome da pasta",
"External storage" : "Armazenamento Externo",
"Authentication" : "Autenticação",
@@ -125,7 +126,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. Não é possível montar %s. Por favor peça ao seu administrador que o instale.",
"No external storage configured" : "Sem armazenamentos externos configurados",
"You can add external storages in the personal settings" : "Pode adicionar armazenamentos externos nas definições pessoais",
- "Delete" : "Apagar",
"Allow users to mount the following external storage" : "Permitir que os utilizadores montem o seguinte armazenamento externo",
"Are you sure you want to delete this external storage" : "De certeza que quer apagar este armazenamento externo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/ro.js b/apps/files_external/l10n/ro.js
index 93de449de50..0c71abba618 100644
--- a/apps/files_external/l10n/ro.js
+++ b/apps/files_external/l10n/ro.js
@@ -10,6 +10,13 @@ OC.L10N.register(
"Error generating key pair" : "Eroarea la generarea cheilor",
"All users. Type to select user or group." : "Toți utilizatorii. Începe să scrii pentru a selecta un utilizator sau un grup.",
"(group)" : "(grup)",
+ "Enable encryption" : "Activează criptarea",
+ "Enable previews" : "Activează previzualizările",
+ "Enable sharing" : "Activează partajarea",
+ "Check for changes" : "Verifică dacă au intervenit modificări",
+ "Never" : "Niciodată",
+ "Once every direct access" : "O dată la fiecare acces direct",
+ "Delete" : "Șterge",
"Admin defined" : "Administrator definit",
"Saved" : "Salvat",
"Save" : "Salvează",
@@ -62,12 +69,6 @@ OC.L10N.register(
"Name" : "Nume",
"Storage type" : "Tip stocare",
"Scope" : "Scop",
- "Enable encryption" : "Activează criptarea",
- "Enable previews" : "Activează previzualizările",
- "Enable sharing" : "Activează partajarea",
- "Check for changes" : "Verifică dacă au intervenit modificări",
- "Never" : "Niciodată",
- "Once every direct access" : "O dată la fiecare acces direct",
"Folder name" : "Denumire director",
"External storage" : "Stocare externă",
"Authentication" : "Autentificare",
@@ -76,7 +77,6 @@ OC.L10N.register(
"Add storage" : "Adauga stocare",
"Advanced settings" : "Setări avansate",
"OpenStack" : "OpenStack",
- "Delete" : "Șterge",
"Allow users to mount the following external storage" : "Permite utilizatorilor să monteze următoarea unitate de stocare"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/files_external/l10n/ro.json b/apps/files_external/l10n/ro.json
index b5b3f177e98..92d2c9568cd 100644
--- a/apps/files_external/l10n/ro.json
+++ b/apps/files_external/l10n/ro.json
@@ -8,6 +8,13 @@
"Error generating key pair" : "Eroarea la generarea cheilor",
"All users. Type to select user or group." : "Toți utilizatorii. Începe să scrii pentru a selecta un utilizator sau un grup.",
"(group)" : "(grup)",
+ "Enable encryption" : "Activează criptarea",
+ "Enable previews" : "Activează previzualizările",
+ "Enable sharing" : "Activează partajarea",
+ "Check for changes" : "Verifică dacă au intervenit modificări",
+ "Never" : "Niciodată",
+ "Once every direct access" : "O dată la fiecare acces direct",
+ "Delete" : "Șterge",
"Admin defined" : "Administrator definit",
"Saved" : "Salvat",
"Save" : "Salvează",
@@ -60,12 +67,6 @@
"Name" : "Nume",
"Storage type" : "Tip stocare",
"Scope" : "Scop",
- "Enable encryption" : "Activează criptarea",
- "Enable previews" : "Activează previzualizările",
- "Enable sharing" : "Activează partajarea",
- "Check for changes" : "Verifică dacă au intervenit modificări",
- "Never" : "Niciodată",
- "Once every direct access" : "O dată la fiecare acces direct",
"Folder name" : "Denumire director",
"External storage" : "Stocare externă",
"Authentication" : "Autentificare",
@@ -74,7 +75,6 @@
"Add storage" : "Adauga stocare",
"Advanced settings" : "Setări avansate",
"OpenStack" : "OpenStack",
- "Delete" : "Șterge",
"Allow users to mount the following external storage" : "Permite utilizatorilor să monteze următoarea unitate de stocare"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js
index c05be8f67c0..4486f3543ff 100644
--- a/apps/files_external/l10n/ru.js
+++ b/apps/files_external/l10n/ru.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Все пользователи. Для выбора введите имя пользователя или группы.",
"(group)" : "(группа)",
"Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)",
+ "Enable encryption" : "Включить шифрование",
+ "Enable previews" : "Включить предварительный просмотр",
+ "Enable sharing" : "Разрешить предоставление общего доступа",
+ "Check for changes" : "Проверять изменения",
+ "Never" : "Никогда",
+ "Once every direct access" : "Каждый раз при прямом доступе",
+ "Read only" : "Только чтение",
+ "Delete" : "Удалить",
"Admin defined" : "Определено администратором",
"Are you sure you want to delete this external storage?" : "Действительно удалить это внешнее хранилище?",
"Delete storage?" : "Удалить хранилище?",
@@ -110,13 +118,6 @@ OC.L10N.register(
"Name" : "Имя",
"Storage type" : "Тип хранилища",
"Scope" : "Область",
- "Enable encryption" : "Включить шифрование",
- "Enable previews" : "Включить предварительный просмотр",
- "Enable sharing" : "Разрешить предоставление общего доступа",
- "Check for changes" : "Проверять изменения",
- "Never" : "Никогда",
- "Once every direct access" : "Каждый раз при прямом доступе",
- "Read only" : "Только чтение",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние устройства хранения и устройства в качестве вторичных устройств хранения Nextcloud. Вы также можете разрешить пользователям устанавливать собственные внешние службы хранения.",
"Folder name" : "Имя папки",
"External storage" : "Внешнее хранилище",
@@ -141,7 +142,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Это приложение позволяет администраторам настраивать подключения к провайдерам внешних хранилищ, таким как FTP-серверы, хранилища объектов S3 или SWIFT, Google Drive, Dropbox, другие серверы Nextcloud, серверы WebDAV и т. Д. Администраторы могут выбирать типы хранилищ для использования и монтировать эти места хранения для пользователя, группы или всей системы. Пользователи увидят, что в их корневой директории Nextcloud появилась новая папка, которую они могут использовать, как и любую другую папку Nextcloud. Внешние хранилища также позволяют пользователям обмениваться файлами, хранящимися в них. В этих случаях учетные данные для владельца файла используются, когда получатель запрашивает файл из внешнего хранилища, тем самым гарантируя, что получатель может получить доступ к общему файлу. Внешнее хранилище можно настроить с помощью GUI или в командной строке. Второй вариант предоставляет продвинутому пользователю большую гибкость для настройки внешнего хранилища и установки приоритетов монтирования. Дополнительная информация доступна в документации по GUI внешного хранилища и документации файла конфигурации внешнего хранилища.",
"No external storage configured" : "Внешние хранилища не настроены",
"You can add external storages in the personal settings" : "Вы можете добавить внешние хранилища в личных настройках",
- "Delete" : "Удалить",
"Allow users to mount the following external storage" : "Разрешить использование следующих служб хранения данных:",
"Are you sure you want to delete this external storage" : "Действительно удалить это внешнее хранилище?"
},
diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json
index 761be0bd9be..6b8d1effa36 100644
--- a/apps/files_external/l10n/ru.json
+++ b/apps/files_external/l10n/ru.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Все пользователи. Для выбора введите имя пользователя или группы.",
"(group)" : "(группа)",
"Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)",
+ "Enable encryption" : "Включить шифрование",
+ "Enable previews" : "Включить предварительный просмотр",
+ "Enable sharing" : "Разрешить предоставление общего доступа",
+ "Check for changes" : "Проверять изменения",
+ "Never" : "Никогда",
+ "Once every direct access" : "Каждый раз при прямом доступе",
+ "Read only" : "Только чтение",
+ "Delete" : "Удалить",
"Admin defined" : "Определено администратором",
"Are you sure you want to delete this external storage?" : "Действительно удалить это внешнее хранилище?",
"Delete storage?" : "Удалить хранилище?",
@@ -108,13 +116,6 @@
"Name" : "Имя",
"Storage type" : "Тип хранилища",
"Scope" : "Область",
- "Enable encryption" : "Включить шифрование",
- "Enable previews" : "Включить предварительный просмотр",
- "Enable sharing" : "Разрешить предоставление общего доступа",
- "Check for changes" : "Проверять изменения",
- "Never" : "Никогда",
- "Once every direct access" : "Каждый раз при прямом доступе",
- "Read only" : "Только чтение",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние устройства хранения и устройства в качестве вторичных устройств хранения Nextcloud. Вы также можете разрешить пользователям устанавливать собственные внешние службы хранения.",
"Folder name" : "Имя папки",
"External storage" : "Внешнее хранилище",
@@ -139,7 +140,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Это приложение позволяет администраторам настраивать подключения к провайдерам внешних хранилищ, таким как FTP-серверы, хранилища объектов S3 или SWIFT, Google Drive, Dropbox, другие серверы Nextcloud, серверы WebDAV и т. Д. Администраторы могут выбирать типы хранилищ для использования и монтировать эти места хранения для пользователя, группы или всей системы. Пользователи увидят, что в их корневой директории Nextcloud появилась новая папка, которую они могут использовать, как и любую другую папку Nextcloud. Внешние хранилища также позволяют пользователям обмениваться файлами, хранящимися в них. В этих случаях учетные данные для владельца файла используются, когда получатель запрашивает файл из внешнего хранилища, тем самым гарантируя, что получатель может получить доступ к общему файлу. Внешнее хранилище можно настроить с помощью GUI или в командной строке. Второй вариант предоставляет продвинутому пользователю большую гибкость для настройки внешнего хранилища и установки приоритетов монтирования. Дополнительная информация доступна в документации по GUI внешного хранилища и документации файла конфигурации внешнего хранилища.",
"No external storage configured" : "Внешние хранилища не настроены",
"You can add external storages in the personal settings" : "Вы можете добавить внешние хранилища в личных настройках",
- "Delete" : "Удалить",
"Allow users to mount the following external storage" : "Разрешить использование следующих служб хранения данных:",
"Are you sure you want to delete this external storage" : "Действительно удалить это внешнее хранилище?"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
diff --git a/apps/files_external/l10n/sk.js b/apps/files_external/l10n/sk.js
index d3f2dd910ac..4347d39b42e 100644
--- a/apps/files_external/l10n/sk.js
+++ b/apps/files_external/l10n/sk.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Všetci používatelia. Začnite písať pre výber používateľa alebo skupinu.",
"(group)" : "(skupina)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD enkódovaním (pomalé)",
+ "Enable encryption" : "Povoliť šifrovanie",
+ "Enable previews" : "Povoliť náhľady",
+ "Enable sharing" : "Povoliť sprístupňovanie",
+ "Check for changes" : "Zisťovať zmeny",
+ "Never" : "Nikdy",
+ "Once every direct access" : "S každým priamym prístupom",
+ "Delete" : "Zmazať",
"Admin defined" : "Nastavené správcom",
"Delete storage?" : "Zmazať externé úložisko?",
"Saved" : "Uložené",
@@ -102,12 +109,6 @@ OC.L10N.register(
"Name" : "Názov",
"Storage type" : "Typ úložiska",
"Scope" : "Rozsah",
- "Enable encryption" : "Povoliť šifrovanie",
- "Enable previews" : "Povoliť náhľady",
- "Enable sharing" : "Povoliť sprístupňovanie",
- "Check for changes" : "Zisťovať zmeny",
- "Never" : "Nikdy",
- "Once every direct access" : "S každým priamym prístupom",
"Folder name" : "Názov priečinka",
"External storage" : "Externé úložisko",
"Authentication" : "Autentifikácia",
@@ -124,7 +125,6 @@ OC.L10N.register(
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nie je nainštalované \"%s\". Pripojenie %s nie je možné. Požiadajte svojho správcu o inštaláciu.",
"No external storage configured" : "Žiadne externé úložisko nie je nakonfigurované",
"You can add external storages in the personal settings" : "Externé úložisko je možné pridať v osobných nastaveniach",
- "Delete" : "Zmazať",
"Allow users to mount the following external storage" : "Povoliť používateľom pripojiť tieto externé úložiská",
"Are you sure you want to delete this external storage" : "Naozaj chcete zmazať toto externé úložisko?"
},
diff --git a/apps/files_external/l10n/sk.json b/apps/files_external/l10n/sk.json
index c337c850494..f7a0f9527c6 100644
--- a/apps/files_external/l10n/sk.json
+++ b/apps/files_external/l10n/sk.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Všetci používatelia. Začnite písať pre výber používateľa alebo skupinu.",
"(group)" : "(skupina)",
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD enkódovaním (pomalé)",
+ "Enable encryption" : "Povoliť šifrovanie",
+ "Enable previews" : "Povoliť náhľady",
+ "Enable sharing" : "Povoliť sprístupňovanie",
+ "Check for changes" : "Zisťovať zmeny",
+ "Never" : "Nikdy",
+ "Once every direct access" : "S každým priamym prístupom",
+ "Delete" : "Zmazať",
"Admin defined" : "Nastavené správcom",
"Delete storage?" : "Zmazať externé úložisko?",
"Saved" : "Uložené",
@@ -100,12 +107,6 @@
"Name" : "Názov",
"Storage type" : "Typ úložiska",
"Scope" : "Rozsah",
- "Enable encryption" : "Povoliť šifrovanie",
- "Enable previews" : "Povoliť náhľady",
- "Enable sharing" : "Povoliť sprístupňovanie",
- "Check for changes" : "Zisťovať zmeny",
- "Never" : "Nikdy",
- "Once every direct access" : "S každým priamym prístupom",
"Folder name" : "Názov priečinka",
"External storage" : "Externé úložisko",
"Authentication" : "Autentifikácia",
@@ -122,7 +123,6 @@
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Nie je nainštalované \"%s\". Pripojenie %s nie je možné. Požiadajte svojho správcu o inštaláciu.",
"No external storage configured" : "Žiadne externé úložisko nie je nakonfigurované",
"You can add external storages in the personal settings" : "Externé úložisko je možné pridať v osobných nastaveniach",
- "Delete" : "Zmazať",
"Allow users to mount the following external storage" : "Povoliť používateľom pripojiť tieto externé úložiská",
"Are you sure you want to delete this external storage" : "Naozaj chcete zmazať toto externé úložisko?"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index 6475f22c20a..36ae71a642d 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
"Compatibility with Mac NFD encoding (slow)" : " Usklajenost z Mac NFD šifriranjem (počasno)",
+ "Enable encryption" : "Omogoči šifriranje",
+ "Enable previews" : "Omogoči predogled",
+ "Enable sharing" : "Omogoči souporabo",
+ "Check for changes" : "Preveri za spremembe",
+ "Never" : "Nikoli",
+ "Once every direct access" : "Enkrat ob neposrednem dostopu",
+ "Delete" : "Izbriši",
"Admin defined" : "Skrbnik je določen",
"Saved" : "Shranjeno",
"Saving..." : "Shranjujem...",
@@ -90,12 +97,6 @@ OC.L10N.register(
"Name" : "Ime",
"Storage type" : "Vrsta shrambe",
"Scope" : "Obseg",
- "Enable encryption" : "Omogoči šifriranje",
- "Enable previews" : "Omogoči predogled",
- "Enable sharing" : "Omogoči souporabo",
- "Check for changes" : "Preveri za spremembe",
- "Never" : "Nikoli",
- "Once every direct access" : "Enkrat ob neposrednem dostopu",
"Folder name" : "Ime mape",
"External storage" : "Zunanja shramba",
"Authentication" : "Overitev",
@@ -107,7 +108,6 @@ OC.L10N.register(
"OpenStack" : "OpenStack",
"No external storage configured" : "Ni določene zunanje shrambe",
"You can add external storages in the personal settings" : "Med nastavitvami je mogoče dodati tudi zunanjo shrambo.",
- "Delete" : "Izbriši",
"Allow users to mount the following external storage" : "Dovoli uporabnikom priklapljanje navedenih zunanjih shramb."
},
"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 0fe27062be1..3af923cd26c 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
"Compatibility with Mac NFD encoding (slow)" : " Usklajenost z Mac NFD šifriranjem (počasno)",
+ "Enable encryption" : "Omogoči šifriranje",
+ "Enable previews" : "Omogoči predogled",
+ "Enable sharing" : "Omogoči souporabo",
+ "Check for changes" : "Preveri za spremembe",
+ "Never" : "Nikoli",
+ "Once every direct access" : "Enkrat ob neposrednem dostopu",
+ "Delete" : "Izbriši",
"Admin defined" : "Skrbnik je določen",
"Saved" : "Shranjeno",
"Saving..." : "Shranjujem...",
@@ -88,12 +95,6 @@
"Name" : "Ime",
"Storage type" : "Vrsta shrambe",
"Scope" : "Obseg",
- "Enable encryption" : "Omogoči šifriranje",
- "Enable previews" : "Omogoči predogled",
- "Enable sharing" : "Omogoči souporabo",
- "Check for changes" : "Preveri za spremembe",
- "Never" : "Nikoli",
- "Once every direct access" : "Enkrat ob neposrednem dostopu",
"Folder name" : "Ime mape",
"External storage" : "Zunanja shramba",
"Authentication" : "Overitev",
@@ -105,7 +106,6 @@
"OpenStack" : "OpenStack",
"No external storage configured" : "Ni določene zunanje shrambe",
"You can add external storages in the personal settings" : "Med nastavitvami je mogoče dodati tudi zunanjo shrambo.",
- "Delete" : "Izbriši",
"Allow users to mount the following external storage" : "Dovoli uporabnikom priklapljanje navedenih zunanjih shramb."
},"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 aedde820bfb..3b669dab066 100644
--- a/apps/files_external/l10n/sq.js
+++ b/apps/files_external/l10n/sq.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "Krejt përdoruesit. Shtypni që të përzgjidhet përdorues ose grup.",
"(group)" : "(grup)",
"Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)",
+ "Enable encryption" : "Aktivizoni fshehtëzim",
+ "Enable previews" : "Aktivizoni paraparje",
+ "Enable sharing" : "Aktivizo ndarjet",
+ "Check for changes" : "Kontrollo për ndryshime",
+ "Never" : "Kurrë",
+ "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta",
+ "Delete" : "Fshije",
"Admin defined" : "Përcaktuar nga përgjegjësi",
"Saved" : "U ruajt",
"Saving..." : "Po ruhet …",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Name" : "Emër",
"Storage type" : "Lloj depozite",
"Scope" : "Shtrirje",
- "Enable encryption" : "Aktivizoni fshehtëzim",
- "Enable previews" : "Aktivizoni paraparje",
- "Enable sharing" : "Aktivizo ndarjet",
- "Check for changes" : "Kontrollo për ndryshime",
- "Never" : "Kurrë",
- "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta",
"Folder name" : "Emër dosjeje",
"External storage" : "Depozitë e jashtme",
"Authentication" : "Mirëfilltësim",
@@ -116,7 +117,6 @@ OC.L10N.register(
"\"%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",
- "Delete" : "Fshije",
"Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json
index df03abc23ef..93f71c1c874 100644
--- a/apps/files_external/l10n/sq.json
+++ b/apps/files_external/l10n/sq.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "Krejt përdoruesit. Shtypni që të përzgjidhet përdorues ose grup.",
"(group)" : "(grup)",
"Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)",
+ "Enable encryption" : "Aktivizoni fshehtëzim",
+ "Enable previews" : "Aktivizoni paraparje",
+ "Enable sharing" : "Aktivizo ndarjet",
+ "Check for changes" : "Kontrollo për ndryshime",
+ "Never" : "Kurrë",
+ "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta",
+ "Delete" : "Fshije",
"Admin defined" : "Përcaktuar nga përgjegjësi",
"Saved" : "U ruajt",
"Saving..." : "Po ruhet …",
@@ -96,12 +103,6 @@
"Name" : "Emër",
"Storage type" : "Lloj depozite",
"Scope" : "Shtrirje",
- "Enable encryption" : "Aktivizoni fshehtëzim",
- "Enable previews" : "Aktivizoni paraparje",
- "Enable sharing" : "Aktivizo ndarjet",
- "Check for changes" : "Kontrollo për ndryshime",
- "Never" : "Kurrë",
- "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta",
"Folder name" : "Emër dosjeje",
"External storage" : "Depozitë e jashtme",
"Authentication" : "Mirëfilltësim",
@@ -114,7 +115,6 @@
"\"%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",
- "Delete" : "Fshije",
"Allow users to mount the following external storage" : "Lejoju përdoruesve të montojnë depozitën e jashtme vijuese"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sr.js b/apps/files_external/l10n/sr.js
index 724e2f2c8f8..fcc6c5be42d 100644
--- a/apps/files_external/l10n/sr.js
+++ b/apps/files_external/l10n/sr.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Сви корисници. Куцајте за избор корисника или групе.",
"(group)" : "(група)",
"Compatibility with Mac NFD encoding (slow)" : "Компатибилност са NFD кодирањем (споро)",
+ "Enable encryption" : "Укључи шифровање",
+ "Enable previews" : "Укључи прегледе",
+ "Enable sharing" : "Укључи дељење",
+ "Check for changes" : "Проверавај за измене",
+ "Never" : "никад",
+ "Once every direct access" : "једном при сваком директном приступу",
+ "Read only" : "Само за читање",
+ "Delete" : "Обриши",
"Admin defined" : "Дефинисао администратор",
"Are you sure you want to delete this external storage?" : "Да ли стварно желите да обришете ово спољашње складиште?",
"Delete storage?" : "Обриши складиште?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "Време захтева истекло (секунде)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ није инсталиран. Монтирање %2$s није могуће. Затражите од вашег администратора система да га инсталира.",
"External storage support" : "Подршка за спољашње складиште",
"Adds basic external storage support" : "Додаје основу подршку за спољна складишта",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, други Некстклауд сервери, WebDAV сервери и још много других. Администратори могу да одаберу које типове складишта желе да омогуће и могу да монтирају локације ових складишта посебно за корисника, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Некстклауд фасциклу. Спољашња складишта такође омогућавају корисницима и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графички или командном линијом. Друга опција пружа више флексибилности напредним корисницима када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у GUI документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Назив",
"Storage type" : "Тип складишта",
"Scope" : "Опсег",
- "Enable encryption" : "Укључи шифровање",
- "Enable previews" : "Укључи прегледе",
- "Enable sharing" : "Укључи дељење",
- "Check for changes" : "Проверавај за измене",
- "Never" : "никад",
- "Once every direct access" : "једном при сваком директном приступу",
- "Read only" : "Само за читање",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Спољно складиште Вам омогућава да монтирате сервисе и уређаје који нуде спољна складишта, и да се виде као Некстклауд уређају за складиштење. Такође можете дозволити корисницима да сами монтирају њихова сопствене сервисе спољних складишта.",
"Folder name" : "Назив фасцикле",
"External storage" : "Спољашње складиште",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, Google Drive, Dropbox, други Некстклауд сервери, WebDAV сервери и још много других. Администратори могу да одаберу које типове складишта желе да омогуће и могу да монтирају локације ових складишта посебно за корисника, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Некстклауд фасциклу. Спољашња складишта такође омогућавају корисницима и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графички или командном линијом. Друга опција пружа више флексибилности напредним корисницима када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у GUI документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.",
"No external storage configured" : "Нема подешеног спољашњег складишта",
"You can add external storages in the personal settings" : "Можете додати спољашња складишта у вашим личним подешавањима",
- "Delete" : "Обриши",
"Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта",
"Are you sure you want to delete this external storage" : "Да ли стварно желите да обришете ово спољашње складиште?"
},
diff --git a/apps/files_external/l10n/sr.json b/apps/files_external/l10n/sr.json
index e0f5f01ed02..2c845d06441 100644
--- a/apps/files_external/l10n/sr.json
+++ b/apps/files_external/l10n/sr.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Сви корисници. Куцајте за избор корисника или групе.",
"(group)" : "(група)",
"Compatibility with Mac NFD encoding (slow)" : "Компатибилност са NFD кодирањем (споро)",
+ "Enable encryption" : "Укључи шифровање",
+ "Enable previews" : "Укључи прегледе",
+ "Enable sharing" : "Укључи дељење",
+ "Check for changes" : "Проверавај за измене",
+ "Never" : "никад",
+ "Once every direct access" : "једном при сваком директном приступу",
+ "Read only" : "Само за читање",
+ "Delete" : "Обриши",
"Admin defined" : "Дефинисао администратор",
"Are you sure you want to delete this external storage?" : "Да ли стварно желите да обришете ово спољашње складиште?",
"Delete storage?" : "Обриши складиште?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "Време захтева истекло (секунде)",
"The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.",
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP подршка за PHP није омогућена или инсталирана. Монтирање %s није могуће. Затражите од вашег администратора система да је инсталира.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ није инсталиран. Монтирање %2$s није могуће. Затражите од вашег администратора система да га инсталира.",
"External storage support" : "Подршка за спољашње складиште",
"Adds basic external storage support" : "Додаје основу подршку за спољна складишта",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, други Некстклауд сервери, WebDAV сервери и још много других. Администратори могу да одаберу које типове складишта желе да омогуће и могу да монтирају локације ових складишта посебно за корисника, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Некстклауд фасциклу. Спољашња складишта такође омогућавају корисницима и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графички или командном линијом. Друга опција пружа више флексибилности напредним корисницима када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у GUI документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.",
@@ -108,13 +117,6 @@
"Name" : "Назив",
"Storage type" : "Тип складишта",
"Scope" : "Опсег",
- "Enable encryption" : "Укључи шифровање",
- "Enable previews" : "Укључи прегледе",
- "Enable sharing" : "Укључи дељење",
- "Check for changes" : "Проверавај за измене",
- "Never" : "никад",
- "Once every direct access" : "једном при сваком директном приступу",
- "Read only" : "Само за читање",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Спољно складиште Вам омогућава да монтирате сервисе и уређаје који нуде спољна складишта, и да се виде као Некстклауд уређају за складиштење. Такође можете дозволити корисницима да сами монтирају њихова сопствене сервисе спољних складишта.",
"Folder name" : "Назив фасцикле",
"External storage" : "Спољашње складиште",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, Google Drive, Dropbox, други Некстклауд сервери, WebDAV сервери и још много других. Администратори могу да одаберу које типове складишта желе да омогуће и могу да монтирају локације ових складишта посебно за корисника, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Некстклауд фасциклу. Спољашња складишта такође омогућавају корисницима и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графички или командном линијом. Друга опција пружа више флексибилности напредним корисницима када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у GUI документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.",
"No external storage configured" : "Нема подешеног спољашњег складишта",
"You can add external storages in the personal settings" : "Можете додати спољашња складишта у вашим личним подешавањима",
- "Delete" : "Обриши",
"Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта",
"Are you sure you want to delete this external storage" : "Да ли стварно желите да обришете ово спољашње складиште?"
},"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);"
diff --git a/apps/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js
index d62937eb93e..3a9928b2a6d 100644
--- a/apps/files_external/l10n/sv.js
+++ b/apps/files_external/l10n/sv.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"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ö)",
+ "Enable encryption" : "Aktivera kryptering",
+ "Enable previews" : "Aktivera förhandsgranskningar",
+ "Enable sharing" : "Aktivera delning",
+ "Check for changes" : "Sök efter ändringar",
+ "Never" : "Aldrig",
+ "Once every direct access" : "En gång vid varje direktanslutning",
+ "Delete" : "Radera",
"Admin defined" : "Admin definerad",
"Delete storage?" : "Ta bort lagring?",
"Saved" : "Sparad",
@@ -99,12 +106,6 @@ OC.L10N.register(
"Name" : "Namn",
"Storage type" : "Lagringstyp",
"Scope" : "Sammanhang",
- "Enable encryption" : "Aktivera kryptering",
- "Enable previews" : "Aktivera förhandsgranskningar",
- "Enable sharing" : "Aktivera delning",
- "Check for changes" : "Sök efter ändringar",
- "Never" : "Aldrig",
- "Once every direct access" : "En gång vid varje direktanslutning",
"Folder name" : "Mappnamn",
"External storage" : "Extern lagring",
"Authentication" : "Autentisering",
@@ -117,7 +118,6 @@ OC.L10N.register(
"\"%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",
- "Delete" : "Radera",
"Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring",
"Are you sure you want to delete this external storage" : "Är du säker att du vill ta bort denna externa lagringen"
},
diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json
index 2b0b0d0fe80..b71db2d4d60 100644
--- a/apps/files_external/l10n/sv.json
+++ b/apps/files_external/l10n/sv.json
@@ -11,6 +11,13 @@
"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ö)",
+ "Enable encryption" : "Aktivera kryptering",
+ "Enable previews" : "Aktivera förhandsgranskningar",
+ "Enable sharing" : "Aktivera delning",
+ "Check for changes" : "Sök efter ändringar",
+ "Never" : "Aldrig",
+ "Once every direct access" : "En gång vid varje direktanslutning",
+ "Delete" : "Radera",
"Admin defined" : "Admin definerad",
"Delete storage?" : "Ta bort lagring?",
"Saved" : "Sparad",
@@ -97,12 +104,6 @@
"Name" : "Namn",
"Storage type" : "Lagringstyp",
"Scope" : "Sammanhang",
- "Enable encryption" : "Aktivera kryptering",
- "Enable previews" : "Aktivera förhandsgranskningar",
- "Enable sharing" : "Aktivera delning",
- "Check for changes" : "Sök efter ändringar",
- "Never" : "Aldrig",
- "Once every direct access" : "En gång vid varje direktanslutning",
"Folder name" : "Mappnamn",
"External storage" : "Extern lagring",
"Authentication" : "Autentisering",
@@ -115,7 +116,6 @@
"\"%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",
- "Delete" : "Radera",
"Allow users to mount the following external storage" : "Tillåt användare att montera följande extern lagring",
"Are you sure you want to delete this external storage" : "Är du säker att du vill ta bort denna externa lagringen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_external/l10n/th.js b/apps/files_external/l10n/th.js
index 5357f733f0f..1fdadfc7cc8 100644
--- a/apps/files_external/l10n/th.js
+++ b/apps/files_external/l10n/th.js
@@ -11,6 +11,13 @@ OC.L10N.register(
"Error generating key pair" : "ข้อผิดพลาดในการสร้างคีย์แบบเป็นคู่",
"All users. Type to select user or group." : "ผู้ใช้ทุกคน พิมพ์เพื่อเลือกผู้ใช้หรือกลุ่ม",
"(group)" : "(กลุ่ม)",
+ "Enable encryption" : "เปิดใช้งานการเข้ารหัส",
+ "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง",
+ "Enable sharing" : "เปิดให้สามารถแชร์ได้",
+ "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง",
+ "Never" : "ไม่เคย",
+ "Once every direct access" : "เมื่อทุกคนเข้าถึงโดยตรง",
+ "Delete" : "ลบ",
"Admin defined" : "ถูกกำหนดโดยผู้ดูแลระบบ",
"Saved" : "บันทึกแล้ว",
"Save" : "บันทึก",
@@ -84,12 +91,6 @@ OC.L10N.register(
"Name" : "ชื่อ",
"Storage type" : "ชนิดการจัดเก็บข้อมูล",
"Scope" : "ขอบเขต",
- "Enable encryption" : "เปิดใช้งานการเข้ารหัส",
- "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง",
- "Enable sharing" : "เปิดให้สามารถแชร์ได้",
- "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง",
- "Never" : "ไม่เคย",
- "Once every direct access" : "เมื่อทุกคนเข้าถึงโดยตรง",
"Folder name" : "ชื่อโฟลเดอร์",
"External storage" : "จัดเก็บข้อมูลภายนอก",
"Authentication" : "รับรองความถูกต้อง",
@@ -101,7 +102,6 @@ OC.L10N.register(
"OpenStack" : "OpenStack",
"No external storage configured" : "ไม่มีการกำหนดค่าจัดเก็บข้อมูลภายนอก",
"You can add external storages in the personal settings" : "คุณสามารถเพิ่มการเก็บรักษาภายนอกในการตั้งค่าส่วนบุคคล",
- "Delete" : "ลบ",
"Allow users to mount the following external storage" : "อนุญาตให้ผู้ใช้ติดตั้งจัดเก็บข้อมูลภายนอกต่อไปนี้"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_external/l10n/th.json b/apps/files_external/l10n/th.json
index 678aef1aac5..205721d61e2 100644
--- a/apps/files_external/l10n/th.json
+++ b/apps/files_external/l10n/th.json
@@ -9,6 +9,13 @@
"Error generating key pair" : "ข้อผิดพลาดในการสร้างคีย์แบบเป็นคู่",
"All users. Type to select user or group." : "ผู้ใช้ทุกคน พิมพ์เพื่อเลือกผู้ใช้หรือกลุ่ม",
"(group)" : "(กลุ่ม)",
+ "Enable encryption" : "เปิดใช้งานการเข้ารหัส",
+ "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง",
+ "Enable sharing" : "เปิดให้สามารถแชร์ได้",
+ "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง",
+ "Never" : "ไม่เคย",
+ "Once every direct access" : "เมื่อทุกคนเข้าถึงโดยตรง",
+ "Delete" : "ลบ",
"Admin defined" : "ถูกกำหนดโดยผู้ดูแลระบบ",
"Saved" : "บันทึกแล้ว",
"Save" : "บันทึก",
@@ -82,12 +89,6 @@
"Name" : "ชื่อ",
"Storage type" : "ชนิดการจัดเก็บข้อมูล",
"Scope" : "ขอบเขต",
- "Enable encryption" : "เปิดใช้งานการเข้ารหัส",
- "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง",
- "Enable sharing" : "เปิดให้สามารถแชร์ได้",
- "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง",
- "Never" : "ไม่เคย",
- "Once every direct access" : "เมื่อทุกคนเข้าถึงโดยตรง",
"Folder name" : "ชื่อโฟลเดอร์",
"External storage" : "จัดเก็บข้อมูลภายนอก",
"Authentication" : "รับรองความถูกต้อง",
@@ -99,7 +100,6 @@
"OpenStack" : "OpenStack",
"No external storage configured" : "ไม่มีการกำหนดค่าจัดเก็บข้อมูลภายนอก",
"You can add external storages in the personal settings" : "คุณสามารถเพิ่มการเก็บรักษาภายนอกในการตั้งค่าส่วนบุคคล",
- "Delete" : "ลบ",
"Allow users to mount the following external storage" : "อนุญาตให้ผู้ใช้ติดตั้งจัดเก็บข้อมูลภายนอกต่อไปนี้"
},"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 5b1b82b08e3..eb831f79890 100644
--- a/apps/files_external/l10n/tr.js
+++ b/apps/files_external/l10n/tr.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "Tüm kullanıcılar. Kullanıcı ya da grup seçmek için yazın.",
"(group)" : "(grup)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)",
+ "Enable encryption" : "Şifreleme kullanılsın",
+ "Enable previews" : "Önizlemeler kullanılsın",
+ "Enable sharing" : "Paylaşım kullanılsın",
+ "Check for changes" : "Değişiklikleri denetle",
+ "Never" : "Asla",
+ "Once every direct access" : "Her doğrudan erişimde bir kez",
+ "Read only" : "Salt okunur",
+ "Delete" : "Sil",
"Admin defined" : "Yönetici ayarlamış",
"Are you sure you want to delete this external storage?" : "Bu dış depolamayı silmek istediğinize emin misiniz?",
"Delete storage?" : "Depolama silinsin mi?",
@@ -103,6 +111,7 @@ OC.L10N.register(
"Request timeout (seconds)" : "İstek zaman aşımı (saniye)",
"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 desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
"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 desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
"External storage support" : "Dış depolama desteği",
"Adds basic external storage support" : "Temel dış depolama desteği ekler",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.",
@@ -110,13 +119,6 @@ OC.L10N.register(
"Name" : "Ad",
"Storage type" : "Depolama türü",
"Scope" : "Kapsam",
- "Enable encryption" : "Şifreleme kullanılsın",
- "Enable previews" : "Önizlemeler kullanılsın",
- "Enable sharing" : "Paylaşım kullanılsın",
- "Check for changes" : "Değişiklikleri denetle",
- "Never" : "Asla",
- "Once every direct access" : "Her doğrudan erişimde bir kez",
- "Read only" : "Salt okunur",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Dış depolama özelliği, dış depolama hizmet ve aygıtlarını ikincil Nextcloud depolama aygıtları olarak ekleyebilmenizi sağlar. Ayrıca kullanıcıların kendi dış depolama aygıtlarını ekleyebilmesine izin verebilirsiniz.",
"Folder name" : "Klasör adı",
"External storage" : "Dış depolama",
@@ -141,7 +143,6 @@ OC.L10N.register(
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, Google Drive, Dropbox, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.",
"No external storage configured" : "Herhangi bir dış depolama yapılandırılmamış",
"You can add external storages in the personal settings" : "Kişisel ayarlar bölümünden dış depolamaları ekleyebilirsiniz",
- "Delete" : "Sil",
"Allow users to mount the following external storage" : "Kullanıcılar şu dış depolamayı bağlayabilsin",
"Are you sure you want to delete this external storage" : "Bu dış depolamayı silmek istediğinize emin misiniz"
},
diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json
index e89038a9b37..755d0938871 100644
--- a/apps/files_external/l10n/tr.json
+++ b/apps/files_external/l10n/tr.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "Tüm kullanıcılar. Kullanıcı ya da grup seçmek için yazın.",
"(group)" : "(grup)",
"Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)",
+ "Enable encryption" : "Şifreleme kullanılsın",
+ "Enable previews" : "Önizlemeler kullanılsın",
+ "Enable sharing" : "Paylaşım kullanılsın",
+ "Check for changes" : "Değişiklikleri denetle",
+ "Never" : "Asla",
+ "Once every direct access" : "Her doğrudan erişimde bir kez",
+ "Read only" : "Salt okunur",
+ "Delete" : "Sil",
"Admin defined" : "Yönetici ayarlamış",
"Are you sure you want to delete this external storage?" : "Bu dış depolamayı silmek istediğinize emin misiniz?",
"Delete storage?" : "Depolama silinsin mi?",
@@ -101,6 +109,7 @@
"Request timeout (seconds)" : "İstek zaman aşımı (saniye)",
"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 desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
"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 desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
+ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.",
"External storage support" : "Dış depolama desteği",
"Adds basic external storage support" : "Temel dış depolama desteği ekler",
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.",
@@ -108,13 +117,6 @@
"Name" : "Ad",
"Storage type" : "Depolama türü",
"Scope" : "Kapsam",
- "Enable encryption" : "Şifreleme kullanılsın",
- "Enable previews" : "Önizlemeler kullanılsın",
- "Enable sharing" : "Paylaşım kullanılsın",
- "Check for changes" : "Değişiklikleri denetle",
- "Never" : "Asla",
- "Once every direct access" : "Her doğrudan erişimde bir kez",
- "Read only" : "Salt okunur",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Dış depolama özelliği, dış depolama hizmet ve aygıtlarını ikincil Nextcloud depolama aygıtları olarak ekleyebilmenizi sağlar. Ayrıca kullanıcıların kendi dış depolama aygıtlarını ekleyebilmesine izin verebilirsiniz.",
"Folder name" : "Klasör adı",
"External storage" : "Dış depolama",
@@ -139,7 +141,6 @@
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud 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 Nextcloud directory, which they can access and use like any other Nextcloud 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.\n\nExternal 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." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, Google Drive, Dropbox, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.",
"No external storage configured" : "Herhangi bir dış depolama yapılandırılmamış",
"You can add external storages in the personal settings" : "Kişisel ayarlar bölümünden dış depolamaları ekleyebilirsiniz",
- "Delete" : "Sil",
"Allow users to mount the following external storage" : "Kullanıcılar şu dış depolamayı bağlayabilsin",
"Are you sure you want to delete this external storage" : "Bu dış depolamayı silmek istediğinize emin misiniz"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js
index 12b2fe45f9e..c257e31c262 100644
--- a/apps/files_external/l10n/zh_CN.js
+++ b/apps/files_external/l10n/zh_CN.js
@@ -13,6 +13,14 @@ OC.L10N.register(
"All users. Type to select user or group." : "全部用户. 点击选择用户或分组.",
"(group)" : "(分组)",
"Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码 (慢)",
+ "Enable encryption" : "启用加密",
+ "Enable previews" : "启用预览",
+ "Enable sharing" : "启用共享",
+ "Check for changes" : "检查修改",
+ "Never" : "从不",
+ "Once every direct access" : "每次访问时",
+ "Read only" : "只读",
+ "Delete" : "删除",
"Admin defined" : "管理员定义",
"Are you sure you want to delete this external storage?" : "你确定要删除这个外部存储吗?",
"Delete storage?" : "删除存储?",
@@ -104,13 +112,6 @@ OC.L10N.register(
"Name" : "名称",
"Storage type" : "存储类型",
"Scope" : "适用范围",
- "Enable encryption" : "启用加密",
- "Enable previews" : "启用预览",
- "Enable sharing" : "启用分享",
- "Check for changes" : "检查修改",
- "Never" : "从不",
- "Once every direct access" : "每次访问时",
- "Read only" : "只读",
"Folder name" : "目录名称",
"External storage" : "外部存储",
"Authentication" : "认证",
@@ -130,7 +131,6 @@ OC.L10N.register(
"\"%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" : "您可以在个人设置中添加外部存储",
- "Delete" : "删除",
"Allow users to mount the following external storage" : "允许用户挂载以下外部存储",
"Are you sure you want to delete this external storage" : "是否要删除该外部存储"
},
diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json
index 44a7ee6373e..8f4744d4d49 100644
--- a/apps/files_external/l10n/zh_CN.json
+++ b/apps/files_external/l10n/zh_CN.json
@@ -11,6 +11,14 @@
"All users. Type to select user or group." : "全部用户. 点击选择用户或分组.",
"(group)" : "(分组)",
"Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码 (慢)",
+ "Enable encryption" : "启用加密",
+ "Enable previews" : "启用预览",
+ "Enable sharing" : "启用共享",
+ "Check for changes" : "检查修改",
+ "Never" : "从不",
+ "Once every direct access" : "每次访问时",
+ "Read only" : "只读",
+ "Delete" : "删除",
"Admin defined" : "管理员定义",
"Are you sure you want to delete this external storage?" : "你确定要删除这个外部存储吗?",
"Delete storage?" : "删除存储?",
@@ -102,13 +110,6 @@
"Name" : "名称",
"Storage type" : "存储类型",
"Scope" : "适用范围",
- "Enable encryption" : "启用加密",
- "Enable previews" : "启用预览",
- "Enable sharing" : "启用分享",
- "Check for changes" : "检查修改",
- "Never" : "从不",
- "Once every direct access" : "每次访问时",
- "Read only" : "只读",
"Folder name" : "目录名称",
"External storage" : "外部存储",
"Authentication" : "认证",
@@ -128,7 +129,6 @@
"\"%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" : "您可以在个人设置中添加外部存储",
- "Delete" : "删除",
"Allow users to mount the following external storage" : "允许用户挂载以下外部存储",
"Are you sure you want to delete this external storage" : "是否要删除该外部存储"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js
index 5a9b1f1dbb6..06476e3f6db 100644
--- a/apps/files_external/l10n/zh_TW.js
+++ b/apps/files_external/l10n/zh_TW.js
@@ -13,6 +13,13 @@ OC.L10N.register(
"All users. Type to select user or group." : "所有人都可以使用,或者選擇特定使用者、群組",
"(group)" : "(群組)",
"Compatibility with Mac NFD encoding (slow)" : "與Mac的NFD編碼格式相容(較慢)",
+ "Enable encryption" : "啟用加密",
+ "Enable previews" : "啟動預覽",
+ "Enable sharing" : "啟動分享",
+ "Check for changes" : "檢查變動",
+ "Never" : "絕不",
+ "Once every direct access" : "在每次進行存取動作時",
+ "Delete" : "刪除",
"Admin defined" : "管理者定義",
"Delete storage?" : "刪除空間",
"Saved" : "已儲存",
@@ -93,12 +100,6 @@ OC.L10N.register(
"Name" : "名稱",
"Storage type" : "儲存類型",
"Scope" : "範圍",
- "Enable encryption" : "啟用加密",
- "Enable previews" : "啟動預覽",
- "Enable sharing" : "啟動分享",
- "Check for changes" : "檢查變動",
- "Never" : "絕不",
- "Once every direct access" : "在每次進行存取動作時",
"Folder name" : "資料夾名稱",
"External storage" : "外部儲存",
"Authentication" : "驗證",
@@ -110,7 +111,6 @@ OC.L10N.register(
"OpenStack" : "OpenStack",
"No external storage configured" : "目前尚未配置任何外部儲存",
"You can add external storages in the personal settings" : "在個人設定裡您可以自行加入外部儲存設定",
- "Delete" : "刪除",
"Allow users to mount the following external storage" : "允許使用者自行掛載以下的外部儲存",
"Are you sure you want to delete this external storage" : "您確定要刪除額外的空間?"
},
diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json
index 3452f8461df..e61451e5ccb 100644
--- a/apps/files_external/l10n/zh_TW.json
+++ b/apps/files_external/l10n/zh_TW.json
@@ -11,6 +11,13 @@
"All users. Type to select user or group." : "所有人都可以使用,或者選擇特定使用者、群組",
"(group)" : "(群組)",
"Compatibility with Mac NFD encoding (slow)" : "與Mac的NFD編碼格式相容(較慢)",
+ "Enable encryption" : "啟用加密",
+ "Enable previews" : "啟動預覽",
+ "Enable sharing" : "啟動分享",
+ "Check for changes" : "檢查變動",
+ "Never" : "絕不",
+ "Once every direct access" : "在每次進行存取動作時",
+ "Delete" : "刪除",
"Admin defined" : "管理者定義",
"Delete storage?" : "刪除空間",
"Saved" : "已儲存",
@@ -91,12 +98,6 @@
"Name" : "名稱",
"Storage type" : "儲存類型",
"Scope" : "範圍",
- "Enable encryption" : "啟用加密",
- "Enable previews" : "啟動預覽",
- "Enable sharing" : "啟動分享",
- "Check for changes" : "檢查變動",
- "Never" : "絕不",
- "Once every direct access" : "在每次進行存取動作時",
"Folder name" : "資料夾名稱",
"External storage" : "外部儲存",
"Authentication" : "驗證",
@@ -108,7 +109,6 @@
"OpenStack" : "OpenStack",
"No external storage configured" : "目前尚未配置任何外部儲存",
"You can add external storages in the personal settings" : "在個人設定裡您可以自行加入外部儲存設定",
- "Delete" : "刪除",
"Allow users to mount the following external storage" : "允許使用者自行掛載以下的外部儲存",
"Are you sure you want to delete this external storage" : "您確定要刪除額外的空間?"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_external/templates/list.php b/apps/files_external/templates/list.php
index ed13ed83701..20f97dd4c08 100644
--- a/apps/files_external/templates/list.php
+++ b/apps/files_external/templates/list.php
@@ -11,7 +11,7 @@
<input type="hidden" name="dir" value="" id="dir">
-<table id="filestable">
+<table id="filestable" class="list-container view-grid">
<thead>
<tr>
<th id='headerName' class="hidden column-name">
diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss
index 1423705ffc9..44b7e53d207 100644
--- a/apps/files_sharing/css/public.scss
+++ b/apps/files_sharing/css/public.scss
@@ -1,5 +1,4 @@
#preview {
- background: var(--color-main-background);
text-align: center;
}
diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js
index 750f66236ae..b6ca71e15d1 100644
--- a/apps/files_sharing/js/app.js
+++ b/apps/files_sharing/js/app.js
@@ -34,7 +34,11 @@ OCA.Sharing.App = {
id: 'shares.self',
sharedWithUser: true,
fileActions: this._createFileActions(),
- config: OCA.Files.App.getFilesConfig()
+ config: OCA.Files.App.getFilesConfig(),
+ // The file list is created when a "show" event is handled, so
+ // it should be marked as "shown" like it would have been done
+ // if handling the event with the file list already created.
+ shown: true
}
);
@@ -56,7 +60,11 @@ OCA.Sharing.App = {
id: 'shares.others',
sharedWithUser: false,
fileActions: this._createFileActions(),
- config: OCA.Files.App.getFilesConfig()
+ config: OCA.Files.App.getFilesConfig(),
+ // The file list is created when a "show" event is handled, so
+ // it should be marked as "shown" like it would have been done
+ // if handling the event with the file list already created.
+ shown: true
}
);
@@ -78,7 +86,11 @@ OCA.Sharing.App = {
id: 'shares.link',
linksOnly: true,
fileActions: this._createFileActions(),
- config: OCA.Files.App.getFilesConfig()
+ config: OCA.Files.App.getFilesConfig(),
+ // The file list is created when a "show" event is handled, so
+ // it should be marked as "shown" like it would have been done
+ // if handling the event with the file list already created.
+ shown: true
}
);
@@ -101,7 +113,11 @@ OCA.Sharing.App = {
showDeleted: true,
sharedWithUser: true,
fileActions: this._restoreShareAction(),
- config: OCA.Files.App.getFilesConfig()
+ config: OCA.Files.App.getFilesConfig(),
+ // The file list is created when a "show" event is handled, so
+ // it should be marked as "shown" like it would have been done
+ // if handling the event with the file list already created.
+ shown: true
}
);
@@ -122,7 +138,11 @@ OCA.Sharing.App = {
{
id: 'shares.overview',
config: OCA.Files.App.getFilesConfig(),
- isOverview: true
+ isOverview: true,
+ // The file list is created when a "show" event is handled, so
+ // it should be marked as "shown" like it would have been done
+ // if handling the event with the file list already created.
+ shown: true
}
);
diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js
index 2b7cea8d0dc..1dd9f5af6c7 100644
--- a/apps/files_sharing/js/public.js
+++ b/apps/files_sharing/js/public.js
@@ -229,10 +229,10 @@ OCA.Sharing.PublicApp = {
this.fileList.generatePreviewUrl = function (urlSpec) {
urlSpec = urlSpec || {};
if (!urlSpec.x) {
- urlSpec.x = 32;
+ urlSpec.x = this.$table.data('preview-x') || 32;
}
if (!urlSpec.y) {
- urlSpec.y = 32;
+ urlSpec.y = this.$table.data('preview-y') || 32;
}
urlSpec.x *= window.devicePixelRatio;
urlSpec.y *= window.devicePixelRatio;
diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js
index 1535e744639..7fa38a58c59 100644
--- a/apps/files_sharing/js/sharedfilelist.js
+++ b/apps/files_sharing/js/sharedfilelist.js
@@ -446,12 +446,6 @@
// Sort by expected sort comparator
return files.sort(this._sortComparator);
},
-
- _onUrlChanged: function(e) {
- if (e && _.isString(e.dir)) {
- this.changeDirectory(e.dir, false, true);
- }
- }
});
/**
diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js
index f51a4013c16..fdc18a2da3f 100644
--- a/apps/files_sharing/l10n/cs.js
+++ b/apps/files_sharing/l10n/cs.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Nahrávání veřejností zakázáno správcem",
"Public upload is only possible for publicly shared folders" : "Veřejné nahrávání je možné pouze do veřejně sdílených šložek",
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby jeho formát byl RRRR-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Sdílení %1$s se nezdařilo, protože podpůrná vrstva nepodporuje typ sdílení %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení %s posláním hesla přes Nextcloud Talk se nezdařilo, protože Nextcloud Talk není zapnutý",
"You cannot share to a Circle if the app is not enabled" : "Do okruhu nemůžete sdílet, pokud není aplikace zapnuta",
"Please specify a valid circle" : "Zadejte platný okruh",
diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json
index c414fa387af..877742a4a50 100644
--- a/apps/files_sharing/l10n/cs.json
+++ b/apps/files_sharing/l10n/cs.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Nahrávání veřejností zakázáno správcem",
"Public upload is only possible for publicly shared folders" : "Veřejné nahrávání je možné pouze do veřejně sdílených šložek",
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby jeho formát byl RRRR-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Sdílení %1$s se nezdařilo, protože podpůrná vrstva nepodporuje typ sdílení %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení %s posláním hesla přes Nextcloud Talk se nezdařilo, protože Nextcloud Talk není zapnutý",
"You cannot share to a Circle if the app is not enabled" : "Do okruhu nemůžete sdílet, pokud není aplikace zapnuta",
"Please specify a valid circle" : "Zadejte platný okruh",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 9820e5d9363..acac2952093 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Du kannst nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 53f699c7c27..97d761b3bd5 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Du kannst nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index d8e553463ec..04090d4fff5 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Sie können nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 7f9bd8374d0..88cbc15a831 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Sie können nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index bd3ab6b239d..43f9c5f3ce7 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "La subida pública está deshabilitado por el administrador",
"Public upload is only possible for publicly shared folders" : "La subida publica solo es posible para las carpetas publicas compartidas",
"Invalid date, date format must be YYYY-MM-DD" : "Fecha inválida, el formato de las fechas debe ser YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Compartir %1$s ha fallado porque el motor no permite compartidos del tipo %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir %s enviando la contraseña por Nextcloud Talk ha falllado porque Nextcloud Talk no está activado",
"You cannot share to a Circle if the app is not enabled" : "No puede compartir a un Circulo si la aplicación no esta activada",
"Please specify a valid circle" : "Por favor especifique un circulo valido",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index d5a19f2b8b7..00fa8870b72 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "La subida pública está deshabilitado por el administrador",
"Public upload is only possible for publicly shared folders" : "La subida publica solo es posible para las carpetas publicas compartidas",
"Invalid date, date format must be YYYY-MM-DD" : "Fecha inválida, el formato de las fechas debe ser YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Compartir %1$s ha fallado porque el motor no permite compartidos del tipo %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir %s enviando la contraseña por Nextcloud Talk ha falllado porque Nextcloud Talk no está activado",
"You cannot share to a Circle if the app is not enabled" : "No puede compartir a un Circulo si la aplicación no esta activada",
"Please specify a valid circle" : "Por favor especifique un circulo valido",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index 523aebc6c36..e6549b0cdf5 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Téléversement public désactivé par l'administrateur",
"Public upload is only possible for publicly shared folders" : "Le téléversement public est possible uniquement pour les dossiers partagés publiquement",
"Invalid date, date format must be YYYY-MM-DD" : "Date non valide, le format doit être DD/MM/YYYY",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Le partage %1$s a échoué parce que l'infrastructure n'autorise pas les partages du type %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Partager %s en envoyant le mot de passe par Nextcloud Talk a échoué car Nextcloud Talk n'est pas activé.",
"You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée",
"Please specify a valid circle" : "Veuillez entrer un cercle valide",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index 8695dfc9afc..da6f68c246a 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Téléversement public désactivé par l'administrateur",
"Public upload is only possible for publicly shared folders" : "Le téléversement public est possible uniquement pour les dossiers partagés publiquement",
"Invalid date, date format must be YYYY-MM-DD" : "Date non valide, le format doit être DD/MM/YYYY",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Le partage %1$s a échoué parce que l'infrastructure n'autorise pas les partages du type %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Partager %s en envoyant le mot de passe par Nextcloud Talk a échoué car Nextcloud Talk n'est pas activé.",
"You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée",
"Please specify a valid circle" : "Veuillez entrer un cercle valide",
diff --git a/apps/files_sharing/l10n/hu.js b/apps/files_sharing/l10n/hu.js
index fd689b1a3f9..576ec91e059 100644
--- a/apps/files_sharing/l10n/hu.js
+++ b/apps/files_sharing/l10n/hu.js
@@ -83,10 +83,10 @@ OC.L10N.register(
"Could not create share" : "A megosztás nem hozható létre",
"invalid permissions" : "érvénytelen jogosultságok",
"Please specify a valid user" : "Kérlek adj meg egy érvényes felhasználót",
- "Group sharing is disabled by the administrator" : "A csoportos megosztást letiltotta az adminisztrátor",
+ "Group sharing is disabled by the administrator" : "A csoportos megosztást letiltotta a rendszergazda",
"Please specify a valid group" : "Kérlek adj meg egy érvényes csoportot",
- "Public link sharing is disabled by the administrator" : "A nyilvános hivatkozást megosztást letiltotta az adminisztrátor",
- "Public upload disabled by the administrator" : "A nyilvános feltöltést letiltotta az adminisztrátor",
+ "Public link sharing is disabled by the administrator" : "A nyilvános hivatkozást megosztást letiltotta a rendszergazda",
+ "Public upload disabled by the administrator" : "A nyilvános feltöltést letiltotta a rendszergazda",
"Public upload is only possible for publicly shared folders" : "A nyilvános feltöltés csak a nyilvánosan megosztott mappákban lehetséges",
"Invalid date, date format must be YYYY-MM-DD" : "Érvénytelen dátum, a dátum csak YYYY-MM-DD formátumú lehet",
"You cannot share to a Circle if the app is not enabled" : "Nem tudod megosztani egy Körrel, ha az alkalmazás nem engedélyezett",
diff --git a/apps/files_sharing/l10n/hu.json b/apps/files_sharing/l10n/hu.json
index cc906b69ad5..926ab4a8da7 100644
--- a/apps/files_sharing/l10n/hu.json
+++ b/apps/files_sharing/l10n/hu.json
@@ -81,10 +81,10 @@
"Could not create share" : "A megosztás nem hozható létre",
"invalid permissions" : "érvénytelen jogosultságok",
"Please specify a valid user" : "Kérlek adj meg egy érvényes felhasználót",
- "Group sharing is disabled by the administrator" : "A csoportos megosztást letiltotta az adminisztrátor",
+ "Group sharing is disabled by the administrator" : "A csoportos megosztást letiltotta a rendszergazda",
"Please specify a valid group" : "Kérlek adj meg egy érvényes csoportot",
- "Public link sharing is disabled by the administrator" : "A nyilvános hivatkozást megosztást letiltotta az adminisztrátor",
- "Public upload disabled by the administrator" : "A nyilvános feltöltést letiltotta az adminisztrátor",
+ "Public link sharing is disabled by the administrator" : "A nyilvános hivatkozást megosztást letiltotta a rendszergazda",
+ "Public upload disabled by the administrator" : "A nyilvános feltöltést letiltotta a rendszergazda",
"Public upload is only possible for publicly shared folders" : "A nyilvános feltöltés csak a nyilvánosan megosztott mappákban lehetséges",
"Invalid date, date format must be YYYY-MM-DD" : "Érvénytelen dátum, a dátum csak YYYY-MM-DD formátumú lehet",
"You cannot share to a Circle if the app is not enabled" : "Nem tudod megosztani egy Körrel, ha az alkalmazás nem engedélyezett",
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 05f2cb12ac7..cbc56eb8fca 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Caricamento pubblico disabilitato dall'amministratore",
"Public upload is only possible for publicly shared folders" : "Il caricamento pubblico è possibile solo per cartelle condivise pubblicamente",
"Invalid date, date format must be YYYY-MM-DD" : "Data non valida, il formato della data deve essere YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Condivisione di %1$s non riuscita poiché il motore non consente condivisioni del tipo %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione di %s tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
"You cannot share to a Circle if the app is not enabled" : "Non puoi condividere con una cerchia se l'applicazione non è abilitata",
"Please specify a valid circle" : "Specifica una cerchia valida",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 5c7c7eabcc3..0a9071fd9ba 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Caricamento pubblico disabilitato dall'amministratore",
"Public upload is only possible for publicly shared folders" : "Il caricamento pubblico è possibile solo per cartelle condivise pubblicamente",
"Invalid date, date format must be YYYY-MM-DD" : "Data non valida, il formato della data deve essere YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Condivisione di %1$s non riuscita poiché il motore non consente condivisioni del tipo %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione di %s tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
"You cannot share to a Circle if the app is not enabled" : "Non puoi condividere con una cerchia se l'applicazione non è abilitata",
"Please specify a valid circle" : "Specifica una cerchia valida",
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index cc846710fb9..3c2f1aec70c 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Publieke upload uitgeschakeld door de systeembeheerder",
"Public upload is only possible for publicly shared folders" : "Publieke upload is alleen mogelijk voor publiek gedeelde mappen",
"Invalid date, date format must be YYYY-MM-DD" : "Ongeldige datum, datumnotatie moet in de vorm YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Delen van %1$s mislukte omdat de backend het delen van type %2$s niet ondersteunt",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen %s versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
"You cannot share to a Circle if the app is not enabled" : "Je kunt niets met een Kring delen als de app niet is ingeschakeld.",
"Please specify a valid circle" : "Geef een geldige kring op",
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index f850a0f3ae7..62816b3edb5 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Publieke upload uitgeschakeld door de systeembeheerder",
"Public upload is only possible for publicly shared folders" : "Publieke upload is alleen mogelijk voor publiek gedeelde mappen",
"Invalid date, date format must be YYYY-MM-DD" : "Ongeldige datum, datumnotatie moet in de vorm YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Delen van %1$s mislukte omdat de backend het delen van type %2$s niet ondersteunt",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen %s versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
"You cannot share to a Circle if the app is not enabled" : "Je kunt niets met een Kring delen als de app niet is ingeschakeld.",
"Please specify a valid circle" : "Geef een geldige kring op",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index 03d7da980a3..52db057cdfc 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador",
"Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente",
"Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "O compartilhamento %1$s falhou porque a infraestrutura não permite compartilhamentos do tipo %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento %s falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
"You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado",
"Please specify a valid circle" : "Por favor especifique um círculo válido",
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index 5eb6d16e3df..78fe47c4ac1 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador",
"Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente",
"Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "O compartilhamento %1$s falhou porque a infraestrutura não permite compartilhamentos do tipo %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento %s falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
"You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado",
"Please specify a valid circle" : "Por favor especifique um círculo válido",
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index 62ce3e59d9a..35a719de06b 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Загрузка в общедоступную папку запрещена администратором",
"Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в общедоступные папки",
"Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Не удалось предоставить общий доступ к «%1$s», поскольку механизм удалённого обмена не разрешает публикации типа %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
"You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено",
"Please specify a valid circle" : "Укажите верный круг",
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index caa74621650..fc31b2380d7 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Загрузка в общедоступную папку запрещена администратором",
"Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в общедоступные папки",
"Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Не удалось предоставить общий доступ к «%1$s», поскольку механизм удалённого обмена не разрешает публикации типа %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
"You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено",
"Please specify a valid circle" : "Укажите верный круг",
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index b405c4dfb7a..aeeb3fc0956 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -33,6 +33,7 @@ OC.L10N.register(
"Could not delete share" : "Tega predmeta v souporabi ni mogoče izbrisati.",
"Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape",
"Wrong path, file/folder doesn't exist" : "Napačna pot; datoteka ali mapa ne obstaja",
+ "invalid permissions" : "neustrezna dovoljenja",
"Please specify a valid user" : "Navesti je treba veljavnega uporabnika.",
"Group sharing is disabled by the administrator" : "Skupinska souporaba je skrbniško onemogočena",
"Please specify a valid group" : "Navesti je treba veljavno skupino",
@@ -47,10 +48,12 @@ OC.L10N.register(
"Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče.",
"Cannot increase permissions" : "Ni mogoče povišati dovoljenj",
"Direct link" : "Neposredna povezava",
+ "Add to your Nextcloud" : "Dodaj v svoj Nextcloud",
"Share API is disabled" : "API za souporabo je izključen",
"No entries found in this folder" : "V tej mapi ni najdenih predmetov.",
"Name" : "Ime",
"Share time" : "Čas souporabe",
+ "Expiration date" : "Datum preteka",
"Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi.",
"Reasons might be:" : "Vzrok je lahko:",
"the item was removed" : "predmet je odstranjen,",
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index 80ca7cdfa59..81d41962dbe 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -31,6 +31,7 @@
"Could not delete share" : "Tega predmeta v souporabi ni mogoče izbrisati.",
"Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape",
"Wrong path, file/folder doesn't exist" : "Napačna pot; datoteka ali mapa ne obstaja",
+ "invalid permissions" : "neustrezna dovoljenja",
"Please specify a valid user" : "Navesti je treba veljavnega uporabnika.",
"Group sharing is disabled by the administrator" : "Skupinska souporaba je skrbniško onemogočena",
"Please specify a valid group" : "Navesti je treba veljavno skupino",
@@ -45,10 +46,12 @@
"Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče.",
"Cannot increase permissions" : "Ni mogoče povišati dovoljenj",
"Direct link" : "Neposredna povezava",
+ "Add to your Nextcloud" : "Dodaj v svoj Nextcloud",
"Share API is disabled" : "API za souporabo je izključen",
"No entries found in this folder" : "V tej mapi ni najdenih predmetov.",
"Name" : "Ime",
"Share time" : "Čas souporabe",
+ "Expiration date" : "Datum preteka",
"Sorry, this link doesn’t seem to work anymore." : "Povezava očitno ni več v uporabi.",
"Reasons might be:" : "Vzrok je lahko:",
"the item was removed" : "predmet je odstranjen,",
diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js
index 9ec7e5198fb..2d3ff556ee7 100644
--- a/apps/files_sharing/l10n/sr.js
+++ b/apps/files_sharing/l10n/sr.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Администратор је забранио отпремања са јавним приступом",
"Public upload is only possible for publicly shared folders" : "Отпремања са јавним приступом су могућа само за јавно дељене фасцикле",
"Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Дељење %1$s није успело зато што позадина не дозвољава дељење које је типа %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
"You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена",
"Please specify a valid circle" : "Одаберите исправан круг",
diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json
index f3739a2ea93..9eb7d45cf69 100644
--- a/apps/files_sharing/l10n/sr.json
+++ b/apps/files_sharing/l10n/sr.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Администратор је забранио отпремања са јавним приступом",
"Public upload is only possible for publicly shared folders" : "Отпремања са јавним приступом су могућа само за јавно дељене фасцикле",
"Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Дељење %1$s није успело зато што позадина не дозвољава дељење које је типа %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
"You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена",
"Please specify a valid circle" : "Одаберите исправан круг",
diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js
index cccd1d1d2b0..47eb4771378 100644
--- a/apps/files_sharing/l10n/sv.js
+++ b/apps/files_sharing/l10n/sv.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"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 %1$s failed because the back end does not allow shares from type %2$s" : "Delning %1$s misslyckades. Ej tillåtet med delningar från typ %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Dela %s och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
"You cannot share to a Circle if the app is not enabled" : "Du kan inte dela till en cirkel om appen inte är aktiverad",
"Please specify a valid circle" : "Vänligen ange en giltig cirkel",
diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json
index 3546f6a4b63..a68cb493b17 100644
--- a/apps/files_sharing/l10n/sv.json
+++ b/apps/files_sharing/l10n/sv.json
@@ -87,6 +87,7 @@
"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 %1$s failed because the back end does not allow shares from type %2$s" : "Delning %1$s misslyckades. Ej tillåtet med delningar från typ %2$s",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Dela %s och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
"You cannot share to a Circle if the app is not enabled" : "Du kan inte dela till en cirkel om appen inte är aktiverad",
"Please specify a valid circle" : "Vänligen ange en giltig cirkel",
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index 34d635b6d17..11f5d833fac 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -89,6 +89,7 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "Herkese açık yükleme yönetici tarafından devre dışı bırakılmış",
"Public upload is only possible for publicly shared folders" : "Herkese açık yükleme ancak herkese açık paylaşılmış klasörlere yapılabilir",
"Invalid date, date format must be YYYY-MM-DD" : "Tarih geçersiz. Tarih biçimi YYYY-AA-GG olmalıdır",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Yönetim bölümünden %2$s türündeki paylaşımlar yapılamadığından %1$s paylaşılamadı",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan %sNextcloud Talk ile parola gönderilerek paylaşılamadı",
"You cannot share to a Circle if the app is not enabled" : "Uygulama etkinleştirilmemiş ise bir Çevre ile paylaşamazsınız",
"Please specify a valid circle" : "Lütfen geçerli bir çevre belirtin",
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index 49ea869654d..dff28b90a41 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -87,6 +87,7 @@
"Public upload disabled by the administrator" : "Herkese açık yükleme yönetici tarafından devre dışı bırakılmış",
"Public upload is only possible for publicly shared folders" : "Herkese açık yükleme ancak herkese açık paylaşılmış klasörlere yapılabilir",
"Invalid date, date format must be YYYY-MM-DD" : "Tarih geçersiz. Tarih biçimi YYYY-AA-GG olmalıdır",
+ "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Yönetim bölümünden %2$s türündeki paylaşımlar yapılamadığından %1$s paylaşılamadı",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan %sNextcloud Talk ile parola gönderilerek paylaşılamadı",
"You cannot share to a Circle if the app is not enabled" : "Uygulama etkinleştirilmemiş ise bir Çevre ile paylaşamazsınız",
"Please specify a valid circle" : "Lütfen geçerli bir çevre belirtin",
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index faf4ca265de..dbed6a651ca 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -1,23 +1,23 @@
OC.L10N.register(
"files_sharing",
{
- "Shared with others" : "您分享的文件",
- "Shared with you" : "收到的分享",
- "Shared by link" : "分享链接的文件",
- "Deleted shares" : "已删除的分享",
- "Shares" : "分享",
+ "Shared with others" : "您共享的文件",
+ "Shared with you" : "收到的共享",
+ "Shared by link" : "共享链接的文件",
+ "Deleted shares" : "已删除的共享",
+ "Shares" : "共享",
"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" : "无分享链接",
+ "No shared links" : "无共享链接",
"Files and folders you share by link will show up here" : "您通过链接共享的文件和文件夹将显示在这里",
- "No deleted shares" : "没有删除的分享",
- "Shares you deleted will show up here" : "您删除的分享将在这里显示",
- "No shares" : "没有分享",
- "Shares will show up here" : "分享将在这里显示",
- "Restore share" : "恢复分享",
- "Something happened. Unable to restore the share." : "发生了问题. 无法恢复该分享.",
+ "No deleted shares" : "没有删除的共享",
+ "Shares you deleted will show up here" : "您删除的共享将在这里显示",
+ "No shares" : "没有共享",
+ "Shares will show up here" : "共享将在这里显示",
+ "Restore share" : "恢复共享",
+ "Something happened. Unable to restore the share." : "发生了问题. 无法恢复该共享.",
"Move or copy" : "移动或复制",
"Download" : "下载",
"Delete" : "删除",
@@ -25,7 +25,7 @@ OC.L10N.register(
"No compatible server found at {remote}" : " {remote} 未发现匹配的服务器",
"Invalid server URL" : "无效的服务器地址",
"Failed to add the public link to your Nextcloud" : "添加公开链接到您的 Nextcloud 失败",
- "Share" : "分享",
+ "Share" : "共享",
"No expiration date set" : "未设置失效时间",
"Shared by" : "共享人",
"Sharing" : "共享",
@@ -34,24 +34,24 @@ OC.L10N.register(
"Downloaded by {email}" : "已被 {email} 下载",
"{file} downloaded via public link" : "{file} 被通过公开链接下载",
"{email} downloaded {file}" : "{email} 已下载 {file}",
- "Shared with group {group}" : "分享到群组 {group}",
- "Removed share for group {group}" : "到群组 {group} 的分享已被移除 ",
- "{actor} shared with group {group}" : "{actor} 被分享到群组 {group}",
+ "Shared with group {group}" : "共享到群组 {group}",
+ "Removed share for group {group}" : "到群组 {group} 的共享已被移除 ",
+ "{actor} shared with group {group}" : "{actor} 被共享到群组 {group}",
"{actor} removed share for group {group}" : "{actor} 删除了群组 {group} 的共享",
- "You shared {file} with group {group}" : "您与群组 {group} 分享了 {file} ",
+ "You shared {file} with group {group}" : "您与群组 {group} 共享了 {file} ",
"You removed group {group} from {file}" : "已移除组 {group} 从 {file}",
- "{actor} shared {file} with group {group}" : " {actor} 与群组 {group} 分享了 {file} ",
+ "{actor} shared {file} with group {group}" : " {actor} 与群组 {group} 共享了 {file} ",
"{actor} removed group {group} from {file}" : "{actor} 从 {file} 删除群组 {group} ",
"Shared as public link" : "共享为公开链接",
"Removed public link" : "移除公开链接",
"Public link expired" : "公开链接已过期",
- "{actor} shared as public link" : "{actor} 公共链接分享",
+ "{actor} shared as public link" : "{actor} 公共链接共享",
"{actor} removed public link" : "{actor} 删除公共链接",
"Public link of {actor} expired" : "{actor} 的公开链接已过期",
"You shared {file} as public link" : "你共享了 {file} 为公开链接",
"You removed public link for {file}" : "你移除了 {file} 的公开链接",
"Public link expired for {file}" : "{file} 的公开链接已过期",
- "{actor} shared {file} as public link" : "{actor} 用公开链接分享了 {file} ",
+ "{actor} shared {file} as public link" : "{actor} 用公开链接共享了 {file} ",
"{actor} removed public link for {file}" : "{actor} 删除了 {file} 的公开链接",
"Public link of {actor} for {file} expired" : "{actor} 为 {file} 创建的公开链接已过期",
"{user} accepted the remote share" : "{user} 接受了远程共享",
@@ -60,18 +60,18 @@ OC.L10N.register(
"{user} accepted the remote share of {file}" : "{user} 接受了 {file} 的远程共享",
"{user} declined the remote share of {file}" : "{user} 拒绝了 {file} 的远程共享",
"{user} unshared {file} from you" : "您未将 {file} 共享给 {user} ",
- "Shared with {user}" : "与 {user} 分享",
+ "Shared with {user}" : "与 {user} 共享",
"Removed share for {user}" : "移除给 {user} 的共享",
"{actor} shared with {user}" : "{actor} 与 {user} 共享",
"{actor} removed share for {user}" : "{actor} 删除了与 {user} 的共享",
"Shared by {actor}" : "由 {actor} 共享",
"{actor} removed share" : "{actor} 移除共享",
- "You shared {file} with {user}" : "您与 {user} 分享了 {file} ",
+ "You shared {file} with {user}" : "您与 {user} 共享了 {file} ",
"You removed {user} from {file}" : "您从 {file} 移除了 {user} ",
"{actor} shared {file} with {user}" : "{actor} 共享 {file} 与 {user}",
"{actor} removed {user} from {file}" : "{actor} 移除 {user} 从 {file}",
"{actor} shared {file} with you" : "{actor} 与您共享了 {file} ",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "通过邮件或公共链接分享的文件或文件夹<strong>已下载</strong>",
+ "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" : "错误的共享 ID,共享不存在",
@@ -88,16 +88,16 @@ OC.L10N.register(
"Public upload disabled by the administrator" : "公共上传已被管理员禁用",
"Public upload is only possible for publicly shared folders" : "公共上传仅适用于公共共享文件夹",
"Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送 %s 分享密码失败.",
- "You cannot share to a Circle if the app is not enabled" : "如果这个应用程序不可用,你不能分享到圈子",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送 %s 共享密码失败.",
+ "You cannot share to a Circle if the app is not enabled" : "如果这个应用程序不可用,你不能共享到圈子",
"Please specify a valid circle" : "请指明一个可用圈子",
- "Sharing %s failed because the back end does not support room shares" : "由于后端不支持房间分享, 所以分享 %s 失败.",
+ "Sharing %s failed because the back end does not support room shares" : "由于后端不支持房间共享, 所以共享 %s 失败.",
"Unknown share type" : "未知共享类型",
"Not a directory" : "不是一个目录",
"Could not lock path" : "无法锁定路径",
"Wrong or no update parameter given" : "错误或没有更新参数给出",
- "Can't change permissions for public share links" : "不能改变公共分享链接权限",
- "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送分享密码失败.",
+ "Can't change permissions for public share links" : "不能改变公共共享链接权限",
+ "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送共享密码失败.",
"Cannot increase permissions" : "不能增加权限",
"shared by %s" : "共享者 %s",
"Direct link" : "直接链接",
@@ -106,7 +106,7 @@ OC.L10N.register(
"File sharing" : "文件共享",
"No entries found in this folder" : "此文件夹中无项目",
"Name" : "名称",
- "Share time" : "分享时间",
+ "Share time" : "共享时间",
"Expiration date" : "到期日期 ",
"Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
"Reasons might be:" : "可能原因是:",
@@ -114,7 +114,7 @@ OC.L10N.register(
"the link expired" : "链接过期",
"sharing is disabled" : "已禁用共享",
"For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
- "Share note" : "分享笔记",
+ "Share note" : "共享笔记",
"Download %s" : "下载 %s",
"Upload files to %s" : "上传文件到 %s",
"Select or drop files" : "选择或删除文件",
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index ae267c35191..47c506af8a1 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -1,21 +1,21 @@
{ "translations": {
- "Shared with others" : "您分享的文件",
- "Shared with you" : "收到的分享",
- "Shared by link" : "分享链接的文件",
- "Deleted shares" : "已删除的分享",
- "Shares" : "分享",
+ "Shared with others" : "您共享的文件",
+ "Shared with you" : "收到的共享",
+ "Shared by link" : "共享链接的文件",
+ "Deleted shares" : "已删除的共享",
+ "Shares" : "共享",
"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" : "无分享链接",
+ "No shared links" : "无共享链接",
"Files and folders you share by link will show up here" : "您通过链接共享的文件和文件夹将显示在这里",
- "No deleted shares" : "没有删除的分享",
- "Shares you deleted will show up here" : "您删除的分享将在这里显示",
- "No shares" : "没有分享",
- "Shares will show up here" : "分享将在这里显示",
- "Restore share" : "恢复分享",
- "Something happened. Unable to restore the share." : "发生了问题. 无法恢复该分享.",
+ "No deleted shares" : "没有删除的共享",
+ "Shares you deleted will show up here" : "您删除的共享将在这里显示",
+ "No shares" : "没有共享",
+ "Shares will show up here" : "共享将在这里显示",
+ "Restore share" : "恢复共享",
+ "Something happened. Unable to restore the share." : "发生了问题. 无法恢复该共享.",
"Move or copy" : "移动或复制",
"Download" : "下载",
"Delete" : "删除",
@@ -23,7 +23,7 @@
"No compatible server found at {remote}" : " {remote} 未发现匹配的服务器",
"Invalid server URL" : "无效的服务器地址",
"Failed to add the public link to your Nextcloud" : "添加公开链接到您的 Nextcloud 失败",
- "Share" : "分享",
+ "Share" : "共享",
"No expiration date set" : "未设置失效时间",
"Shared by" : "共享人",
"Sharing" : "共享",
@@ -32,24 +32,24 @@
"Downloaded by {email}" : "已被 {email} 下载",
"{file} downloaded via public link" : "{file} 被通过公开链接下载",
"{email} downloaded {file}" : "{email} 已下载 {file}",
- "Shared with group {group}" : "分享到群组 {group}",
- "Removed share for group {group}" : "到群组 {group} 的分享已被移除 ",
- "{actor} shared with group {group}" : "{actor} 被分享到群组 {group}",
+ "Shared with group {group}" : "共享到群组 {group}",
+ "Removed share for group {group}" : "到群组 {group} 的共享已被移除 ",
+ "{actor} shared with group {group}" : "{actor} 被共享到群组 {group}",
"{actor} removed share for group {group}" : "{actor} 删除了群组 {group} 的共享",
- "You shared {file} with group {group}" : "您与群组 {group} 分享了 {file} ",
+ "You shared {file} with group {group}" : "您与群组 {group} 共享了 {file} ",
"You removed group {group} from {file}" : "已移除组 {group} 从 {file}",
- "{actor} shared {file} with group {group}" : " {actor} 与群组 {group} 分享了 {file} ",
+ "{actor} shared {file} with group {group}" : " {actor} 与群组 {group} 共享了 {file} ",
"{actor} removed group {group} from {file}" : "{actor} 从 {file} 删除群组 {group} ",
"Shared as public link" : "共享为公开链接",
"Removed public link" : "移除公开链接",
"Public link expired" : "公开链接已过期",
- "{actor} shared as public link" : "{actor} 公共链接分享",
+ "{actor} shared as public link" : "{actor} 公共链接共享",
"{actor} removed public link" : "{actor} 删除公共链接",
"Public link of {actor} expired" : "{actor} 的公开链接已过期",
"You shared {file} as public link" : "你共享了 {file} 为公开链接",
"You removed public link for {file}" : "你移除了 {file} 的公开链接",
"Public link expired for {file}" : "{file} 的公开链接已过期",
- "{actor} shared {file} as public link" : "{actor} 用公开链接分享了 {file} ",
+ "{actor} shared {file} as public link" : "{actor} 用公开链接共享了 {file} ",
"{actor} removed public link for {file}" : "{actor} 删除了 {file} 的公开链接",
"Public link of {actor} for {file} expired" : "{actor} 为 {file} 创建的公开链接已过期",
"{user} accepted the remote share" : "{user} 接受了远程共享",
@@ -58,18 +58,18 @@
"{user} accepted the remote share of {file}" : "{user} 接受了 {file} 的远程共享",
"{user} declined the remote share of {file}" : "{user} 拒绝了 {file} 的远程共享",
"{user} unshared {file} from you" : "您未将 {file} 共享给 {user} ",
- "Shared with {user}" : "与 {user} 分享",
+ "Shared with {user}" : "与 {user} 共享",
"Removed share for {user}" : "移除给 {user} 的共享",
"{actor} shared with {user}" : "{actor} 与 {user} 共享",
"{actor} removed share for {user}" : "{actor} 删除了与 {user} 的共享",
"Shared by {actor}" : "由 {actor} 共享",
"{actor} removed share" : "{actor} 移除共享",
- "You shared {file} with {user}" : "您与 {user} 分享了 {file} ",
+ "You shared {file} with {user}" : "您与 {user} 共享了 {file} ",
"You removed {user} from {file}" : "您从 {file} 移除了 {user} ",
"{actor} shared {file} with {user}" : "{actor} 共享 {file} 与 {user}",
"{actor} removed {user} from {file}" : "{actor} 移除 {user} 从 {file}",
"{actor} shared {file} with you" : "{actor} 与您共享了 {file} ",
- "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "通过邮件或公共链接分享的文件或文件夹<strong>已下载</strong>",
+ "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" : "错误的共享 ID,共享不存在",
@@ -86,16 +86,16 @@
"Public upload disabled by the administrator" : "公共上传已被管理员禁用",
"Public upload is only possible for publicly shared folders" : "公共上传仅适用于公共共享文件夹",
"Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送 %s 分享密码失败.",
- "You cannot share to a Circle if the app is not enabled" : "如果这个应用程序不可用,你不能分享到圈子",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送 %s 共享密码失败.",
+ "You cannot share to a Circle if the app is not enabled" : "如果这个应用程序不可用,你不能共享到圈子",
"Please specify a valid circle" : "请指明一个可用圈子",
- "Sharing %s failed because the back end does not support room shares" : "由于后端不支持房间分享, 所以分享 %s 失败.",
+ "Sharing %s failed because the back end does not support room shares" : "由于后端不支持房间共享, 所以共享 %s 失败.",
"Unknown share type" : "未知共享类型",
"Not a directory" : "不是一个目录",
"Could not lock path" : "无法锁定路径",
"Wrong or no update parameter given" : "错误或没有更新参数给出",
- "Can't change permissions for public share links" : "不能改变公共分享链接权限",
- "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送分享密码失败.",
+ "Can't change permissions for public share links" : "不能改变公共共享链接权限",
+ "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送共享密码失败.",
"Cannot increase permissions" : "不能增加权限",
"shared by %s" : "共享者 %s",
"Direct link" : "直接链接",
@@ -104,7 +104,7 @@
"File sharing" : "文件共享",
"No entries found in this folder" : "此文件夹中无项目",
"Name" : "名称",
- "Share time" : "分享时间",
+ "Share time" : "共享时间",
"Expiration date" : "到期日期 ",
"Sorry, this link doesn’t seem to work anymore." : "抱歉,此链接已失效",
"Reasons might be:" : "可能原因是:",
@@ -112,7 +112,7 @@
"the link expired" : "链接过期",
"sharing is disabled" : "已禁用共享",
"For more info, please ask the person who sent this link." : "欲知详情,请联系发给你链接的人。",
- "Share note" : "分享笔记",
+ "Share note" : "共享笔记",
"Download %s" : "下载 %s",
"Upload files to %s" : "上传文件到 %s",
"Select or drop files" : "选择或删除文件",
diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index 8e9cc5a9636..1e3cbb51028 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -35,6 +35,7 @@
namespace OCA\Files_Sharing\Controller;
+use OC\Security\CSP\ContentSecurityPolicy;
use OC_Files;
use OC_Util;
use OCA\FederatedFileSharing\FederatedShareProvider;
@@ -158,7 +159,16 @@ class ShareController extends AuthPublicShareController {
$event = new GenericEvent(null, $templateParameters);
$this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts::publicShareAuth', $event);
- return new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest');
+ $response = new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest');
+ if ($this->share->getSendPasswordByTalk()) {
+ $csp = new ContentSecurityPolicy();
+ $csp->addAllowedConnectDomain('*');
+ $csp->addAllowedMediaDomain('blob:');
+ $csp->allowEvalScript(true);
+ $response->setContentSecurityPolicy($csp);
+ }
+
+ return $response;
}
/**
@@ -170,7 +180,16 @@ class ShareController extends AuthPublicShareController {
$event = new GenericEvent(null, $templateParameters);
$this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts::publicShareAuth', $event);
- return new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest');
+ $response = new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest');
+ if ($this->share->getSendPasswordByTalk()) {
+ $csp = new ContentSecurityPolicy();
+ $csp->addAllowedConnectDomain('*');
+ $csp->addAllowedMediaDomain('blob:');
+ $csp->allowEvalScript(true);
+ $response->setContentSecurityPolicy($csp);
+ }
+
+ return $response;
}
protected function verifyPassword(string $password): bool {
@@ -338,6 +357,7 @@ class ShareController extends AuthPublicShareController {
$folder->assign('isPublic', true);
$folder->assign('hideFileList', $hideFileList);
$folder->assign('publicUploadEnabled', 'no');
+ $folder->assign('showgridview', true);
$folder->assign('uploadMaxFilesize', $maxUploadFilesize);
$folder->assign('uploadMaxHumanFilesize', \OCP\Util::humanFileSize($maxUploadFilesize));
$folder->assign('freeSpace', $freeSpace);
diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php
index ec13b5c1f77..de92037a563 100644
--- a/apps/files_sharing/templates/list.php
+++ b/apps/files_sharing/templates/list.php
@@ -10,7 +10,7 @@
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
</div>
-<table id="filestable">
+<table id="filestable" class="list-container view-grid">
<thead>
<tr>
<th id='headerName' class="hidden column-name">
diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js
index dc9000af152..9d24a7a7946 100644
--- a/apps/files_sharing/tests/js/publicAppSpec.js
+++ b/apps/files_sharing/tests/js/publicAppSpec.js
@@ -60,7 +60,7 @@ describe('OCA.Sharing.PublicApp tests', function() {
'<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead><tr>' +
'<th id="headerName" class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js
index 554a3a82b34..39472fdeedb 100644
--- a/apps/files_sharing/tests/js/shareSpec.js
+++ b/apps/files_sharing/tests/js/shareSpec.js
@@ -28,7 +28,7 @@ describe('OCA.Sharing.Util tests', function() {
// dummy file list
var $div = $(
'<div id="listContainer">' +
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead></thead>' +
'<tbody id="fileList"></tbody>' +
'</table>' +
@@ -510,8 +510,8 @@ describe('OCA.Sharing.Util tests', function() {
OCA.Sharing.Util.attach(fileList);
fileList.setFiles(testFiles);
});
- afterEach(function() {
- shareTabSpy.restore();
+ afterEach(function() {
+ shareTabSpy.restore();
});
it('updates fileInfoModel when shares changed', function() {
diff --git a/apps/files_sharing/tests/js/sharedfilelistSpec.js b/apps/files_sharing/tests/js/sharedfilelistSpec.js
index c9e2bafcc23..b0b7c1b9b99 100644
--- a/apps/files_sharing/tests/js/sharedfilelistSpec.js
+++ b/apps/files_sharing/tests/js/sharedfilelistSpec.js
@@ -28,7 +28,7 @@ describe('OCA.Sharing.FileList tests', function() {
'</div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead><tr>' +
'<th id="headerName" class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
@@ -701,7 +701,7 @@ describe('OCA.Sharing.FileList tests', function() {
// dummy file list
var $div = $(
'<div>' +
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead></thead>' +
'<tbody id="fileList"></tbody>' +
'</table>' +
diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml
index eb8f46dced1..023cad1264f 100644
--- a/apps/files_trashbin/appinfo/info.xml
+++ b/apps/files_trashbin/appinfo/info.xml
@@ -44,4 +44,8 @@ To prevent a user from running out of disk space, the Deleted files app will not
<plugin>OCA\Files_Trashbin\Sabre\PropfindPlugin</plugin>
</plugins>
</sabre>
+
+ <trash>
+ <backend for="OCP\Files\Storage\IStorage">OCA\Files_Trashbin\Trash\LegacyTrashBackend</backend>
+ </trash>
</info>
diff --git a/apps/files_trashbin/composer/composer/autoload_classmap.php b/apps/files_trashbin/composer/composer/autoload_classmap.php
index 164d64333ce..011e178a5bd 100644
--- a/apps/files_trashbin/composer/composer/autoload_classmap.php
+++ b/apps/files_trashbin/composer/composer/autoload_classmap.php
@@ -19,6 +19,8 @@ return array(
'OCA\\Files_Trashbin\\Helper' => $baseDir . '/../lib/Helper.php',
'OCA\\Files_Trashbin\\Hooks' => $baseDir . '/../lib/Hooks.php',
'OCA\\Files_Trashbin\\Sabre\\AbstractTrash' => $baseDir . '/../lib/Sabre/AbstractTrash.php',
+ 'OCA\\Files_Trashbin\\Sabre\\AbstractTrashFile' => $baseDir . '/../lib/Sabre/AbstractTrashFile.php',
+ 'OCA\\Files_Trashbin\\Sabre\\AbstractTrashFolder' => $baseDir . '/../lib/Sabre/AbstractTrashFolder.php',
'OCA\\Files_Trashbin\\Sabre\\ITrash' => $baseDir . '/../lib/Sabre/ITrash.php',
'OCA\\Files_Trashbin\\Sabre\\PropfindPlugin' => $baseDir . '/../lib/Sabre/PropfindPlugin.php',
'OCA\\Files_Trashbin\\Sabre\\RestoreFolder' => $baseDir . '/../lib/Sabre/RestoreFolder.php',
@@ -30,5 +32,12 @@ return array(
'OCA\\Files_Trashbin\\Sabre\\TrashHome' => $baseDir . '/../lib/Sabre/TrashHome.php',
'OCA\\Files_Trashbin\\Sabre\\TrashRoot' => $baseDir . '/../lib/Sabre/TrashRoot.php',
'OCA\\Files_Trashbin\\Storage' => $baseDir . '/../lib/Storage.php',
+ 'OCA\\Files_Trashbin\\Trash\\BackendNotFoundException' => $baseDir . '/../lib/Trash/BackendNotFoundException.php',
+ 'OCA\\Files_Trashbin\\Trash\\ITrashBackend' => $baseDir . '/../lib/Trash/ITrashBackend.php',
+ 'OCA\\Files_Trashbin\\Trash\\ITrashItem' => $baseDir . '/../lib/Trash/ITrashItem.php',
+ 'OCA\\Files_Trashbin\\Trash\\ITrashManager' => $baseDir . '/../lib/Trash/ITrashManager.php',
+ 'OCA\\Files_Trashbin\\Trash\\LegacyTrashBackend' => $baseDir . '/../lib/Trash/LegacyTrashBackend.php',
+ 'OCA\\Files_Trashbin\\Trash\\TrashItem' => $baseDir . '/../lib/Trash/TrashItem.php',
+ 'OCA\\Files_Trashbin\\Trash\\TrashManager' => $baseDir . '/../lib/Trash/TrashManager.php',
'OCA\\Files_Trashbin\\Trashbin' => $baseDir . '/../lib/Trashbin.php',
);
diff --git a/apps/files_trashbin/composer/composer/autoload_static.php b/apps/files_trashbin/composer/composer/autoload_static.php
index 6ebb8c35f31..37144ec4288 100644
--- a/apps/files_trashbin/composer/composer/autoload_static.php
+++ b/apps/files_trashbin/composer/composer/autoload_static.php
@@ -34,6 +34,8 @@ class ComposerStaticInitFiles_Trashbin
'OCA\\Files_Trashbin\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php',
'OCA\\Files_Trashbin\\Hooks' => __DIR__ . '/..' . '/../lib/Hooks.php',
'OCA\\Files_Trashbin\\Sabre\\AbstractTrash' => __DIR__ . '/..' . '/../lib/Sabre/AbstractTrash.php',
+ 'OCA\\Files_Trashbin\\Sabre\\AbstractTrashFile' => __DIR__ . '/..' . '/../lib/Sabre/AbstractTrashFile.php',
+ 'OCA\\Files_Trashbin\\Sabre\\AbstractTrashFolder' => __DIR__ . '/..' . '/../lib/Sabre/AbstractTrashFolder.php',
'OCA\\Files_Trashbin\\Sabre\\ITrash' => __DIR__ . '/..' . '/../lib/Sabre/ITrash.php',
'OCA\\Files_Trashbin\\Sabre\\PropfindPlugin' => __DIR__ . '/..' . '/../lib/Sabre/PropfindPlugin.php',
'OCA\\Files_Trashbin\\Sabre\\RestoreFolder' => __DIR__ . '/..' . '/../lib/Sabre/RestoreFolder.php',
@@ -45,6 +47,13 @@ class ComposerStaticInitFiles_Trashbin
'OCA\\Files_Trashbin\\Sabre\\TrashHome' => __DIR__ . '/..' . '/../lib/Sabre/TrashHome.php',
'OCA\\Files_Trashbin\\Sabre\\TrashRoot' => __DIR__ . '/..' . '/../lib/Sabre/TrashRoot.php',
'OCA\\Files_Trashbin\\Storage' => __DIR__ . '/..' . '/../lib/Storage.php',
+ 'OCA\\Files_Trashbin\\Trash\\BackendNotFoundException' => __DIR__ . '/..' . '/../lib/Trash/BackendNotFoundException.php',
+ 'OCA\\Files_Trashbin\\Trash\\ITrashBackend' => __DIR__ . '/..' . '/../lib/Trash/ITrashBackend.php',
+ 'OCA\\Files_Trashbin\\Trash\\ITrashItem' => __DIR__ . '/..' . '/../lib/Trash/ITrashItem.php',
+ 'OCA\\Files_Trashbin\\Trash\\ITrashManager' => __DIR__ . '/..' . '/../lib/Trash/ITrashManager.php',
+ 'OCA\\Files_Trashbin\\Trash\\LegacyTrashBackend' => __DIR__ . '/..' . '/../lib/Trash/LegacyTrashBackend.php',
+ 'OCA\\Files_Trashbin\\Trash\\TrashItem' => __DIR__ . '/..' . '/../lib/Trash/TrashItem.php',
+ 'OCA\\Files_Trashbin\\Trash\\TrashManager' => __DIR__ . '/..' . '/../lib/Trash/TrashManager.php',
'OCA\\Files_Trashbin\\Trashbin' => __DIR__ . '/..' . '/../lib/Trashbin.php',
);
diff --git a/apps/files_trashbin/js/app.js b/apps/files_trashbin/js/app.js
index 82e47d510bf..199cb7d4f84 100644
--- a/apps/files_trashbin/js/app.js
+++ b/apps/files_trashbin/js/app.js
@@ -51,7 +51,11 @@ OCA.Trashbin.App = {
iconClass: 'icon-delete',
}
],
- client: this.client
+ client: this.client,
+ // The file list is created when a "show" event is handled, so
+ // it should be marked as "shown" like it would have been done
+ // if handling the event with the file list already created.
+ shown: true
}
);
},
diff --git a/apps/files_trashbin/l10n/hu.js b/apps/files_trashbin/l10n/hu.js
index 0999f4c0340..116f496b901 100644
--- a/apps/files_trashbin/l10n/hu.js
+++ b/apps/files_trashbin/l10n/hu.js
@@ -6,7 +6,7 @@ OC.L10N.register(
"Delete" : "Törlés",
"Delete permanently" : "Végleges törlés",
"This operation is forbidden" : "Tiltott művelet",
- "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse a rendszergazdát",
"restored" : "visszaállítva",
"No deleted files" : "Nincs törölt fájl",
"You will be able to recover deleted files from here" : "Innen vissza tudja állítani a törölt fáljait.",
diff --git a/apps/files_trashbin/l10n/hu.json b/apps/files_trashbin/l10n/hu.json
index 04f9c8df8ec..99ad32eaa83 100644
--- a/apps/files_trashbin/l10n/hu.json
+++ b/apps/files_trashbin/l10n/hu.json
@@ -4,7 +4,7 @@
"Delete" : "Törlés",
"Delete permanently" : "Végleges törlés",
"This operation is forbidden" : "Tiltott művelet",
- "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse a rendszergazdát",
"restored" : "visszaállítva",
"No deleted files" : "Nincs törölt fájl",
"You will be able to recover deleted files from here" : "Innen vissza tudja állítani a törölt fáljait.",
diff --git a/apps/files_trashbin/lib/AppInfo/Application.php b/apps/files_trashbin/lib/AppInfo/Application.php
index 8e4ec255567..06a34e0df84 100644
--- a/apps/files_trashbin/lib/AppInfo/Application.php
+++ b/apps/files_trashbin/lib/AppInfo/Application.php
@@ -24,8 +24,11 @@
namespace OCA\Files_Trashbin\AppInfo;
use OCA\DAV\Connector\Sabre\Principal;
+use OCA\Files_Trashbin\Trash\ITrashManager;
+use OCA\Files_Trashbin\Trash\TrashManager;
use OCP\AppFramework\App;
use OCA\Files_Trashbin\Expiration;
+use OCP\AppFramework\IAppContainer;
use OCP\AppFramework\Utility\ITimeFactory;
use OCA\Files_Trashbin\Capabilities;
@@ -61,5 +64,36 @@ class Application extends App {
\OC::$server->getConfig()
);
});
+
+ $container->registerService(ITrashManager::class, function(IAppContainer $c) {
+ return new TrashManager();
+ });
+
+ $this->registerTrashBackends();
+ }
+
+ public function registerTrashBackends() {
+ $server = $this->getContainer()->getServer();
+ $logger = $server->getLogger();
+ $appManager = $server->getAppManager();
+ /** @var ITrashManager $trashManager */
+ $trashManager = $this->getContainer()->getServer()->query(ITrashManager::class);
+ foreach($appManager->getInstalledApps() as $app) {
+ $appInfo = $appManager->getAppInfo($app);
+ if (isset($appInfo['trash'])) {
+ $backends = $appInfo['trash'];
+ foreach($backends as $backend) {
+ $class = $backend['@value'];
+ $for = $backend['@attributes']['for'];
+
+ try {
+ $backendObject = $server->query($class);
+ $trashManager->registerBackend($for, $backendObject);
+ } catch (\Exception $e) {
+ $logger->logException($e);
+ }
+ }
+ }
+ }
}
}
diff --git a/apps/files_trashbin/lib/Controller/PreviewController.php b/apps/files_trashbin/lib/Controller/PreviewController.php
index 8a1b31703bb..f79e19a463e 100644
--- a/apps/files_trashbin/lib/Controller/PreviewController.php
+++ b/apps/files_trashbin/lib/Controller/PreviewController.php
@@ -22,27 +22,31 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCA\Files_Trashbin\Controller;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Utility\ITimeFactory;
-use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\IMimeTypeDetector;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\IPreview;
use OCP\IRequest;
+use OCP\IUserSession;
class PreviewController extends Controller {
-
/** @var IRootFolder */
private $rootFolder;
- /** @var string */
- private $userId;
+ /** @var ITrashManager */
+ private $trashManager;
+
+ /** @var IUserSession */
+ private $userSession;
/** @var IMimeTypeDetector */
private $mimeTypeDetector;
@@ -53,17 +57,21 @@ class PreviewController extends Controller {
/** @var ITimeFactory */
private $time;
- public function __construct(string $appName,
- IRequest $request,
- IRootFolder $rootFolder,
- string $userId,
- IMimeTypeDetector $mimeTypeDetector,
- IPreview $previewManager,
- ITimeFactory $time) {
+ public function __construct(
+ string $appName,
+ IRequest $request,
+ IRootFolder $rootFolder,
+ ITrashManager $trashManager,
+ IUserSession $userSession,
+ IMimeTypeDetector $mimeTypeDetector,
+ IPreview $previewManager,
+ ITimeFactory $time
+ ) {
parent::__construct($appName, $request);
+ $this->trashManager = $trashManager;
$this->rootFolder = $rootFolder;
- $this->userId = $userId;
+ $this->userSession = $userSession;
$this->mimeTypeDetector = $mimeTypeDetector;
$this->previewManager = $previewManager;
$this->time = $time;
@@ -86,39 +94,28 @@ class PreviewController extends Controller {
}
try {
- $userFolder = $this->rootFolder->getUserFolder($this->userId);
- /** @var Folder $trash */
- $trash = $userFolder->getParent()->get('files_trashbin/files');
- $trashFiles = $trash->getById($fileId);
-
- if (empty($trashFiles)) {
- throw new NotFoundException();
+ $file = $this->trashManager->getTrashNodeById($this->userSession->getUser(), $fileId);
+ if ($file === null) {
+ return new DataResponse([], Http::STATUS_NOT_FOUND);
}
-
- $trashFile = array_pop($trashFiles);
-
- if ($trashFile instanceof Folder) {
+ if ($file instanceof Folder) {
return new DataResponse([], Http::STATUS_BAD_REQUEST);
}
+ $pathParts = pathinfo($file->getName());
+ $extension = $pathParts['extension'];
+ $fileName = $pathParts['filename'];
/*
* Files in the root of the trashbin are timetamped.
* So we have to strip that in order to properly detect the mimetype of the file.
*/
- if ($trashFile->getParent()->getPath() === $trash->getPath()) {
- /** @var File $trashFile */
- $fileName = $trashFile->getName();
- $i = strrpos($fileName, '.');
- if ($i !== false) {
- $fileName = substr($fileName, 0, $i);
- }
-
+ if (preg_match('/d\d+/', $extension)) {
$mimeType = $this->mimeTypeDetector->detectPath($fileName);
} else {
- $mimeType = $this->mimeTypeDetector->detectPath($trashFile->getName());
+ $mimeType = $this->mimeTypeDetector->detectPath($file->getName());
}
- $f = $this->previewManager->getPreview($trashFile, $x, $y, true, IPreview::MODE_FILL, $mimeType);
+ $f = $this->previewManager->getPreview($file, $x, $y, true, IPreview::MODE_FILL, $mimeType);
$response = new Http\FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]);
// Cache previews for 24H
diff --git a/apps/files_trashbin/lib/Sabre/AbstractTrash.php b/apps/files_trashbin/lib/Sabre/AbstractTrash.php
index 43f9cc02749..b4d13a41e38 100644
--- a/apps/files_trashbin/lib/Sabre/AbstractTrash.php
+++ b/apps/files_trashbin/lib/Sabre/AbstractTrash.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl>
*
@@ -21,13 +22,20 @@
namespace OCA\Files_Trashbin\Sabre;
+use OCA\Files_Trashbin\Trash\ITrashItem;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\Files\FileInfo;
+use OCP\IUser;
abstract class AbstractTrash implements ITrash {
- /** @var FileInfo */
+ /** @var ITrashItem */
protected $data;
- public function __construct(FileInfo $data) {
+ /** @var ITrashManager */
+ protected $trashManager;
+
+ public function __construct(ITrashManager $trashManager, ITrashItem $data) {
+ $this->trashManager = $trashManager;
$this->data = $data;
}
@@ -36,7 +44,7 @@ abstract class AbstractTrash implements ITrash {
}
public function getDeletionTime(): int {
- return $this->data->getMtime();
+ return $this->data->getDeletedTime();
}
public function getFileId(): int {
@@ -66,4 +74,17 @@ abstract class AbstractTrash implements ITrash {
public function getName(): string {
return $this->data->getName();
}
+
+ public function getOriginalLocation(): string {
+ return $this->data->getOriginalLocation();
+ }
+
+ public function delete() {
+ $this->trashManager->removeItem($this->data);
+ }
+
+ public function restore(): bool {
+ $this->trashManager->restoreItem($this->data);
+ return true;
+ }
}
diff --git a/apps/files_trashbin/lib/Sabre/AbstractTrashFile.php b/apps/files_trashbin/lib/Sabre/AbstractTrashFile.php
new file mode 100644
index 00000000000..da7c94eb35d
--- /dev/null
+++ b/apps/files_trashbin/lib/Sabre/AbstractTrashFile.php
@@ -0,0 +1,36 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Sabre;
+
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\IFile;
+
+abstract class AbstractTrashFile extends AbstractTrash implements IFile , ITrash{
+ public function put($data) {
+ throw new Forbidden();
+ }
+
+ public function setName($name) {
+ throw new Forbidden();
+ }
+}
diff --git a/apps/files_trashbin/lib/Sabre/AbstractTrashFolder.php b/apps/files_trashbin/lib/Sabre/AbstractTrashFolder.php
new file mode 100644
index 00000000000..dd45dbd5c8c
--- /dev/null
+++ b/apps/files_trashbin/lib/Sabre/AbstractTrashFolder.php
@@ -0,0 +1,77 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Sabre;
+
+use OCA\Files_Trashbin\Trash\ITrashItem;
+use OCP\Files\FileInfo;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\ICollection;
+
+abstract class AbstractTrashFolder extends AbstractTrash implements ICollection, ITrash {
+ public function getChildren(): array {
+ $entries = $this->trashManager->listTrashFolder($this->data);
+
+ $children = array_map(function (ITrashItem $entry) {
+ if ($entry->getType() === FileInfo::TYPE_FOLDER) {
+ return new TrashFolderFolder($this->trashManager, $entry);
+ }
+ return new TrashFolderFile($this->trashManager, $entry);
+ }, $entries);
+
+ return $children;
+ }
+
+ public function getChild($name): ITrash {
+ $entries = $this->getChildren();
+
+ foreach ($entries as $entry) {
+ if ($entry->getName() === $name) {
+ return $entry;
+ }
+ }
+
+ throw new NotFound();
+ }
+
+ public function childExists($name): bool {
+ try {
+ $this->getChild($name);
+ return true;
+ } catch (NotFound $e) {
+ return false;
+ }
+ }
+
+ public function setName($name) {
+ throw new Forbidden();
+ }
+
+ public function createFile($name, $data = null) {
+ throw new Forbidden();
+ }
+
+ public function createDirectory($name) {
+ throw new Forbidden();
+ }
+}
diff --git a/apps/files_trashbin/lib/Sabre/RestoreFolder.php b/apps/files_trashbin/lib/Sabre/RestoreFolder.php
index 04f23db0ed4..177064dbb48 100644
--- a/apps/files_trashbin/lib/Sabre/RestoreFolder.php
+++ b/apps/files_trashbin/lib/Sabre/RestoreFolder.php
@@ -31,14 +31,6 @@ use Sabre\DAV\INode;
class RestoreFolder implements ICollection, IMoveTarget {
-
- /** @var string */
- protected $userId;
-
- public function __construct(string $userId) {
- $this->userId = $userId;
- }
-
public function createFile($name, $data = null) {
throw new Forbidden();
}
diff --git a/apps/files_trashbin/lib/Sabre/RootCollection.php b/apps/files_trashbin/lib/Sabre/RootCollection.php
index be31d200f71..0b55953aa3f 100644
--- a/apps/files_trashbin/lib/Sabre/RootCollection.php
+++ b/apps/files_trashbin/lib/Sabre/RootCollection.php
@@ -21,18 +21,27 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCA\Files_Trashbin\Sabre;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\IConfig;
use Sabre\DAV\INode;
use Sabre\DAVACL\AbstractPrincipalCollection;
use Sabre\DAVACL\PrincipalBackend;
class RootCollection extends AbstractPrincipalCollection {
+ /** @var ITrashManager */
+ private $trashManager;
- public function __construct(PrincipalBackend\BackendInterface $principalBackend, IConfig $config) {
+ public function __construct(
+ ITrashManager $trashManager,
+ PrincipalBackend\BackendInterface $principalBackend,
+ IConfig $config
+ ) {
parent::__construct($principalBackend, 'principals/users');
+ $this->trashManager = $trashManager;
$this->disableListing = !$config->getSystemValue('debug', false);
}
@@ -47,12 +56,12 @@ class RootCollection extends AbstractPrincipalCollection {
* @return INode
*/
public function getChildForPrincipal(array $principalInfo): TrashHome {
- list(,$name) = \Sabre\Uri\split($principalInfo['uri']);
+ list(, $name) = \Sabre\Uri\split($principalInfo['uri']);
$user = \OC::$server->getUserSession()->getUser();
if (is_null($user) || $name !== $user->getUID()) {
throw new \Sabre\DAV\Exception\Forbidden();
}
- return new TrashHome($principalInfo);
+ return new TrashHome($principalInfo, $this->trashManager, $user);
}
public function getName(): string {
diff --git a/apps/files_trashbin/lib/Sabre/TrashFile.php b/apps/files_trashbin/lib/Sabre/TrashFile.php
index 840ca6a1938..dd6500e5b81 100644
--- a/apps/files_trashbin/lib/Sabre/TrashFile.php
+++ b/apps/files_trashbin/lib/Sabre/TrashFile.php
@@ -21,46 +21,15 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-namespace OCA\Files_Trashbin\Sabre;
-
-use OCP\Files\FileInfo;
-use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\IFile;
-
-class TrashFile extends AbstractTrash implements IFile, ITrash {
- /** @var string */
- private $userId;
-
- public function __construct(string $userId, FileInfo $data) {
- $this->userId = $userId;
- parent::__construct($data);
- }
- public function put($data) {
- throw new Forbidden();
- }
+namespace OCA\Files_Trashbin\Sabre;
+class TrashFile extends AbstractTrashFile {
public function get() {
- return $this->data->getStorage()->fopen($this->data->getInternalPath().'.d'.$this->getLastModified(), 'rb');
- }
-
- public function delete() {
- \OCA\Files_Trashbin\Trashbin::delete($this->data->getName(), $this->userId, $this->getLastModified());
+ return $this->data->getStorage()->fopen($this->data->getInternalPath() . '.d' . $this->getLastModified(), 'rb');
}
public function getName(): string {
return $this->data->getName() . '.d' . $this->getLastModified();
}
-
- public function setName($name) {
- throw new Forbidden();
- }
-
- public function restore(): bool {
- return \OCA\Files_Trashbin\Trashbin::restore($this->getName(), $this->data->getName(), $this->getLastModified());
- }
-
- public function getOriginalLocation(): string {
- return $this->data['extraData'];
- }
}
diff --git a/apps/files_trashbin/lib/Sabre/TrashFolder.php b/apps/files_trashbin/lib/Sabre/TrashFolder.php
index d884eefcc9f..108aaf4f312 100644
--- a/apps/files_trashbin/lib/Sabre/TrashFolder.php
+++ b/apps/files_trashbin/lib/Sabre/TrashFolder.php
@@ -23,85 +23,9 @@ declare(strict_types=1);
*/
namespace OCA\Files_Trashbin\Sabre;
-use OCP\Files\FileInfo;
-use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\Exception\NotFound;
-use Sabre\DAV\ICollection;
-
-class TrashFolder extends AbstractTrash implements ICollection, ITrash {
- /** @var string */
- private $userId;
-
- public function __construct(string $root, string $userId, FileInfo $data) {
- $this->userId = $userId;
- parent::__construct($data);
- }
-
- public function createFile($name, $data = null) {
- throw new Forbidden();
- }
-
- public function createDirectory($name) {
- throw new Forbidden();
- }
-
- public function getChild($name): ITrash {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->getName(), $this->userId);
-
- foreach ($entries as $entry) {
- if ($entry->getName() === $name) {
- if ($entry->getType() === FileInfo::TYPE_FOLDER) {
- return new TrashFolderFolder($this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }
- return new TrashFolderFile($this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }
- }
-
- throw new NotFound();
- }
-
- public function getChildren(): array {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->getName(), $this->userId);
-
- $children = array_map(function (FileInfo $entry) {
- if ($entry->getType() === FileInfo::TYPE_FOLDER) {
- return new TrashFolderFolder($this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }
- return new TrashFolderFile($this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }, $entries);
-
- return $children;
- }
-
- public function childExists($name): bool {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->getName(), $this->userId);
-
- foreach ($entries as $entry) {
- if ($entry->getName() === $name) {
- return true;
- }
- }
-
- return false;
- }
-
- public function delete() {
- \OCA\Files_Trashbin\Trashbin::delete($this->data->getName(), $this->userId, $this->getLastModified());
- }
+class TrashFolder extends AbstractTrashFolder {
public function getName(): string {
return $this->data->getName() . '.d' . $this->getLastModified();
}
-
- public function setName($name) {
- throw new Forbidden();
- }
-
- public function restore(): bool {
- return \OCA\Files_Trashbin\Trashbin::restore($this->getName(), $this->data->getName(), $this->getLastModified());
- }
-
- public function getOriginalLocation(): string {
- return $this->data['extraData'];
- }
}
diff --git a/apps/files_trashbin/lib/Sabre/TrashFolderFile.php b/apps/files_trashbin/lib/Sabre/TrashFolderFile.php
index 3e28d048b42..31ee9535b72 100644
--- a/apps/files_trashbin/lib/Sabre/TrashFolderFile.php
+++ b/apps/files_trashbin/lib/Sabre/TrashFolderFile.php
@@ -23,51 +23,9 @@ declare(strict_types=1);
*/
namespace OCA\Files_Trashbin\Sabre;
-use OCP\Files\FileInfo;
-use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\IFile;
-
-class TrashFolderFile extends AbstractTrash implements IFile, ITrash {
- /** @var string */
- private $root;
-
- /** @var string */
- private $userId;
-
- /** @var string */
- private $location;
-
- public function __construct(string $root,
- string $userId,
- FileInfo $data,
- string $location) {
- $this->root = $root;
- $this->userId = $userId;
- $this->location = $location;
- parent::__construct($data);
- }
-
- public function put($data) {
- throw new Forbidden();
- }
+class TrashFolderFile extends AbstractTrashFile {
public function get() {
return $this->data->getStorage()->fopen($this->data->getInternalPath(), 'rb');
}
-
- public function delete() {
- \OCA\Files_Trashbin\Trashbin::delete($this->root . '/' . $this->getName(), $this->userId, null);
- }
-
- public function setName($name) {
- throw new Forbidden();
- }
-
- public function restore(): bool {
- return \OCA\Files_Trashbin\Trashbin::restore($this->root . '/' . $this->getName(), $this->data->getName(), null);
- }
-
- public function getOriginalLocation(): string {
- return $this->location . '/' . $this->getFilename();
- }
}
diff --git a/apps/files_trashbin/lib/Sabre/TrashFolderFolder.php b/apps/files_trashbin/lib/Sabre/TrashFolderFolder.php
index 4ee9a0e2db0..5332b7dd4c0 100644
--- a/apps/files_trashbin/lib/Sabre/TrashFolderFolder.php
+++ b/apps/files_trashbin/lib/Sabre/TrashFolderFolder.php
@@ -21,95 +21,8 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-namespace OCA\Files_Trashbin\Sabre;
-
-use OCP\Files\FileInfo;
-use Sabre\DAV\Exception\Forbidden;
-use Sabre\DAV\Exception\NotFound;
-use Sabre\DAV\ICollection;
-
-class TrashFolderFolder extends AbstractTrash implements ICollection, ITrash {
-
- /** @var string */
- private $root;
-
- /** @var string */
- private $userId;
-
- /** @var string */
- private $location;
-
- public function __construct(string $root,
- string $userId,
- FileInfo $data,
- string $location) {
- $this->root = $root;
- $this->userId = $userId;
- $this->location = $location;
- parent::__construct($data);
- }
-
- public function createFile($name, $data = null) {
- throw new Forbidden();
- }
-
- public function createDirectory($name) {
- throw new Forbidden();
- }
-
- public function getChild($name): ITrash {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->root . '/' . $this->getName(), $this->userId);
-
- foreach ($entries as $entry) {
- if ($entry->getName() === $name) {
- if ($entry->getType() === FileInfo::TYPE_FOLDER) {
- return new TrashFolderFolder($this->root . '/' . $this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }
- return new TrashFolderFile($this->root . '/' . $this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }
- }
- throw new NotFound();
- }
-
- public function getChildren(): array {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->root . '/' . $this->getName(), $this->userId);
-
- $children = array_map(function (FileInfo $entry) {
- if ($entry->getType() === FileInfo::TYPE_FOLDER) {
- return new TrashFolderFolder($this->root.'/'.$this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }
- return new TrashFolderFile($this->root.'/'.$this->getName(), $this->userId, $entry, $this->getOriginalLocation());
- }, $entries);
-
- return $children;
- }
-
- public function childExists($name): bool {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles($this->root . '/' . $this->getName(), $this->userId);
-
- foreach ($entries as $entry) {
- if ($entry->getName() === $name) {
- return true;
- }
- }
-
- return false;
- }
-
- public function delete() {
- \OCA\Files_Trashbin\Trashbin::delete($this->root . '/' . $this->getName(), $this->userId, null);
- }
-
- public function setName($name) {
- throw new Forbidden();
- }
-
- public function restore(): bool {
- return \OCA\Files_Trashbin\Trashbin::restore($this->root . '/' . $this->getName(), $this->data->getName(), null);
- }
+namespace OCA\Files_Trashbin\Sabre;
- public function getOriginalLocation(): string {
- return $this->location . '/' . $this->getFilename();
- }
+class TrashFolderFolder extends AbstractTrashFolder {
}
diff --git a/apps/files_trashbin/lib/Sabre/TrashHome.php b/apps/files_trashbin/lib/Sabre/TrashHome.php
index d1c50c9c6a3..12c2578bc3b 100644
--- a/apps/files_trashbin/lib/Sabre/TrashHome.php
+++ b/apps/files_trashbin/lib/Sabre/TrashHome.php
@@ -21,19 +21,33 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCA\Files_Trashbin\Sabre;
+use OCA\Files_Trashbin\Trash\ITrashManager;
+use OCP\IUser;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\ICollection;
class TrashHome implements ICollection {
+ /** @var ITrashManager */
+ private $trashManager;
/** @var array */
private $principalInfo;
- public function __construct(array $principalInfo) {
+ /** @var IUser */
+ private $user;
+
+ public function __construct(
+ array $principalInfo,
+ ITrashManager $trashManager,
+ IUser $user
+ ) {
$this->principalInfo = $principalInfo;
+ $this->trashManager = $trashManager;
+ $this->user = $user;
}
public function delete() {
@@ -41,7 +55,7 @@ class TrashHome implements ICollection {
}
public function getName(): string {
- list(,$name) = \Sabre\Uri\split($this->principalInfo['uri']);
+ list(, $name) = \Sabre\Uri\split($this->principalInfo['uri']);
return $name;
}
@@ -58,24 +72,20 @@ class TrashHome implements ICollection {
}
public function getChild($name) {
- list(,$userId) = \Sabre\Uri\split($this->principalInfo['uri']);
-
if ($name === 'restore') {
- return new RestoreFolder($userId);
+ return new RestoreFolder();
}
if ($name === 'trash') {
- return new TrashRoot($userId);
+ return new TrashRoot($this->user, $this->trashManager);
}
throw new NotFound();
}
public function getChildren(): array {
- list(,$userId) = \Sabre\Uri\split($this->principalInfo['uri']);
-
return [
- new RestoreFolder($userId),
- new TrashRoot($userId),
+ new RestoreFolder(),
+ new TrashRoot($this->user, $this->trashManager)
];
}
diff --git a/apps/files_trashbin/lib/Sabre/TrashRoot.php b/apps/files_trashbin/lib/Sabre/TrashRoot.php
index 73b9d44d7e1..45f27f48b17 100644
--- a/apps/files_trashbin/lib/Sabre/TrashRoot.php
+++ b/apps/files_trashbin/lib/Sabre/TrashRoot.php
@@ -23,18 +23,25 @@ declare(strict_types=1);
*/
namespace OCA\Files_Trashbin\Sabre;
+use OCA\Files_Trashbin\Trash\ITrashItem;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\Files\FileInfo;
+use OCP\IUser;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\ICollection;
class TrashRoot implements ICollection {
- /** @var string */
- private $userId;
+ /** @var IUser */
+ private $user;
- public function __construct(string $userId) {
- $this->userId = $userId;
+ /** @var ITrashManager */
+ private $trashManager;
+
+ public function __construct(IUser $user, ITrashManager $trashManager) {
+ $this->user = $user;
+ $this->trashManager = $trashManager;
}
public function delete() {
@@ -57,44 +64,38 @@ class TrashRoot implements ICollection {
throw new Forbidden('Not allowed to create folders in the trashbin');
}
- public function getChild($name): ITrash {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles('/', $this->userId);
-
- foreach ($entries as $entry) {
- if ($entry->getName() . '.d'.$entry->getMtime() === $name) {
- if ($entry->getType() === FileInfo::TYPE_FOLDER) {
- return new TrashFolder('/', $this->userId, $entry);
- }
- return new TrashFile($this->userId, $entry);
- }
- }
-
- throw new NotFound();
- }
-
public function getChildren(): array {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles('/', $this->userId);
+ $entries = $this->trashManager->listTrashRoot($this->user);
- $children = array_map(function (FileInfo $entry) {
+ $children = array_map(function (ITrashItem $entry) {
if ($entry->getType() === FileInfo::TYPE_FOLDER) {
- return new TrashFolder('/', $this->userId, $entry);
+ return new TrashFolder($this->trashManager, $entry);
}
- return new TrashFile($this->userId, $entry);
+ return new TrashFile($this->trashManager, $entry);
}, $entries);
return $children;
}
- public function childExists($name): bool {
- $entries = \OCA\Files_Trashbin\Helper::getTrashFiles('/', $this->userId);
+ public function getChild($name): ITrash {
+ $entries = $this->getChildren();
foreach ($entries as $entry) {
- if ($entry->getName() . '.d'.$entry->getMtime() === $name) {
- return true;
+ if ($entry->getName() === $name) {
+ return $entry;
}
}
- return false;
+ throw new NotFound();
+ }
+
+ public function childExists($name): bool {
+ try {
+ $this->getChild($name);
+ return true;
+ } catch (NotFound $e) {
+ return false;
+ }
}
public function getLastModified(): int {
diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php
index 54b47a6a19e..0db634eeb9e 100644
--- a/apps/files_trashbin/lib/Storage.php
+++ b/apps/files_trashbin/lib/Storage.php
@@ -31,34 +31,18 @@ use OC\Files\Filesystem;
use OC\Files\Storage\Wrapper\Wrapper;
use OC\Files\View;
use OCA\Files_Trashbin\Events\MoveToTrashEvent;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\Encryption\Exceptions\GenericEncryptionException;
use OCP\Files\IRootFolder;
+use OCP\Files\Mount\IMountPoint;
use OCP\Files\Node;
use OCP\ILogger;
use OCP\IUserManager;
use Symfony\Component\EventDispatcher\EventDispatcher;
class Storage extends Wrapper {
-
+ /** @var IMountPoint */
private $mountPoint;
- // remember already deleted files to avoid infinite loops if the trash bin
- // move files across storages
- private $deletedFiles = array();
-
- /**
- * Disable trash logic
- *
- * @var bool
- */
- 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;
@@ -72,21 +56,29 @@ class Storage extends Wrapper {
/** @var IRootFolder */
private $rootFolder;
+ /** @var ITrashManager */
+ private $trashManager;
+
/**
* Storage constructor.
*
* @param array $parameters
+ * @param ITrashManager $trashManager
* @param IUserManager|null $userManager
* @param ILogger|null $logger
* @param EventDispatcher|null $eventDispatcher
* @param IRootFolder|null $rootFolder
*/
- public function __construct($parameters,
- IUserManager $userManager = null,
- ILogger $logger = null,
- EventDispatcher $eventDispatcher = null,
- IRootFolder $rootFolder = null) {
+ public function __construct(
+ $parameters,
+ ITrashManager $trashManager = null,
+ IUserManager $userManager = null,
+ ILogger $logger = null,
+ EventDispatcher $eventDispatcher = null,
+ IRootFolder $rootFolder = null
+ ) {
$this->mountPoint = $parameters['mountPoint'];
+ $this->trashManager = $trashManager;
$this->userManager = $userManager;
$this->logger = $logger;
$this->eventDispatcher = $eventDispatcher;
@@ -95,81 +87,6 @@ class Storage extends Wrapper {
}
/**
- * @internal
- */
- public static function preRenameHook($params) {
- // in cross-storage cases, a rename is a copy + unlink,
- // 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
- \OC::$server->getLogger()->logException($e, [
- 'message' => 'Trashbin storage could not check if a file was moved out of a shared folder.',
- 'level' => ILogger::DEBUG,
- 'app' => 'files_trashbin',
- ]);
- }
-
- if($fileMovedOutOfSharedFolder) {
- self::$moveOutOfSharedFolder['/' . $currentUserId . '/files' . $oldPath] = true;
- } else {
- self::$disableTrash = true;
- }
-
- }
-
- /**
- * @internal
- */
- public static function postRenameHook($params) {
- self::$disableTrash = false;
- }
-
- /**
- * Rename path1 to path2 by calling the wrapped storage.
- *
- * @param string $path1 first path
- * @param string $path2 second path
- * @return bool
- */
- public function rename($path1, $path2) {
- $result = $this->storage->rename($path1, $path2);
- if ($result === false) {
- // when rename failed, the post_rename hook isn't triggered,
- // but we still want to reenable the trash logic
- self::$disableTrash = false;
- }
- return $result;
- }
-
- /**
* Deletes the given file by moving it into the trashbin.
*
* @param string $path path of file or folder to delete
@@ -178,22 +95,15 @@ class Storage extends Wrapper {
*/
public function unlink($path) {
try {
- 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 $this->doDelete($path, 'unlink');
} catch (GenericEncryptionException $e) {
// in case of a encryption exception we delete the file right away
$this->logger->info(
- "Can't move file" . $path .
+ "Can't move file" . $path .
"to the trash bin, therefore it was deleted right away");
- $result = $this->storage->unlink($path);
+ return $this->storage->unlink($path);
}
-
- return $result;
}
/**
@@ -204,14 +114,7 @@ class Storage extends Wrapper {
* @return bool true if the operation succeeded, false otherwise
*/
public function rmdir($path) {
- 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;
+ return $this->doDelete($path, 'rmdir');
}
/**
@@ -221,7 +124,7 @@ class Storage extends Wrapper {
* @param $path
* @return bool
*/
- protected function shouldMoveToTrash($path){
+ protected function shouldMoveToTrash($path) {
// check if there is a app which want to disable the trash bin for this file
$fileId = $this->storage->getCache()->getId($path);
@@ -262,17 +165,16 @@ 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, $ownerOnly = false) {
- if (self::$disableTrash
- || !\OC::$server->getAppManager()->isEnabledForUser('files_trashbin')
+ private function doDelete($path, $method) {
+ if (
+ !\OC::$server->getAppManager()->isEnabledForUser('files_trashbin')
|| (pathinfo($path, PATHINFO_EXTENSION) === 'part')
|| $this->shouldMoveToTrash($path) === false
) {
- return call_user_func_array([$this->storage, $method], [$path]);
+ return call_user_func([$this->storage, $method], $path);
}
// check permissions before we continue, this is especially important for
@@ -281,28 +183,12 @@ class Storage extends Wrapper {
return false;
}
- $normalized = Filesystem::normalizePath($this->mountPoint . '/' . $path, true, false, true);
- $result = true;
- $view = Filesystem::getView();
- if (!isset($this->deletedFiles[$normalized]) && $view instanceof View) {
- $this->deletedFiles[$normalized] = $normalized;
- if ($filesPath = $view->getRelativePath($normalized)) {
- $filesPath = trim($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) {
- call_user_func_array([$this->storage, $method], [$path]);
- }
- } else {
- $result = call_user_func_array([$this->storage, $method], [$path]);
- }
- unset($this->deletedFiles[$normalized]);
- } else if ($this->storage->file_exists($path)) {
- $result = call_user_func_array([$this->storage, $method], [$path]);
+ $isMovedToTrash = $this->trashManager->moveToTrash($this, $path);
+ if (!$isMovedToTrash) {
+ return call_user_func([$this->storage, $method], $path);
+ } else {
+ return true;
}
-
- return $result;
}
/**
@@ -311,7 +197,8 @@ class Storage extends Wrapper {
public static function setupStorage() {
\OC\Files\Filesystem::addStorageWrapper('oc_trashbin', function ($mountPoint, $storage) {
return new \OCA\Files_Trashbin\Storage(
- array('storage' => $storage, 'mountPoint' => $mountPoint),
+ ['storage' => $storage, 'mountPoint' => $mountPoint],
+ \OC::$server->query(ITrashManager::class),
\OC::$server->getUserManager(),
\OC::$server->getLogger(),
\OC::$server->getEventDispatcher(),
@@ -320,4 +207,7 @@ class Storage extends Wrapper {
}, 1);
}
+ public function getMountPoint() {
+ return $this->mountPoint;
+ }
}
diff --git a/apps/files_trashbin/lib/Trash/BackendNotFoundException.php b/apps/files_trashbin/lib/Trash/BackendNotFoundException.php
new file mode 100644
index 00000000000..13289db7ab0
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/BackendNotFoundException.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+class BackendNotFoundException extends \Exception {
+
+}
diff --git a/apps/files_trashbin/lib/Trash/ITrashBackend.php b/apps/files_trashbin/lib/Trash/ITrashBackend.php
new file mode 100644
index 00000000000..ebdf9720d7c
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/ITrashBackend.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+use OCP\Files\FileInfo;
+use OCP\Files\Node;
+use OCP\Files\SimpleFS\ISimpleFile;
+use OCP\Files\Storage\IStorage;
+use OCP\IUser;
+
+/**
+ * @since 15.0.0
+ */
+interface ITrashBackend {
+ /**
+ * List all trash items in the root of the trashbin
+ *
+ * @param IUser $user
+ * @return ITrashItem[]
+ * @since 15.0.0
+ */
+ public function listTrashRoot(IUser $user): array;
+
+ /**
+ * List all trash items in a subfolder in the trashbin
+ *
+ * @param ITrashItem $folder
+ * @return ITrashItem[]
+ * @since 15.0.0
+ */
+ public function listTrashFolder(ITrashItem $folder): array;
+
+ /**
+ * Restore a trashbin item
+ *
+ * @param ITrashItem $item
+ * @since 15.0.0
+ */
+ public function restoreItem(ITrashItem $item);
+
+ /**
+ * Permanently remove an item from trash
+ *
+ * @param ITrashItem $item
+ * @since 15.0.0
+ */
+ public function removeItem(ITrashItem $item);
+
+ /**
+ * Move a file or folder to trash
+ *
+ * @param IStorage $storage
+ * @param string $internalPath
+ * @return boolean whether or not the file was moved to trash, if false then the file should be deleted normally
+ * @since 15.0.0
+ */
+ public function moveToTrash(IStorage $storage, string $internalPath): bool;
+
+ /**
+ * @param IUser $user
+ * @param int $fileId
+ * @return Node|null
+ */
+ public function getTrashNodeById(IUser $user, int $fileId);
+}
diff --git a/apps/files_trashbin/lib/Trash/ITrashItem.php b/apps/files_trashbin/lib/Trash/ITrashItem.php
new file mode 100644
index 00000000000..74348cf1817
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/ITrashItem.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+use OCP\Files\FileInfo;
+use OCP\IUser;
+
+/**
+ * @since 15.0.0
+ */
+interface ITrashItem extends FileInfo {
+ /**
+ * Get the trash backend for this item
+ *
+ * @return ITrashBackend
+ * @since 15.0.0
+ */
+ public function getTrashBackend(): ITrashBackend;
+
+ /**
+ * Get the original location for the trash item
+ *
+ * @return string
+ * @since 15.0.0
+ */
+ public function getOriginalLocation(): string;
+
+ /**
+ * Get the timestamp that the file was moved to trash
+ *
+ * @return int
+ * @since 15.0.0
+ */
+ public function getDeletedTime(): int;
+
+ /**
+ * Get the path of the item relative to the users trashbin
+ *
+ * @return string
+ * @since 15.0.0
+ */
+ public function getTrashPath(): string;
+
+ /**
+ * Whether the item is a deleted item in the root of the trash, or a file in a subfolder
+ *
+ * @return bool
+ * @since 15.0.0
+ */
+ public function isRootItem(): bool;
+
+ /**
+ * Get the user for which this trash item applies
+ *
+ * @return IUser
+ * @since 15.0.0
+ */
+ public function getUser(): IUser;
+}
diff --git a/apps/files_trashbin/lib/Trash/ITrashManager.php b/apps/files_trashbin/lib/Trash/ITrashManager.php
new file mode 100644
index 00000000000..fcd51f2d371
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/ITrashManager.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+use OCP\IUser;
+
+interface ITrashManager extends ITrashBackend {
+ /**
+ * Add a backend for the trashbin
+ *
+ * @param string $storageType
+ * @param ITrashBackend $backend
+ * @since 15.0.0
+ */
+ public function registerBackend(string $storageType, ITrashBackend $backend);
+
+ /**
+ * List all trash items in the root of the trashbin
+ *
+ * @param IUser $user
+ * @return ITrashItem[]
+ * @since 15.0.0
+ */
+ public function listTrashRoot(IUser $user): array;
+
+ /**
+ * Temporally prevent files from being moved to the trash
+ *
+ * @since 15.0.0
+ */
+ public function pauseTrash();
+
+ /**
+ * @since 15.0.0
+ */
+ public function resumeTrash();
+}
diff --git a/apps/files_trashbin/lib/Trash/LegacyTrashBackend.php b/apps/files_trashbin/lib/Trash/LegacyTrashBackend.php
new file mode 100644
index 00000000000..b8519fa27cc
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/LegacyTrashBackend.php
@@ -0,0 +1,128 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+use OCA\Files_Trashbin\Helper;
+use OCA\Files_Trashbin\Storage;
+use OCA\Files_Trashbin\Trashbin;
+use OCP\Files\FileInfo;
+use OCP\Files\IRootFolder;
+use OCP\Files\NotFoundException;
+use OCP\Files\Storage\IStorage;
+use OCP\IUser;
+
+class LegacyTrashBackend implements ITrashBackend {
+ /** @var array */
+ private $deletedFiles = [];
+
+ /** @var IRootFolder */
+ private $rootFolder;
+
+ public function __construct(IRootFolder $rootFolder) {
+ $this->rootFolder = $rootFolder;
+ }
+
+ /**
+ * @param array $items
+ * @param IUser $user
+ * @param ITrashItem $parent
+ * @return ITrashItem[]
+ */
+ private function mapTrashItems(array $items, IUser $user, ITrashItem $parent = null): array {
+ $parentTrashPath = ($parent instanceof ITrashItem) ? $parent->getTrashPath() : '';
+ $isRoot = $parent === null;
+ return array_map(function (FileInfo $file) use ($parent, $parentTrashPath, $isRoot, $user) {
+ return new TrashItem(
+ $this,
+ $isRoot ? $file['extraData'] : $parent->getOriginalLocation() . '/' . $file->getName(),
+ $file->getMTime(),
+ $parentTrashPath . '/' . $file->getName() . ($isRoot ? '.d' . $file->getMtime() : ''),
+ $file,
+ $user
+ );
+ }, $items);
+ }
+
+ public function listTrashRoot(IUser $user): array {
+ $entries = Helper::getTrashFiles('/', $user->getUID());
+ return $this->mapTrashItems($entries, $user);
+ }
+
+ public function listTrashFolder(ITrashItem $folder): array {
+ $user = $folder->getUser();
+ $entries = Helper::getTrashFiles($folder->getTrashPath(), $user->getUID());
+ return $this->mapTrashItems($entries, $user ,$folder);
+ }
+
+ public function restoreItem(ITrashItem $item) {
+ Trashbin::restore($item->getTrashPath(), $item->getName(), $item->isRootItem() ? $item->getDeletedTime() : null);
+ }
+
+ public function removeItem(ITrashItem $item) {
+ $user = $item->getUser();
+ if ($item->isRootItem()) {
+ $path = substr($item->getTrashPath(), 0, -strlen('.d' . $item->getDeletedTime()));
+ Trashbin::delete($path, $user->getUID(), $item->getDeletedTime());
+ } else {
+ Trashbin::delete($item->getTrashPath(), $user->getUID(), null);
+ }
+
+ }
+
+ public function moveToTrash(IStorage $storage, string $internalPath): bool {
+ if (!$storage instanceof Storage) {
+ return false;
+ }
+ $normalized = Filesystem::normalizePath($storage->getMountPoint() . '/' . $internalPath, true, false, true);
+ $view = Filesystem::getView();
+ if (!isset($this->deletedFiles[$normalized]) && $view instanceof View) {
+ $this->deletedFiles[$normalized] = $normalized;
+ if ($filesPath = $view->getRelativePath($normalized)) {
+ $filesPath = trim($filesPath, '/');
+ $result = \OCA\Files_Trashbin\Trashbin::move2trash($filesPath);
+ } else {
+ $result = false;
+ }
+ unset($this->deletedFiles[$normalized]);
+ } else {
+ $result = false;
+ }
+
+ return $result;
+ }
+
+ public function getTrashNodeById(IUser $user, int $fileId) {
+ try {
+ $userFolder = $this->rootFolder->getUserFolder($user->getUID());
+ $trash = $userFolder->getParent()->get('files_trashbin/files');
+ $trashFiles = $trash->getById($fileId);
+ if (!$trashFiles) {
+ return null;
+ }
+ return $trashFiles ? array_pop($trashFiles) : null;
+ } catch (NotFoundException $e) {
+ return null;
+ }
+ }
+}
diff --git a/apps/files_trashbin/lib/Trash/TrashItem.php b/apps/files_trashbin/lib/Trash/TrashItem.php
new file mode 100644
index 00000000000..cd7079bcf26
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/TrashItem.php
@@ -0,0 +1,172 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+use OCP\Files\FileInfo;
+use OCP\IUser;
+
+class TrashItem implements ITrashItem {
+ /** @var ITrashBackend */
+ private $backend;
+ /** @var string */
+ private $orignalLocation;
+ /** @var int */
+ private $deletedTime;
+ /** @var string */
+ private $trashPath;
+ /** @var FileInfo */
+ private $fileInfo;
+ /** @var IUser */
+ private $user;
+
+ public function __construct(
+ ITrashBackend $backend,
+ string $originalLocation,
+ int $deletedTime,
+ string $trashPath,
+ FileInfo $fileInfo,
+ IUser $user
+ ) {
+ $this->backend = $backend;
+ $this->orignalLocation = $originalLocation;
+ $this->deletedTime = $deletedTime;
+ $this->trashPath = $trashPath;
+ $this->fileInfo = $fileInfo;
+ $this->user = $user;
+ }
+
+ public function getTrashBackend(): ITrashBackend {
+ return $this->backend;
+ }
+
+ public function getOriginalLocation(): string {
+ return $this->orignalLocation;
+ }
+
+ public function getDeletedTime(): int {
+ return $this->deletedTime;
+ }
+
+ public function getTrashPath(): string {
+ return $this->trashPath;
+ }
+
+ public function isRootItem(): bool {
+ return substr_count($this->getTrashPath(), '/') === 1;
+ }
+
+ public function getUser(): IUser {
+ return $this->user;
+ }
+
+ public function getEtag() {
+ return $this->fileInfo->getEtag();
+ }
+
+ public function getSize() {
+ return $this->fileInfo->getSize();
+ }
+
+ public function getMtime() {
+ return $this->fileInfo->getMtime();
+ }
+
+ public function getName() {
+ return $this->fileInfo->getName();
+ }
+
+ public function getInternalPath() {
+ return $this->fileInfo->getInternalPath();
+ }
+
+ public function getPath() {
+ return $this->fileInfo->getPath();
+ }
+
+ public function getMimetype() {
+ return $this->fileInfo->getMimetype();
+ }
+
+ public function getMimePart() {
+ return $this->fileInfo->getMimePart();
+ }
+
+ public function getStorage() {
+ return $this->fileInfo->getStorage();
+ }
+
+ public function getId() {
+ return $this->fileInfo->getId();
+ }
+
+ public function isEncrypted() {
+ return $this->fileInfo->isEncrypted();
+ }
+
+ public function getPermissions() {
+ return $this->fileInfo->getPermissions();
+ }
+
+ public function getType() {
+ return $this->fileInfo->getType();
+ }
+
+ public function isReadable() {
+ return $this->fileInfo->isReadable();
+ }
+
+ public function isUpdateable() {
+ return $this->fileInfo->isUpdateable();
+ }
+
+ public function isCreatable() {
+ return $this->fileInfo->isCreatable();
+ }
+
+ public function isDeletable() {
+ return $this->fileInfo->isDeletable();
+ }
+
+ public function isShareable() {
+ return $this->fileInfo->isShareable();
+ }
+
+ public function isShared() {
+ return $this->fileInfo->isShared();
+ }
+
+ public function isMounted() {
+ return $this->fileInfo->isMounted();
+ }
+
+ public function getMountPoint() {
+ return $this->fileInfo->getMountPoint();
+ }
+
+ public function getOwner() {
+ return $this->fileInfo->getOwner();
+ }
+
+ public function getChecksum() {
+ return $this->fileInfo->getChecksum();
+ }
+}
diff --git a/apps/files_trashbin/lib/Trash/TrashManager.php b/apps/files_trashbin/lib/Trash/TrashManager.php
new file mode 100644
index 00000000000..50ab539c210
--- /dev/null
+++ b/apps/files_trashbin/lib/Trash/TrashManager.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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_Trashbin\Trash;
+
+use OCP\Files\FileInfo;
+use OCP\Files\Mount\IMountPoint;
+use OCP\Files\Storage\IStorage;
+use OCP\IUser;
+
+class TrashManager implements ITrashManager {
+ /** @var ITrashBackend[] */
+ private $backends = [];
+
+ private $trashPaused = false;
+
+ public function registerBackend(string $storageType, ITrashBackend $backend) {
+ $this->backends[$storageType] = $backend;
+ }
+
+ /**
+ * @return ITrashBackend[]
+ */
+ private function getBackends(): array {
+ return $this->backends;
+ }
+
+ public function listTrashRoot(IUser $user): array {
+ $items = array_reduce($this->getBackends(), function (array $items, ITrashBackend $backend) use ($user) {
+ return array_merge($items, $backend->listTrashRoot($user));
+ }, []);
+ usort($items, function (ITrashItem $a, ITrashItem $b) {
+ return $a->getDeletedTime() - $b->getDeletedTime();
+ });
+ return $items;
+ }
+
+ private function getBackendForItem(ITrashItem $item) {
+ return $item->getTrashBackend();
+ }
+
+ public function listTrashFolder(ITrashItem $folder): array {
+ return $this->getBackendForItem($folder)->listTrashFolder($folder);
+ }
+
+ public function restoreItem(ITrashItem $item) {
+ return $this->getBackendForItem($item)->restoreItem($item);
+ }
+
+ public function removeItem(ITrashItem $item) {
+ $this->getBackendForItem($item)->removeItem($item);
+ }
+
+ /**
+ * @param IStorage $storage
+ * @return ITrashBackend
+ * @throws BackendNotFoundException
+ */
+ public function getBackendForStorage(IStorage $storage): ITrashBackend {
+ $fullType = get_class($storage);
+ $foundType = array_reduce(array_keys($this->backends), function ($type, $registeredType) use ($storage) {
+ if (
+ $storage->instanceOfStorage($registeredType) &&
+ ($type === '' || is_subclass_of($registeredType, $type))
+ ) {
+ return $registeredType;
+ } else {
+ return $type;
+ }
+ }, '');
+ if ($foundType === '') {
+ throw new BackendNotFoundException("Trash backend for $fullType not found");
+ } else {
+ return $this->backends[$foundType];
+ }
+ }
+
+ public function moveToTrash(IStorage $storage, string $internalPath): bool {
+ if ($this->trashPaused) {
+ return false;
+ }
+ try {
+ $backend = $this->getBackendForStorage($storage);
+ return $backend->moveToTrash($storage, $internalPath);
+ } catch (BackendNotFoundException $e) {
+ return false;
+ }
+ }
+
+ public function getTrashNodeById(IUser $user, int $fileId) {
+ foreach ($this->backends as $backend) {
+ $item = $backend->getTrashNodeById($user, $fileId);
+ if ($item !== null) {
+ return $item;
+ }
+ }
+ return null;
+ }
+
+ public function pauseTrash() {
+ $this->trashPaused = true;
+ }
+
+ public function resumeTrash() {
+ $this->trashPaused = false;
+ }
+}
diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php
index b9a8a42a21c..96c6a4c0af7 100644
--- a/apps/files_trashbin/lib/Trashbin.php
+++ b/apps/files_trashbin/lib/Trashbin.php
@@ -976,8 +976,6 @@ class Trashbin {
\OCP\Util::connectHook('OC_Filesystem', 'post_write', 'OCA\Files_Trashbin\Hooks', 'post_write_hook');
// pre and post-rename, disable trash logic for the copy+unlink case
\OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Files_Trashbin\Trashbin', 'ensureFileScannedHook');
- \OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Files_Trashbin\Storage', 'preRenameHook');
- \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Files_Trashbin\Storage', 'postRenameHook');
}
/**
diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php
index dd24abb5de1..054ffee6176 100644
--- a/apps/files_trashbin/templates/index.php
+++ b/apps/files_trashbin/templates/index.php
@@ -18,7 +18,7 @@
<p></p>
</div>
-<table id="filestable">
+<table id="filestable" class="list-container view-grid">
<thead>
<tr>
<th id="headerSelection" class="hidden column-selection">
diff --git a/apps/files_trashbin/tests/Controller/PreviewControllerTest.php b/apps/files_trashbin/tests/Controller/PreviewControllerTest.php
index 9ceef07e7d4..02bb63fa17a 100644
--- a/apps/files_trashbin/tests/Controller/PreviewControllerTest.php
+++ b/apps/files_trashbin/tests/Controller/PreviewControllerTest.php
@@ -23,6 +23,7 @@
namespace OCA\Files_Trashbin\Tests\Controller;
use OCA\Files_Trashbin\Controller\PreviewController;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\FileDisplayResponse;
@@ -31,14 +32,14 @@ use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\IMimeTypeDetector;
use OCP\Files\IRootFolder;
-use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\IPreview;
use OCP\IRequest;
+use OCP\IUser;
+use OCP\IUserSession;
use Test\TestCase;
class PreviewControllerTest extends TestCase {
-
/** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
private $rootFolder;
@@ -57,6 +58,12 @@ class PreviewControllerTest extends TestCase {
/** @var PreviewController */
private $controller;
+ /** @var ITrashManager|\PHPUnit_Framework_MockObject_MockObject */
+ private $trashManager;
+
+ /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */
+ private $userSession;
+
public function setUp() {
parent::setUp();
@@ -65,12 +72,23 @@ class PreviewControllerTest extends TestCase {
$this->mimeTypeDetector = $this->createMock(IMimeTypeDetector::class);
$this->previewManager = $this->createMock(IPreview::class);
$this->time = $this->createMock(ITimeFactory::class);
+ $this->trashManager = $this->createMock(ITrashManager::class);
+ $this->userSession = $this->createMock(IUserSession::class);
+ $user = $this->createMock(IUser::class);
+ $user->expects($this->any())
+ ->method('getUID')
+ ->willReturn($this->userId);
+
+ $this->userSession->expects($this->any())
+ ->method('getUser')
+ ->willReturn($user);
$this->controller = new PreviewController(
'files_versions',
$this->createMock(IRequest::class),
$this->rootFolder,
- $this->userId,
+ $this->trashManager,
+ $this->userSession,
$this->mimeTypeDetector,
$this->previewManager,
$this->time
@@ -114,11 +132,15 @@ class PreviewControllerTest extends TestCase {
->with($this->equalTo(42))
->willReturn([$file]);
$file->method('getName')
- ->willReturn('file.1234');
+ ->willReturn('file.d1234');
$file->method('getParent')
->willReturn($trash);
+ $this->trashManager->expects($this->any())
+ ->method('getTrashNodeById')
+ ->willReturn($file);
+
$preview = $this->createMock(ISimpleFile::class);
$this->previewManager->method('getPreview')
->with($this->equalTo($file), 10, 10, true, IPreview::MODE_FILL, 'myMime')
@@ -177,6 +199,9 @@ class PreviewControllerTest extends TestCase {
->willReturn($trash);
$folder = $this->createMock(Folder::class);
+ $this->trashManager->expects($this->any())
+ ->method('getTrashNodeById')
+ ->willReturn($folder);
$trash->method('getById')
->with($this->equalTo(43))
->willReturn([$folder]);
diff --git a/apps/files_trashbin/tests/StorageTest.php b/apps/files_trashbin/tests/StorageTest.php
index 67e622aa1c9..058d64d1aa0 100644
--- a/apps/files_trashbin/tests/StorageTest.php
+++ b/apps/files_trashbin/tests/StorageTest.php
@@ -34,6 +34,7 @@ use OC\Files\Storage\Temporary;
use OC\Files\Filesystem;
use OCA\Files_Trashbin\Events\MoveToTrashEvent;
use OCA\Files_Trashbin\Storage;
+use OCA\Files_Trashbin\Trash\ITrashManager;
use OCP\Files\Cache\ICache;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
@@ -546,6 +547,7 @@ class StorageTest extends \Test\TestCase {
->disableOriginalConstructor()->getMock();
$rootFolder = $this->createMock(IRootFolder::class);
$node = $this->getMockBuilder(Node::class)->disableOriginalConstructor()->getMock();
+ $trashManager = $this->createMock(ITrashManager::class);
$event = $this->getMockBuilder(MoveToTrashEvent::class)->disableOriginalConstructor()->getMock();
$event->expects($this->any())->method('shouldMoveToTrashBin')->willReturn(!$appDisablesTrash);
@@ -555,6 +557,7 @@ class StorageTest extends \Test\TestCase {
->setConstructorArgs(
[
['mountPoint' => $mountPoint, 'storage' => $tmpStorage],
+ $trashManager,
$userManager,
$logger,
$eventDispatcher,
diff --git a/apps/files_trashbin/tests/js/filelistSpec.js b/apps/files_trashbin/tests/js/filelistSpec.js
index e650a2f2d28..a56ee987b78 100644
--- a/apps/files_trashbin/tests/js/filelistSpec.js
+++ b/apps/files_trashbin/tests/js/filelistSpec.js
@@ -48,7 +48,7 @@ describe('OCA.Trashbin.FileList tests', function () {
'</div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table id="filestable" class="list-container view-grid">' +
'<thead><tr><th id="headerName" class="hidden">' +
'<input type="checkbox" id="select_all_trash" class="select-all">' +
'<span class="name">Name</span>' +
diff --git a/apps/files_versions/ajax/getVersions.php b/apps/files_versions/ajax/getVersions.php
deleted file mode 100644
index 5811242c236..00000000000
--- a/apps/files_versions/ajax/getVersions.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <bjoern@schiessle.org>
- * @author Frank Karlitschek <frank@karlitschek.de>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Sam Tuke <mail@samtuke.com>
- * @author Vincent Petry <pvince81@owncloud.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-\OC_JSON::checkLoggedIn();
-\OC_JSON::callCheck();
-\OC_JSON::checkAppEnabled('files_versions');
-
-$source = (string)$_GET['source'];
-$start = (int)$_GET['start'];
-list ($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($source);
-$count = 5; //show the newest revisions
-$versions = OCA\Files_Versions\Storage::getVersions($uid, $filename, $source);
-if( $versions ) {
-
- $endReached = false;
- if (count($versions) <= $start+$count) {
- $endReached = true;
- }
-
- $versions = array_slice($versions, $start, $count);
-
- // remove owner path from request to not disclose it to the recipient
- foreach ($versions as $version) {
- unset($version['path']);
- }
-
- \OC_JSON::success(array('data' => array('versions' => $versions, 'endReached' => $endReached)));
-
-} else {
-
- \OC_JSON::success(array('data' => array('versions' => [], 'endReached' => true)));
-
-}
diff --git a/apps/files_versions/ajax/rollbackVersion.php b/apps/files_versions/ajax/rollbackVersion.php
deleted file mode 100644
index c1a5c094ede..00000000000
--- a/apps/files_versions/ajax/rollbackVersion.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Björn Schießle <bjoern@schiessle.org>
- * @author Frank Karlitschek <frank@karlitschek.de>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Robin Appelman <robin@icewind.nl>
- * @author Sam Tuke <mail@samtuke.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Thomas Tanghus <thomas@tanghus.net>
- *
- * @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/>
- *
- */
-\OC_JSON::checkLoggedIn();
-\OC_JSON::checkAppEnabled('files_versions');
-\OC_JSON::callCheck();
-
-$file = (string)$_GET['file'];
-$revision=(int)$_GET['revision'];
-
-if(OCA\Files_Versions\Storage::rollback( $file, $revision )) {
- \OC_JSON::success(array("data" => array( "revision" => $revision, "file" => $file )));
-}else{
- $l = \OC::$server->getL10N('files_versions');
- \OC_JSON::error(array("data" => array( "message" => $l->t("Could not revert: %s", array($file) ))));
-}
diff --git a/apps/files_versions/download.php b/apps/files_versions/download.php
deleted file mode 100644
index 65ba245d71d..00000000000
--- a/apps/files_versions/download.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Andreas Fischer <bantu@owncloud.com>
- * @author Björn Schießle <bjoern@schiessle.org>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Vincent Petry <pvince81@owncloud.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-\OC_JSON::checkAppEnabled('files_versions');
-\OC_JSON::checkLoggedIn();
-
-$file = $_GET['file'];
-$revision=(int)$_GET['revision'];
-
-try {
- list($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($file);
-} catch(\OCP\Files\NotFoundException $e) {
- http_response_code(404);
- $tmpl = new OCP\Template('', '404', 'guest');
- $tmpl->assign('file', '');
- $tmpl->printPage();
- exit();
-}
-
-$versionName = '/'.$uid.'/files_versions/'.$filename.'.v'.$revision;
-
-$view = new OC\Files\View('/');
-
-$ftype = \OC::$server->getMimeTypeDetector()->getSecureMimeType($view->getMimeType('/'.$uid.'/files/'.$filename));
-
-header('Content-Type:'.$ftype);
-\OC_Response::setContentDispositionHeader(basename($filename), 'attachment');
-header('Pragma: public');// enable caching in IE
-header('Expires: 0');
-header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
-\OC_Response::setContentLengthHeader($view->filesize($versionName));
-
-OC_Util::obEnd();
-
-$view->readfile($versionName);
diff --git a/apps/files_versions/js/templates.js b/apps/files_versions/js/templates.js
index 17293d763df..cf2c236daca 100644
--- a/apps/files_versions/js/templates.js
+++ b/apps/files_versions/js/templates.js
@@ -24,7 +24,9 @@ templates['item'] = template({"1":function(container,depth0,helpers,partials,dat
+ alias4(((helper = (helper = helpers.previewUrl || (depth0 != null ? depth0.previewUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"previewUrl","hash":{},"data":data}) : helper)))
+ "\" width=\"44\" height=\"44\"/>\n </div>\n <div class=\"version-container\">\n <div>\n <a href=\""
+ alias4(((helper = (helper = helpers.downloadUrl || (depth0 != null ? depth0.downloadUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"downloadUrl","hash":{},"data":data}) : helper)))
- + "\" class=\"downloadVersion\"><img src=\""
+ + "\" class=\"downloadVersion\" download=\""
+ + alias4(((helper = (helper = helpers.downloadName || (depth0 != null ? depth0.downloadName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"downloadName","hash":{},"data":data}) : helper)))
+ + "\"><img src=\""
+ alias4(((helper = (helper = helpers.downloadIconUrl || (depth0 != null ? depth0.downloadIconUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"downloadIconUrl","hash":{},"data":data}) : helper)))
+ "\" />\n <span class=\"versiondate has-tooltip live-relative-timestamp\" data-timestamp=\""
+ alias4(((helper = (helper = helpers.millisecondsTimestamp || (depth0 != null ? depth0.millisecondsTimestamp : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"millisecondsTimestamp","hash":{},"data":data}) : helper)))
diff --git a/apps/files_versions/js/templates/item.handlebars b/apps/files_versions/js/templates/item.handlebars
index 6d11b9c0888..e34be4bd025 100644
--- a/apps/files_versions/js/templates/item.handlebars
+++ b/apps/files_versions/js/templates/item.handlebars
@@ -5,7 +5,7 @@
</div>
<div class="version-container">
<div>
- <a href="{{downloadUrl}}" class="downloadVersion"><img src="{{downloadIconUrl}}" />
+ <a href="{{downloadUrl}}" class="downloadVersion" download="{{downloadName}}"><img src="{{downloadIconUrl}}" />
<span class="versiondate has-tooltip live-relative-timestamp" data-timestamp="{{millisecondsTimestamp}}" title="{{formattedTimestamp}}">{{relativeTimestamp}}</span>
</a>
</div>
diff --git a/apps/files_versions/js/versioncollection.js b/apps/files_versions/js/versioncollection.js
index 24a4ba7fc62..e48368adfa2 100644
--- a/apps/files_versions/js/versioncollection.js
+++ b/apps/files_versions/js/versioncollection.js
@@ -8,86 +8,72 @@
*
*/
-(function() {
+(function () {
/**
* @memberof OCA.Versions
*/
var VersionCollection = OC.Backbone.Collection.extend({
model: OCA.Versions.VersionModel,
+ sync: OC.Backbone.davSync,
/**
* @var OCA.Files.FileInfoModel
*/
_fileInfo: null,
- _endReached: false,
- _currentIndex: 0,
+ _currentUser: null,
- url: function() {
- var url = OC.generateUrl('/apps/files_versions/ajax/getVersions.php');
- var query = {
- source: this._fileInfo.getFullPath(),
- start: this._currentIndex
- };
- return url + '?' + OC.buildQueryString(query);
- },
+ _client: null,
- setFileInfo: function(fileInfo) {
+ setFileInfo: function (fileInfo) {
this._fileInfo = fileInfo;
- // reset
- this._endReached = false;
- this._currentIndex = 0;
},
- getFileInfo: function() {
+ getFileInfo: function () {
return this._fileInfo;
},
- hasMoreResults: function() {
- return !this._endReached;
+ setCurrentUser: function(user) {
+ this._currentUser = user;
},
- fetch: function(options) {
- if (!options || options.remove) {
- this._currentIndex = 0;
- }
- return OC.Backbone.Collection.prototype.fetch.apply(this, arguments);
+ getCurrentUser: function() {
+ return this._currentUser || OC.getCurrentUser().uid;
},
- /**
- * Fetch the next set of results
- */
- fetchNext: function() {
- if (!this.hasMoreResults()) {
- return null;
- }
- if (this._currentIndex === 0) {
- return this.fetch();
- }
- return this.fetch({remove: false});
+ setClient: function(client) {
+ this._client = client;
+ },
+
+ getClient: function() {
+ return this._client || new OC.Files.Client({
+ host: OC.getHost(),
+ root: OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser(),
+ useHTTPS: OC.getProtocol() === 'https'
+ });
},
- reset: function() {
- this._currentIndex = 0;
- OC.Backbone.Collection.prototype.reset.apply(this, arguments);
+ url: function () {
+ return OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser() + '/versions/' + this._fileInfo.get('id');
},
parse: function(result) {
var fullPath = this._fileInfo.getFullPath();
- var results = _.map(result.data.versions, function(version) {
- var revision = parseInt(version.version, 10);
- return {
- id: revision,
- name: version.name,
- fullPath: fullPath,
- timestamp: revision,
- size: version.size,
- mimetype: version.mimetype
- };
+ var fileId = this._fileInfo.get('id');
+ var name = this._fileInfo.get('name');
+ var user = this.getCurrentUser();
+ var client = this.getClient();
+ return _.map(result, function(version) {
+ version.fullPath = fullPath;
+ version.fileId = fileId;
+ version.name = name;
+ version.timestamp = parseInt(moment(new Date(version.timestamp)).format('X'), 10);
+ version.id = parseInt(OC.basename(version.href), 10);
+ version.size = parseInt(version.size, 10);
+ version.user = user;
+ version.client = client;
+ return version;
});
- this._endReached = result.data.endReached;
- this._currentIndex += results.length;
- return results;
}
});
diff --git a/apps/files_versions/js/versionmodel.js b/apps/files_versions/js/versionmodel.js
index dc610fc2144..15469927475 100644
--- a/apps/files_versions/js/versionmodel.js
+++ b/apps/files_versions/js/versionmodel.js
@@ -8,50 +8,50 @@
*
*/
-(function() {
+/* global moment */
+
+(function () {
/**
* @memberof OCA.Versions
*/
var VersionModel = OC.Backbone.Model.extend({
+ sync: OC.Backbone.davSync,
+
+ davProperties: {
+ 'size': '{DAV:}getcontentlength',
+ 'mimetype': '{DAV:}getcontenttype',
+ 'timestamp': '{DAV:}getlastmodified',
+ },
/**
* Restores the original file to this revision
*/
- revert: function(options) {
+ revert: function (options) {
options = options ? _.clone(options) : {};
var model = this;
- var file = this.getFullPath();
- var revision = this.get('timestamp');
- $.ajax({
- type: 'GET',
- url: OC.generateUrl('/apps/files_versions/ajax/rollbackVersion.php'),
- dataType: 'json',
- data: {
- file: file,
- revision: revision
- },
- success: function(response) {
- if (response.status === 'error') {
- if (options.error) {
- options.error.call(options.context, model, response, options);
- }
- model.trigger('error', model, response, options);
- } else {
- if (options.success) {
- options.success.call(options.context, model, response, options);
- }
- model.trigger('revert', model, response, options);
+ var client = this.get('client');
+
+ return client.move('/versions/' + this.get('fileId') + '/' + this.get('id'), '/restore/target', true)
+ .done(function () {
+ if (options.success) {
+ options.success.call(options.context, model, {}, options);
+ }
+ model.trigger('revert', model, options);
+ })
+ .fail(function () {
+ if (options.error) {
+ options.error.call(options.context, model, {}, options);
}
- }
- });
+ model.trigger('error', model, {}, options);
+ });
},
- getFullPath: function() {
+ getFullPath: function () {
return this.get('fullPath');
},
- getPreviewUrl: function() {
+ getPreviewUrl: function () {
var url = OC.generateUrl('/apps/files_versions/preview');
var params = {
file: this.get('fullPath'),
@@ -60,13 +60,8 @@
return url + '?' + OC.buildQueryString(params);
},
- getDownloadUrl: function() {
- var url = OC.generateUrl('/apps/files_versions/download.php');
- var params = {
- file: this.get('fullPath'),
- revision: this.get('timestamp')
- };
- return url + '?' + OC.buildQueryString(params);
+ getDownloadUrl: function () {
+ return OC.linkToRemoteBase('dav') + '/versions/' + this.get('user') + '/versions/' + this.get('fileId') + '/' + this.get('id');
}
});
diff --git a/apps/files_versions/js/versionstabview.js b/apps/files_versions/js/versionstabview.js
index dacd567fdc9..61309a30d50 100644
--- a/apps/files_versions/js/versionstabview.js
+++ b/apps/files_versions/js/versionstabview.js
@@ -8,14 +8,11 @@
*
*/
-/* @global Handlebars */
-
(function() {
/**
* @memberof OCA.Versions
*/
- var VersionsTabView = OCA.Files.DetailTabView.extend(
- /** @lends OCA.Versions.VersionsTabView.prototype */ {
+ var VersionsTabView = OCA.Files.DetailTabView.extend(/** @lends OCA.Versions.VersionsTabView.prototype */{
id: 'versionsTabView',
className: 'tab versionsTabView',
@@ -24,8 +21,7 @@
$versionsContainer: null,
events: {
- 'click .revertVersion': '_onClickRevertVersion',
- 'click .showMoreVersions': '_onClickShowMoreVersions'
+ 'click .revertVersion': '_onClickRevertVersion'
},
initialize: function() {
@@ -43,19 +39,14 @@
},
nextPage: function() {
- if (this._loading || !this.collection.hasMoreResults()) {
+ if (this._loading) {
return;
}
if (this.collection.getFileInfo() && this.collection.getFileInfo().isDirectory()) {
return;
}
- this.collection.fetchNext();
- },
-
- _onClickShowMoreVersions: function(ev) {
- ev.preventDefault();
- this.nextPage();
+ this.collection.fetch();
},
_onClickRevertVersion: function(ev) {
@@ -70,8 +61,6 @@
ev.preventDefault();
revision = $target.attr('data-revision');
- this.$el.find('.versions, .showMoreVersions').addClass('hidden');
-
var versionModel = this.collection.get(revision);
versionModel.revert({
success: function() {
@@ -79,7 +68,7 @@
self.$versionsContainer.empty();
self.collection.setFileInfo(fileInfoModel);
self.collection.reset([], {silent: true});
- self.collection.fetchNext();
+ self.collection.fetch();
self.$el.find('.versions').removeClass('hidden');
@@ -97,7 +86,7 @@
fileInfoModel.trigger('busy', fileInfoModel, false);
self.$el.find('.versions').removeClass('hidden');
self._toggleLoading(false);
- OC.Notification.show(t('files_version', 'Failed to revert {file} to revision {timestamp}.',
+ OC.Notification.show(t('files_version', 'Failed to revert {file} to revision {timestamp}.',
{
file: versionModel.getFullPath(),
timestamp: OC.Util.formatDate(versionModel.get('timestamp') * 1000)
@@ -121,27 +110,16 @@
_onRequest: function() {
this._toggleLoading(true);
- this.$el.find('.showMoreVersions').addClass('hidden');
},
_onEndRequest: function() {
this._toggleLoading(false);
this.$el.find('.empty').toggleClass('hidden', !!this.collection.length);
- this.$el.find('.showMoreVersions').toggleClass('hidden', !this.collection.hasMoreResults());
},
_onAddModel: function(model) {
var $el = $(this.itemTemplate(this._formatItem(model)));
this.$versionsContainer.append($el);
-
- var preview = $el.find('.preview')[0];
- this._lazyLoadPreview({
- url: model.getPreviewUrl(),
- mime: model.get('mimetype'),
- callback: function(url) {
- preview.src = url;
- }
- });
$el.find('.has-tooltip').tooltip();
},
@@ -168,8 +146,9 @@
_formatItem: function(version) {
var timestamp = version.get('timestamp') * 1000;
var size = version.has('size') ? version.get('size') : 0;
+
return _.extend({
- millisecondsTimestamp: timestamp,
+ versionId: version.get('id'),
formattedTimestamp: OC.Util.formatDate(timestamp),
relativeTimestamp: OC.Util.relativeModifiedDate(timestamp),
humanReadableSize: OC.Util.humanFileSize(size, true),
@@ -177,7 +156,9 @@
hasDetails: version.has('size'),
downloadUrl: version.getDownloadUrl(),
downloadIconUrl: OC.imagePath('core', 'actions/download'),
+ downloadName: version.get('name'),
revertIconUrl: OC.imagePath('core', 'actions/history'),
+ previewUrl: version.getPreviewUrl(),
revertLabel: t('files_versions', 'Restore'),
canRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0
}, version.attributes);
@@ -188,8 +169,7 @@
*/
render: function() {
this.$el.html(this.template({
- emptyResultLabel: t('files_versions', 'No earlier versions available'),
- moreVersionsLabel: t('files_versions', 'More versions …')
+ emptyResultLabel: t('files_versions', 'No other versions available'),
}));
this.$el.find('.has-tooltip').tooltip();
this.$versionsContainer = this.$el.find('ul.versions');
@@ -206,38 +186,6 @@
return false;
}
return !fileInfo.isDirectory();
- },
-
- /**
- * Lazy load a file's preview.
- *
- * @param path path of the file
- * @param mime mime type
- * @param callback callback function to call when the image was loaded
- * @param etag file etag (for caching)
- */
- _lazyLoadPreview : function(options) {
- var url = options.url;
- var mime = options.mime;
- var ready = options.callback;
-
- // get mime icon url
- var iconURL = OC.MimeType.getIconUrl(mime);
- ready(iconURL); // set mimeicon URL
-
- var img = new Image();
- img.onload = function(){
- // if loading the preview image failed (no preview for the mimetype) then img.width will < 5
- if (img.width > 5) {
- ready(url, img);
- } else if (options.error) {
- options.error();
- }
- };
- if (options.error) {
- img.onerror = options.error;
- }
- img.src = url;
}
});
diff --git a/apps/files_versions/l10n/af.js b/apps/files_versions/l10n/af.js
index 73d5ce54cf9..62b7d0b9203 100644
--- a/apps/files_versions/l10n/af.js
+++ b/apps/files_versions/l10n/af.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Kon nie terugstel nie: %s",
"Versions" : "Weergawes",
"Failed to revert {file} to revision {timestamp}." : "Kon nie {file} na {timestamp} se hersiening terugstel nie.",
"_%n byte_::_%n bytes_" : ["%n greep","%n grepe"],
"Restore" : "Herstel",
+ "Could not revert: %s" : "Kon nie terugstel nie: %s",
"No earlier versions available" : "Geen vroeëre weergawes beskikbaar",
"More versions …" : "Nog weergawes…"
},
diff --git a/apps/files_versions/l10n/af.json b/apps/files_versions/l10n/af.json
index c0459b2044f..ff2a70b5987 100644
--- a/apps/files_versions/l10n/af.json
+++ b/apps/files_versions/l10n/af.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Kon nie terugstel nie: %s",
"Versions" : "Weergawes",
"Failed to revert {file} to revision {timestamp}." : "Kon nie {file} na {timestamp} se hersiening terugstel nie.",
"_%n byte_::_%n bytes_" : ["%n greep","%n grepe"],
"Restore" : "Herstel",
+ "Could not revert: %s" : "Kon nie terugstel nie: %s",
"No earlier versions available" : "Geen vroeëre weergawes beskikbaar",
"More versions …" : "Nog weergawes…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/ar.js b/apps/files_versions/l10n/ar.js
index cb4fb02dd37..9e4f0050c71 100644
--- a/apps/files_versions/l10n/ar.js
+++ b/apps/files_versions/l10n/ar.js
@@ -1,10 +1,10 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "غير قادر على الاستعادة : %s",
"Versions" : "الإصدارات",
"Failed to revert {file} to revision {timestamp}." : "فشل في استعادة {ملف} لنتقيح {الطابع الزمني}",
"Restore" : "استعادة ",
+ "Could not revert: %s" : "غير قادر على الاستعادة : %s",
"No earlier versions available" : "ليس هناك أية نُسخة سابقة",
"More versions …" : "المزيد مِن النُسَخ …"
},
diff --git a/apps/files_versions/l10n/ar.json b/apps/files_versions/l10n/ar.json
index c45da41a761..594913ae05b 100644
--- a/apps/files_versions/l10n/ar.json
+++ b/apps/files_versions/l10n/ar.json
@@ -1,8 +1,8 @@
{ "translations": {
- "Could not revert: %s" : "غير قادر على الاستعادة : %s",
"Versions" : "الإصدارات",
"Failed to revert {file} to revision {timestamp}." : "فشل في استعادة {ملف} لنتقيح {الطابع الزمني}",
"Restore" : "استعادة ",
+ "Could not revert: %s" : "غير قادر على الاستعادة : %s",
"No earlier versions available" : "ليس هناك أية نُسخة سابقة",
"More versions …" : "المزيد مِن النُسَخ …"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
diff --git a/apps/files_versions/l10n/ast.js b/apps/files_versions/l10n/ast.js
index 8a55b7be4e6..ad33c225e4a 100644
--- a/apps/files_versions/l10n/ast.js
+++ b/apps/files_versions/l10n/ast.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Nun pudo revertise: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Fallu al revertir {file} a la revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "Nun pudo revertise: %s",
"No earlier versions available" : "Nun hai versiones más tempranes disponibles",
"More versions …" : "Más versiones..."
},
diff --git a/apps/files_versions/l10n/ast.json b/apps/files_versions/l10n/ast.json
index d98d9f4d6bb..31977b799fe 100644
--- a/apps/files_versions/l10n/ast.json
+++ b/apps/files_versions/l10n/ast.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Nun pudo revertise: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Fallu al revertir {file} a la revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "Nun pudo revertise: %s",
"No earlier versions available" : "Nun hai versiones más tempranes disponibles",
"More versions …" : "Más versiones..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/bg.js b/apps/files_versions/l10n/bg.js
index a57eeb9473e..b9b3fb2b05d 100644
--- a/apps/files_versions/l10n/bg.js
+++ b/apps/files_versions/l10n/bg.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Грешка при връщане: %s",
"Versions" : "Версии",
"Failed to revert {file} to revision {timestamp}." : "Грешка при връщане на {file} към версия {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта"],
"Restore" : "Възтановяване",
+ "Could not revert: %s" : "Грешка при връщане: %s",
"No earlier versions available" : "Няма други налични по-ранни версии",
"More versions …" : "Още версии ..."
},
diff --git a/apps/files_versions/l10n/bg.json b/apps/files_versions/l10n/bg.json
index 2808e5c406a..480082adcb1 100644
--- a/apps/files_versions/l10n/bg.json
+++ b/apps/files_versions/l10n/bg.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Грешка при връщане: %s",
"Versions" : "Версии",
"Failed to revert {file} to revision {timestamp}." : "Грешка при връщане на {file} към версия {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта"],
"Restore" : "Възтановяване",
+ "Could not revert: %s" : "Грешка при връщане: %s",
"No earlier versions available" : "Няма други налични по-ранни версии",
"More versions …" : "Още версии ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/ca.js b/apps/files_versions/l10n/ca.js
index 0efca5aef44..c7224453dc1 100644
--- a/apps/files_versions/l10n/ca.js
+++ b/apps/files_versions/l10n/ca.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "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",
+ "Could not revert: %s" : "No s'ha pogut revertir: %s",
"No earlier versions available" : "No hi ha versions anteriors disponibles",
"More versions …" : "Més versións ..."
},
diff --git a/apps/files_versions/l10n/ca.json b/apps/files_versions/l10n/ca.json
index f549d7015fa..8584a7a46e6 100644
--- a/apps/files_versions/l10n/ca.json
+++ b/apps/files_versions/l10n/ca.json
@@ -1,9 +1,9 @@
{ "translations": {
- "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",
+ "Could not revert: %s" : "No s'ha pogut revertir: %s",
"No earlier versions available" : "No hi ha versions anteriors disponibles",
"More versions …" : "Més versións ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/cs.js b/apps/files_versions/l10n/cs.js
index 48c1505fab1..9facaf1108a 100644
--- a/apps/files_versions/l10n/cs.js
+++ b/apps/files_versions/l10n/cs.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Nelze vrátit: %s",
"Versions" : "Verze",
"Failed to revert {file} to revision {timestamp}." : "Nepodařilo se vrátit {file} na verzi {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajtů"],
"Restore" : "Obnovit",
- "No earlier versions available" : "Nejsou dostupné dřívější verze",
- "More versions …" : "Více verzí…",
+ "No other versions available" : "Nejsou k dispozici žádné jiné verze",
"This application automatically maintains older versions of files that are changed." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění.",
"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.\n\t\tIn 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." : "Tato aplikace automaticky udržuje starší verze souborů, které se změnily. Když je zapnutá, je v každém adresáři uživatele vytvořena složka pro skryté verze a do ní jsou ukládány staré verze souborů. Uživatel se kdykoli může vrátit ke starším verzím prostřednictvím webového rozhraní s tím, že sám nahrazovaný soubor se stane verzí. Aplikace automaticky zpravuje složku s verzemi aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá svou kvótu.\n\t\tKrom expirace verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnout tento limit, aplikace smaže nejstarší verze, aby se do tohoto limitu vešla. Více informací je k dispozici v dokumentaci k aplikaci Verze.",
+ "Could not revert: %s" : "Nelze vrátit: %s",
+ "No earlier versions available" : "Nejsou dostupné dřívější verze",
+ "More versions …" : "Více verzí…",
"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.\nIn 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." : "Tato aplikace automaticky udržuje starší verze souborů, které se změnily. Když je zapnutá, je v každém adresáři uživatele vytvořena složka pro skryté verze a do ní jsou ukládány staré verze souborů. Uživatel se kdykoli může vrátit ke starším verzím prostřednictvím webového rozhraní s tím, že sám nahrazovaný soubor se stane verzí. Aplikace automaticky zpravuje složku s verzemi aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá svou kvótu.\n\t\tKrom expirace verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnout tento limit, aplikace smaže nejstarší verze, aby se do tohoto limitu vešla. Více informací je k dispozici v dokumentaci k aplikaci Verze."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/files_versions/l10n/cs.json b/apps/files_versions/l10n/cs.json
index e4a8ad6aee9..848c99eca65 100644
--- a/apps/files_versions/l10n/cs.json
+++ b/apps/files_versions/l10n/cs.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "Nelze vrátit: %s",
"Versions" : "Verze",
"Failed to revert {file} to revision {timestamp}." : "Nepodařilo se vrátit {file} na verzi {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajtů"],
"Restore" : "Obnovit",
- "No earlier versions available" : "Nejsou dostupné dřívější verze",
- "More versions …" : "Více verzí…",
+ "No other versions available" : "Nejsou k dispozici žádné jiné verze",
"This application automatically maintains older versions of files that are changed." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění.",
"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.\n\t\tIn 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." : "Tato aplikace automaticky udržuje starší verze souborů, které se změnily. Když je zapnutá, je v každém adresáři uživatele vytvořena složka pro skryté verze a do ní jsou ukládány staré verze souborů. Uživatel se kdykoli může vrátit ke starším verzím prostřednictvím webového rozhraní s tím, že sám nahrazovaný soubor se stane verzí. Aplikace automaticky zpravuje složku s verzemi aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá svou kvótu.\n\t\tKrom expirace verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnout tento limit, aplikace smaže nejstarší verze, aby se do tohoto limitu vešla. Více informací je k dispozici v dokumentaci k aplikaci Verze.",
+ "Could not revert: %s" : "Nelze vrátit: %s",
+ "No earlier versions available" : "Nejsou dostupné dřívější verze",
+ "More versions …" : "Více verzí…",
"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.\nIn 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." : "Tato aplikace automaticky udržuje starší verze souborů, které se změnily. Když je zapnutá, je v každém adresáři uživatele vytvořena složka pro skryté verze a do ní jsou ukládány staré verze souborů. Uživatel se kdykoli může vrátit ke starším verzím prostřednictvím webového rozhraní s tím, že sám nahrazovaný soubor se stane verzí. Aplikace automaticky zpravuje složku s verzemi aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá svou kvótu.\n\t\tKrom expirace verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnout tento limit, aplikace smaže nejstarší verze, aby se do tohoto limitu vešla. Více informací je k dispozici v dokumentaci k aplikaci Verze."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/da.js b/apps/files_versions/l10n/da.js
index 0297427d0db..f06ae01b662 100644
--- a/apps/files_versions/l10n/da.js
+++ b/apps/files_versions/l10n/da.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Kunne ikke genskabe: %s",
"Versions" : "Versioner",
"Failed to revert {file} to revision {timestamp}." : "Kunne ikke tilbagerulle {file} til den tidligere udgave: {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Gendan",
+ "Could not revert: %s" : "Kunne ikke genskabe: %s",
"No earlier versions available" : "Ingen tidligere versioner tilgængelige",
"More versions …" : "Flere versioner ..."
},
diff --git a/apps/files_versions/l10n/da.json b/apps/files_versions/l10n/da.json
index 22ffb92ff5c..df8985f7537 100644
--- a/apps/files_versions/l10n/da.json
+++ b/apps/files_versions/l10n/da.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Kunne ikke genskabe: %s",
"Versions" : "Versioner",
"Failed to revert {file} to revision {timestamp}." : "Kunne ikke tilbagerulle {file} til den tidligere udgave: {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Gendan",
+ "Could not revert: %s" : "Kunne ikke genskabe: %s",
"No earlier versions available" : "Ingen tidligere versioner tilgængelige",
"More versions …" : "Flere versioner ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/de.js b/apps/files_versions/l10n/de.js
index 833c48b20b8..177d282c596 100644
--- a/apps/files_versions/l10n/de.js
+++ b/apps/files_versions/l10n/de.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
"Versions" : "Versionen",
"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 earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
- "More versions …" : "Weitere Versionen…",
+ "No other versions available" : "Keine anderen Versionen verfügbar",
"This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.",
"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.\n\t\tIn 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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.",
+ "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
+ "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
+ "More versions …" : "Weitere Versionen…",
"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.\nIn 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." : "Diese Anwendung pflegt automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/de.json b/apps/files_versions/l10n/de.json
index 62eb5f9c6cf..f821a2a0b6e 100644
--- a/apps/files_versions/l10n/de.json
+++ b/apps/files_versions/l10n/de.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
"Versions" : "Versionen",
"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 earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
- "More versions …" : "Weitere Versionen…",
+ "No other versions available" : "Keine anderen Versionen verfügbar",
"This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.",
"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.\n\t\tIn 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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.",
+ "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
+ "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
+ "More versions …" : "Weitere Versionen…",
"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.\nIn 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." : "Diese Anwendung pflegt automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/de_DE.js b/apps/files_versions/l10n/de_DE.js
index f09530c7c36..56c90a813ca 100644
--- a/apps/files_versions/l10n/de_DE.js
+++ b/apps/files_versions/l10n/de_DE.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
"Versions" : "Versionen",
"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 earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
- "More versions …" : "Weitere Versionen…",
+ "No other versions available" : "Keine anderen Versionen verfügbar",
"This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.",
"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.\n\t\tIn 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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.",
+ "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
+ "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
+ "More versions …" : "Weitere Versionen…",
"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.\nIn 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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/de_DE.json b/apps/files_versions/l10n/de_DE.json
index 8f578e3f45d..1a8a0f0906a 100644
--- a/apps/files_versions/l10n/de_DE.json
+++ b/apps/files_versions/l10n/de_DE.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
"Versions" : "Versionen",
"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 earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
- "More versions …" : "Weitere Versionen…",
+ "No other versions available" : "Keine anderen Versionen verfügbar",
"This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.",
"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.\n\t\tIn 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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.",
+ "Could not revert: %s" : "%s konnte nicht zurückgesetzt werden",
+ "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden",
+ "More versions …" : "Weitere Versionen…",
"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.\nIn 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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/el.js b/apps/files_versions/l10n/el.js
index 9742232bfee..8d86a8b4acf 100644
--- a/apps/files_versions/l10n/el.js
+++ b/apps/files_versions/l10n/el.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Αδυναμία επαναφοράς: %s",
"Versions" : "Εκδόσεις",
"Failed to revert {file} to revision {timestamp}." : "Αποτυχία επαναφοράς του {file} στην αναθεώρηση {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
"Restore" : "Επαναφορά",
+ "Could not revert: %s" : "Αδυναμία επαναφοράς: %s",
"No earlier versions available" : "Δεν είναι διαθέριμες νεότερες εκδόσεις",
"More versions …" : "Περισσότερες εκδόσεις ..."
},
diff --git a/apps/files_versions/l10n/el.json b/apps/files_versions/l10n/el.json
index 0932c5b6620..13cd2024259 100644
--- a/apps/files_versions/l10n/el.json
+++ b/apps/files_versions/l10n/el.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Αδυναμία επαναφοράς: %s",
"Versions" : "Εκδόσεις",
"Failed to revert {file} to revision {timestamp}." : "Αποτυχία επαναφοράς του {file} στην αναθεώρηση {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
"Restore" : "Επαναφορά",
+ "Could not revert: %s" : "Αδυναμία επαναφοράς: %s",
"No earlier versions available" : "Δεν είναι διαθέριμες νεότερες εκδόσεις",
"More versions …" : "Περισσότερες εκδόσεις ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/en_GB.js b/apps/files_versions/l10n/en_GB.js
index 586d1a95d40..e065cbb8039 100644
--- a/apps/files_versions/l10n/en_GB.js
+++ b/apps/files_versions/l10n/en_GB.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Could not revert: %s",
"Versions" : "Versions",
"Failed to revert {file} to revision {timestamp}." : "Failed to revert {file} to revision {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restore",
+ "Could not revert: %s" : "Could not revert: %s",
"No earlier versions available" : "No earlier versions available",
"More versions …" : "More versions …"
},
diff --git a/apps/files_versions/l10n/en_GB.json b/apps/files_versions/l10n/en_GB.json
index 290d972c1a1..8eda772b401 100644
--- a/apps/files_versions/l10n/en_GB.json
+++ b/apps/files_versions/l10n/en_GB.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Could not revert: %s",
"Versions" : "Versions",
"Failed to revert {file} to revision {timestamp}." : "Failed to revert {file} to revision {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restore",
+ "Could not revert: %s" : "Could not revert: %s",
"No earlier versions available" : "No earlier versions available",
"More versions …" : "More versions …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/eo.js b/apps/files_versions/l10n/eo.js
index 3935606b4ca..0a2c7ab9a98 100644
--- a/apps/files_versions/l10n/eo.js
+++ b/apps/files_versions/l10n/eo.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Ne eblas malfari: %s",
"Versions" : "Versioj",
"Failed to revert {file} to revision {timestamp}." : "Malsukcesis returnigo de {file} al la revizio {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n duumoko","%n duumokoj"],
"Restore" : "Restaŭri",
+ "Could not revert: %s" : "Ne eblas malfari: %s",
"More versions …" : "Pli da versioj..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/eo.json b/apps/files_versions/l10n/eo.json
index 671b35f5096..c1cd28785ab 100644
--- a/apps/files_versions/l10n/eo.json
+++ b/apps/files_versions/l10n/eo.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Ne eblas malfari: %s",
"Versions" : "Versioj",
"Failed to revert {file} to revision {timestamp}." : "Malsukcesis returnigo de {file} al la revizio {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n duumoko","%n duumokoj"],
"Restore" : "Restaŭri",
+ "Could not revert: %s" : "Ne eblas malfari: %s",
"More versions …" : "Pli da versioj..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/es.js b/apps/files_versions/l10n/es.js
index f456785e688..65ea898924f 100644
--- a/apps/files_versions/l10n/es.js
+++ b/apps/files_versions/l10n/es.js
@@ -1,15 +1,15 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No se puede restaurar: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "No se ha podido restaurar {file} a versión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Recuperar",
- "No earlier versions available" : "No hay versiones previas disponibles",
- "More versions …" : "Más versiones ...",
"This application automatically maintains older versions of files that are changed." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian.",
"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.\n\t\tIn 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." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian. Al activarse, se crea una carpeta oculta de versiones que se usa para almacenar versiones antiguas de archivos. Un usuario puede volver a una versión anterior a través de la interfaz web en cualquier momento, con el archivo reemplazado convirtiéndose en una versión. La app maneja automáticamente la carpeta de versiones para asegurarse de que el usuario no se queda sin espacio debido a las versiones.\n\nAdemás de la expiración de versiones, la app de versiones se asegura de no usar nunca más del 50% del espacio libre actualmente disponible para un usuario. Si las versiones almacenadas exceden este límite, la app borrará las versiones más antiguas hasta alcanzar este límite. Más información disponible en la documentación de Versiones.",
+ "Could not revert: %s" : "No se puede restaurar: %s",
+ "No earlier versions available" : "No hay versiones previas disponibles",
+ "More versions …" : "Más versiones ...",
"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.\nIn 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." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian. Al activarse, se crea una carpeta oculta de versiones que se usa para almacenar versiones antiguas de archivos. Un usuario puede volver a una versión anterior a través de la interfaz web en cualquier momento, con el archivo reemplazado convirtiéndose en una versión. La app maneja automáticamente la carpeta de versiones para asegurarse de que el usuario no se queda sin espacio debido a las versiones.Además de la expiración de versiones, la app de versiones se asegura de no usar nunca más del 50% del espacio libre actualmente disponible para un usuario. Si las versiones almacenadas exceden este límite, la app borrará las versiones más antiguas hasta alcanzar este límite. Más información disponible en la documentación de Versiones."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/es.json b/apps/files_versions/l10n/es.json
index 3e30c5c6bbf..be6f923e27e 100644
--- a/apps/files_versions/l10n/es.json
+++ b/apps/files_versions/l10n/es.json
@@ -1,13 +1,13 @@
{ "translations": {
- "Could not revert: %s" : "No se puede restaurar: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "No se ha podido restaurar {file} a versión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Recuperar",
- "No earlier versions available" : "No hay versiones previas disponibles",
- "More versions …" : "Más versiones ...",
"This application automatically maintains older versions of files that are changed." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian.",
"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.\n\t\tIn 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." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian. Al activarse, se crea una carpeta oculta de versiones que se usa para almacenar versiones antiguas de archivos. Un usuario puede volver a una versión anterior a través de la interfaz web en cualquier momento, con el archivo reemplazado convirtiéndose en una versión. La app maneja automáticamente la carpeta de versiones para asegurarse de que el usuario no se queda sin espacio debido a las versiones.\n\nAdemás de la expiración de versiones, la app de versiones se asegura de no usar nunca más del 50% del espacio libre actualmente disponible para un usuario. Si las versiones almacenadas exceden este límite, la app borrará las versiones más antiguas hasta alcanzar este límite. Más información disponible en la documentación de Versiones.",
+ "Could not revert: %s" : "No se puede restaurar: %s",
+ "No earlier versions available" : "No hay versiones previas disponibles",
+ "More versions …" : "Más versiones ...",
"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.\nIn 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." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian. Al activarse, se crea una carpeta oculta de versiones que se usa para almacenar versiones antiguas de archivos. Un usuario puede volver a una versión anterior a través de la interfaz web en cualquier momento, con el archivo reemplazado convirtiéndose en una versión. La app maneja automáticamente la carpeta de versiones para asegurarse de que el usuario no se queda sin espacio debido a las versiones.Además de la expiración de versiones, la app de versiones se asegura de no usar nunca más del 50% del espacio libre actualmente disponible para un usuario. Si las versiones almacenadas exceden este límite, la app borrará las versiones más antiguas hasta alcanzar este límite. Más información disponible en la documentación de Versiones."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/es_419.js b/apps/files_versions/l10n/es_419.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_419.js
+++ b/apps/files_versions/l10n/es_419.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_419.json b/apps/files_versions/l10n/es_419.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_419.json
+++ b/apps/files_versions/l10n/es_419.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_AR.js b/apps/files_versions/l10n/es_AR.js
index 024131912c0..ec619a20ce0 100644
--- a/apps/files_versions/l10n/es_AR.js
+++ b/apps/files_versions/l10n/es_AR.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {archivo} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones más antiguas disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_AR.json b/apps/files_versions/l10n/es_AR.json
index 60853f8ae41..72a49bfc1ef 100644
--- a/apps/files_versions/l10n/es_AR.json
+++ b/apps/files_versions/l10n/es_AR.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {archivo} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones más antiguas disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_CL.js b/apps/files_versions/l10n/es_CL.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_CL.js
+++ b/apps/files_versions/l10n/es_CL.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_CL.json b/apps/files_versions/l10n/es_CL.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_CL.json
+++ b/apps/files_versions/l10n/es_CL.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_CO.js b/apps/files_versions/l10n/es_CO.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_CO.js
+++ b/apps/files_versions/l10n/es_CO.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_CO.json b/apps/files_versions/l10n/es_CO.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_CO.json
+++ b/apps/files_versions/l10n/es_CO.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_CR.js b/apps/files_versions/l10n/es_CR.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_CR.js
+++ b/apps/files_versions/l10n/es_CR.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_CR.json b/apps/files_versions/l10n/es_CR.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_CR.json
+++ b/apps/files_versions/l10n/es_CR.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_DO.js b/apps/files_versions/l10n/es_DO.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_DO.js
+++ b/apps/files_versions/l10n/es_DO.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_DO.json b/apps/files_versions/l10n/es_DO.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_DO.json
+++ b/apps/files_versions/l10n/es_DO.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_EC.js b/apps/files_versions/l10n/es_EC.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_EC.js
+++ b/apps/files_versions/l10n/es_EC.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_EC.json b/apps/files_versions/l10n/es_EC.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_EC.json
+++ b/apps/files_versions/l10n/es_EC.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_GT.js b/apps/files_versions/l10n/es_GT.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_GT.js
+++ b/apps/files_versions/l10n/es_GT.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_GT.json b/apps/files_versions/l10n/es_GT.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_GT.json
+++ b/apps/files_versions/l10n/es_GT.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_HN.js b/apps/files_versions/l10n/es_HN.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_HN.js
+++ b/apps/files_versions/l10n/es_HN.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_HN.json b/apps/files_versions/l10n/es_HN.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_HN.json
+++ b/apps/files_versions/l10n/es_HN.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_MX.js b/apps/files_versions/l10n/es_MX.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_MX.js
+++ b/apps/files_versions/l10n/es_MX.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_MX.json b/apps/files_versions/l10n/es_MX.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_MX.json
+++ b/apps/files_versions/l10n/es_MX.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_NI.js b/apps/files_versions/l10n/es_NI.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_NI.js
+++ b/apps/files_versions/l10n/es_NI.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_NI.json b/apps/files_versions/l10n/es_NI.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_NI.json
+++ b/apps/files_versions/l10n/es_NI.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_PA.js b/apps/files_versions/l10n/es_PA.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_PA.js
+++ b/apps/files_versions/l10n/es_PA.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_PA.json b/apps/files_versions/l10n/es_PA.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_PA.json
+++ b/apps/files_versions/l10n/es_PA.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_PE.js b/apps/files_versions/l10n/es_PE.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_PE.js
+++ b/apps/files_versions/l10n/es_PE.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_PE.json b/apps/files_versions/l10n/es_PE.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_PE.json
+++ b/apps/files_versions/l10n/es_PE.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_PR.js b/apps/files_versions/l10n/es_PR.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_PR.js
+++ b/apps/files_versions/l10n/es_PR.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_PR.json b/apps/files_versions/l10n/es_PR.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_PR.json
+++ b/apps/files_versions/l10n/es_PR.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_PY.js b/apps/files_versions/l10n/es_PY.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_PY.js
+++ b/apps/files_versions/l10n/es_PY.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_PY.json b/apps/files_versions/l10n/es_PY.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_PY.json
+++ b/apps/files_versions/l10n/es_PY.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_SV.js b/apps/files_versions/l10n/es_SV.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_SV.js
+++ b/apps/files_versions/l10n/es_SV.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_SV.json b/apps/files_versions/l10n/es_SV.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_SV.json
+++ b/apps/files_versions/l10n/es_SV.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/es_UY.js b/apps/files_versions/l10n/es_UY.js
index e1269727f58..312d3cdee5b 100644
--- a/apps/files_versions/l10n/es_UY.js
+++ b/apps/files_versions/l10n/es_UY.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},
diff --git a/apps/files_versions/l10n/es_UY.json b/apps/files_versions/l10n/es_UY.json
index 6d1928e054d..2650f6c72f1 100644
--- a/apps/files_versions/l10n/es_UY.json
+++ b/apps/files_versions/l10n/es_UY.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "No fue posible revertir: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "No fue posible revertir: %s",
"No earlier versions available" : "No hay versiones anteriores disponibles",
"More versions …" : "Más versiones ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/et_EE.js b/apps/files_versions/l10n/et_EE.js
index ef4798a9ff4..e03c72c30d8 100644
--- a/apps/files_versions/l10n/et_EE.js
+++ b/apps/files_versions/l10n/et_EE.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Ei suuda taastada faili: %s",
"Versions" : "Versioonid",
"Failed to revert {file} to revision {timestamp}." : "Ebaõnnestus faili {file} taastamine revisjonile {timestamp}",
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
"Restore" : "Taasta",
+ "Could not revert: %s" : "Ei suuda taastada faili: %s",
"No earlier versions available" : "Eelnevaid versioone pole saadaval",
"More versions …" : "Veel versioone ..."
},
diff --git a/apps/files_versions/l10n/et_EE.json b/apps/files_versions/l10n/et_EE.json
index a7d707c8694..e156bee7a97 100644
--- a/apps/files_versions/l10n/et_EE.json
+++ b/apps/files_versions/l10n/et_EE.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Ei suuda taastada faili: %s",
"Versions" : "Versioonid",
"Failed to revert {file} to revision {timestamp}." : "Ebaõnnestus faili {file} taastamine revisjonile {timestamp}",
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
"Restore" : "Taasta",
+ "Could not revert: %s" : "Ei suuda taastada faili: %s",
"No earlier versions available" : "Eelnevaid versioone pole saadaval",
"More versions …" : "Veel versioone ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/eu.js b/apps/files_versions/l10n/eu.js
index 5e140d1106c..6ab4606a60c 100644
--- a/apps/files_versions/l10n/eu.js
+++ b/apps/files_versions/l10n/eu.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Ezin izan da leheneratu: %s",
"Versions" : "Bertsioak",
"Failed to revert {file} to revision {timestamp}." : "Errore bat izan da {fitxategia} {timestamp} bertsiora leheneratzean.",
"_%n byte_::_%n bytes_" : ["%nbyte","%n bytes"],
"Restore" : "Berrezarri",
+ "Could not revert: %s" : "Ezin izan da leheneratu: %s",
"No earlier versions available" : "Ez dago aurreko bertsiorik",
"More versions …" : "Bertsio gehiago..."
},
diff --git a/apps/files_versions/l10n/eu.json b/apps/files_versions/l10n/eu.json
index 2137d3353b1..ac97353890f 100644
--- a/apps/files_versions/l10n/eu.json
+++ b/apps/files_versions/l10n/eu.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Ezin izan da leheneratu: %s",
"Versions" : "Bertsioak",
"Failed to revert {file} to revision {timestamp}." : "Errore bat izan da {fitxategia} {timestamp} bertsiora leheneratzean.",
"_%n byte_::_%n bytes_" : ["%nbyte","%n bytes"],
"Restore" : "Berrezarri",
+ "Could not revert: %s" : "Ezin izan da leheneratu: %s",
"No earlier versions available" : "Ez dago aurreko bertsiorik",
"More versions …" : "Bertsio gehiago..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/fa.js b/apps/files_versions/l10n/fa.js
index 9d9ac3087f1..e3d2b144cb9 100644
--- a/apps/files_versions/l10n/fa.js
+++ b/apps/files_versions/l10n/fa.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "بازگردانی امکان ناپذیر است: %s",
"Versions" : "نسخه ها",
"Failed to revert {file} to revision {timestamp}." : "برگرداندن {file} به نسخه {timestamp} با شکست روبرو شد",
"_%n byte_::_%n bytes_" : ["%n بایت","%n بایت"],
"Restore" : "بازیابی",
+ "Could not revert: %s" : "بازگردانی امکان ناپذیر است: %s",
"No earlier versions available" : "هیچ نسخه قدیمی تری در دسترس نیست",
"More versions …" : "نسخه های بیشتر ..."
},
diff --git a/apps/files_versions/l10n/fa.json b/apps/files_versions/l10n/fa.json
index 5d8b6baab00..e8a5faf6735 100644
--- a/apps/files_versions/l10n/fa.json
+++ b/apps/files_versions/l10n/fa.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "بازگردانی امکان ناپذیر است: %s",
"Versions" : "نسخه ها",
"Failed to revert {file} to revision {timestamp}." : "برگرداندن {file} به نسخه {timestamp} با شکست روبرو شد",
"_%n byte_::_%n bytes_" : ["%n بایت","%n بایت"],
"Restore" : "بازیابی",
+ "Could not revert: %s" : "بازگردانی امکان ناپذیر است: %s",
"No earlier versions available" : "هیچ نسخه قدیمی تری در دسترس نیست",
"More versions …" : "نسخه های بیشتر ..."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_versions/l10n/fi.js b/apps/files_versions/l10n/fi.js
index 5e92df7d344..184f9d7385f 100644
--- a/apps/files_versions/l10n/fi.js
+++ b/apps/files_versions/l10n/fi.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Palautus epäonnistui: %s",
"Versions" : "Versiot",
"Failed to revert {file} to revision {timestamp}." : "Tiedoston {file} palautus versioon {timestamp} epäonnistui.",
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
"Restore" : "Palauta",
+ "Could not revert: %s" : "Palautus epäonnistui: %s",
"No earlier versions available" : "Ei aikaisempia versioita saatavilla",
"More versions …" : "Lisää versioita..."
},
diff --git a/apps/files_versions/l10n/fi.json b/apps/files_versions/l10n/fi.json
index 1c46aa8ab1e..e679fc259ca 100644
--- a/apps/files_versions/l10n/fi.json
+++ b/apps/files_versions/l10n/fi.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Palautus epäonnistui: %s",
"Versions" : "Versiot",
"Failed to revert {file} to revision {timestamp}." : "Tiedoston {file} palautus versioon {timestamp} epäonnistui.",
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
"Restore" : "Palauta",
+ "Could not revert: %s" : "Palautus epäonnistui: %s",
"No earlier versions available" : "Ei aikaisempia versioita saatavilla",
"More versions …" : "Lisää versioita..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/fr.js b/apps/files_versions/l10n/fr.js
index c49a952e595..b96b95ee754 100644
--- a/apps/files_versions/l10n/fr.js
+++ b/apps/files_versions/l10n/fr.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Impossible de restaurer %s",
"Versions" : "Versions",
"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 earlier versions available" : "Aucune version antérieure disponible",
- "More versions …" : "Plus de versions ...",
+ "No other versions available" : "Aucune autre version n'est disponible",
"This application automatically maintains older versions of files that are changed." : "Cette application conserve automatiquement des anciennes versions de fichiers qui ont été modifiés.",
"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.\n\t\tIn 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." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'elle est activée, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne manque pas de place à cause des versions stockées.\nEn plus de l'expiration des versions, l'application veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions.",
+ "Could not revert: %s" : "Impossible de restaurer %s",
+ "No earlier versions available" : "Aucune version antérieure disponible",
+ "More versions …" : "Plus de versions ...",
"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.\nIn 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." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'il est activé, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne dépasse pas son quota en raison des versions stockées.\nEn plus de l'expiration des versions, l'application des versions veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_versions/l10n/fr.json b/apps/files_versions/l10n/fr.json
index 67e99c3f310..4ea4fb5ddff 100644
--- a/apps/files_versions/l10n/fr.json
+++ b/apps/files_versions/l10n/fr.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "Impossible de restaurer %s",
"Versions" : "Versions",
"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 earlier versions available" : "Aucune version antérieure disponible",
- "More versions …" : "Plus de versions ...",
+ "No other versions available" : "Aucune autre version n'est disponible",
"This application automatically maintains older versions of files that are changed." : "Cette application conserve automatiquement des anciennes versions de fichiers qui ont été modifiés.",
"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.\n\t\tIn 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." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'elle est activée, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne manque pas de place à cause des versions stockées.\nEn plus de l'expiration des versions, l'application veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions.",
+ "Could not revert: %s" : "Impossible de restaurer %s",
+ "No earlier versions available" : "Aucune version antérieure disponible",
+ "More versions …" : "Plus de versions ...",
"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.\nIn 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." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'il est activé, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne dépasse pas son quota en raison des versions stockées.\nEn plus de l'expiration des versions, l'application des versions veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/gl.js b/apps/files_versions/l10n/gl.js
index 8579b44b762..62f9e708ebd 100644
--- a/apps/files_versions/l10n/gl.js
+++ b/apps/files_versions/l10n/gl.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Non foi posíbel reverter: %s",
"Versions" : "Versións",
"Failed to revert {file} to revision {timestamp}." : "Non foi posíbel reverter {file} á revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "Non foi posíbel reverter: %s",
"No earlier versions available" : "Non hai versións anteriores dispoñíbeis",
"More versions …" : "Máis versións ..."
},
diff --git a/apps/files_versions/l10n/gl.json b/apps/files_versions/l10n/gl.json
index e75c0276f41..602f5a5401a 100644
--- a/apps/files_versions/l10n/gl.json
+++ b/apps/files_versions/l10n/gl.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Non foi posíbel reverter: %s",
"Versions" : "Versións",
"Failed to revert {file} to revision {timestamp}." : "Non foi posíbel reverter {file} á revisión {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "Non foi posíbel reverter: %s",
"No earlier versions available" : "Non hai versións anteriores dispoñíbeis",
"More versions …" : "Máis versións ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/he.js b/apps/files_versions/l10n/he.js
index e733b773329..d0147c47633 100644
--- a/apps/files_versions/l10n/he.js
+++ b/apps/files_versions/l10n/he.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "לא ניתן להחזיר: %s",
"Versions" : "גרסאות",
"Failed to revert {file} to revision {timestamp}." : "נכשל אחזור {file} לגרסה {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"],
"Restore" : "שחזור",
+ "Could not revert: %s" : "לא ניתן להחזיר: %s",
"No earlier versions available" : "אין גרסאות קודמות זמינות",
"More versions …" : "גרסאות נוספות…"
},
diff --git a/apps/files_versions/l10n/he.json b/apps/files_versions/l10n/he.json
index 0d26f145c72..a730b2a68bd 100644
--- a/apps/files_versions/l10n/he.json
+++ b/apps/files_versions/l10n/he.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "לא ניתן להחזיר: %s",
"Versions" : "גרסאות",
"Failed to revert {file} to revision {timestamp}." : "נכשל אחזור {file} לגרסה {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"],
"Restore" : "שחזור",
+ "Could not revert: %s" : "לא ניתן להחזיר: %s",
"No earlier versions available" : "אין גרסאות קודמות זמינות",
"More versions …" : "גרסאות נוספות…"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
diff --git a/apps/files_versions/l10n/hu.js b/apps/files_versions/l10n/hu.js
index 7259d077429..589474be8e0 100644
--- a/apps/files_versions/l10n/hu.js
+++ b/apps/files_versions/l10n/hu.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Nem sikerült átállni a változatra: %s",
"Versions" : "Verziók",
"Failed to revert {file} to revision {timestamp}." : "{file} fájlt nem sikerült erre visszaállítani: {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
"Restore" : "Visszaállítás",
+ "Could not revert: %s" : "Nem sikerült átállni a változatra: %s",
"No earlier versions available" : "Nincsenek elérhető korábbi verziók",
"More versions …" : "További változatok..."
},
diff --git a/apps/files_versions/l10n/hu.json b/apps/files_versions/l10n/hu.json
index 4a2f18eaf41..8e580b89b14 100644
--- a/apps/files_versions/l10n/hu.json
+++ b/apps/files_versions/l10n/hu.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Nem sikerült átállni a változatra: %s",
"Versions" : "Verziók",
"Failed to revert {file} to revision {timestamp}." : "{file} fájlt nem sikerült erre visszaállítani: {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
"Restore" : "Visszaállítás",
+ "Could not revert: %s" : "Nem sikerült átállni a változatra: %s",
"No earlier versions available" : "Nincsenek elérhető korábbi verziók",
"More versions …" : "További változatok..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/ia.js b/apps/files_versions/l10n/ia.js
index da29e9a9660..059b2b6051a 100644
--- a/apps/files_versions/l10n/ia.js
+++ b/apps/files_versions/l10n/ia.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Impossibile reverter: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Il falleva a reverter {file} a revision {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "Impossibile reverter: %s",
"No earlier versions available" : "Nulle versiones anterior disponibile",
"More versions …" : "Plus versiones …"
},
diff --git a/apps/files_versions/l10n/ia.json b/apps/files_versions/l10n/ia.json
index d2d71d5be00..8389233937e 100644
--- a/apps/files_versions/l10n/ia.json
+++ b/apps/files_versions/l10n/ia.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Impossibile reverter: %s",
"Versions" : "Versiones",
"Failed to revert {file} to revision {timestamp}." : "Il falleva a reverter {file} a revision {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
+ "Could not revert: %s" : "Impossibile reverter: %s",
"No earlier versions available" : "Nulle versiones anterior disponibile",
"More versions …" : "Plus versiones …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/is.js b/apps/files_versions/l10n/is.js
index 8369f832c65..fa8928e3ff1 100644
--- a/apps/files_versions/l10n/is.js
+++ b/apps/files_versions/l10n/is.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Gat ekki endurheimt: %s",
"Versions" : "Útgáfur",
"Failed to revert {file} to revision {timestamp}." : "Mistókst að endurheimta {file} útgáfu {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bæti","%n bæti"],
"Restore" : "Endurheimta",
+ "Could not revert: %s" : "Gat ekki endurheimt: %s",
"No earlier versions available" : "Engar eldri útgáfur í boði",
"More versions …" : "Fleiri útgáfur ..."
},
diff --git a/apps/files_versions/l10n/is.json b/apps/files_versions/l10n/is.json
index 2c26c4c7e4c..894844bdb51 100644
--- a/apps/files_versions/l10n/is.json
+++ b/apps/files_versions/l10n/is.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Gat ekki endurheimt: %s",
"Versions" : "Útgáfur",
"Failed to revert {file} to revision {timestamp}." : "Mistókst að endurheimta {file} útgáfu {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n bæti","%n bæti"],
"Restore" : "Endurheimta",
+ "Could not revert: %s" : "Gat ekki endurheimt: %s",
"No earlier versions available" : "Engar eldri útgáfur í boði",
"More versions …" : "Fleiri útgáfur ..."
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
diff --git a/apps/files_versions/l10n/it.js b/apps/files_versions/l10n/it.js
index 6420b815c4b..b1d27a2ef3d 100644
--- a/apps/files_versions/l10n/it.js
+++ b/apps/files_versions/l10n/it.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Impossibile ripristinare: %s",
"Versions" : "Versioni",
"Failed to revert {file} to revision {timestamp}." : "Ripristino di {file} alla revisione {timestamp} non riuscito.",
"_%n byte_::_%n bytes_" : ["%n byte","%n byte"],
"Restore" : "Ripristina",
- "No earlier versions available" : "Nessuna versione precedente disponibile",
- "More versions …" : "Altre versioni...",
+ "No other versions available" : "Non sono disponibili altre versioni",
"This application automatically maintains older versions of files that are changed." : "Questa applicazione mantiene automaticamente versioni più datate dei file modificati.",
"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.\n\t\tIn 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." : "Questa applicazione conserva automaticamente versioni più datate dei file che sono stati modificati. Se abilitata, una cartella nascosta delle versioni è generata in ogni cartella degli utenti ed è utilizzata per archiviare le versioni datate dei file. Un utente può tornare a una versione più datata tramite l'interfaccia web in qualsiasi momento, con il file sostituito che diventa una versione. L'applicazione gestisce automaticamente la cartella delle versioni per assicurare che l'utente non esaurisca mai la quota a causa delle versioni.\n\t\tIn aggiunta alla scadenza delle versioni, l'applicazione delle versioni si accerta che non sia utilizzato mai più del 50% dello spazio disponibile attualmente all'utente. Se le versioni archiviate eccedono questo limite, l'applicazione eliminerà prima le versioni più vecchie, fino a raggiungere questo limite. Altre informazioni sono disponibili nella documentazione di Versioni.",
+ "Could not revert: %s" : "Impossibile ripristinare: %s",
+ "No earlier versions available" : "Nessuna versione precedente disponibile",
+ "More versions …" : "Altre versioni...",
"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.\nIn 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." : "Questa applicazione conserva automaticamente le versioni più datate dei file che sono stati modificati. Se abilitata, una cartella nascosta delle versioni è generata in ogni cartella degli utenti ed è utilizzata per archiviare le versioni datate dei file. Un utente può tornare a una versione più datata tramite l'interfaccia web in qualsiasi momento, con il file sostituito che diventa una versione. L'applicazione gestisce automaticamente la cartella delle versioni per assicurare che l'utente non esaurisca mai la quota a causa delle versioni.\nIn aggiunta alla scadenza delle versioni, l'applicazione delle versioni si accerta che non sia utilizzato mai più del 50% dello spazio disponibile attualmente all'utente. Se le versioni archiviate eccedono questo limite, l'applicazione eliminerà prima le versioni più vecchie, fino a raggiungere questo limite. Altre informazioni sono disponibili nella documentazione di Versioni."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/it.json b/apps/files_versions/l10n/it.json
index d55640b282e..ecc328e4ad1 100644
--- a/apps/files_versions/l10n/it.json
+++ b/apps/files_versions/l10n/it.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "Impossibile ripristinare: %s",
"Versions" : "Versioni",
"Failed to revert {file} to revision {timestamp}." : "Ripristino di {file} alla revisione {timestamp} non riuscito.",
"_%n byte_::_%n bytes_" : ["%n byte","%n byte"],
"Restore" : "Ripristina",
- "No earlier versions available" : "Nessuna versione precedente disponibile",
- "More versions …" : "Altre versioni...",
+ "No other versions available" : "Non sono disponibili altre versioni",
"This application automatically maintains older versions of files that are changed." : "Questa applicazione mantiene automaticamente versioni più datate dei file modificati.",
"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.\n\t\tIn 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." : "Questa applicazione conserva automaticamente versioni più datate dei file che sono stati modificati. Se abilitata, una cartella nascosta delle versioni è generata in ogni cartella degli utenti ed è utilizzata per archiviare le versioni datate dei file. Un utente può tornare a una versione più datata tramite l'interfaccia web in qualsiasi momento, con il file sostituito che diventa una versione. L'applicazione gestisce automaticamente la cartella delle versioni per assicurare che l'utente non esaurisca mai la quota a causa delle versioni.\n\t\tIn aggiunta alla scadenza delle versioni, l'applicazione delle versioni si accerta che non sia utilizzato mai più del 50% dello spazio disponibile attualmente all'utente. Se le versioni archiviate eccedono questo limite, l'applicazione eliminerà prima le versioni più vecchie, fino a raggiungere questo limite. Altre informazioni sono disponibili nella documentazione di Versioni.",
+ "Could not revert: %s" : "Impossibile ripristinare: %s",
+ "No earlier versions available" : "Nessuna versione precedente disponibile",
+ "More versions …" : "Altre versioni...",
"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.\nIn 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." : "Questa applicazione conserva automaticamente le versioni più datate dei file che sono stati modificati. Se abilitata, una cartella nascosta delle versioni è generata in ogni cartella degli utenti ed è utilizzata per archiviare le versioni datate dei file. Un utente può tornare a una versione più datata tramite l'interfaccia web in qualsiasi momento, con il file sostituito che diventa una versione. L'applicazione gestisce automaticamente la cartella delle versioni per assicurare che l'utente non esaurisca mai la quota a causa delle versioni.\nIn aggiunta alla scadenza delle versioni, l'applicazione delle versioni si accerta che non sia utilizzato mai più del 50% dello spazio disponibile attualmente all'utente. Se le versioni archiviate eccedono questo limite, l'applicazione eliminerà prima le versioni più vecchie, fino a raggiungere questo limite. Altre informazioni sono disponibili nella documentazione di Versioni."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/ja.js b/apps/files_versions/l10n/ja.js
index 25f593f02d5..61b541e6ca2 100644
--- a/apps/files_versions/l10n/ja.js
+++ b/apps/files_versions/l10n/ja.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "元に戻せませんでした: %s",
"Versions" : "バージョン",
"Failed to revert {file} to revision {timestamp}." : "{file} を {timestamp} のリビジョンに戻すことができません。",
"_%n byte_::_%n bytes_" : ["%n バイト"],
"Restore" : "復元",
+ "Could not revert: %s" : "元に戻せませんでした: %s",
"No earlier versions available" : "以前のバージョンは利用できません",
"More versions …" : "他のバージョン …"
},
diff --git a/apps/files_versions/l10n/ja.json b/apps/files_versions/l10n/ja.json
index d842425be7a..b7ef888bfd1 100644
--- a/apps/files_versions/l10n/ja.json
+++ b/apps/files_versions/l10n/ja.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "元に戻せませんでした: %s",
"Versions" : "バージョン",
"Failed to revert {file} to revision {timestamp}." : "{file} を {timestamp} のリビジョンに戻すことができません。",
"_%n byte_::_%n bytes_" : ["%n バイト"],
"Restore" : "復元",
+ "Could not revert: %s" : "元に戻せませんでした: %s",
"No earlier versions available" : "以前のバージョンは利用できません",
"More versions …" : "他のバージョン …"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_versions/l10n/ka_GE.js b/apps/files_versions/l10n/ka_GE.js
index 225103af3d0..ceaf73f5035 100644
--- a/apps/files_versions/l10n/ka_GE.js
+++ b/apps/files_versions/l10n/ka_GE.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "ვერ მოხერხდა უკან დაბრუნება: %s",
"Versions" : "ვერსიები",
"Failed to revert {file} to revision {timestamp}." : "ფაილის {file} დაბრუნება რევიზიაზე {timestamp} ვერ ხერხდება.",
"_%n byte_::_%n bytes_" : ["%n ბაიტი","%n ბაიტი"],
"Restore" : "აღდგენა",
+ "Could not revert: %s" : "ვერ მოხერხდა უკან დაბრუნება: %s",
"No earlier versions available" : "წინა ვერსიები ხელმისაწვდომი არაა",
"More versions …" : "მეტი ვერსია …"
},
diff --git a/apps/files_versions/l10n/ka_GE.json b/apps/files_versions/l10n/ka_GE.json
index c7171d1f9dc..dc1e72a54c4 100644
--- a/apps/files_versions/l10n/ka_GE.json
+++ b/apps/files_versions/l10n/ka_GE.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "ვერ მოხერხდა უკან დაბრუნება: %s",
"Versions" : "ვერსიები",
"Failed to revert {file} to revision {timestamp}." : "ფაილის {file} დაბრუნება რევიზიაზე {timestamp} ვერ ხერხდება.",
"_%n byte_::_%n bytes_" : ["%n ბაიტი","%n ბაიტი"],
"Restore" : "აღდგენა",
+ "Could not revert: %s" : "ვერ მოხერხდა უკან დაბრუნება: %s",
"No earlier versions available" : "წინა ვერსიები ხელმისაწვდომი არაა",
"More versions …" : "მეტი ვერსია …"
},"pluralForm" :"nplurals=2; plural=(n!=1);"
diff --git a/apps/files_versions/l10n/ko.js b/apps/files_versions/l10n/ko.js
index 821e2b9a079..ad53569dbfa 100644
--- a/apps/files_versions/l10n/ko.js
+++ b/apps/files_versions/l10n/ko.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "되돌릴 수 없습니다: %s",
"Versions" : "버전",
"Failed to revert {file} to revision {timestamp}." : "{file}을(를) 리비전 {timestamp}으(로) 되돌리는 데 실패했습니다.",
"_%n byte_::_%n bytes_" : ["%n 바이트"],
"Restore" : "복원",
+ "Could not revert: %s" : "되돌릴 수 없습니다: %s",
"No earlier versions available" : "이전 버전을 사용할 수 없음",
"More versions …" : "더 많은 버전 …"
},
diff --git a/apps/files_versions/l10n/ko.json b/apps/files_versions/l10n/ko.json
index 072904543fa..0a96beda875 100644
--- a/apps/files_versions/l10n/ko.json
+++ b/apps/files_versions/l10n/ko.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "되돌릴 수 없습니다: %s",
"Versions" : "버전",
"Failed to revert {file} to revision {timestamp}." : "{file}을(를) 리비전 {timestamp}으(로) 되돌리는 데 실패했습니다.",
"_%n byte_::_%n bytes_" : ["%n 바이트"],
"Restore" : "복원",
+ "Could not revert: %s" : "되돌릴 수 없습니다: %s",
"No earlier versions available" : "이전 버전을 사용할 수 없음",
"More versions …" : "더 많은 버전 …"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_versions/l10n/lb.js b/apps/files_versions/l10n/lb.js
index 285a20a0817..571e6b595de 100644
--- a/apps/files_versions/l10n/lb.js
+++ b/apps/files_versions/l10n/lb.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Konnt net zrécksetzen: %s",
"Versions" : "Versiounen",
"Failed to revert {file} to revision {timestamp}." : "Konnt {file} net op d'Versioun {timestamp} zrécksetzen.",
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Restore" : "Zrécksetzen",
+ "Could not revert: %s" : "Konnt net zrécksetzen: %s",
"No earlier versions available" : "Keng méi al Versiounen disponibel",
"More versions …" : "Méi Versiounen …"
},
diff --git a/apps/files_versions/l10n/lb.json b/apps/files_versions/l10n/lb.json
index 7e1d44c899d..d5f5c468709 100644
--- a/apps/files_versions/l10n/lb.json
+++ b/apps/files_versions/l10n/lb.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Konnt net zrécksetzen: %s",
"Versions" : "Versiounen",
"Failed to revert {file} to revision {timestamp}." : "Konnt {file} net op d'Versioun {timestamp} zrécksetzen.",
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Restore" : "Zrécksetzen",
+ "Could not revert: %s" : "Konnt net zrécksetzen: %s",
"No earlier versions available" : "Keng méi al Versiounen disponibel",
"More versions …" : "Méi Versiounen …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/lt_LT.js b/apps/files_versions/l10n/lt_LT.js
index a9375d7f632..7dcaff206db 100644
--- a/apps/files_versions/l10n/lt_LT.js
+++ b/apps/files_versions/l10n/lt_LT.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Nepavyko atkurti: \"%s\"",
"Versions" : "Pakeitimai",
"Failed to revert {file} to revision {timestamp}." : "Nepavyko atkurti \"{file}\" pakeisto {timestamp} ",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"],
"Restore" : "Atkurti",
+ "Could not revert: %s" : "Nepavyko atkurti: \"%s\"",
"No earlier versions available" : "Nėra pakeitimų",
"More versions …" : "Daugiau"
},
diff --git a/apps/files_versions/l10n/lt_LT.json b/apps/files_versions/l10n/lt_LT.json
index ae0d4ef6449..e3535778c0c 100644
--- a/apps/files_versions/l10n/lt_LT.json
+++ b/apps/files_versions/l10n/lt_LT.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Nepavyko atkurti: \"%s\"",
"Versions" : "Pakeitimai",
"Failed to revert {file} to revision {timestamp}." : "Nepavyko atkurti \"{file}\" pakeisto {timestamp} ",
"_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"],
"Restore" : "Atkurti",
+ "Could not revert: %s" : "Nepavyko atkurti: \"%s\"",
"No earlier versions available" : "Nėra pakeitimų",
"More versions …" : "Daugiau"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
diff --git a/apps/files_versions/l10n/lv.js b/apps/files_versions/l10n/lv.js
index 14ee8835176..4b2c6771fff 100644
--- a/apps/files_versions/l10n/lv.js
+++ b/apps/files_versions/l10n/lv.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "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",
+ "Could not revert: %s" : "Nevarēja atgriezt — %s",
"No earlier versions available" : "Vecākas versijas nav pieejamas",
"More versions …" : "Vairāk versiju..."
},
diff --git a/apps/files_versions/l10n/lv.json b/apps/files_versions/l10n/lv.json
index 0d85899acc7..9fea8a2c21c 100644
--- a/apps/files_versions/l10n/lv.json
+++ b/apps/files_versions/l10n/lv.json
@@ -1,9 +1,9 @@
{ "translations": {
- "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",
+ "Could not revert: %s" : "Nevarēja atgriezt — %s",
"No earlier versions available" : "Vecākas versijas nav pieejamas",
"More versions …" : "Vairāk versiju..."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
diff --git a/apps/files_versions/l10n/nb.js b/apps/files_versions/l10n/nb.js
index a798ceb59f0..b523b3ddd7f 100644
--- a/apps/files_versions/l10n/nb.js
+++ b/apps/files_versions/l10n/nb.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "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",
+ "Could not revert: %s" : "Klarte ikke å tilbakeføre: %s",
"No earlier versions available" : "Ingen tidligere versjoner tilgjengelige",
"More versions …" : "Flere versjoner…"
},
diff --git a/apps/files_versions/l10n/nb.json b/apps/files_versions/l10n/nb.json
index 5cb8e8dc125..72d7b359d5f 100644
--- a/apps/files_versions/l10n/nb.json
+++ b/apps/files_versions/l10n/nb.json
@@ -1,9 +1,9 @@
{ "translations": {
- "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",
+ "Could not revert: %s" : "Klarte ikke å tilbakeføre: %s",
"No earlier versions available" : "Ingen tidligere versjoner tilgjengelige",
"More versions …" : "Flere versjoner…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/nl.js b/apps/files_versions/l10n/nl.js
index 9abfb274b9b..451f66c2345 100644
--- a/apps/files_versions/l10n/nl.js
+++ b/apps/files_versions/l10n/nl.js
@@ -1,15 +1,15 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Kon niet terugdraaien: %s",
"Versions" : "Versies",
"Failed to revert {file} to revision {timestamp}." : "Kon {file} niet terugdraaien naar revisie {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Herstellen",
- "No earlier versions available" : "Geen oudere versies beschikbaar",
- "More versions …" : "Meer versies...",
"This application automatically maintains older versions of files that are changed." : "Deze applicatie beheert automatisch oudere versies van gewijzigde bestanden.",
"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.\n\t\tIn 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." : "Deze applicatie onderhoudt automatisch oudere versies van bestanden die zijn gewijzigd. Indien ingeschakeld, wordt een map met verborgen versies geplaatst in de directory van elke gebruiker en wordt deze gebruikt om oude bestandsversies op te slaan. Een gebruiker kan via de webinterface op elk gewenst moment terugkeren naar een oudere versie, waarbij het vervangen bestand de nieuwe versie wordt. De app beheert automatisch de map om ervoor te zorgen dat het quotum niet opraakt vanwege versiebeheer.\n\t\tNaast het beheer van versies, zorgt de app er ook voor dat nooit meer dan 50% van de momenteel beschikbare vrije ruimte van de gebruiker wordt gebruikt. Als opgeslagen versies deze limiet overschrijden, verwijdert de app de oudste versies eerst totdat de limiet is bereikt. Meer informatie is beschikbaar in de documentatie van Versiebeheer.",
+ "Could not revert: %s" : "Kon niet terugdraaien: %s",
+ "No earlier versions available" : "Geen oudere versies beschikbaar",
+ "More versions …" : "Meer versies...",
"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.\nIn 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." : "Deze applicatie onderhoudt automatisch oudere versies van bestanden die zijn gewijzigd. Indien ingeschakeld, wordt een map met verborgen versies ingericht in de directory van elke gebruiker en wordt deze gebruikt om oude versies van bestanden op te slaan. Een gebruiker kan via de webinterface op elk gewenst moment terugkeren naar een oudere versie, waarbij het vervangende bestand de nieuwe versie wordt. De app beheert automatisch de map om ervoor te zorgen dat het gebruikersquotum niet opraakt door het versiebeheer.\nNaast het beheren van de vervaltermijnen van de versies, zorgt de versiebeheer-app er voor dat nooit meer dan 50% van de momenteel beschikbare vrije ruimte van de gebruiker wordt gebruikt. Als opgeslagen versies deze limiet overschrijden, verwijdert de app de oudste versies eerst totdat deze de limiet is bereikt. Meer informatie is beschikbaar in de documentatie van Versiebeheer."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/nl.json b/apps/files_versions/l10n/nl.json
index 98cd6d83d58..901c2795a7b 100644
--- a/apps/files_versions/l10n/nl.json
+++ b/apps/files_versions/l10n/nl.json
@@ -1,13 +1,13 @@
{ "translations": {
- "Could not revert: %s" : "Kon niet terugdraaien: %s",
"Versions" : "Versies",
"Failed to revert {file} to revision {timestamp}." : "Kon {file} niet terugdraaien naar revisie {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Herstellen",
- "No earlier versions available" : "Geen oudere versies beschikbaar",
- "More versions …" : "Meer versies...",
"This application automatically maintains older versions of files that are changed." : "Deze applicatie beheert automatisch oudere versies van gewijzigde bestanden.",
"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.\n\t\tIn 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." : "Deze applicatie onderhoudt automatisch oudere versies van bestanden die zijn gewijzigd. Indien ingeschakeld, wordt een map met verborgen versies geplaatst in de directory van elke gebruiker en wordt deze gebruikt om oude bestandsversies op te slaan. Een gebruiker kan via de webinterface op elk gewenst moment terugkeren naar een oudere versie, waarbij het vervangen bestand de nieuwe versie wordt. De app beheert automatisch de map om ervoor te zorgen dat het quotum niet opraakt vanwege versiebeheer.\n\t\tNaast het beheer van versies, zorgt de app er ook voor dat nooit meer dan 50% van de momenteel beschikbare vrije ruimte van de gebruiker wordt gebruikt. Als opgeslagen versies deze limiet overschrijden, verwijdert de app de oudste versies eerst totdat de limiet is bereikt. Meer informatie is beschikbaar in de documentatie van Versiebeheer.",
+ "Could not revert: %s" : "Kon niet terugdraaien: %s",
+ "No earlier versions available" : "Geen oudere versies beschikbaar",
+ "More versions …" : "Meer versies...",
"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.\nIn 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." : "Deze applicatie onderhoudt automatisch oudere versies van bestanden die zijn gewijzigd. Indien ingeschakeld, wordt een map met verborgen versies ingericht in de directory van elke gebruiker en wordt deze gebruikt om oude versies van bestanden op te slaan. Een gebruiker kan via de webinterface op elk gewenst moment terugkeren naar een oudere versie, waarbij het vervangende bestand de nieuwe versie wordt. De app beheert automatisch de map om ervoor te zorgen dat het gebruikersquotum niet opraakt door het versiebeheer.\nNaast het beheren van de vervaltermijnen van de versies, zorgt de versiebeheer-app er voor dat nooit meer dan 50% van de momenteel beschikbare vrije ruimte van de gebruiker wordt gebruikt. Als opgeslagen versies deze limiet overschrijden, verwijdert de app de oudste versies eerst totdat deze de limiet is bereikt. Meer informatie is beschikbaar in de documentatie van Versiebeheer."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/pl.js b/apps/files_versions/l10n/pl.js
index 289a30810b0..81041a8ba0b 100644
--- a/apps/files_versions/l10n/pl.js
+++ b/apps/files_versions/l10n/pl.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Nie można 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óć",
+ "Could not revert: %s" : "Nie można przywrócić: %s",
"No earlier versions available" : "Brak dostępnych wcześniejszych wersji",
"More versions …" : "Więcej wersji…"
},
diff --git a/apps/files_versions/l10n/pl.json b/apps/files_versions/l10n/pl.json
index 4690f9ca722..51ed8894866 100644
--- a/apps/files_versions/l10n/pl.json
+++ b/apps/files_versions/l10n/pl.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Nie można 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óć",
+ "Could not revert: %s" : "Nie można przywrócić: %s",
"No earlier versions available" : "Brak dostępnych wcześniejszych wersji",
"More versions …" : "Więcej wersji…"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
diff --git a/apps/files_versions/l10n/pt_BR.js b/apps/files_versions/l10n/pt_BR.js
index b870ec40553..b16684e805e 100644
--- a/apps/files_versions/l10n/pt_BR.js
+++ b/apps/files_versions/l10n/pt_BR.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Impossível reverter: %s",
"Versions" : "Versões",
"Failed to revert {file} to revision {timestamp}." : "Falha ao reverter {file} para a revisão {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
- "No earlier versions available" : "Não há versões mais novas disponíveis",
- "More versions …" : "Mais versões...",
+ "No other versions available" : "Sem outras versões disponíveis",
"This application automatically maintains older versions of files that are changed." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que são alterados.",
"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.\n\t\tIn 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." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos alterados. Quando ativado, uma pasta oculta de versões é criada no diretório de todos os usuários e é usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface da web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que o usuário não fique sem cota por causa disso.\n\t\tAlém do prazo de validade das versões, o aplicativo garante que nunca use mais de 50% do espaço livre disponível no momento pelo usuário. Se as versões armazenadas excederem esse limite, o aplicativo excluirá as versões mais antigas primeiro até atingir esse limite. Mais informações estão disponíveis na documentação do Versions.",
+ "Could not revert: %s" : "Impossível reverter: %s",
+ "No earlier versions available" : "Não há versões mais novas disponíveis",
+ "More versions …" : "Mais versões...",
"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.\nIn 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." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos alterados. Quando ativado, uma pasta oculta de versões é criada no diretório de todos os usuários e é usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface da web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que o usuário não fique sem cota por causa disso.\nAlém do prazo de validade das versões, o aplicativo garante que nunca use mais de 50% do espaço livre disponível no momento pelo usuário. Se as versões armazenadas excederem esse limite, o aplicativo excluirá as versões mais antigas primeiro até atingir esse limite. Mais informações estão disponíveis na documentação do Versions."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_versions/l10n/pt_BR.json b/apps/files_versions/l10n/pt_BR.json
index c06ff23d6f4..5017cc20670 100644
--- a/apps/files_versions/l10n/pt_BR.json
+++ b/apps/files_versions/l10n/pt_BR.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "Impossível reverter: %s",
"Versions" : "Versões",
"Failed to revert {file} to revision {timestamp}." : "Falha ao reverter {file} para a revisão {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Restaurar",
- "No earlier versions available" : "Não há versões mais novas disponíveis",
- "More versions …" : "Mais versões...",
+ "No other versions available" : "Sem outras versões disponíveis",
"This application automatically maintains older versions of files that are changed." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que são alterados.",
"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.\n\t\tIn 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." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos alterados. Quando ativado, uma pasta oculta de versões é criada no diretório de todos os usuários e é usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface da web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que o usuário não fique sem cota por causa disso.\n\t\tAlém do prazo de validade das versões, o aplicativo garante que nunca use mais de 50% do espaço livre disponível no momento pelo usuário. Se as versões armazenadas excederem esse limite, o aplicativo excluirá as versões mais antigas primeiro até atingir esse limite. Mais informações estão disponíveis na documentação do Versions.",
+ "Could not revert: %s" : "Impossível reverter: %s",
+ "No earlier versions available" : "Não há versões mais novas disponíveis",
+ "More versions …" : "Mais versões...",
"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.\nIn 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." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos alterados. Quando ativado, uma pasta oculta de versões é criada no diretório de todos os usuários e é usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface da web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que o usuário não fique sem cota por causa disso.\nAlém do prazo de validade das versões, o aplicativo garante que nunca use mais de 50% do espaço livre disponível no momento pelo usuário. Se as versões armazenadas excederem esse limite, o aplicativo excluirá as versões mais antigas primeiro até atingir esse limite. Mais informações estão disponíveis na documentação do Versions."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/ro.js b/apps/files_versions/l10n/ro.js
index e45b5ae4f99..4a713521e71 100644
--- a/apps/files_versions/l10n/ro.js
+++ b/apps/files_versions/l10n/ro.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Nu s-a putut reveni: %s",
"Versions" : "Versiuni",
"Failed to revert {file} to revision {timestamp}." : "S-a eșuat restaurarea fișierului {file} la revizia {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n byți","%n byți"],
"Restore" : "Restaurare",
+ "Could not revert: %s" : "Nu s-a putut reveni: %s",
"More versions …" : "Mai multe versiuni..."
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/files_versions/l10n/ro.json b/apps/files_versions/l10n/ro.json
index db1664b355e..fd3d8bedc63 100644
--- a/apps/files_versions/l10n/ro.json
+++ b/apps/files_versions/l10n/ro.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Nu s-a putut reveni: %s",
"Versions" : "Versiuni",
"Failed to revert {file} to revision {timestamp}." : "S-a eșuat restaurarea fișierului {file} la revizia {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n byți","%n byți"],
"Restore" : "Restaurare",
+ "Could not revert: %s" : "Nu s-a putut reveni: %s",
"More versions …" : "Mai multe versiuni..."
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/ru.js b/apps/files_versions/l10n/ru.js
index 82e8e00aede..a8d08e30cb7 100644
--- a/apps/files_versions/l10n/ru.js
+++ b/apps/files_versions/l10n/ru.js
@@ -1,15 +1,15 @@
OC.L10N.register(
"files_versions",
{
- "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 earlier versions available" : "Нет более ранних версий…",
- "More versions …" : "Ещё версии…",
"This application automatically maintains older versions of files that are changed." : "Приложение служит для обработки старых версий изменённых файлов.",
"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.\n\t\tIn 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." : "Это приложение предназначено для автоматического управления предыдущими версиями изменённых файлов. При включении этого приложения в каталогах пользователей создаются скрытые папки, предназначенные для хранения предыдущих версий изменённых файлов. Выбор нужной предыдущей версии и возврат к ней выполняется через веб-интерфейс, при этом актуальная версия файла будет заменена выбранной версией. Приложение также автоматически управляет глубиной хранения версий файлов, чтобы не превышать выделенные для пользователя квоты.\n\t\tПомимо управления сроком хранения предыдущих версий, приложение следит за тем, что бы общий размер сохранённых версий файлов не превышал 50% выделенного пользователю дискового пространства. При превышении такого лимита будет запущен механизм удаления самых старых версий файлов. Удаление будет производиться до тех пор, пока общий размер всех сохранённых версий файлов вновь не станет менее 50% от квоты использования дискового пространства. Дополнительная информация приведена в руководстве к приложению «Версии».",
+ "Could not revert: %s" : "Невозможно откатить: %s",
+ "No earlier versions available" : "Нет более ранних версий…",
+ "More versions …" : "Ещё версии…",
"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.\nIn 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." : "Это приложение предназначено для автоматического управления предыдущими версиями изменённых файлов. При включении этого приложения в каталогах пользователей создаются скрытые папки, предназначенные для хранения предыдущих версий изменённых файлов. Выбор нужной предыдущей версии и возврат к ней выполняется через веб-интерфейс, при этом актуальная версия файла будет заменена выбранной версией. Приложение также автоматически управляет глубиной хранения версий файлов, чтобы не превышать выделенные для пользователя квоты.\nПомимо управления сроком хранения предыдущих версий, приложение следит за тем, что бы общий размер сохранённых версий файлов не превышал 50% выделенного пользователю дискового пространства. При превышении такого лимита будет запущен механизм удаления самых старых версий файлов. Удаление будет производиться до тех пор, пока общий размер всех сохранённых версий файлов вновь не станет менее 50% от квоты использования дискового пространства. Дополнительная информация приведена в руководстве к приложению «Версии»."
},
"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_versions/l10n/ru.json b/apps/files_versions/l10n/ru.json
index 69586c9e769..b6d093283f4 100644
--- a/apps/files_versions/l10n/ru.json
+++ b/apps/files_versions/l10n/ru.json
@@ -1,13 +1,13 @@
{ "translations": {
- "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 earlier versions available" : "Нет более ранних версий…",
- "More versions …" : "Ещё версии…",
"This application automatically maintains older versions of files that are changed." : "Приложение служит для обработки старых версий изменённых файлов.",
"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.\n\t\tIn 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." : "Это приложение предназначено для автоматического управления предыдущими версиями изменённых файлов. При включении этого приложения в каталогах пользователей создаются скрытые папки, предназначенные для хранения предыдущих версий изменённых файлов. Выбор нужной предыдущей версии и возврат к ней выполняется через веб-интерфейс, при этом актуальная версия файла будет заменена выбранной версией. Приложение также автоматически управляет глубиной хранения версий файлов, чтобы не превышать выделенные для пользователя квоты.\n\t\tПомимо управления сроком хранения предыдущих версий, приложение следит за тем, что бы общий размер сохранённых версий файлов не превышал 50% выделенного пользователю дискового пространства. При превышении такого лимита будет запущен механизм удаления самых старых версий файлов. Удаление будет производиться до тех пор, пока общий размер всех сохранённых версий файлов вновь не станет менее 50% от квоты использования дискового пространства. Дополнительная информация приведена в руководстве к приложению «Версии».",
+ "Could not revert: %s" : "Невозможно откатить: %s",
+ "No earlier versions available" : "Нет более ранних версий…",
+ "More versions …" : "Ещё версии…",
"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.\nIn 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." : "Это приложение предназначено для автоматического управления предыдущими версиями изменённых файлов. При включении этого приложения в каталогах пользователей создаются скрытые папки, предназначенные для хранения предыдущих версий изменённых файлов. Выбор нужной предыдущей версии и возврат к ней выполняется через веб-интерфейс, при этом актуальная версия файла будет заменена выбранной версией. Приложение также автоматически управляет глубиной хранения версий файлов, чтобы не превышать выделенные для пользователя квоты.\nПомимо управления сроком хранения предыдущих версий, приложение следит за тем, что бы общий размер сохранённых версий файлов не превышал 50% выделенного пользователю дискового пространства. При превышении такого лимита будет запущен механизм удаления самых старых версий файлов. Удаление будет производиться до тех пор, пока общий размер всех сохранённых версий файлов вновь не станет менее 50% от квоты использования дискового пространства. Дополнительная информация приведена в руководстве к приложению «Версии»."
},"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_versions/l10n/sk.js b/apps/files_versions/l10n/sk.js
index d845085045d..14061f2afcc 100644
--- a/apps/files_versions/l10n/sk.js
+++ b/apps/files_versions/l10n/sk.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "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","%n bajtov"],
"Restore" : "Obnoviť",
+ "Could not revert: %s" : "Nemožno obnoviť: %s",
"No earlier versions available" : "Nie sú dostupné predchádzajúce verzie",
"More versions …" : "Viac verzií ..."
},
diff --git a/apps/files_versions/l10n/sk.json b/apps/files_versions/l10n/sk.json
index eeecbdfe95c..0404ce99693 100644
--- a/apps/files_versions/l10n/sk.json
+++ b/apps/files_versions/l10n/sk.json
@@ -1,9 +1,9 @@
{ "translations": {
- "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","%n bajtov"],
"Restore" : "Obnoviť",
+ "Could not revert: %s" : "Nemožno obnoviť: %s",
"No earlier versions available" : "Nie sú dostupné predchádzajúce verzie",
"More versions …" : "Viac verzií ..."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
diff --git a/apps/files_versions/l10n/sl.js b/apps/files_versions/l10n/sl.js
index 2acd2b002c8..83f533ec494 100644
--- a/apps/files_versions/l10n/sl.js
+++ b/apps/files_versions/l10n/sl.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Ni mogoče povrniti: %s",
"Versions" : "Različice",
"Failed to revert {file} to revision {timestamp}." : "Povrnitev datoteke {file} na različico {timestamp} je spodletelo.",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajta","%n bajti","%n bajtov"],
"Restore" : "Obnovi",
+ "Could not revert: %s" : "Ni mogoče povrniti: %s",
"No earlier versions available" : "Ni starejših različic tega dokumenta.",
"More versions …" : "Več različic ..."
},
diff --git a/apps/files_versions/l10n/sl.json b/apps/files_versions/l10n/sl.json
index b2323490266..edd5937e539 100644
--- a/apps/files_versions/l10n/sl.json
+++ b/apps/files_versions/l10n/sl.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Ni mogoče povrniti: %s",
"Versions" : "Različice",
"Failed to revert {file} to revision {timestamp}." : "Povrnitev datoteke {file} na različico {timestamp} je spodletelo.",
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajta","%n bajti","%n bajtov"],
"Restore" : "Obnovi",
+ "Could not revert: %s" : "Ni mogoče povrniti: %s",
"No earlier versions available" : "Ni starejših različic tega dokumenta.",
"More versions …" : "Več 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 36a1b19be23..2dcb0416ef4 100644
--- a/apps/files_versions/l10n/sq.js
+++ b/apps/files_versions/l10n/sq.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "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",
+ "Could not revert: %s" : "S’u rikthye dot: %s",
"No earlier versions available" : "Nuk ka versione të tjera të gatshme",
"More versions …" : "Më shumë versione ..."
},
diff --git a/apps/files_versions/l10n/sq.json b/apps/files_versions/l10n/sq.json
index 414421a0c23..c2b3f5b551b 100644
--- a/apps/files_versions/l10n/sq.json
+++ b/apps/files_versions/l10n/sq.json
@@ -1,9 +1,9 @@
{ "translations": {
- "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",
+ "Could not revert: %s" : "S’u rikthye dot: %s",
"No earlier versions available" : "Nuk ka versione të tjera të gatshme",
"More versions …" : "Më shumë versione ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/sr.js b/apps/files_versions/l10n/sr.js
index ad19725755c..f1732bb2eaf 100644
--- a/apps/files_versions/l10n/sr.js
+++ b/apps/files_versions/l10n/sr.js
@@ -1,15 +1,15 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Не могу да вратим: %s",
"Versions" : "Верзије",
"Failed to revert {file} to revision {timestamp}." : "Не могу да вратим {file} на ревизију {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајтова"],
"Restore" : "Врати",
- "No earlier versions available" : "Нема старијих верзија",
- "More versions …" : "Још верзија …",
"This application automatically maintains older versions of files that are changed." : "Ова апликација аутоматски одржава старије верзије фајлова који су се изменили.",
"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.\n\t\tIn 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." : "Ова апликација аутоматски чува старије верзије фајлова који су се изменили. Када се укључи, у свакој корисничкој фасцикли се додаје још једна скривена фасцикла у коју се смештају старије верзије фајлова. Корисник се у сваком тренутку може вратити на старију верзију фајлова кроз веб интерфејс, с тим да замењени фајл постаје исто једна верзија. Апликација аутоматски управља фасциклама са верзијама да би се осигурала да корисник не дође до квоте због чувања верзија.\n\t\tУз истицање верзија, апликација верзионисања се стара да се никад не користи више од 50% корисничког слободног простора. Уколико ускладиштена верзија прелази ову вредност, апликација ће кренути да брише верзије почевши од најстарије све док се не падне испод границе од 50%. Још информација је доступно у документацији апликације за Верзионисање.",
+ "Could not revert: %s" : "Не могу да вратим: %s",
+ "No earlier versions available" : "Нема старијих верзија",
+ "More versions …" : "Још верзија …",
"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.\nIn 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." : "Ова апликација аутоматски чува старије верзије фајлова који су се изменили. Када се укључи, у свакој корисничкој фасцикли се додаје још једна скривена фасцикла у коју се смештају старије верзије фајлова. Корисник се у сваком тренутку може вратити на старију верзију фајлова кроз веб интерфејс, с тим да замењени фајл постаје исто једна верзија. Апликација аутоматски управља фасциклама са верзијама да би се осигурала да корисник не дође до квоте због чувања верзија.\nУз истицање верзија, апликација верзионисања се стара да се никад не користи више од 50% корисничког слободног простора. Уколико ускладиштена верзија прелази ову вредност, апликација ће кренути да брише верзије почевши од најстарије све док се не падне испод границе од 50%. Још информација је доступно у документацији апликације за Верзионисање."
},
"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/files_versions/l10n/sr.json b/apps/files_versions/l10n/sr.json
index a8181875213..215c82b7d30 100644
--- a/apps/files_versions/l10n/sr.json
+++ b/apps/files_versions/l10n/sr.json
@@ -1,13 +1,13 @@
{ "translations": {
- "Could not revert: %s" : "Не могу да вратим: %s",
"Versions" : "Верзије",
"Failed to revert {file} to revision {timestamp}." : "Не могу да вратим {file} на ревизију {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајта","%n бајтова"],
"Restore" : "Врати",
- "No earlier versions available" : "Нема старијих верзија",
- "More versions …" : "Још верзија …",
"This application automatically maintains older versions of files that are changed." : "Ова апликација аутоматски одржава старије верзије фајлова који су се изменили.",
"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.\n\t\tIn 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." : "Ова апликација аутоматски чува старије верзије фајлова који су се изменили. Када се укључи, у свакој корисничкој фасцикли се додаје још једна скривена фасцикла у коју се смештају старије верзије фајлова. Корисник се у сваком тренутку може вратити на старију верзију фајлова кроз веб интерфејс, с тим да замењени фајл постаје исто једна верзија. Апликација аутоматски управља фасциклама са верзијама да би се осигурала да корисник не дође до квоте због чувања верзија.\n\t\tУз истицање верзија, апликација верзионисања се стара да се никад не користи више од 50% корисничког слободног простора. Уколико ускладиштена верзија прелази ову вредност, апликација ће кренути да брише верзије почевши од најстарије све док се не падне испод границе од 50%. Још информација је доступно у документацији апликације за Верзионисање.",
+ "Could not revert: %s" : "Не могу да вратим: %s",
+ "No earlier versions available" : "Нема старијих верзија",
+ "More versions …" : "Још верзија …",
"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.\nIn 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." : "Ова апликација аутоматски чува старије верзије фајлова који су се изменили. Када се укључи, у свакој корисничкој фасцикли се додаје још једна скривена фасцикла у коју се смештају старије верзије фајлова. Корисник се у сваком тренутку може вратити на старију верзију фајлова кроз веб интерфејс, с тим да замењени фајл постаје исто једна верзија. Апликација аутоматски управља фасциклама са верзијама да би се осигурала да корисник не дође до квоте због чувања верзија.\nУз истицање верзија, апликација верзионисања се стара да се никад не користи више од 50% корисничког слободног простора. Уколико ускладиштена верзија прелази ову вредност, апликација ће кренути да брише верзије почевши од најстарије све док се не падне испод границе од 50%. Још информација је доступно у документацији апликације за Верзионисање."
},"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/files_versions/l10n/sv.js b/apps/files_versions/l10n/sv.js
index 88f004962b5..45ded43c712 100644
--- a/apps/files_versions/l10n/sv.js
+++ b/apps/files_versions/l10n/sv.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Kunde inte återställa: %s",
"Versions" : "Versioner",
"Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Återskapa",
+ "Could not revert: %s" : "Kunde inte återställa: %s",
"No earlier versions available" : "Inga tidigare versioner tillgängliga",
"More versions …" : "Fler versioner ..."
},
diff --git a/apps/files_versions/l10n/sv.json b/apps/files_versions/l10n/sv.json
index 66397530c80..192c4bbaad8 100644
--- a/apps/files_versions/l10n/sv.json
+++ b/apps/files_versions/l10n/sv.json
@@ -1,9 +1,9 @@
{ "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 {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Restore" : "Återskapa",
+ "Could not revert: %s" : "Kunde inte återställa: %s",
"No earlier versions available" : "Inga tidigare versioner tillgängliga",
"More versions …" : "Fler versioner ..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_versions/l10n/tr.js b/apps/files_versions/l10n/tr.js
index 5027d9bff65..bbb9f8a5c7c 100644
--- a/apps/files_versions/l10n/tr.js
+++ b/apps/files_versions/l10n/tr.js
@@ -1,15 +1,16 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Geri alınamadı: %s",
"Versions" : "Sürümler",
"Failed to revert {file} to revision {timestamp}." : "{file} dosyası {timestamp} sürümüne geri alınamadı.",
"_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"],
"Restore" : "Geri yükle",
- "No earlier versions available" : "Kullanılabilecek daha önceki bir sürüm yok",
- "More versions …" : "Diğer sürümler ...",
+ "No other versions available" : "Başka bir sürüm yok",
"This application automatically maintains older versions of files that are changed." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar.",
"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.\n\t\tIn 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." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar. etkinleştirildiğinde, dosya sürümlerini saklamak için her kullanıcının klasörlerinde gizli bir versions klasörü oluşturulur. Kullanıcılar web arayüzünü kullanarak istedikleri zaman dosyalarının daha önceki sürümlerine geri dönebilirler. Uygulama versions klasörünü otomatik olarak düzenler ve önceki dosya sürümleri nedeniyle kullanıcının kotasının dolmasını engeller.\n\t\tSürümler uygulaması dosya sürümlerini belirli bir süreyle saklarken, kullanıcı depolama alanının en çok %50 oranındaki bölümünü kullanır. Depolanan sürüm dosyalarının boyutu bu sınırın üzerine çıkarsa, sınır değerine geri dönülene kadar en eski sürüm dosyaları silinir. Ayrıntılı bilgi almak için Sürümler uygulamasının belgelerine bakabilirsiniz.",
+ "Could not revert: %s" : "Geri alınamadı: %s",
+ "No earlier versions available" : "Kullanılabilecek daha önceki bir sürüm yok",
+ "More versions …" : "Diğer sürümler ...",
"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.\nIn 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." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar. etkinleştirildiğinde, dosya sürümlerini saklamak için her kullanıcının klasörlerinde gizli bir versions klasörü oluşturulur. Kullanıcılar web arayüzünü kullanarak istedikleri zaman dosyalarının daha önceki sürümlerine geri dönebilirler. Uygulama versions klasörünü otomatik olarak düzenler ve önceki dosya sürümleri nedeniyle kullanıcının kotasının dolmasını engeller.\nSürümler uygulaması dosya sürümlerini belirli bir süreyle saklarken, kullanıcı depolama alanının en çok %50 oranındaki bölümünü kullanır. Depolanan sürüm dosyalarının boyutu bu sınırın üzerine çıkarsa, sınır değerine geri dönülene kadar en eski sürüm dosyaları silinir. Ayrıntılı bilgi almak için Sürümler uygulamasının belgelerine bakabilirsiniz."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/files_versions/l10n/tr.json b/apps/files_versions/l10n/tr.json
index b074b12d4fc..1a6d3787d57 100644
--- a/apps/files_versions/l10n/tr.json
+++ b/apps/files_versions/l10n/tr.json
@@ -1,13 +1,14 @@
{ "translations": {
- "Could not revert: %s" : "Geri alınamadı: %s",
"Versions" : "Sürümler",
"Failed to revert {file} to revision {timestamp}." : "{file} dosyası {timestamp} sürümüne geri alınamadı.",
"_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"],
"Restore" : "Geri yükle",
- "No earlier versions available" : "Kullanılabilecek daha önceki bir sürüm yok",
- "More versions …" : "Diğer sürümler ...",
+ "No other versions available" : "Başka bir sürüm yok",
"This application automatically maintains older versions of files that are changed." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar.",
"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.\n\t\tIn 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." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar. etkinleştirildiğinde, dosya sürümlerini saklamak için her kullanıcının klasörlerinde gizli bir versions klasörü oluşturulur. Kullanıcılar web arayüzünü kullanarak istedikleri zaman dosyalarının daha önceki sürümlerine geri dönebilirler. Uygulama versions klasörünü otomatik olarak düzenler ve önceki dosya sürümleri nedeniyle kullanıcının kotasının dolmasını engeller.\n\t\tSürümler uygulaması dosya sürümlerini belirli bir süreyle saklarken, kullanıcı depolama alanının en çok %50 oranındaki bölümünü kullanır. Depolanan sürüm dosyalarının boyutu bu sınırın üzerine çıkarsa, sınır değerine geri dönülene kadar en eski sürüm dosyaları silinir. Ayrıntılı bilgi almak için Sürümler uygulamasının belgelerine bakabilirsiniz.",
+ "Could not revert: %s" : "Geri alınamadı: %s",
+ "No earlier versions available" : "Kullanılabilecek daha önceki bir sürüm yok",
+ "More versions …" : "Diğer sürümler ...",
"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.\nIn 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." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar. etkinleştirildiğinde, dosya sürümlerini saklamak için her kullanıcının klasörlerinde gizli bir versions klasörü oluşturulur. Kullanıcılar web arayüzünü kullanarak istedikleri zaman dosyalarının daha önceki sürümlerine geri dönebilirler. Uygulama versions klasörünü otomatik olarak düzenler ve önceki dosya sürümleri nedeniyle kullanıcının kotasının dolmasını engeller.\nSürümler uygulaması dosya sürümlerini belirli bir süreyle saklarken, kullanıcı depolama alanının en çok %50 oranındaki bölümünü kullanır. Depolanan sürüm dosyalarının boyutu bu sınırın üzerine çıkarsa, sınır değerine geri dönülene kadar en eski sürüm dosyaları silinir. Ayrıntılı bilgi almak için Sürümler uygulamasının belgelerine bakabilirsiniz."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/uk.js b/apps/files_versions/l10n/uk.js
index 8563f94693c..daa616a25f6 100644
--- a/apps/files_versions/l10n/uk.js
+++ b/apps/files_versions/l10n/uk.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "Не вдалося відновити: %s",
"Versions" : "Версії",
"Failed to revert {file} to revision {timestamp}." : "Не вдалося повернути {file} до ревізії {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байта","%n байта"],
"Restore" : "Відновити",
+ "Could not revert: %s" : "Не вдалося відновити: %s",
"No earlier versions available" : "Попередні версії недоступні",
"More versions …" : "Більше версій …"
},
diff --git a/apps/files_versions/l10n/uk.json b/apps/files_versions/l10n/uk.json
index 6d7aab4e8a8..38ab9705dc0 100644
--- a/apps/files_versions/l10n/uk.json
+++ b/apps/files_versions/l10n/uk.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "Не вдалося відновити: %s",
"Versions" : "Версії",
"Failed to revert {file} to revision {timestamp}." : "Не вдалося повернути {file} до ревізії {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байта","%n байта"],
"Restore" : "Відновити",
+ "Could not revert: %s" : "Не вдалося відновити: %s",
"No earlier versions available" : "Попередні версії недоступні",
"More versions …" : "Більше версій …"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
diff --git a/apps/files_versions/l10n/zh_CN.js b/apps/files_versions/l10n/zh_CN.js
index a06eee417ca..206a189b2ac 100644
--- a/apps/files_versions/l10n/zh_CN.js
+++ b/apps/files_versions/l10n/zh_CN.js
@@ -1,13 +1,13 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "无法恢复:%s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "无法恢复 {file} 到 {timestamp} 的版本。",
"_%n byte_::_%n bytes_" : ["%n 比特"],
"Restore" : "恢复",
+ "This application automatically maintains older versions of files that are changed." : "此应用程序自动维护更改的旧版本文件。",
+ "Could not revert: %s" : "无法恢复:%s",
"No earlier versions available" : "无可用的更早的版本",
- "More versions …" : "更多版本…",
- "This application automatically maintains older versions of files that are changed." : "此应用程序自动维护更改的旧版本文件。"
+ "More versions …" : "更多版本…"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_versions/l10n/zh_CN.json b/apps/files_versions/l10n/zh_CN.json
index e36c70f03d9..83aea9590a5 100644
--- a/apps/files_versions/l10n/zh_CN.json
+++ b/apps/files_versions/l10n/zh_CN.json
@@ -1,11 +1,11 @@
{ "translations": {
- "Could not revert: %s" : "无法恢复:%s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "无法恢复 {file} 到 {timestamp} 的版本。",
"_%n byte_::_%n bytes_" : ["%n 比特"],
"Restore" : "恢复",
+ "This application automatically maintains older versions of files that are changed." : "此应用程序自动维护更改的旧版本文件。",
+ "Could not revert: %s" : "无法恢复:%s",
"No earlier versions available" : "无可用的更早的版本",
- "More versions …" : "更多版本…",
- "This application automatically maintains older versions of files that are changed." : "此应用程序自动维护更改的旧版本文件。"
+ "More versions …" : "更多版本…"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_versions/l10n/zh_TW.js b/apps/files_versions/l10n/zh_TW.js
index edc15590676..504d853b526 100644
--- a/apps/files_versions/l10n/zh_TW.js
+++ b/apps/files_versions/l10n/zh_TW.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"files_versions",
{
- "Could not revert: %s" : "無法還原:%s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "無法還原檔案 {file} 至版本 {timestamp}",
"_%n byte_::_%n bytes_" : ["%n bytes"],
"Restore" : "復原",
+ "Could not revert: %s" : "無法還原:%s",
"No earlier versions available" : "沒有更早的版本了",
"More versions …" : "更多版本…"
},
diff --git a/apps/files_versions/l10n/zh_TW.json b/apps/files_versions/l10n/zh_TW.json
index f3d543c65e5..5a689afd96e 100644
--- a/apps/files_versions/l10n/zh_TW.json
+++ b/apps/files_versions/l10n/zh_TW.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Could not revert: %s" : "無法還原:%s",
"Versions" : "版本",
"Failed to revert {file} to revision {timestamp}." : "無法還原檔案 {file} 至版本 {timestamp}",
"_%n byte_::_%n bytes_" : ["%n bytes"],
"Restore" : "復原",
+ "Could not revert: %s" : "無法還原:%s",
"No earlier versions available" : "沒有更早的版本了",
"More versions …" : "更多版本…"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_versions/tests/js/versioncollectionSpec.js b/apps/files_versions/tests/js/versioncollectionSpec.js
index 87065fa1d36..305685b71df 100644
--- a/apps/files_versions/tests/js/versioncollectionSpec.js
+++ b/apps/files_versions/tests/js/versioncollectionSpec.js
@@ -14,148 +14,21 @@ describe('OCA.Versions.VersionCollection', function() {
beforeEach(function() {
fileInfoModel = new OCA.Files.FileInfoModel({
path: '/subdir',
- name: 'some file.txt'
+ name: 'some file.txt',
+ id: 10,
});
collection = new VersionCollection();
collection.setFileInfo(fileInfoModel);
+ collection.setCurrentUser('user');
});
- it('fetches the next page', function() {
- collection.fetchNext();
+ it('fetches the versions', function() {
+ collection.fetch();
expect(fakeServer.requests.length).toEqual(1);
expect(fakeServer.requests[0].url).toEqual(
- OC.generateUrl('apps/files_versions/ajax/getVersions.php') +
- '?source=%2Fsubdir%2Fsome%20file.txt&start=0'
+ OC.linkToRemoteBase('dav') + '/versions/user/versions/10'
);
- fakeServer.requests[0].respond(
- 200,
- { 'Content-Type': 'application/json' },
- JSON.stringify({
- status: 'success',
- data: {
- endReached: false,
- versions: [{
- version: 10000000,
- size: 123,
- name: 'some file.txt',
- fullPath: '/subdir/some file.txt'
- },{
- version: 15000000,
- size: 150,
- name: 'some file.txt',
- path: '/subdir/some file.txt'
- }]
- }
- })
- );
-
- expect(collection.length).toEqual(2);
- expect(collection.hasMoreResults()).toEqual(true);
-
- collection.fetchNext();
-
- expect(fakeServer.requests.length).toEqual(2);
- expect(fakeServer.requests[1].url).toEqual(
- OC.generateUrl('apps/files_versions/ajax/getVersions.php') +
- '?source=%2Fsubdir%2Fsome%20file.txt&start=2'
- );
- fakeServer.requests[1].respond(
- 200,
- { 'Content-Type': 'application/json' },
- JSON.stringify({
- status: 'success',
- data: {
- endReached: true,
- versions: [{
- version: 18000000,
- size: 123,
- name: 'some file.txt',
- path: '/subdir/some file.txt'
- }]
- }
- })
- );
-
- expect(collection.length).toEqual(3);
- expect(collection.hasMoreResults()).toEqual(false);
-
- collection.fetchNext();
-
- // no further requests
- expect(fakeServer.requests.length).toEqual(2);
- });
- it('properly parses the results', function() {
- collection.fetchNext();
-
- expect(fakeServer.requests.length).toEqual(1);
- expect(fakeServer.requests[0].url).toEqual(
- OC.generateUrl('apps/files_versions/ajax/getVersions.php') +
- '?source=%2Fsubdir%2Fsome%20file.txt&start=0'
- );
- fakeServer.requests[0].respond(
- 200,
- { 'Content-Type': 'application/json' },
- JSON.stringify({
- status: 'success',
- data: {
- endReached: false,
- versions: [{
- version: 10000000,
- size: 123,
- name: 'some file.txt',
- path: '/subdir/some file.txt'
- },{
- version: 15000000,
- size: 150,
- name: 'some file.txt',
- path: '/subdir/some file.txt'
- }]
- }
- })
- );
-
- expect(collection.length).toEqual(2);
-
- var model = collection.at(0);
- expect(model.get('id')).toEqual(10000000);
- expect(model.get('timestamp')).toEqual(10000000);
- expect(model.get('name')).toEqual('some file.txt');
- expect(model.get('fullPath')).toEqual('/subdir/some file.txt');
- expect(model.get('size')).toEqual(123);
-
- model = collection.at(1);
- expect(model.get('id')).toEqual(15000000);
- expect(model.get('timestamp')).toEqual(15000000);
- expect(model.get('name')).toEqual('some file.txt');
- expect(model.get('fullPath')).toEqual('/subdir/some file.txt');
- expect(model.get('size')).toEqual(150);
- });
- it('resets page counted when setting a new file info model', function() {
- collection.fetchNext();
-
- expect(fakeServer.requests.length).toEqual(1);
- fakeServer.requests[0].respond(
- 200,
- { 'Content-Type': 'application/json' },
- JSON.stringify({
- status: 'success',
- data: {
- endReached: true,
- versions: [{
- version: 18000000,
- size: 123,
- name: 'some file.txt',
- path: '/subdir/some file.txt'
- }]
- }
- })
- );
-
- expect(collection.hasMoreResults()).toEqual(false);
-
- collection.setFileInfo(fileInfoModel);
-
- expect(collection.hasMoreResults()).toEqual(true);
+ fakeServer.requests[0].respond(200);
});
});
diff --git a/apps/files_versions/tests/js/versionmodelSpec.js b/apps/files_versions/tests/js/versionmodelSpec.js
index 0f1c06581d5..ae8801b1f5c 100644
--- a/apps/files_versions/tests/js/versionmodelSpec.js
+++ b/apps/files_versions/tests/js/versionmodelSpec.js
@@ -10,14 +10,23 @@
describe('OCA.Versions.VersionModel', function() {
var VersionModel = OCA.Versions.VersionModel;
var model;
+ var uid = OC.currentUser = 'user';
beforeEach(function() {
model = new VersionModel({
id: 10000000,
+ fileId: 10,
timestamp: 10000000,
fullPath: '/subdir/some file.txt',
name: 'some file.txt',
- size: 150
+ size: 150,
+ user: 'user',
+ client: new OC.Files.Client({
+ host: 'localhost',
+ port: 80,
+ root: '/remote.php/dav/versions/user',
+ useHTTPS: OC.getProtocol() === 'https'
+ })
});
});
@@ -32,8 +41,8 @@ describe('OCA.Versions.VersionModel', function() {
});
it('returns the download url', function() {
expect(model.getDownloadUrl())
- .toEqual(OC.generateUrl('/apps/files_versions/download.php') +
- '?file=%2Fsubdir%2Fsome%20file.txt&revision=10000000'
+ .toEqual(OC.linkToRemoteBase('dav') + '/versions/' + uid +
+ '/versions/10/10000000'
);
});
describe('reverting', function() {
@@ -49,47 +58,51 @@ describe('OCA.Versions.VersionModel', function() {
model.on('revert', revertEventStub);
model.on('error', errorStub);
});
- it('tells the server to revert when calling the revert method', function() {
- model.revert({
+ it('tells the server to revert when calling the revert method', function(done) {
+ var promise = model.revert({
success: successStub
});
expect(fakeServer.requests.length).toEqual(1);
- expect(fakeServer.requests[0].url)
+ var request = fakeServer.requests[0];
+ expect(request.url)
.toEqual(
- OC.generateUrl('/apps/files_versions/ajax/rollbackVersion.php') +
- '?file=%2Fsubdir%2Fsome+file.txt&revision=10000000'
+ OC.linkToRemoteBase('dav') + '/versions/user/versions/10/10000000'
);
+ expect(request.requestHeaders.Destination).toEqual(OC.getRootPath() + '/remote.php/dav/versions/user/restore/target');
+ request.respond(201);
- fakeServer.requests[0].respond(
- 200,
- { 'Content-Type': 'application/json' },
- JSON.stringify({
- status: 'success',
- })
- );
+ promise.then(function() {
+ expect(revertEventStub.calledOnce).toEqual(true);
+ expect(successStub.calledOnce).toEqual(true);
+ expect(errorStub.notCalled).toEqual(true);
- expect(revertEventStub.calledOnce).toEqual(true);
- expect(successStub.calledOnce).toEqual(true);
- expect(errorStub.notCalled).toEqual(true);
+ done();
+ });
});
- it('triggers error event when server returns a failure', function() {
- model.revert({
+ it('triggers error event when server returns a failure', function(done) {
+ var promise = model.revert({
success: successStub
});
expect(fakeServer.requests.length).toEqual(1);
- fakeServer.requests[0].respond(
- 200,
- { 'Content-Type': 'application/json' },
- JSON.stringify({
- status: 'error',
- })
- );
+ var responseErrorHeaders = {
+ "Content-Type": "application/xml"
+ };
+ var responseErrorBody =
+ '<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">' +
+ ' <s:exception>Sabre\\DAV\\Exception\\SomeException</s:exception>' +
+ ' <s:message>Some error message</s:message>' +
+ '</d:error>';
+ fakeServer.requests[0].respond(404, responseErrorHeaders, responseErrorBody);
- expect(revertEventStub.notCalled).toEqual(true);
- expect(successStub.notCalled).toEqual(true);
- expect(errorStub.calledOnce).toEqual(true);
+ promise.fail(function() {
+ expect(revertEventStub.notCalled).toEqual(true);
+ expect(successStub.notCalled).toEqual(true);
+ expect(errorStub.calledOnce).toEqual(true);
+
+ done();
+ });
});
});
});
diff --git a/apps/files_versions/tests/js/versionstabviewSpec.js b/apps/files_versions/tests/js/versionstabviewSpec.js
index 94ad72d0f77..40fd8879645 100644
--- a/apps/files_versions/tests/js/versionstabviewSpec.js
+++ b/apps/files_versions/tests/js/versionstabviewSpec.js
@@ -82,14 +82,12 @@ describe('OCA.Versions.VersionsTabView', function() {
expect($item.find('.versiondate').text()).toEqual('seconds ago');
expect($item.find('.size').text()).toEqual('< 1 KB');
expect($item.find('.revertVersion').length).toEqual(1);
- expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
$item = $versions.eq(1);
expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
expect($item.find('.versiondate').text()).toEqual('2 days ago');
expect($item.find('.size').text()).toEqual('< 1 KB');
expect($item.find('.revertVersion').length).toEqual(1);
- expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
});
it('does not render revert button when no update permissions', function() {
@@ -106,71 +104,11 @@ describe('OCA.Versions.VersionsTabView', function() {
expect($item.find('.downloadVersion').attr('href')).toEqual(version1.getDownloadUrl());
expect($item.find('.versiondate').text()).toEqual('seconds ago');
expect($item.find('.revertVersion').length).toEqual(0);
- expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
$item = $versions.eq(1);
expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
expect($item.find('.versiondate').text()).toEqual('2 days ago');
expect($item.find('.revertVersion').length).toEqual(0);
- expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
- });
- });
-
- describe('More versions', function() {
- var hasMoreResultsStub;
-
- beforeEach(function() {
- tabView.setFileInfo(fileInfoModel);
- fetchStub.reset();
- tabView.collection.set(testVersions);
- hasMoreResultsStub = sinon.stub(VersionCollection.prototype, 'hasMoreResults');
- });
- afterEach(function() {
- hasMoreResultsStub.restore();
- });
-
- it('shows "More versions" button when more versions are available', function() {
- hasMoreResultsStub.returns(true);
- tabView.collection.trigger('sync');
-
- expect(tabView.$el.find('.showMoreVersions').hasClass('hidden')).toEqual(false);
- });
- it('does not show "More versions" button when more versions are available', function() {
- hasMoreResultsStub.returns(false);
- tabView.collection.trigger('sync');
-
- expect(tabView.$el.find('.showMoreVersions').hasClass('hidden')).toEqual(true);
- });
- it('fetches and appends the next page when clicking the "More" button', function() {
- hasMoreResultsStub.returns(true);
-
- expect(fetchStub.notCalled).toEqual(true);
-
- tabView.$el.find('.showMoreVersions').click();
-
- expect(fetchStub.calledOnce).toEqual(true);
- });
- it('appends version to the list when added to collection', function() {
- var time3 = Date.UTC(2015, 6, 10, 1, 0, 0, 0) / 1000;
-
- var version3 = new VersionModel({
- id: time3,
- timestamp: time3,
- name: 'some file.txt',
- size: 54,
- fullPath: '/subdir/some file.txt',
- mimetype: 'text/plain'
- });
-
- tabView.collection.add(version3);
-
- expect(tabView.$el.find('.versions>li').length).toEqual(3);
-
- var $item = tabView.$el.find('.versions>li').eq(2);
- expect($item.find('.downloadVersion').attr('href')).toEqual(version3.getDownloadUrl());
- expect($item.find('.versiondate').text()).toEqual('7 days ago');
- expect($item.find('.revertVersion').length).toEqual(1);
- expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
});
});
diff --git a/apps/oauth2/l10n/sv.js b/apps/oauth2/l10n/sv.js
index cd0c657131c..0f5e849c5ca 100644
--- a/apps/oauth2/l10n/sv.js
+++ b/apps/oauth2/l10n/sv.js
@@ -1,7 +1,10 @@
OC.L10N.register(
"oauth2",
{
+ "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Din omdirigeringsadress måste vara en fullständig URL till exempel: https://yourdomain.com/path",
"OAuth 2.0" : "OAuth 2.0",
+ "Allows OAuth2 compatible authentication from other web applications." : "Tillåter OAuth2-kompatibel autentisering från andra webbapplikationer.",
+ "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "I appen OAuth2 kan administratörer konfigurera det inbyggda autentiseringsflödet för att även tillåta OAuth2-kompatibel autentisering från andra webbapplikationer.",
"OAuth 2.0 clients" : "OAuth 2.0 klienter",
"Name" : "Namn",
"Client Identifier" : "Klientidentifierare",
diff --git a/apps/oauth2/l10n/sv.json b/apps/oauth2/l10n/sv.json
index ed6ceba0204..be8691614bc 100644
--- a/apps/oauth2/l10n/sv.json
+++ b/apps/oauth2/l10n/sv.json
@@ -1,5 +1,8 @@
{ "translations": {
+ "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Din omdirigeringsadress måste vara en fullständig URL till exempel: https://yourdomain.com/path",
"OAuth 2.0" : "OAuth 2.0",
+ "Allows OAuth2 compatible authentication from other web applications." : "Tillåter OAuth2-kompatibel autentisering från andra webbapplikationer.",
+ "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "I appen OAuth2 kan administratörer konfigurera det inbyggda autentiseringsflödet för att även tillåta OAuth2-kompatibel autentisering från andra webbapplikationer.",
"OAuth 2.0 clients" : "OAuth 2.0 klienter",
"Name" : "Namn",
"Client Identifier" : "Klientidentifierare",
diff --git a/apps/sharebymail/l10n/cs.js b/apps/sharebymail/l10n/cs.js
index ec612ea783b..3716cae3b13 100644
--- a/apps/sharebymail/l10n/cs.js
+++ b/apps/sharebymail/l10n/cs.js
@@ -16,15 +16,25 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Heslo pro přístup k {file} bylo zasláno na {email}",
"Password to access %1$s was sent to you" : "Heslo pro přístup k %1$s vám bylo zasláno",
"Password to access {file} was sent to you" : "Heslo pro přístupu k {file} vám bylo zasláno",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, tato položka je s %2$s už sdílena",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nemůžeme vám zaslat automaticky vytvořené heslo. Nastavte si v osobním nastavení platnou e-mailovou adresu a zkuste to znovu.",
"Failed to send share by email" : "Sdílení e-mailem se nezdařilo",
+ "%1$s shared »%2$s« with you" : "%1$s s vámi sdílí „%2$s“",
+ "%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.",
"Open »%s«" : "Otevřít „%s“",
"%1$s via %2$s" : "%1$s prostřednictvím %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s s vámi sdílel(a) „%2$s“. Už jste měli dostat e-mail s přístupovými údaji.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s s vámi sdílel(a) „%2$s“. Už jste měli dostat e-mail s přístupovými údaji.",
+ "Password to access »%1$s« shared to you by %2$s" : "Heslo pro přístup k „%1$s“, které vám nasdílel(a) %2$s",
"Password to access »%s«" : "Heslo pro přístup k „%s “",
+ "It is protected with the following password:" : "Je chráněno následujícím heslem:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s s vámi sdílí „%2$s“ a chce přidat:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s s vámi sdílí „%2$s“ a chce přidat",
"»%s« added a note to a file shared with you" : "„%s“ přidal(a) poznámku k souboru, který je s vámi sdílený",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Právě jste s „%1$s“ nasdílel(a) %2$s. Sdílení bylo již příjemci zasláno. Kvůli bezpečnostní politice nastavené administrátorem %3$s musí být každé sdílení chráněno heslem a toto heslo nemůže být příjemci zasláno přímo. Kvůli tomu ho budete muset ručně přeposlat.",
+ "Password to access »%1$s« shared with %2$s" : "Heslo pro přístup k „%1$s“ sdílenému s %2$s",
+ "This is the password:" : "Toto je heslo:",
"You can choose a different password at any time in the share dialog." : "V dialogu sdílení můžete kdykoliv vybrat jiné heslo.",
"Could not find share" : "Sdílení se nedaří nalézt",
"Share by mail" : "Sdílet e-mailem",
diff --git a/apps/sharebymail/l10n/cs.json b/apps/sharebymail/l10n/cs.json
index b1fe57080d9..6808dcaf933 100644
--- a/apps/sharebymail/l10n/cs.json
+++ b/apps/sharebymail/l10n/cs.json
@@ -14,15 +14,25 @@
"Password to access {file} was sent to {email}" : "Heslo pro přístup k {file} bylo zasláno na {email}",
"Password to access %1$s was sent to you" : "Heslo pro přístup k %1$s vám bylo zasláno",
"Password to access {file} was sent to you" : "Heslo pro přístupu k {file} vám bylo zasláno",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, tato položka je s %2$s už sdílena",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nemůžeme vám zaslat automaticky vytvořené heslo. Nastavte si v osobním nastavení platnou e-mailovou adresu a zkuste to znovu.",
"Failed to send share by email" : "Sdílení e-mailem se nezdařilo",
+ "%1$s shared »%2$s« with you" : "%1$s s vámi sdílí „%2$s“",
+ "%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.",
"Open »%s«" : "Otevřít „%s“",
"%1$s via %2$s" : "%1$s prostřednictvím %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s s vámi sdílel(a) „%2$s“. Už jste měli dostat e-mail s přístupovými údaji.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s s vámi sdílel(a) „%2$s“. Už jste měli dostat e-mail s přístupovými údaji.",
+ "Password to access »%1$s« shared to you by %2$s" : "Heslo pro přístup k „%1$s“, které vám nasdílel(a) %2$s",
"Password to access »%s«" : "Heslo pro přístup k „%s “",
+ "It is protected with the following password:" : "Je chráněno následujícím heslem:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s s vámi sdílí „%2$s“ a chce přidat:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s s vámi sdílí „%2$s“ a chce přidat",
"»%s« added a note to a file shared with you" : "„%s“ přidal(a) poznámku k souboru, který je s vámi sdílený",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Právě jste s „%1$s“ nasdílel(a) %2$s. Sdílení bylo již příjemci zasláno. Kvůli bezpečnostní politice nastavené administrátorem %3$s musí být každé sdílení chráněno heslem a toto heslo nemůže být příjemci zasláno přímo. Kvůli tomu ho budete muset ručně přeposlat.",
+ "Password to access »%1$s« shared with %2$s" : "Heslo pro přístup k „%1$s“ sdílenému s %2$s",
+ "This is the password:" : "Toto je heslo:",
"You can choose a different password at any time in the share dialog." : "V dialogu sdílení můžete kdykoliv vybrat jiné heslo.",
"Could not find share" : "Sdílení se nedaří nalézt",
"Share by mail" : "Sdílet e-mailem",
diff --git a/apps/sharebymail/l10n/de.js b/apps/sharebymail/l10n/de.js
index f1e5f14c5f4..6957e22052d 100644
--- a/apps/sharebymail/l10n/de.js
+++ b/apps/sharebymail/l10n/de.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ",
"Password to access %1$s was sent to you" : " Passwort für den Zugriff auf %1$s wurde an Dich versandt ",
"Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Dich versandt ",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte gebe in Deinen persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche es erneut.",
"Failed to send share by email" : "Fehler beim Senden der Freigabe per E-Mail",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche",
"Open »%s«" : "Öffne »%s«",
"%1$s via %2$s" : "%1$s über %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit Dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit Dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben. ",
+ "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit Dir geteilt.",
"Password to access »%s«" : "Passwort um auf »%s« zu zugreifen",
"It is protected with the following password:" : "Dies ist mit dem folgendem Passwort geschützt:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s«  mit Dir geteilt und möchte folgendes hinzufügen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen",
"»%s« added a note to a file shared with you" : "»%s« « hat eine Bemerkung zu einer mit Dir geteilten Datei hinzugefügt",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst Du das Passwort selbst an den Empfänger senden.",
+ "Password to access »%1$s« shared with %2$s" : "Passwort für den Zugriff auf %1$s, geteilt mit %2$s",
"This is the password:" : "Das Passwort lautet: ",
"You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
diff --git a/apps/sharebymail/l10n/de.json b/apps/sharebymail/l10n/de.json
index 82325a6d727..89a4985ca22 100644
--- a/apps/sharebymail/l10n/de.json
+++ b/apps/sharebymail/l10n/de.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ",
"Password to access %1$s was sent to you" : " Passwort für den Zugriff auf %1$s wurde an Dich versandt ",
"Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Dich versandt ",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte gebe in Deinen persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche es erneut.",
"Failed to send share by email" : "Fehler beim Senden der Freigabe per E-Mail",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche",
"Open »%s«" : "Öffne »%s«",
"%1$s via %2$s" : "%1$s über %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit Dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit Dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben. ",
+ "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit Dir geteilt.",
"Password to access »%s«" : "Passwort um auf »%s« zu zugreifen",
"It is protected with the following password:" : "Dies ist mit dem folgendem Passwort geschützt:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s«  mit Dir geteilt und möchte folgendes hinzufügen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen",
"»%s« added a note to a file shared with you" : "»%s« « hat eine Bemerkung zu einer mit Dir geteilten Datei hinzugefügt",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst Du das Passwort selbst an den Empfänger senden.",
+ "Password to access »%1$s« shared with %2$s" : "Passwort für den Zugriff auf %1$s, geteilt mit %2$s",
"This is the password:" : "Das Passwort lautet: ",
"You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
diff --git a/apps/sharebymail/l10n/de_DE.js b/apps/sharebymail/l10n/de_DE.js
index fb76a1a4367..4cf65ea1d0b 100644
--- a/apps/sharebymail/l10n/de_DE.js
+++ b/apps/sharebymail/l10n/de_DE.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ",
"Password to access %1$s was sent to you" : "Passwort für den Zugriff auf %1$s wurde an Sie versandt",
"Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Sie versandt ",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Teilen von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte geben Sie in Ihren persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche Sie es erneut.",
"Failed to send share by email" : "Fehler beim Senden der Freigabe per E-Mail",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Ihnen geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche",
"Open »%s«" : "Öffne »%s«",
"%1$s via %2$s" : "%1$s über%2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit Ihnen geteilt.\nSie sollten bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit Ihnen geteilt. Sie sollten bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben.",
+ "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit Ihnen geteilt.",
"Password to access »%s«" : "Passwort um auf »%s« zu zugreifen",
"It is protected with the following password:" : "Dies ist mit dem folgendem Passwort geschützt:",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
- "%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
"»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Ihnen geteilten Datei hinzugefügt",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Sie haben »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund müssen Sie das Passwort selbst an den Empfänger senden.",
+ "Password to access »%1$s« shared with %2$s" : "Passwort für den Zugriff auf %1$s, geteilt mit %2$s",
"This is the password:" : "Das Passwort lautet:",
"You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog können Sie jederzeit ein anderes Passwort wählen.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
diff --git a/apps/sharebymail/l10n/de_DE.json b/apps/sharebymail/l10n/de_DE.json
index 77455331189..69c328e10d4 100644
--- a/apps/sharebymail/l10n/de_DE.json
+++ b/apps/sharebymail/l10n/de_DE.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ",
"Password to access %1$s was sent to you" : "Passwort für den Zugriff auf %1$s wurde an Sie versandt",
"Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Sie versandt ",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Teilen von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte geben Sie in Ihren persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche Sie es erneut.",
"Failed to send share by email" : "Fehler beim Senden der Freigabe per E-Mail",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Ihnen geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche",
"Open »%s«" : "Öffne »%s«",
"%1$s via %2$s" : "%1$s über%2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit Ihnen geteilt.\nSie sollten bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit Ihnen geteilt. Sie sollten bereits eine weitere E-Mail mit einem Zugriffs-Link erhalten haben.",
+ "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit Ihnen geteilt.",
"Password to access »%s«" : "Passwort um auf »%s« zu zugreifen",
"It is protected with the following password:" : "Dies ist mit dem folgendem Passwort geschützt:",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
- "%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
"»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Ihnen geteilten Datei hinzugefügt",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Sie haben »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund müssen Sie das Passwort selbst an den Empfänger senden.",
+ "Password to access »%1$s« shared with %2$s" : "Passwort für den Zugriff auf %1$s, geteilt mit %2$s",
"This is the password:" : "Das Passwort lautet:",
"You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog können Sie jederzeit ein anderes Passwort wählen.",
"Could not find share" : "Freigabe konnte nicht gefunden werden",
diff --git a/apps/sharebymail/l10n/es.js b/apps/sharebymail/l10n/es.js
index 92b50e72d10..95acaedcf19 100644
--- a/apps/sharebymail/l10n/es.js
+++ b/apps/sharebymail/l10n/es.js
@@ -16,15 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Se ha enviado a {email} una contraseña para acceder a {file}",
"Password to access %1$s was sent to you" : "Se te ha enviado una contraseña para acceder a %1$s",
"Password to access {file} was sent to you" : "Se te ha enviado una contraseña para acceder a {file}",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Fallo al compartir %1$s, este elemento ya está compartido con %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "No podemos enviarte la contraseña autogenerada. Por favor, indica una dirección de correo electrónico válida en tu configuración personal y vuelve a intentarlo.",
"Failed to send share by email" : "Fallo al enviar compartido por correo electrónico",
+ "%1$s shared »%2$s« with you" : "%1$s ha compartido «%2$s» contigo",
+ "%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haga click en el botón debajo para abrirlo.",
"Open »%s«" : "Abrir »%s«",
"%1$s via %2$s" : "%1$s vía %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s ha compartido «%2$ss» contigo.\nDeberías haber recibido un correo aparte con el enlace para acceder.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s ha compartido «%2$s» contigo.Deberías haber recibido un correo aparte con el enlace para acceder.",
"Password to access »%s«" : "Contraseña para acceder »%s«",
+ "It is protected with the following password:" : "Está protegido con la siguiente contraseña:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha compartido «%2$s» contigo y quiere añadir:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha compartido «%2$s» contigo y quiere añadir",
"»%s« added a note to a file shared with you" : "«%s» ha añadido una nota a un archivo compartido contigo",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabas de compartir «%1$s» con %2$s. El recurso compartido ya ha sido enviado al destinatario. Debido a las reglas de seguridad definidas por el administrador de %3$s, cada recurso compartido necesita ser protegido con contraseña y no está permitido que mandes la contraseña directamente al destinatario. Por eso, necesitas mandar la contraseña al destinatario por tu cuenta.",
+ "Password to access »%1$s« shared with %2$s" : "Se ha compartido la contraseña para acceder a «%1$s» con %2$s",
+ "This is the password:" : "Esta es la contraseña:",
"You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en el diálogo de compartir.",
"Could not find share" : "No se pudo encontrar el recurso compartido",
"Share by mail" : "Enviado por correo electrónico",
diff --git a/apps/sharebymail/l10n/es.json b/apps/sharebymail/l10n/es.json
index 4484f03b48f..01b1f411eac 100644
--- a/apps/sharebymail/l10n/es.json
+++ b/apps/sharebymail/l10n/es.json
@@ -14,15 +14,24 @@
"Password to access {file} was sent to {email}" : "Se ha enviado a {email} una contraseña para acceder a {file}",
"Password to access %1$s was sent to you" : "Se te ha enviado una contraseña para acceder a %1$s",
"Password to access {file} was sent to you" : "Se te ha enviado una contraseña para acceder a {file}",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Fallo al compartir %1$s, este elemento ya está compartido con %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "No podemos enviarte la contraseña autogenerada. Por favor, indica una dirección de correo electrónico válida en tu configuración personal y vuelve a intentarlo.",
"Failed to send share by email" : "Fallo al enviar compartido por correo electrónico",
+ "%1$s shared »%2$s« with you" : "%1$s ha compartido «%2$s» contigo",
+ "%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haga click en el botón debajo para abrirlo.",
"Open »%s«" : "Abrir »%s«",
"%1$s via %2$s" : "%1$s vía %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s ha compartido «%2$ss» contigo.\nDeberías haber recibido un correo aparte con el enlace para acceder.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s ha compartido «%2$s» contigo.Deberías haber recibido un correo aparte con el enlace para acceder.",
"Password to access »%s«" : "Contraseña para acceder »%s«",
+ "It is protected with the following password:" : "Está protegido con la siguiente contraseña:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha compartido «%2$s» contigo y quiere añadir:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha compartido «%2$s» contigo y quiere añadir",
"»%s« added a note to a file shared with you" : "«%s» ha añadido una nota a un archivo compartido contigo",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabas de compartir «%1$s» con %2$s. El recurso compartido ya ha sido enviado al destinatario. Debido a las reglas de seguridad definidas por el administrador de %3$s, cada recurso compartido necesita ser protegido con contraseña y no está permitido que mandes la contraseña directamente al destinatario. Por eso, necesitas mandar la contraseña al destinatario por tu cuenta.",
+ "Password to access »%1$s« shared with %2$s" : "Se ha compartido la contraseña para acceder a «%1$s» con %2$s",
+ "This is the password:" : "Esta es la contraseña:",
"You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en el diálogo de compartir.",
"Could not find share" : "No se pudo encontrar el recurso compartido",
"Share by mail" : "Enviado por correo electrónico",
diff --git a/apps/sharebymail/l10n/fi.js b/apps/sharebymail/l10n/fi.js
index 2fc3135f676..50e7981ba2a 100644
--- a/apps/sharebymail/l10n/fi.js
+++ b/apps/sharebymail/l10n/fi.js
@@ -10,20 +10,22 @@ OC.L10N.register(
"%3$s shared %1$s with %2$s by mail" : "%3$s jakoi tiedoston %1$s sähköpostitse osoitteeseen %2$s",
"{actor} shared {file} with {email} by mail" : "{actor} jakoi tiedoston {file} sähköpostitse osoitteeseen {email}",
"Password to access {file} was sent to you" : "Salasana tiedoston {file} käyttämiseksi lähetettiin sinulle",
- "Sharing %s failed, this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska se on jo jaettu käyttäjälle %s",
"Failed to send share by email" : "Jaon lähettäminen sähköpostitse epäonnistui",
- "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
- "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
"Click the button below to open it." : "Klikkaa alla olevaa linkkiä avataksesi sen.",
"Open »%s«" : "Avaa »%s«",
- "%s via %s" : "%s (palvelun %s kautta)",
+ "It is protected with the following password:" : "Se on suojattu seuraavalla salasanalla:",
+ "This is the password:" : "Tämä on salasana:",
"You can choose a different password at any time in the share dialog." : "Voit valita muun salasanan koska tahansa jakovalikossa.",
"Could not find share" : "Jakoa ei löytynyt",
"Share by mail" : "Jaa sähköpostitse",
"Allows users to share a personalized link to a file or folder by putting in an email address." : "Salli käyttäjien jakaa personoitu linkki tiedostoon tai kansioon syöttämällä sähköpostiosoitteen.",
"Send password by mail" : "Lähetä salasana sähköpostitse",
"Enforce password protection" : "Pakota salasanasuojaus",
+ "Sharing %s failed, this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska se on jo jaettu käyttäjälle %s",
"Failed to send share by E-mail" : "Jaon lähettäminen sähköpostitse epäonnistui",
+ "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
+ "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
+ "%s via %s" : "%s (palvelun %s kautta)",
"It is protected with the following password: %s" : "Se on suojattu seuraavalla salasanalla: %s",
"This is the password: %s" : "Tämä on salasana: %s"
},
diff --git a/apps/sharebymail/l10n/fi.json b/apps/sharebymail/l10n/fi.json
index 18a54938579..7650701aa99 100644
--- a/apps/sharebymail/l10n/fi.json
+++ b/apps/sharebymail/l10n/fi.json
@@ -8,20 +8,22 @@
"%3$s shared %1$s with %2$s by mail" : "%3$s jakoi tiedoston %1$s sähköpostitse osoitteeseen %2$s",
"{actor} shared {file} with {email} by mail" : "{actor} jakoi tiedoston {file} sähköpostitse osoitteeseen {email}",
"Password to access {file} was sent to you" : "Salasana tiedoston {file} käyttämiseksi lähetettiin sinulle",
- "Sharing %s failed, this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska se on jo jaettu käyttäjälle %s",
"Failed to send share by email" : "Jaon lähettäminen sähköpostitse epäonnistui",
- "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
- "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
"Click the button below to open it." : "Klikkaa alla olevaa linkkiä avataksesi sen.",
"Open »%s«" : "Avaa »%s«",
- "%s via %s" : "%s (palvelun %s kautta)",
+ "It is protected with the following password:" : "Se on suojattu seuraavalla salasanalla:",
+ "This is the password:" : "Tämä on salasana:",
"You can choose a different password at any time in the share dialog." : "Voit valita muun salasanan koska tahansa jakovalikossa.",
"Could not find share" : "Jakoa ei löytynyt",
"Share by mail" : "Jaa sähköpostitse",
"Allows users to share a personalized link to a file or folder by putting in an email address." : "Salli käyttäjien jakaa personoitu linkki tiedostoon tai kansioon syöttämällä sähköpostiosoitteen.",
"Send password by mail" : "Lähetä salasana sähköpostitse",
"Enforce password protection" : "Pakota salasanasuojaus",
+ "Sharing %s failed, this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska se on jo jaettu käyttäjälle %s",
"Failed to send share by E-mail" : "Jaon lähettäminen sähköpostitse epäonnistui",
+ "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
+ "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
+ "%s via %s" : "%s (palvelun %s kautta)",
"It is protected with the following password: %s" : "Se on suojattu seuraavalla salasanalla: %s",
"This is the password: %s" : "Tämä on salasana: %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/sharebymail/l10n/fr.js b/apps/sharebymail/l10n/fr.js
index c37e42de229..f382efcf745 100644
--- a/apps/sharebymail/l10n/fr.js
+++ b/apps/sharebymail/l10n/fr.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Le mot de passe pour accèder à {file} a été envoyé à {email}",
"Password to access %1$s was sent to you" : "Le mot de passe pour accèder à %1$s vous a été envoyé",
"Password to access {file} was sent to you" : "Le mot de passe pour accèder à {file} vous a été envoyé",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Le partage de %1$s a échoué, cet élément est déjà partagé avec %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nous ne pouvons pas vous envoyer le mot de passe généré automatiquement. Veuillez renseigner une adresse e-mail valide dans vos paramètres personnels puis réessayer.",
"Failed to send share by email" : "Échec lors de l'envoi du partage par e-mail",
+ "%1$s shared »%2$s« with you" : "%1$s a partagé «%2$s» avec vous",
+ "%1$s shared »%2$s« with you." : "%1$s a partagé «%2$s» avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir.",
"Open »%s«" : "Ouvrir «%s»",
"%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s a partagé «%2$s» avec vous.\nVous avez normalement déjà reçu un autre e-mail avec un lien pour y accéder.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s a partagé «%2$s» avec vous. Vous avez normalement déjà reçu un autre e-mail avec un lien pour y accéder.",
+ "Password to access »%1$s« shared to you by %2$s" : "Mot de passe pour accéder à «%1$s» partagé avec vous par %2$s",
"Password to access »%s«" : "Mot de passe pour accéder à «%s»",
"It is protected with the following password:" : "Il est protégé avec le mot de passe suivant :",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s a partagé \"%2$s\" avec vous et veut ajouter :",
"%1$s shared »%2$s« with you and wants to add" : "%1$s a partagé \"%2$s\" avec vous et veut ajouter ",
"»%s« added a note to a file shared with you" : "\"%s\" a ajouté une note à un fichier partagé avec vous.",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Vous venez de partager «%1$s» avec %2$s. Le partage a déjà été envoyé au destinataire. En raison de la politique de sécurité définie par l'administrateur de %3$s, chaque partage a besoin d'être protégé par mot de passe et il n'est pas autorisé d'envoyer le mot de passe directement au destinataire. C'est pourquoi vous devez transmettre le mot de passe manuellement au destinataire.",
+ "Password to access »%1$s« shared with %2$s" : "Mot de passe pour accéder à «%1$s» partagé avec %2$s",
"This is the password:" : "Voici le mot de passe :",
"You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.",
"Could not find share" : "Impossible de trouver le partage",
diff --git a/apps/sharebymail/l10n/fr.json b/apps/sharebymail/l10n/fr.json
index 28751cc8c79..be1f40469a1 100644
--- a/apps/sharebymail/l10n/fr.json
+++ b/apps/sharebymail/l10n/fr.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "Le mot de passe pour accèder à {file} a été envoyé à {email}",
"Password to access %1$s was sent to you" : "Le mot de passe pour accèder à %1$s vous a été envoyé",
"Password to access {file} was sent to you" : "Le mot de passe pour accèder à {file} vous a été envoyé",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Le partage de %1$s a échoué, cet élément est déjà partagé avec %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nous ne pouvons pas vous envoyer le mot de passe généré automatiquement. Veuillez renseigner une adresse e-mail valide dans vos paramètres personnels puis réessayer.",
"Failed to send share by email" : "Échec lors de l'envoi du partage par e-mail",
+ "%1$s shared »%2$s« with you" : "%1$s a partagé «%2$s» avec vous",
+ "%1$s shared »%2$s« with you." : "%1$s a partagé «%2$s» avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir.",
"Open »%s«" : "Ouvrir «%s»",
"%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s a partagé «%2$s» avec vous.\nVous avez normalement déjà reçu un autre e-mail avec un lien pour y accéder.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s a partagé «%2$s» avec vous. Vous avez normalement déjà reçu un autre e-mail avec un lien pour y accéder.",
+ "Password to access »%1$s« shared to you by %2$s" : "Mot de passe pour accéder à «%1$s» partagé avec vous par %2$s",
"Password to access »%s«" : "Mot de passe pour accéder à «%s»",
"It is protected with the following password:" : "Il est protégé avec le mot de passe suivant :",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s a partagé \"%2$s\" avec vous et veut ajouter :",
"%1$s shared »%2$s« with you and wants to add" : "%1$s a partagé \"%2$s\" avec vous et veut ajouter ",
"»%s« added a note to a file shared with you" : "\"%s\" a ajouté une note à un fichier partagé avec vous.",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Vous venez de partager «%1$s» avec %2$s. Le partage a déjà été envoyé au destinataire. En raison de la politique de sécurité définie par l'administrateur de %3$s, chaque partage a besoin d'être protégé par mot de passe et il n'est pas autorisé d'envoyer le mot de passe directement au destinataire. C'est pourquoi vous devez transmettre le mot de passe manuellement au destinataire.",
+ "Password to access »%1$s« shared with %2$s" : "Mot de passe pour accéder à «%1$s» partagé avec %2$s",
"This is the password:" : "Voici le mot de passe :",
"You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.",
"Could not find share" : "Impossible de trouver le partage",
diff --git a/apps/sharebymail/l10n/it.js b/apps/sharebymail/l10n/it.js
index ba956351148..cbab4078698 100644
--- a/apps/sharebymail/l10n/it.js
+++ b/apps/sharebymail/l10n/it.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "La password per accedere a {file} ti è stata inviata a {email}",
"Password to access %1$s was sent to you" : "La password per accedere a %1$s ti è stata inviata",
"Password to access {file} was sent to you" : "La password per accedere a {file} ti è stata inviata",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Condivisione %1$s non riuscita, questo elemento è già condiviso con %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Non possiamo inviarti la password generata automaticamente. Imposta un indirizzo di posta valido nelle impostazioni personali e prova ancora.",
"Failed to send share by email" : "Invio non riuscito della condivisione tramite email",
+ "%1$s shared »%2$s« with you" : "%1$s ha condiviso «%2$s» con te",
+ "%1$s shared »%2$s« with you." : "%1$s ha condiviso «%2$s» con te.",
"Click the button below to open it." : "Fai clic sul pulsante sotto per aprirlo.",
"Open »%s«" : "Apri «%s»",
"%1$s via %2$s" : "%1$s tramite %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s ha condiviso «%2$s» con te.\nDovresti aver ricevuto un messaggio separato con un collegamento per accedervi.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s ha condiviso «%2$s» con te. Dovresti aver ricevuto un messaggio separato con un collegamento per accedervi.",
+ "Password to access »%1$s« shared to you by %2$s" : "Password per accedere a «%1$s» condivisa con te da %2$s",
"Password to access »%s«" : "Password per accedere a «%s»",
"It is protected with the following password:" : "È protetta con la password seguente:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere",
"»%s« added a note to a file shared with you" : "«%s» ha aggiunto una nota a un file condiviso con te",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Hai appena condiviso «%1$s» con %2$s. La condivisione è stata già inviata al destinatario. A causa dei criteri di sicurezza definiti dall'amministratore di %3$s, ogni condivisione deve essere protetta da password e non è consentito l'invio diretto della password al destinatario. Perciò, devi inoltrare manualmente la password al destinatario.",
+ "Password to access »%1$s« shared with %2$s" : "Password per accedere a «%1$s» condivisa con %2$s",
"This is the password:" : "Questa è la password:",
"You can choose a different password at any time in the share dialog." : "Puoi scegliere una password diversa in qualsiasi momento nella finestra di condivisione.",
"Could not find share" : "Non è stato possibile trovare la condivisione",
diff --git a/apps/sharebymail/l10n/it.json b/apps/sharebymail/l10n/it.json
index e093b983ef2..d4c53bc1546 100644
--- a/apps/sharebymail/l10n/it.json
+++ b/apps/sharebymail/l10n/it.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "La password per accedere a {file} ti è stata inviata a {email}",
"Password to access %1$s was sent to you" : "La password per accedere a %1$s ti è stata inviata",
"Password to access {file} was sent to you" : "La password per accedere a {file} ti è stata inviata",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Condivisione %1$s non riuscita, questo elemento è già condiviso con %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Non possiamo inviarti la password generata automaticamente. Imposta un indirizzo di posta valido nelle impostazioni personali e prova ancora.",
"Failed to send share by email" : "Invio non riuscito della condivisione tramite email",
+ "%1$s shared »%2$s« with you" : "%1$s ha condiviso «%2$s» con te",
+ "%1$s shared »%2$s« with you." : "%1$s ha condiviso «%2$s» con te.",
"Click the button below to open it." : "Fai clic sul pulsante sotto per aprirlo.",
"Open »%s«" : "Apri «%s»",
"%1$s via %2$s" : "%1$s tramite %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s ha condiviso «%2$s» con te.\nDovresti aver ricevuto un messaggio separato con un collegamento per accedervi.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s ha condiviso «%2$s» con te. Dovresti aver ricevuto un messaggio separato con un collegamento per accedervi.",
+ "Password to access »%1$s« shared to you by %2$s" : "Password per accedere a «%1$s» condivisa con te da %2$s",
"Password to access »%s«" : "Password per accedere a «%s»",
"It is protected with the following password:" : "È protetta con la password seguente:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere",
"»%s« added a note to a file shared with you" : "«%s» ha aggiunto una nota a un file condiviso con te",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Hai appena condiviso «%1$s» con %2$s. La condivisione è stata già inviata al destinatario. A causa dei criteri di sicurezza definiti dall'amministratore di %3$s, ogni condivisione deve essere protetta da password e non è consentito l'invio diretto della password al destinatario. Perciò, devi inoltrare manualmente la password al destinatario.",
+ "Password to access »%1$s« shared with %2$s" : "Password per accedere a «%1$s» condivisa con %2$s",
"This is the password:" : "Questa è la password:",
"You can choose a different password at any time in the share dialog." : "Puoi scegliere una password diversa in qualsiasi momento nella finestra di condivisione.",
"Could not find share" : "Non è stato possibile trovare la condivisione",
diff --git a/apps/sharebymail/l10n/nl.js b/apps/sharebymail/l10n/nl.js
index cc7755ab0a2..214181fd65b 100644
--- a/apps/sharebymail/l10n/nl.js
+++ b/apps/sharebymail/l10n/nl.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Wachtwoord voor toegang tot {file} is gestuurd naar {email}",
"Password to access %1$s was sent to you" : "Wachtwoord voor toegang tot %1$s is naar jou gestuurd",
"Password to access {file} was sent to you" : "Wachtwoord voor toegang tot {file} is naar je verstuurd",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat dit al gedeeld wordt met %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "We kunnen je geen automatisch gegenereerd wachtwoord toesturen. Vermeld een geldig emailadres in je persoonlijke instellingen en probeer het nogmaals.",
"Failed to send share by email" : "Delen per email is mislukt",
+ "%1$s shared »%2$s« with you" : "%1$s deelde »%2$s« met jou",
+ "%1$s shared »%2$s« with you." : "%1$s deelde »%2$s« met jou.",
"Click the button below to open it." : "Klik op onderstaande link om te openen.",
"Open »%s«" : "Open »%s«",
"%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s heeft \"%2$s\" met je gedeeld.\nJe moet al een aparte e-mail hebben ontvangen met een link om er te komen.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s heeft \"%2$s\" met je gedeeld. Je moet al een aparte e-mail hebben ontvangen met een link om er te komen.",
+ "Password to access »%1$s« shared to you by %2$s" : "Wachtwoord voor toegang tot »%1$s« gedeeld met je door %2$s",
"Password to access »%s«" : "Wachtwoord om binnen te komen »%s«",
"It is protected with the following password:" : "Het is beveiligd met het volgende wachtwoord:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s deelde »%2$s« met jou en wil toevoegen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s deelde »%2$s« met jou en wil toevoegen",
"»%s« added a note to a file shared with you" : "»%s« voegde een notitie toe aan een bestand dat met jou is gedeeld",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Je deelde »%1$s« met %2$s. De link is al gestuurd naar de geadresseerde. Vanwege de beveiligingsinstellingen, zoals ingesteld door de beheerder van %3$s, moet het delen worden beveiligd met een wachtwoord en is het niet toegestaan het wachtwoord rechtstreeks naar de ontvanger te versturen. Hierdoor moet je het wachtwoord zelf handmatig naar de ontvanger sturen.",
+ "Password to access »%1$s« shared with %2$s" : "Wachtwoord voor toegang tot »%1$s« gedeeld met %2$s",
"This is the password:" : "Dit is het wachtwoord:",
"You can choose a different password at any time in the share dialog." : "Je kunt in de Delen-dialoog altijd een ander wachtwoord kiezen.",
"Could not find share" : "Kon gedeeld niet vinden",
diff --git a/apps/sharebymail/l10n/nl.json b/apps/sharebymail/l10n/nl.json
index 804f507332b..ac99ce687ea 100644
--- a/apps/sharebymail/l10n/nl.json
+++ b/apps/sharebymail/l10n/nl.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "Wachtwoord voor toegang tot {file} is gestuurd naar {email}",
"Password to access %1$s was sent to you" : "Wachtwoord voor toegang tot %1$s is naar jou gestuurd",
"Password to access {file} was sent to you" : "Wachtwoord voor toegang tot {file} is naar je verstuurd",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat dit al gedeeld wordt met %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "We kunnen je geen automatisch gegenereerd wachtwoord toesturen. Vermeld een geldig emailadres in je persoonlijke instellingen en probeer het nogmaals.",
"Failed to send share by email" : "Delen per email is mislukt",
+ "%1$s shared »%2$s« with you" : "%1$s deelde »%2$s« met jou",
+ "%1$s shared »%2$s« with you." : "%1$s deelde »%2$s« met jou.",
"Click the button below to open it." : "Klik op onderstaande link om te openen.",
"Open »%s«" : "Open »%s«",
"%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s heeft \"%2$s\" met je gedeeld.\nJe moet al een aparte e-mail hebben ontvangen met een link om er te komen.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s heeft \"%2$s\" met je gedeeld. Je moet al een aparte e-mail hebben ontvangen met een link om er te komen.",
+ "Password to access »%1$s« shared to you by %2$s" : "Wachtwoord voor toegang tot »%1$s« gedeeld met je door %2$s",
"Password to access »%s«" : "Wachtwoord om binnen te komen »%s«",
"It is protected with the following password:" : "Het is beveiligd met het volgende wachtwoord:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s deelde »%2$s« met jou en wil toevoegen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s deelde »%2$s« met jou en wil toevoegen",
"»%s« added a note to a file shared with you" : "»%s« voegde een notitie toe aan een bestand dat met jou is gedeeld",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Je deelde »%1$s« met %2$s. De link is al gestuurd naar de geadresseerde. Vanwege de beveiligingsinstellingen, zoals ingesteld door de beheerder van %3$s, moet het delen worden beveiligd met een wachtwoord en is het niet toegestaan het wachtwoord rechtstreeks naar de ontvanger te versturen. Hierdoor moet je het wachtwoord zelf handmatig naar de ontvanger sturen.",
+ "Password to access »%1$s« shared with %2$s" : "Wachtwoord voor toegang tot »%1$s« gedeeld met %2$s",
"This is the password:" : "Dit is het wachtwoord:",
"You can choose a different password at any time in the share dialog." : "Je kunt in de Delen-dialoog altijd een ander wachtwoord kiezen.",
"Could not find share" : "Kon gedeeld niet vinden",
diff --git a/apps/sharebymail/l10n/pt_BR.js b/apps/sharebymail/l10n/pt_BR.js
index 5c942330e57..411bf0f3a4c 100644
--- a/apps/sharebymail/l10n/pt_BR.js
+++ b/apps/sharebymail/l10n/pt_BR.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "A senha para acesso {file} foi enviada para {email}",
"Password to access %1$s was sent to you" : "A senha para acesso %1$s foi enviada para você",
"Password to access {file} was sent to you" : "A senha para acesso {file} foi enviada para você",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "O compartilhamento %1$s falhou, este item já está compartilhado com %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. Defina um e-mail válido em sua configuração e tente novamente.",
"Failed to send share by email" : "Falha ao enviar compartilhamento via e-mail",
+ "%1$s shared »%2$s« with you" : "%1$s compartilhou »%2$s« com você",
+ "%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abrí-lo.",
"Open »%s«" : "Abrir »%s«",
"%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s compartilhou »%2$s« com você.\nVocê receberá um e-mail com um link para acessá-lo.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s compartilhou »%2$s« com você. Você receberá um e-mail com um link para acessá-lo.",
+ "Password to access »%1$s« shared to you by %2$s" : "Senha de acesso »%1$s« compartilhada com você por %2$s",
"Password to access »%s«" : "Senha para acessar »%s«",
"It is protected with the following password:" : "Está protegida com a seguinte senha:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s compartilhou »%2$s« com você e quer adicionar:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s compartilhou »%2$s« com você e quer adicionar",
"»%s« added a note to a file shared with you" : "»%s« adicionou uma anotação num arquivo compartilhado com você",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Você compartilhou »%1$s« com %2$s. O compartilhamento já foi enviado para o destinatário. Devido às políticas de segurança definidas pelo administrador de %3$s cada compartilhamento precisa ser protegido por senha e não é permitido enviar a senha diretamente ao destinatário. Portanto, você precisa encaminhar a senha manualmente para o destinatário.",
+ "Password to access »%1$s« shared with %2$s" : "Senha de acesso »%1$s« compartilhada com %2$s",
"This is the password:" : "Essa é a senha:",
"You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.",
"Could not find share" : "Não foi possível encontrar o compartilhamento",
diff --git a/apps/sharebymail/l10n/pt_BR.json b/apps/sharebymail/l10n/pt_BR.json
index ae9215bfd3f..e7ec2d13e2d 100644
--- a/apps/sharebymail/l10n/pt_BR.json
+++ b/apps/sharebymail/l10n/pt_BR.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "A senha para acesso {file} foi enviada para {email}",
"Password to access %1$s was sent to you" : "A senha para acesso %1$s foi enviada para você",
"Password to access {file} was sent to you" : "A senha para acesso {file} foi enviada para você",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "O compartilhamento %1$s falhou, este item já está compartilhado com %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. Defina um e-mail válido em sua configuração e tente novamente.",
"Failed to send share by email" : "Falha ao enviar compartilhamento via e-mail",
+ "%1$s shared »%2$s« with you" : "%1$s compartilhou »%2$s« com você",
+ "%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abrí-lo.",
"Open »%s«" : "Abrir »%s«",
"%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s compartilhou »%2$s« com você.\nVocê receberá um e-mail com um link para acessá-lo.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s compartilhou »%2$s« com você. Você receberá um e-mail com um link para acessá-lo.",
+ "Password to access »%1$s« shared to you by %2$s" : "Senha de acesso »%1$s« compartilhada com você por %2$s",
"Password to access »%s«" : "Senha para acessar »%s«",
"It is protected with the following password:" : "Está protegida com a seguinte senha:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s compartilhou »%2$s« com você e quer adicionar:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s compartilhou »%2$s« com você e quer adicionar",
"»%s« added a note to a file shared with you" : "»%s« adicionou uma anotação num arquivo compartilhado com você",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Você compartilhou »%1$s« com %2$s. O compartilhamento já foi enviado para o destinatário. Devido às políticas de segurança definidas pelo administrador de %3$s cada compartilhamento precisa ser protegido por senha e não é permitido enviar a senha diretamente ao destinatário. Portanto, você precisa encaminhar a senha manualmente para o destinatário.",
+ "Password to access »%1$s« shared with %2$s" : "Senha de acesso »%1$s« compartilhada com %2$s",
"This is the password:" : "Essa é a senha:",
"You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.",
"Could not find share" : "Não foi possível encontrar o compartilhamento",
diff --git a/apps/sharebymail/l10n/sv.js b/apps/sharebymail/l10n/sv.js
index 8a7f1889588..cafa392e74c 100644
--- a/apps/sharebymail/l10n/sv.js
+++ b/apps/sharebymail/l10n/sv.js
@@ -16,11 +16,25 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "Lösenord till {file} sändes till {email}",
"Password to access %1$s was sent to you" : "Lösenord för att nå %1$s sändes till dig",
"Password to access {file} was sent to you" : "Lösenord till {file} sändes till dig",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Vi kan inte skicka det autogenererade lösenordet till dig. Vänligen ange en giltig e-postadress i dina personliga inställningar och försök igen.",
"Failed to send share by email" : "Misslyckades att sända delning med e-post",
+ "%1$s shared »%2$s« with you" : "%1$s delade »%2$s« med dig",
+ "%1$s shared »%2$s« with you." : "%1$s delade »%2$s« med dig.",
"Click the button below to open it." : "Klicka på knappen nedan för att öppna det.",
"Open »%s«" : "Öppna »%s«",
+ "%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s delade »%2$s« med dig.\nDu borde redan ha fått ett separat mail med en länk för åtkomst till den.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s delade »%2$s« med dig. Du borde redan ha fått ett separat mail med en länk för åtkomst till den.",
+ "Password to access »%1$s« shared to you by %2$s" : "Lösenord för access till »%1$s« delad med dig av %2$s",
"Password to access »%s«" : "Lösenord för att nå »%s«",
+ "It is protected with the following password:" : "Den är skyddad med följande lösenord:",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s delade »%2$s« med dig och vill lägga till:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s delade »%2$s« med dig och vill lägga till",
+ "»%s« added a note to a file shared with you" : "»%s« la till en kommentar till en fil delad med dig",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du delade precis »%1$s« med %2$s. Delningen var redan skickat till mottagaren. På grund av säkerhetspolicyn definierad av administratören av %3$s måste varje delning vara lösenordsskyddad och det är inte tillåtet att skicka lösenordet direkt till mottagaren. Därför behöver du vidarebefordra lösenordet manuellt till mottagaren.",
+ "Password to access »%1$s« shared with %2$s" : "Lösenord för access till »%1$s« delad med %2$s",
+ "This is the password:" : "Detta är lösenordet:",
"You can choose a different password at any time in the share dialog." : "Du kan välja ett annat lösenord när som helst i delningsdialogen.",
"Could not find share" : "Kunde inte hitta delning",
"Share by mail" : "Dela via e-post",
diff --git a/apps/sharebymail/l10n/sv.json b/apps/sharebymail/l10n/sv.json
index bf2274423f7..3fb9b044787 100644
--- a/apps/sharebymail/l10n/sv.json
+++ b/apps/sharebymail/l10n/sv.json
@@ -14,11 +14,25 @@
"Password to access {file} was sent to {email}" : "Lösenord till {file} sändes till {email}",
"Password to access %1$s was sent to you" : "Lösenord för att nå %1$s sändes till dig",
"Password to access {file} was sent to you" : "Lösenord till {file} sändes till dig",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Vi kan inte skicka det autogenererade lösenordet till dig. Vänligen ange en giltig e-postadress i dina personliga inställningar och försök igen.",
"Failed to send share by email" : "Misslyckades att sända delning med e-post",
+ "%1$s shared »%2$s« with you" : "%1$s delade »%2$s« med dig",
+ "%1$s shared »%2$s« with you." : "%1$s delade »%2$s« med dig.",
"Click the button below to open it." : "Klicka på knappen nedan för att öppna det.",
"Open »%s«" : "Öppna »%s«",
+ "%1$s via %2$s" : "%1$s via %2$s",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s delade »%2$s« med dig.\nDu borde redan ha fått ett separat mail med en länk för åtkomst till den.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s delade »%2$s« med dig. Du borde redan ha fått ett separat mail med en länk för åtkomst till den.",
+ "Password to access »%1$s« shared to you by %2$s" : "Lösenord för access till »%1$s« delad med dig av %2$s",
"Password to access »%s«" : "Lösenord för att nå »%s«",
+ "It is protected with the following password:" : "Den är skyddad med följande lösenord:",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s delade »%2$s« med dig och vill lägga till:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s delade »%2$s« med dig och vill lägga till",
+ "»%s« added a note to a file shared with you" : "»%s« la till en kommentar till en fil delad med dig",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du delade precis »%1$s« med %2$s. Delningen var redan skickat till mottagaren. På grund av säkerhetspolicyn definierad av administratören av %3$s måste varje delning vara lösenordsskyddad och det är inte tillåtet att skicka lösenordet direkt till mottagaren. Därför behöver du vidarebefordra lösenordet manuellt till mottagaren.",
+ "Password to access »%1$s« shared with %2$s" : "Lösenord för access till »%1$s« delad med %2$s",
+ "This is the password:" : "Detta är lösenordet:",
"You can choose a different password at any time in the share dialog." : "Du kan välja ett annat lösenord när som helst i delningsdialogen.",
"Could not find share" : "Kunde inte hitta delning",
"Share by mail" : "Dela via e-post",
diff --git a/apps/sharebymail/l10n/tr.js b/apps/sharebymail/l10n/tr.js
index 1c83d5a24fc..a49a83e86e9 100644
--- a/apps/sharebymail/l10n/tr.js
+++ b/apps/sharebymail/l10n/tr.js
@@ -16,16 +16,24 @@ OC.L10N.register(
"Password to access {file} was sent to {email}" : "{file} dosyasına erişim parolası {email} adresine gönderildi",
"Password to access %1$s was sent to you" : "%1$s dosyasına erişim parolası size gönderildi",
"Password to access {file} was sent to you" : "{file} dosyasına erişim parolası size gönderildi",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "%1$s paylaşılamadı, bu öge zaten %2$s ile paylaşılmış",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Otomatik üretilen parola size gönderilemedi. Lütfen kişisel ayarlarınızdan geçerli bir e-posta adresi ayarlayın ve yeniden deneyin.",
"Failed to send share by email" : "Paylaşım e-postası gönderilemedi",
+ "%1$s shared »%2$s« with you" : "%1$s, sizinle »%2$s« ögesini paylaştı",
+ "%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"Open »%s«" : "»%s« Aç",
"%1$s via %2$s" : "%1$s, %2$s aracılığıyla",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s sizinle »%2$s« ögesini paylaştı.\nErişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s sizinle »%2$s« ögesini paylaştı. Erişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.",
+ "Password to access »%1$s« shared to you by %2$s" : "»%1$s« için sizin tarafınızdan %2$s üzerinden paylaşılan erişim parolası",
"Password to access »%s«" : "»%s« erişim parolası",
"It is protected with the following password:" : "Şu parola ile korunuyor:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor",
"»%s« added a note to a file shared with you" : "»%s« sizinle paylaştığı bir dosyaya bir not ekledi",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "»%1$s« ögesini %2$s ile paylaştınız. Paylaşım alıcıya gönderildi. %3$s yöneticisi tarafından belirlenmiş güvenlik ilkelerine göre her bir paylaşım için bir parola belirtilmesi ve bu parolanın alıcıya doğrudan gönderilmemesi gerekiyor. Bu nedenle parolayı alıcıya el ile siz iletmelisiniz.",
+ "Password to access »%1$s« shared with %2$s" : "»%1$s« için %2$s üzerinden paylaşılan erişim parolası",
"This is the password:" : "Parola:",
"You can choose a different password at any time in the share dialog." : "İstediğiniz zaman paylaşım bölümünden farklı bir parola belirtebilirsiniz.",
"Could not find share" : "Paylaşım bulunamadı",
diff --git a/apps/sharebymail/l10n/tr.json b/apps/sharebymail/l10n/tr.json
index c259c579bca..23080bbd73b 100644
--- a/apps/sharebymail/l10n/tr.json
+++ b/apps/sharebymail/l10n/tr.json
@@ -14,16 +14,24 @@
"Password to access {file} was sent to {email}" : "{file} dosyasına erişim parolası {email} adresine gönderildi",
"Password to access %1$s was sent to you" : "%1$s dosyasına erişim parolası size gönderildi",
"Password to access {file} was sent to you" : "{file} dosyasına erişim parolası size gönderildi",
+ "Sharing %1$s failed, this item is already shared with %2$s" : "%1$s paylaşılamadı, bu öge zaten %2$s ile paylaşılmış",
"We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Otomatik üretilen parola size gönderilemedi. Lütfen kişisel ayarlarınızdan geçerli bir e-posta adresi ayarlayın ve yeniden deneyin.",
"Failed to send share by email" : "Paylaşım e-postası gönderilemedi",
+ "%1$s shared »%2$s« with you" : "%1$s, sizinle »%2$s« ögesini paylaştı",
+ "%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"Open »%s«" : "»%s« Aç",
"%1$s via %2$s" : "%1$s, %2$s aracılığıyla",
+ "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s sizinle »%2$s« ögesini paylaştı.\nErişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.\n",
+ "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s sizinle »%2$s« ögesini paylaştı. Erişim bağlantısını içeren başka bir e-posta daha almış olmalısınız.",
+ "Password to access »%1$s« shared to you by %2$s" : "»%1$s« için sizin tarafınızdan %2$s üzerinden paylaşılan erişim parolası",
"Password to access »%s«" : "»%s« erişim parolası",
"It is protected with the following password:" : "Şu parola ile korunuyor:",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor",
"»%s« added a note to a file shared with you" : "»%s« sizinle paylaştığı bir dosyaya bir not ekledi",
+ "You just shared »%1$s« with %2$s. The share was already send to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "»%1$s« ögesini %2$s ile paylaştınız. Paylaşım alıcıya gönderildi. %3$s yöneticisi tarafından belirlenmiş güvenlik ilkelerine göre her bir paylaşım için bir parola belirtilmesi ve bu parolanın alıcıya doğrudan gönderilmemesi gerekiyor. Bu nedenle parolayı alıcıya el ile siz iletmelisiniz.",
+ "Password to access »%1$s« shared with %2$s" : "»%1$s« için %2$s üzerinden paylaşılan erişim parolası",
"This is the password:" : "Parola:",
"You can choose a different password at any time in the share dialog." : "İstediğiniz zaman paylaşım bölümünden farklı bir parola belirtebilirsiniz.",
"Could not find share" : "Paylaşım bulunamadı",
diff --git a/apps/sharebymail/l10n/zh_CN.js b/apps/sharebymail/l10n/zh_CN.js
index e09050b6441..208e6366682 100644
--- a/apps/sharebymail/l10n/zh_CN.js
+++ b/apps/sharebymail/l10n/zh_CN.js
@@ -1,16 +1,16 @@
OC.L10N.register(
"sharebymail",
{
- "Shared with %1$s" : "与 %1$s 分享",
- "Shared with {email}" : "用 {email} 分享",
+ "Shared with %1$s" : "与 %1$s 共享",
+ "Shared with {email}" : "用 {email} 共享",
"Shared with %1$s by %2$s" : "由 %2$s 共享给 %1$s",
- "Shared with {email} by {actor}" : "由 {actor} 通过 {email} 分享",
+ "Shared with {email} by {actor}" : "由 {actor} 通过 {email} 共享",
"Password for mail share sent to %1$s" : "发送给%1$s的邮件共享的密码",
"Password for mail share sent to {email}" : "Password for mail share sent to {email}",
"Password for mail share sent to you" : "发送给您的邮件共享的密码",
- "You shared %1$s with %2$s by mail" : "您通过邮件把 %1$s 分享给了 %2$s",
- "You shared {file} with {email} by mail" : "您通过邮件 {email} 分享了 {file} ",
- "%3$s shared %1$s with %2$s by mail" : "%3$s 通过邮件将 %1$s 分享给了 %2$s",
+ "You shared %1$s with %2$s by mail" : "您通过邮件把 %1$s 共享给了 %2$s",
+ "You shared {file} with {email} by mail" : "您通过邮件 {email} 共享了 {file} ",
+ "%3$s shared %1$s with %2$s by mail" : "%3$s 通过邮件将 %1$s 共享给了 %2$s",
"{actor} shared {file} with {email} by mail" : "{actor} 共享 {file} 于 {email} 通过邮件",
"Password to access %1$s was sent to %2s" : "访问 %1$s 的密码被发送给 %2s",
"Password to access {file} was sent to {email}" : "访问 {file} 的密码被发送给 {email}",
@@ -30,13 +30,13 @@ OC.L10N.register(
"Sharing %s failed, this item is already shared with %s" : "共享 %s 失败, 该项目已经共享于 %s",
"Failed to send share by E-mail" : "通过电子邮件发送共享失败",
"%s shared »%s« with you" : "%s 共享 »%s« 与你",
- "%s shared »%s« with you." : "%s 与你分享分享 »%s« ",
+ "%s shared »%s« with you." : "%s 与你共享共享 »%s« ",
"%s via %s" : "%s通过%s",
- "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s分享",
+ "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s共享",
"%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s与您共享了%s\n访问链接已另外以邮件方式发送到您的邮箱\n",
"%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s与您共享了%s。访问链接已另外以邮件方式发送到您的邮箱。",
"It is protected with the following password: %s" : "已被已下密码保护:%s",
- "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享",
+ "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s共享",
"You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。",
"This is the password: %s" : "这是密码: %s"
},
diff --git a/apps/sharebymail/l10n/zh_CN.json b/apps/sharebymail/l10n/zh_CN.json
index 9c78e6f5db2..edbff68877f 100644
--- a/apps/sharebymail/l10n/zh_CN.json
+++ b/apps/sharebymail/l10n/zh_CN.json
@@ -1,14 +1,14 @@
{ "translations": {
- "Shared with %1$s" : "与 %1$s 分享",
- "Shared with {email}" : "用 {email} 分享",
+ "Shared with %1$s" : "与 %1$s 共享",
+ "Shared with {email}" : "用 {email} 共享",
"Shared with %1$s by %2$s" : "由 %2$s 共享给 %1$s",
- "Shared with {email} by {actor}" : "由 {actor} 通过 {email} 分享",
+ "Shared with {email} by {actor}" : "由 {actor} 通过 {email} 共享",
"Password for mail share sent to %1$s" : "发送给%1$s的邮件共享的密码",
"Password for mail share sent to {email}" : "Password for mail share sent to {email}",
"Password for mail share sent to you" : "发送给您的邮件共享的密码",
- "You shared %1$s with %2$s by mail" : "您通过邮件把 %1$s 分享给了 %2$s",
- "You shared {file} with {email} by mail" : "您通过邮件 {email} 分享了 {file} ",
- "%3$s shared %1$s with %2$s by mail" : "%3$s 通过邮件将 %1$s 分享给了 %2$s",
+ "You shared %1$s with %2$s by mail" : "您通过邮件把 %1$s 共享给了 %2$s",
+ "You shared {file} with {email} by mail" : "您通过邮件 {email} 共享了 {file} ",
+ "%3$s shared %1$s with %2$s by mail" : "%3$s 通过邮件将 %1$s 共享给了 %2$s",
"{actor} shared {file} with {email} by mail" : "{actor} 共享 {file} 于 {email} 通过邮件",
"Password to access %1$s was sent to %2s" : "访问 %1$s 的密码被发送给 %2s",
"Password to access {file} was sent to {email}" : "访问 {file} 的密码被发送给 {email}",
@@ -28,13 +28,13 @@
"Sharing %s failed, this item is already shared with %s" : "共享 %s 失败, 该项目已经共享于 %s",
"Failed to send share by E-mail" : "通过电子邮件发送共享失败",
"%s shared »%s« with you" : "%s 共享 »%s« 与你",
- "%s shared »%s« with you." : "%s 与你分享分享 »%s« ",
+ "%s shared »%s« with you." : "%s 与你共享共享 »%s« ",
"%s via %s" : "%s通过%s",
- "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s分享",
+ "Password to access »%s« shared to you by %s" : "使用密码访问»%s«由%s共享",
"%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s与您共享了%s\n访问链接已另外以邮件方式发送到您的邮箱\n",
"%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s与您共享了%s。访问链接已另外以邮件方式发送到您的邮箱。",
"It is protected with the following password: %s" : "已被已下密码保护:%s",
- "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s分享",
+ "Password to access »%s« shared with %s" : "使用密码访问»%s«与%s共享",
"You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "您与%s共享»%s«已发送给收件人。由于%s管理员定义的安全策略, 每个共享都需要受密码保护, 并且不允许直接向收件人发送密码。因此, 您需要将密码手动转发给收件人。",
"This is the password: %s" : "这是密码: %s"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/systemtags/js/app.js b/apps/systemtags/js/app.js
index 04ac53d3b32..2ef88564528 100644
--- a/apps/systemtags/js/app.js
+++ b/apps/systemtags/js/app.js
@@ -28,7 +28,12 @@
{
id: 'systemtags',
fileActions: this._createFileActions(),
- config: OCA.Files.App.getFilesConfig()
+ config: OCA.Files.App.getFilesConfig(),
+ // The file list is created when a "show" event is handled,
+ // so it should be marked as "shown" like it would have been
+ // done if handling the event with the file list already
+ // created.
+ shown: true
}
);
diff --git a/apps/systemtags/l10n/bg.js b/apps/systemtags/l10n/bg.js
index 128e2a2b8d9..70bb09d9a1c 100644
--- a/apps/systemtags/l10n/bg.js
+++ b/apps/systemtags/l10n/bg.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "Етикети",
- "Update" : "Обнови",
+ "Update" : "Актуализирай",
"Create" : "Създай",
"Select tag…" : "Изберете етикет...",
"Tagged files" : "Отбелязани файлове",
diff --git a/apps/systemtags/l10n/bg.json b/apps/systemtags/l10n/bg.json
index 8123859ce1f..ecce9e4b3ce 100644
--- a/apps/systemtags/l10n/bg.json
+++ b/apps/systemtags/l10n/bg.json
@@ -1,6 +1,6 @@
{ "translations": {
"Tags" : "Етикети",
- "Update" : "Обнови",
+ "Update" : "Актуализирай",
"Create" : "Създай",
"Select tag…" : "Изберете етикет...",
"Tagged files" : "Отбелязани файлове",
diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js
index 28f7645eae7..af9c584265c 100644
--- a/apps/theming/js/settings-admin.js
+++ b/apps/theming/js/settings-admin.js
@@ -43,7 +43,7 @@ function preview(setting, value, serverCssUrl) {
var reloadStylesheets = function(cssFile) {
var queryString = '?reload=' + new Date().getTime();
var url = cssFile + queryString;
- var old = $('link[href*="' + cssFile.replace("/","\/") + '"]');
+ var old = $('link[href*="' + cssFile + '"]');
var stylesheet = $("<link/>", {
rel: "stylesheet",
type: "text/css",
diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js
index 274b963e84b..ae6f1cee417 100644
--- a/apps/theming/l10n/hu.js
+++ b/apps/theming/l10n/hu.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Loading preview…" : "Előnézet betöltése...",
"Saved" : "Mentve!",
- "Admin" : "Adminisztrátor",
+ "Admin" : "Rendszergazda",
"a safe home for all your data" : "biztonságos hely az adataid számára",
"Name cannot be empty" : "A név nem lehet üres",
"The given name is too long" : "A bevitt név túl hosszú",
diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json
index d5dc8883c08..86c3acf582f 100644
--- a/apps/theming/l10n/hu.json
+++ b/apps/theming/l10n/hu.json
@@ -1,7 +1,7 @@
{ "translations": {
"Loading preview…" : "Előnézet betöltése...",
"Saved" : "Mentve!",
- "Admin" : "Adminisztrátor",
+ "Admin" : "Rendszergazda",
"a safe home for all your data" : "biztonságos hely az adataid számára",
"Name cannot be empty" : "A név nem lehet üres",
"The given name is too long" : "A bevitt név túl hosszú",
diff --git a/apps/theming/l10n/tr.js b/apps/theming/l10n/tr.js
index d2697525166..793db2fa3ed 100644
--- a/apps/theming/l10n/tr.js
+++ b/apps/theming/l10n/tr.js
@@ -37,8 +37,8 @@ OC.L10N.register(
"Logo" : "Logo",
"Upload new logo" : "Yeni logo yükle",
"Login image" : "Oturum açma görseli",
- "Upload new login background" : "Yeni oturum açma art alanı yükle",
- "Remove background image" : "Art alan görselini kaldır",
+ "Upload new login background" : "Yeni oturum açma arka planı yükle",
+ "Remove background image" : "Arka plan görselini kaldır",
"Advanced options" : "Gelişmiş ayarlar",
"Legal notice link" : "Yasal bildirim bağlantısı",
"Privacy policy link" : "Kişisel gizlilik ilkesi bağlantısı",
diff --git a/apps/theming/l10n/tr.json b/apps/theming/l10n/tr.json
index 8428979cf91..ac5baa6ed74 100644
--- a/apps/theming/l10n/tr.json
+++ b/apps/theming/l10n/tr.json
@@ -35,8 +35,8 @@
"Logo" : "Logo",
"Upload new logo" : "Yeni logo yükle",
"Login image" : "Oturum açma görseli",
- "Upload new login background" : "Yeni oturum açma art alanı yükle",
- "Remove background image" : "Art alan görselini kaldır",
+ "Upload new login background" : "Yeni oturum açma arka planı yükle",
+ "Remove background image" : "Arka plan görselini kaldır",
"Advanced options" : "Gelişmiş ayarlar",
"Legal notice link" : "Yasal bildirim bağlantısı",
"Privacy policy link" : "Kişisel gizlilik ilkesi bağlantısı",
diff --git a/apps/twofactor_backupcodes/l10n/cs.js b/apps/twofactor_backupcodes/l10n/cs.js
index 03808e2690c..0861065ec70 100644
--- a/apps/twofactor_backupcodes/l10n/cs.js
+++ b/apps/twofactor_backupcodes/l10n/cs.js
@@ -22,10 +22,13 @@ OC.L10N.register(
"Nextcloud backup codes" : "Nextcloud záložní kódy",
"You created two-factor backup codes for your account" : "Vytvořili jste záložní kódy dvoufázového ověření pro váš účet",
"Second-factor backup codes" : "Dvoufázové záložní kódy",
+ "You have enabled two-factor authentication but have not yet generated backup codes. Be sure to do this in case you lose access to your second factor." : "Máte zapnuté dvouúrovňové ověřování ale zatím jste nenechali vytvořit záložní kódy. Určitě to udělejte pro případ ztráty přístupu k druhé fázi.",
"Backup code" : "Záložní kód",
"Use backup code" : "Použít záložní kód",
"Two factor backup codes" : "Záložní kódy pro dvoufázové ověřování",
"A two-factor auth backup codes provider" : "Poskytovatel záložních kódů pro dvoustupňové ověřování",
+ "Use one of the backup codes you saved when setting up two-factor authentication." : "Použijte jeden ze svých záložních kódů které jste si uložili při nastavování dvoufázového ověřování.",
+ "Submit" : "Odeslat",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Záložní kódy byly vytvořeny. {{used}} z {{total}} kódů bylo využito."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/twofactor_backupcodes/l10n/cs.json b/apps/twofactor_backupcodes/l10n/cs.json
index b39799e813b..48bbf9d1b65 100644
--- a/apps/twofactor_backupcodes/l10n/cs.json
+++ b/apps/twofactor_backupcodes/l10n/cs.json
@@ -20,10 +20,13 @@
"Nextcloud backup codes" : "Nextcloud záložní kódy",
"You created two-factor backup codes for your account" : "Vytvořili jste záložní kódy dvoufázového ověření pro váš účet",
"Second-factor backup codes" : "Dvoufázové záložní kódy",
+ "You have enabled two-factor authentication but have not yet generated backup codes. Be sure to do this in case you lose access to your second factor." : "Máte zapnuté dvouúrovňové ověřování ale zatím jste nenechali vytvořit záložní kódy. Určitě to udělejte pro případ ztráty přístupu k druhé fázi.",
"Backup code" : "Záložní kód",
"Use backup code" : "Použít záložní kód",
"Two factor backup codes" : "Záložní kódy pro dvoufázové ověřování",
"A two-factor auth backup codes provider" : "Poskytovatel záložních kódů pro dvoustupňové ověřování",
+ "Use one of the backup codes you saved when setting up two-factor authentication." : "Použijte jeden ze svých záložních kódů které jste si uložili při nastavování dvoufázového ověřování.",
+ "Submit" : "Odeslat",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Záložní kódy byly vytvořeny. {{used}} z {{total}} kódů bylo využito."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/nl.js b/apps/twofactor_backupcodes/l10n/nl.js
index 454c99e5caf..3e4e61f4056 100644
--- a/apps/twofactor_backupcodes/l10n/nl.js
+++ b/apps/twofactor_backupcodes/l10n/nl.js
@@ -23,10 +23,12 @@ OC.L10N.register(
"Nextcloud backup codes" : "Nextcloud backup codes",
"You created two-factor backup codes for your account" : "Je creëerde tweefactor back-up codes voor je account",
"Second-factor backup codes" : "Twee-factor backup code",
+ "You have enabled two-factor authentication but have not yet generated backup codes. Be sure to do this in case you lose access to your second factor." : "Je hebt tweefactor authenticatie ingeschakeld, maar nog geen backup codes gegenereerd. Doe dat eerst, voor het geval dat je toegang tot je tweede factor apparaat kwijt bent.",
"Backup code" : "Backup code",
"Use backup code" : "Gebruik backup code",
"Two factor backup codes" : "Twee-factor backupcode",
"A two-factor auth backup codes provider" : "Een two-factor auth backup codes provider",
+ "Use one of the backup codes you saved when setting up two-factor authentication." : "Gebruik een van de backupcodes die je bewaarde bij het inschakelen van de twee-factor authenticatie.",
"Submit" : "Verwerken",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Backup codes zijn gegenereerd. {{used}} van {{total}} codes zijn gebruikt."
},
diff --git a/apps/twofactor_backupcodes/l10n/nl.json b/apps/twofactor_backupcodes/l10n/nl.json
index f500f138f2d..cf8712fb5c9 100644
--- a/apps/twofactor_backupcodes/l10n/nl.json
+++ b/apps/twofactor_backupcodes/l10n/nl.json
@@ -21,10 +21,12 @@
"Nextcloud backup codes" : "Nextcloud backup codes",
"You created two-factor backup codes for your account" : "Je creëerde tweefactor back-up codes voor je account",
"Second-factor backup codes" : "Twee-factor backup code",
+ "You have enabled two-factor authentication but have not yet generated backup codes. Be sure to do this in case you lose access to your second factor." : "Je hebt tweefactor authenticatie ingeschakeld, maar nog geen backup codes gegenereerd. Doe dat eerst, voor het geval dat je toegang tot je tweede factor apparaat kwijt bent.",
"Backup code" : "Backup code",
"Use backup code" : "Gebruik backup code",
"Two factor backup codes" : "Twee-factor backupcode",
"A two-factor auth backup codes provider" : "Een two-factor auth backup codes provider",
+ "Use one of the backup codes you saved when setting up two-factor authentication." : "Gebruik een van de backupcodes die je bewaarde bij het inschakelen van de twee-factor authenticatie.",
"Submit" : "Verwerken",
"Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Backup codes zijn gegenereerd. {{used}} van {{total}} codes zijn gebruikt."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/twofactor_backupcodes/l10n/sv.js b/apps/twofactor_backupcodes/l10n/sv.js
index 7d3321a2a61..b222aa0a5e7 100644
--- a/apps/twofactor_backupcodes/l10n/sv.js
+++ b/apps/twofactor_backupcodes/l10n/sv.js
@@ -1,18 +1,23 @@
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.",
+ "activated" : "aktiverad",
+ "updated" : "uppdaterad",
+ "mounted" : "monterad",
+ "deactivated" : "inaktiverad",
+ "created" : "skapad",
"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.",
+ "Generate backup codes" : "Generera återställningsnycklar",
"An error occurred while generating your backup codes" : "Ett fel uppstod vid skapandet av nya återställningsnycklar",
"Nextcloud backup codes" : "Nextcloud återställningsnycklar",
"You created two-factor backup codes for your account" : "Du skapade återställningsnycklar till tvåfaktorsautentiseringen på ditt användarkonto.",
+ "Second-factor backup codes" : "Tvåfaktorsautentisering",
"Backup code" : "Återställningsnyckel",
"Use backup code" : "Använd återställningsnyckel",
- "Second-factor backup codes" : "Tvåfaktorsautentisering"
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Återställningsnycklarna har skapats. {{used}} av {{total}} nycklar har använts."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/twofactor_backupcodes/l10n/sv.json b/apps/twofactor_backupcodes/l10n/sv.json
index 102061b0bf1..ff6dd4b59d1 100644
--- a/apps/twofactor_backupcodes/l10n/sv.json
+++ b/apps/twofactor_backupcodes/l10n/sv.json
@@ -1,16 +1,21 @@
{ "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.",
+ "activated" : "aktiverad",
+ "updated" : "uppdaterad",
+ "mounted" : "monterad",
+ "deactivated" : "inaktiverad",
+ "created" : "skapad",
"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.",
+ "Generate backup codes" : "Generera återställningsnycklar",
"An error occurred while generating your backup codes" : "Ett fel uppstod vid skapandet av nya återställningsnycklar",
"Nextcloud backup codes" : "Nextcloud återställningsnycklar",
"You created two-factor backup codes for your account" : "Du skapade återställningsnycklar till tvåfaktorsautentiseringen på ditt användarkonto.",
+ "Second-factor backup codes" : "Tvåfaktorsautentisering",
"Backup code" : "Återställningsnyckel",
"Use backup code" : "Använd återställningsnyckel",
- "Second-factor backup codes" : "Tvåfaktorsautentisering"
+ "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Återställningsnycklarna har skapats. {{used}} av {{total}} nycklar har använts."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/bg.js b/apps/updatenotification/l10n/bg.js
index 0060daee1c0..038675dae00 100644
--- a/apps/updatenotification/l10n/bg.js
+++ b/apps/updatenotification/l10n/bg.js
@@ -1,23 +1,25 @@
OC.L10N.register(
"updatenotification",
{
- "{version} is available. Get more information on how to update." : "{version} е налична. Намерете повече информация за това как да актуализирате.",
- "Open updater" : "Отвори актуализиращата програма",
- "Your version is up to date." : "Вие разполагате с последна версия",
- "Update 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 does not support updates of the server." : "Избрания канал за обновления не поддържа сървърни актуализации.",
- "Could not start updater, please try the manual update" : "Актуализиращата програма не беше стартирана. Моля, опитайте ръчно обновление",
- "Update notifications" : "Известия за обновления",
+ "{version} is available. Get more information on how to update." : "{version} е налична. Намерете допълнителна информация за това как да актуализирате.",
+ "Update notifications" : "Известия за актуализации",
"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 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 е налично.",
+ "Open updater" : "Отвори актуализиращата програма",
+ "The update check is not yet finished. Please refresh the page." : "Проверката за актуализации не е приключила. Опреснете страницата.",
+ "Update 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 does not support updates of the server." : "Избрания канал за актуализации не поддържа сървърни актуализации.",
+ "View changelog" : "Преглед на списъка с промени",
+ "Could not start updater, please try the manual update" : "Актуализиращата програма не беше стартирана. Моля, опитайте ръчно обновление",
"A new version is available: %s" : "Налична е нова версия: %s",
"Download now" : "Изтегляне сега",
- "Checked on %s" : "Проверено за %s",
- "The selected update channel makes dedicated notifications for the server obsolete." : "Избрания канал за обновления прави уведомленията за този сървър остарели."
+ "Your version is up to date." : "Ползвате последната версия.",
+ "Checked on %s" : "Проверено на %s",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Избрания канал за актуализации прави известията за този сървър остарели."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/bg.json b/apps/updatenotification/l10n/bg.json
index 4e9e5cdb6cd..e8050908a87 100644
--- a/apps/updatenotification/l10n/bg.json
+++ b/apps/updatenotification/l10n/bg.json
@@ -1,21 +1,23 @@
{ "translations": {
- "{version} is available. Get more information on how to update." : "{version} е налична. Намерете повече информация за това как да актуализирате.",
- "Open updater" : "Отвори актуализиращата програма",
- "Your version is up to date." : "Вие разполагате с последна версия",
- "Update 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 does not support updates of the server." : "Избрания канал за обновления не поддържа сървърни актуализации.",
- "Could not start updater, please try the manual update" : "Актуализиращата програма не беше стартирана. Моля, опитайте ръчно обновление",
- "Update notifications" : "Известия за обновления",
+ "{version} is available. Get more information on how to update." : "{version} е налична. Намерете допълнителна информация за това как да актуализирате.",
+ "Update notifications" : "Известия за актуализации",
"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 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 е налично.",
+ "Open updater" : "Отвори актуализиращата програма",
+ "The update check is not yet finished. Please refresh the page." : "Проверката за актуализации не е приключила. Опреснете страницата.",
+ "Update 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 does not support updates of the server." : "Избрания канал за актуализации не поддържа сървърни актуализации.",
+ "View changelog" : "Преглед на списъка с промени",
+ "Could not start updater, please try the manual update" : "Актуализиращата програма не беше стартирана. Моля, опитайте ръчно обновление",
"A new version is available: %s" : "Налична е нова версия: %s",
"Download now" : "Изтегляне сега",
- "Checked on %s" : "Проверено за %s",
- "The selected update channel makes dedicated notifications for the server obsolete." : "Избрания канал за обновления прави уведомленията за този сървър остарели."
+ "Your version is up to date." : "Ползвате последната версия.",
+ "Checked on %s" : "Проверено на %s",
+ "The selected update channel makes dedicated notifications for the server obsolete." : "Избрания канал за актуализации прави известията за този сървър остарели."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/css/renewPassword.css b/apps/user_ldap/css/renewPassword.css
index 7493789eab0..9f49dc23cae 100644
--- a/apps/user_ldap/css/renewPassword.css
+++ b/apps/user_ldap/css/renewPassword.css
@@ -22,7 +22,7 @@
.tooltip {
position:absolute;
display:block;
- font-family:'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+ font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
font-style:normal;
font-weight:400;
letter-spacing:normal;
diff --git a/apps/user_ldap/l10n/hu.js b/apps/user_ldap/l10n/hu.js
index 7b12424b429..a81ba8a2ed6 100644
--- a/apps/user_ldap/l10n/hu.js
+++ b/apps/user_ldap/l10n/hu.js
@@ -81,7 +81,7 @@ OC.L10N.register(
"LDAP / AD Username:" : "LDAP / AD felhasználónév:",
"Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Bejelentkezés engedélyezése LDAP / AD felhasználónévvel, ami vagy \"uid\" vagy \"sAMAccountName\" és fel lesz ismerve.",
"LDAP / AD Email Address:" : "LDAP / AD e-mail cím:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Bejelentkezés engedélyezése az email attribútum alapján. \"mail\" és \"mailPrimaryAddress\" megengedett.",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Bejelentkezés engedélyezése az e-mail attribútum alapján. \"mail\" és \"mailPrimaryAddress\" megengedett.",
"Other Attributes:" : "Más attribútumok:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "A belépéskor alkalmazandó filtert definiálja. \"%%uid\" lecseréli a felhasználónevez a bejelentkezésnél. Példa: \"uid=%%uid\"",
"Test Loginname" : "Teszt bejelentkezési név",
@@ -106,7 +106,7 @@ OC.L10N.register(
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Kerülje az automata LDAP kéréseket. Hasznos nagy telepítéseknél, de némi LDAP ismeretet igényel.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP szűrők kézi beállitása (ajánlott a nagy könyvtáraknál)",
"Listing and searching for users is constrained by these criteria:" : "Felhasználók keresésének és listázásának szabályozása ezekkel a szabályokkal:",
- "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." : "A leggyakoribb objektum osztályok a felhasználóknál az organizationalPerson, person, user, és inetOrgPerson. Ha nem vagy benne biztos melyik osztályt válaszd, kérlek konzultálj a könyvtár adminnal.",
+ "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." : "A leggyakoribb objektum osztályok a felhasználóknál az organizationalPerson, person, user, és inetOrgPerson. Ha nem vagy benne biztos melyik osztályt válaszd, kérlek konzultálj a könyvtár rendszergazdájával.",
"The filter specifies which LDAP users shall have access to the %s instance." : "A szűrő meghatározza, hogy mely LDAP felhasználók lesznek jogosultak %s elérésére.",
"Verify settings and count users" : "Beállítások ellenőrzése és felhasználók megszámolása",
"Saving" : "Mentés",
diff --git a/apps/user_ldap/l10n/hu.json b/apps/user_ldap/l10n/hu.json
index eb371ce986d..8bd314d9587 100644
--- a/apps/user_ldap/l10n/hu.json
+++ b/apps/user_ldap/l10n/hu.json
@@ -79,7 +79,7 @@
"LDAP / AD Username:" : "LDAP / AD felhasználónév:",
"Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Bejelentkezés engedélyezése LDAP / AD felhasználónévvel, ami vagy \"uid\" vagy \"sAMAccountName\" és fel lesz ismerve.",
"LDAP / AD Email Address:" : "LDAP / AD e-mail cím:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Bejelentkezés engedélyezése az email attribútum alapján. \"mail\" és \"mailPrimaryAddress\" megengedett.",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Bejelentkezés engedélyezése az e-mail attribútum alapján. \"mail\" és \"mailPrimaryAddress\" megengedett.",
"Other Attributes:" : "Más attribútumok:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "A belépéskor alkalmazandó filtert definiálja. \"%%uid\" lecseréli a felhasználónevez a bejelentkezésnél. Példa: \"uid=%%uid\"",
"Test Loginname" : "Teszt bejelentkezési név",
@@ -104,7 +104,7 @@
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Kerülje az automata LDAP kéréseket. Hasznos nagy telepítéseknél, de némi LDAP ismeretet igényel.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP szűrők kézi beállitása (ajánlott a nagy könyvtáraknál)",
"Listing and searching for users is constrained by these criteria:" : "Felhasználók keresésének és listázásának szabályozása ezekkel a szabályokkal:",
- "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." : "A leggyakoribb objektum osztályok a felhasználóknál az organizationalPerson, person, user, és inetOrgPerson. Ha nem vagy benne biztos melyik osztályt válaszd, kérlek konzultálj a könyvtár adminnal.",
+ "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." : "A leggyakoribb objektum osztályok a felhasználóknál az organizationalPerson, person, user, és inetOrgPerson. Ha nem vagy benne biztos melyik osztályt válaszd, kérlek konzultálj a könyvtár rendszergazdájával.",
"The filter specifies which LDAP users shall have access to the %s instance." : "A szűrő meghatározza, hogy mely LDAP felhasználók lesznek jogosultak %s elérésére.",
"Verify settings and count users" : "Beállítások ellenőrzése és felhasználók megszámolása",
"Saving" : "Mentés",
diff --git a/apps/workflowengine/l10n/ast.js b/apps/workflowengine/l10n/ast.js
index e246ee314ea..6a6862906ca 100644
--- a/apps/workflowengine/l10n/ast.js
+++ b/apps/workflowengine/l10n/ast.js
@@ -1,6 +1,10 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descipción curtia de la regla",
+ "Add rule" : "Amestar regla",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardóse",
"Saving failed:" : "Falló'l guardáu:",
"File MIME type" : "Triba MIME de ficheru",
@@ -45,10 +49,6 @@ OC.L10N.register(
"Operation %s is invalid" : "La operación %s nun ye válida",
"Workflow" : "Fluxu de trabayu",
"Open documentation" : "Abrir documentación",
- "Short rule description" : "Descipción curtia de la regla",
- "Add rule" : "Amestar regla",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/ast.json b/apps/workflowengine/l10n/ast.json
index d0ce0d77cf9..c856c4dfa09 100644
--- a/apps/workflowengine/l10n/ast.json
+++ b/apps/workflowengine/l10n/ast.json
@@ -1,4 +1,8 @@
{ "translations": {
+ "Short rule description" : "Descipción curtia de la regla",
+ "Add rule" : "Amestar regla",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardóse",
"Saving failed:" : "Falló'l guardáu:",
"File MIME type" : "Triba MIME de ficheru",
@@ -43,10 +47,6 @@
"Operation %s is invalid" : "La operación %s nun ye válida",
"Workflow" : "Fluxu de trabayu",
"Open documentation" : "Abrir documentación",
- "Short rule description" : "Descipción curtia de la regla",
- "Add rule" : "Amestar regla",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/bg.js b/apps/workflowengine/l10n/bg.js
index 62ce0277784..ba663db8706 100644
--- a/apps/workflowengine/l10n/bg.js
+++ b/apps/workflowengine/l10n/bg.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Кратко описание на правило",
+ "Add rule" : "Добави правило",
+ "Reset" : "Възстанови",
+ "Save" : "Запази",
+ "Saving…" : "Запазване...",
"Saved" : "Запазено",
"Saving failed:" : "Запазването се провали:",
+ "Add rule group" : "Добави група правила",
"File MIME type" : "Тип MIME файл",
"is" : "е",
"is not" : "не е",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "Проверка #%s не съществува",
"Workflow" : "Работен процес",
"Open documentation" : "Отвори документация",
- "Add rule group" : "Добави група правила",
- "Short rule description" : "Кратко описание на правило",
- "Add rule" : "Добави правило",
- "Reset" : "Възстанови",
- "Save" : "Запази",
- "Saving…" : "Запазване...",
"Loading…" : "Зареждане..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/bg.json b/apps/workflowengine/l10n/bg.json
index 72d74e83231..ad58fe82f5f 100644
--- a/apps/workflowengine/l10n/bg.json
+++ b/apps/workflowengine/l10n/bg.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Кратко описание на правило",
+ "Add rule" : "Добави правило",
+ "Reset" : "Възстанови",
+ "Save" : "Запази",
+ "Saving…" : "Запазване...",
"Saved" : "Запазено",
"Saving failed:" : "Запазването се провали:",
+ "Add rule group" : "Добави група правила",
"File MIME type" : "Тип MIME файл",
"is" : "е",
"is not" : "не е",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "Проверка #%s не съществува",
"Workflow" : "Работен процес",
"Open documentation" : "Отвори документация",
- "Add rule group" : "Добави група правила",
- "Short rule description" : "Кратко описание на правило",
- "Add rule" : "Добави правило",
- "Reset" : "Възстанови",
- "Save" : "Запази",
- "Saving…" : "Запазване...",
"Loading…" : "Зареждане..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ca.js b/apps/workflowengine/l10n/ca.js
index aee47ecfd93..a708a52d722 100644
--- a/apps/workflowengine/l10n/ca.js
+++ b/apps/workflowengine/l10n/ca.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripció breu de regla",
+ "Add rule" : "Afegir regla",
+ "Reset" : "Resetejar",
+ "Save" : "Desa",
+ "Saving…" : "Desant...",
"Group list is empty" : "La llista del grup és buida",
"Unable to retrieve the group list" : "No es pot obtenir la llista del grup",
"Saved" : "Desat",
"Saving failed:" : "Error al desar",
+ "Add rule group" : "Afegeix una regla de grup",
"File MIME type" : "Tipus MIME d\\'arxiu",
"is" : "és",
"is not" : "no és",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flux de treball",
"Files workflow engine" : "Fitxers del motor de flux de treball",
"Open documentation" : "Obrir documentació",
- "Add rule group" : "Afegeix una regla de grup",
- "Short rule description" : "Descripció breu de regla",
- "Add rule" : "Afegir regla",
- "Reset" : "Resetejar",
- "Save" : "Desa",
- "Saving…" : "Desant...",
"Loading…" : "Carregant..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/ca.json b/apps/workflowengine/l10n/ca.json
index 1dd46ebc020..6976e5dd848 100644
--- a/apps/workflowengine/l10n/ca.json
+++ b/apps/workflowengine/l10n/ca.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripció breu de regla",
+ "Add rule" : "Afegir regla",
+ "Reset" : "Resetejar",
+ "Save" : "Desa",
+ "Saving…" : "Desant...",
"Group list is empty" : "La llista del grup és buida",
"Unable to retrieve the group list" : "No es pot obtenir la llista del grup",
"Saved" : "Desat",
"Saving failed:" : "Error al desar",
+ "Add rule group" : "Afegeix una regla de grup",
"File MIME type" : "Tipus MIME d\\'arxiu",
"is" : "és",
"is not" : "no és",
@@ -61,12 +67,6 @@
"Workflow" : "Flux de treball",
"Files workflow engine" : "Fitxers del motor de flux de treball",
"Open documentation" : "Obrir documentació",
- "Add rule group" : "Afegeix una regla de grup",
- "Short rule description" : "Descripció breu de regla",
- "Add rule" : "Afegir regla",
- "Reset" : "Resetejar",
- "Save" : "Desa",
- "Saving…" : "Desant...",
"Loading…" : "Carregant..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js
index 830b90e971c..9a6790fbcce 100644
--- a/apps/workflowengine/l10n/cs.js
+++ b/apps/workflowengine/l10n/cs.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Krátký popis pravidla",
+ "Add rule" : "Přidat pravidlo",
+ "Reset" : "Obnovit",
+ "Save" : "Uložit",
+ "Saving…" : "Ukládání…",
"Group list is empty" : "Seznam skupin je prázdný",
"Unable to retrieve the group list" : "Nedaří se získat seznam skupin",
"Saved" : "Uloženo",
"Saving failed:" : "Ukládání se nezdařilo:",
+ "Add rule group" : "Přidat skupinu pravidel",
"File MIME type" : "MIME typ souboru",
"is" : "je",
"is not" : "není",
"matches" : "odpovídá",
"does not match" : "neodpovídá",
"Example: {placeholder}" : "Příklad: {placeholder}",
+ "File name" : "Název souboru",
"File size (upload)" : "Velikost souboru (nahráno)",
"less" : "menší",
"less or equals" : "menší nebo rovno",
@@ -64,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Postup práce",
"Files workflow engine" : "Engine práce se soubory",
"Open documentation" : "Otevřít dokumentaci",
- "Add rule group" : "Přidat skupinu pravidel",
- "Short rule description" : "Krátký popis pravidla",
- "Add rule" : "Přidat pravidlo",
- "Reset" : "Obnovit",
- "Save" : "Uložit",
- "Saving…" : "Ukládání…",
"Loading…" : "Načítání…"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json
index 28260df901c..768589bfa95 100644
--- a/apps/workflowengine/l10n/cs.json
+++ b/apps/workflowengine/l10n/cs.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "Krátký popis pravidla",
+ "Add rule" : "Přidat pravidlo",
+ "Reset" : "Obnovit",
+ "Save" : "Uložit",
+ "Saving…" : "Ukládání…",
"Group list is empty" : "Seznam skupin je prázdný",
"Unable to retrieve the group list" : "Nedaří se získat seznam skupin",
"Saved" : "Uloženo",
"Saving failed:" : "Ukládání se nezdařilo:",
+ "Add rule group" : "Přidat skupinu pravidel",
"File MIME type" : "MIME typ souboru",
"is" : "je",
"is not" : "není",
"matches" : "odpovídá",
"does not match" : "neodpovídá",
"Example: {placeholder}" : "Příklad: {placeholder}",
+ "File name" : "Název souboru",
"File size (upload)" : "Velikost souboru (nahráno)",
"less" : "menší",
"less or equals" : "menší nebo rovno",
@@ -62,12 +69,6 @@
"Workflow" : "Postup práce",
"Files workflow engine" : "Engine práce se soubory",
"Open documentation" : "Otevřít dokumentaci",
- "Add rule group" : "Přidat skupinu pravidel",
- "Short rule description" : "Krátký popis pravidla",
- "Add rule" : "Přidat pravidlo",
- "Reset" : "Obnovit",
- "Save" : "Uložit",
- "Saving…" : "Ukládání…",
"Loading…" : "Načítání…"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/da.js b/apps/workflowengine/l10n/da.js
index c2b0433e583..eef476e75b1 100644
--- a/apps/workflowengine/l10n/da.js
+++ b/apps/workflowengine/l10n/da.js
@@ -1,9 +1,15 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kort regelbeskrivelse",
+ "Add rule" : "Tilføj regel",
+ "Reset" : "Reset",
+ "Save" : "Gem",
+ "Saving…" : "Gemmer...",
"Unable to retrieve the group list" : "Kan ikke hente gruppelisten",
"Saved" : "Gemt",
"Saving failed:" : "Kunne ikke gemme:",
+ "Add rule group" : "Tilføj regelgruppe",
"File MIME type" : "Fil MIME type",
"is" : "er",
"is not" : "er ikke",
@@ -62,12 +68,6 @@ OC.L10N.register(
"Workflow" : "Workflow",
"Files workflow engine" : "Filer workflow motoren",
"Open documentation" : "Åben dokumentationen",
- "Add rule group" : "Tilføj regelgruppe",
- "Short rule description" : "Kort regelbeskrivelse",
- "Add rule" : "Tilføj regel",
- "Reset" : "Reset",
- "Save" : "Gem",
- "Saving…" : "Gemmer...",
"Loading…" : "Indlæser..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/da.json b/apps/workflowengine/l10n/da.json
index f0c58d5f544..c08b53acf1b 100644
--- a/apps/workflowengine/l10n/da.json
+++ b/apps/workflowengine/l10n/da.json
@@ -1,7 +1,13 @@
{ "translations": {
+ "Short rule description" : "Kort regelbeskrivelse",
+ "Add rule" : "Tilføj regel",
+ "Reset" : "Reset",
+ "Save" : "Gem",
+ "Saving…" : "Gemmer...",
"Unable to retrieve the group list" : "Kan ikke hente gruppelisten",
"Saved" : "Gemt",
"Saving failed:" : "Kunne ikke gemme:",
+ "Add rule group" : "Tilføj regelgruppe",
"File MIME type" : "Fil MIME type",
"is" : "er",
"is not" : "er ikke",
@@ -60,12 +66,6 @@
"Workflow" : "Workflow",
"Files workflow engine" : "Filer workflow motoren",
"Open documentation" : "Åben dokumentationen",
- "Add rule group" : "Tilføj regelgruppe",
- "Short rule description" : "Kort regelbeskrivelse",
- "Add rule" : "Tilføj regel",
- "Reset" : "Reset",
- "Save" : "Gem",
- "Saving…" : "Gemmer...",
"Loading…" : "Indlæser..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/de.js b/apps/workflowengine/l10n/de.js
index 94f1e9d5bdb..3556bc68ad3 100644
--- a/apps/workflowengine/l10n/de.js
+++ b/apps/workflowengine/l10n/de.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kurze Regelbeschreibung",
+ "Add rule" : "Regel hinzufügen",
+ "Reset" : "Zurücksetzen",
+ "Save" : "Speichern",
+ "Saving…" : "Speichern…",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht empfangen werden",
"Saved" : "Gespeichert",
"Saving failed:" : "Speichern fehlgeschlagen:",
+ "Add rule group" : "Regelgruppe hinzufügen",
"File MIME type" : "Datei MIME-Typ",
"is" : "ist",
"is not" : "ist nicht",
@@ -65,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Workflow",
"Files workflow engine" : "Datei-Workflow-Engine",
"Open documentation" : "Dokumentation öffnen",
- "Add rule group" : "Regelgruppe hinzufügen",
- "Short rule description" : "Kurze Regelbeschreibung",
- "Add rule" : "Regel hinzufügen",
- "Reset" : "Zurücksetzen",
- "Save" : "Speichern",
- "Saving…" : "Speichern…",
"Loading…" : "Laden…"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/de.json b/apps/workflowengine/l10n/de.json
index 43b2bcc1b24..86463d88dbe 100644
--- a/apps/workflowengine/l10n/de.json
+++ b/apps/workflowengine/l10n/de.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Kurze Regelbeschreibung",
+ "Add rule" : "Regel hinzufügen",
+ "Reset" : "Zurücksetzen",
+ "Save" : "Speichern",
+ "Saving…" : "Speichern…",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht empfangen werden",
"Saved" : "Gespeichert",
"Saving failed:" : "Speichern fehlgeschlagen:",
+ "Add rule group" : "Regelgruppe hinzufügen",
"File MIME type" : "Datei MIME-Typ",
"is" : "ist",
"is not" : "ist nicht",
@@ -63,12 +69,6 @@
"Workflow" : "Workflow",
"Files workflow engine" : "Datei-Workflow-Engine",
"Open documentation" : "Dokumentation öffnen",
- "Add rule group" : "Regelgruppe hinzufügen",
- "Short rule description" : "Kurze Regelbeschreibung",
- "Add rule" : "Regel hinzufügen",
- "Reset" : "Zurücksetzen",
- "Save" : "Speichern",
- "Saving…" : "Speichern…",
"Loading…" : "Laden…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/de_DE.js b/apps/workflowengine/l10n/de_DE.js
index 7583d19844f..e0249fc47ad 100644
--- a/apps/workflowengine/l10n/de_DE.js
+++ b/apps/workflowengine/l10n/de_DE.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kurze Regelbeschreibung",
+ "Add rule" : "Regel hinzufügen",
+ "Reset" : "Zurücksetzen",
+ "Save" : "Speichern",
+ "Saving…" : "Speichern…",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht empfangen werden",
"Saved" : "Gespeichert",
"Saving failed:" : "Speichern fehlgeschlagen:",
+ "Add rule group" : "Regelgruppe hinzufügen",
"File MIME type" : "Datei MIME-Typ",
"is" : "ist",
"is not" : "ist nicht",
@@ -65,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Workflow",
"Files workflow engine" : "Datei-Workflow-Engine",
"Open documentation" : "Dokumentation öffnen",
- "Add rule group" : "Regelgruppe hinzufügen",
- "Short rule description" : "Kurze Regelbeschreibung",
- "Add rule" : "Regel hinzufügen",
- "Reset" : "Zurücksetzen",
- "Save" : "Speichern",
- "Saving…" : "Speichern…",
"Loading…" : "Laden…"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/de_DE.json b/apps/workflowengine/l10n/de_DE.json
index 976460acd07..cd89863e267 100644
--- a/apps/workflowengine/l10n/de_DE.json
+++ b/apps/workflowengine/l10n/de_DE.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Kurze Regelbeschreibung",
+ "Add rule" : "Regel hinzufügen",
+ "Reset" : "Zurücksetzen",
+ "Save" : "Speichern",
+ "Saving…" : "Speichern…",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht empfangen werden",
"Saved" : "Gespeichert",
"Saving failed:" : "Speichern fehlgeschlagen:",
+ "Add rule group" : "Regelgruppe hinzufügen",
"File MIME type" : "Datei MIME-Typ",
"is" : "ist",
"is not" : "ist nicht",
@@ -63,12 +69,6 @@
"Workflow" : "Workflow",
"Files workflow engine" : "Datei-Workflow-Engine",
"Open documentation" : "Dokumentation öffnen",
- "Add rule group" : "Regelgruppe hinzufügen",
- "Short rule description" : "Kurze Regelbeschreibung",
- "Add rule" : "Regel hinzufügen",
- "Reset" : "Zurücksetzen",
- "Save" : "Speichern",
- "Saving…" : "Speichern…",
"Loading…" : "Laden…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/el.js b/apps/workflowengine/l10n/el.js
index 848c2d0c3be..e661f0ebe80 100644
--- a/apps/workflowengine/l10n/el.js
+++ b/apps/workflowengine/l10n/el.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Μικρή περιγραφή κανόνα",
+ "Add rule" : "Προσθέστε κανόνα",
+ "Reset" : "Επαναφορά",
+ "Save" : "Αποθήκευση",
+ "Saving…" : "Αποθηκεύεται...",
"Group list is empty" : "Η λίστα της ομάδας είναι κενή",
"Unable to retrieve the group list" : "Αδύνατη η ανάκτηση λίστας της ομάδας",
"Saved" : "Αποθηκεύτηκε",
"Saving failed:" : "Απέτυχε η αποθήκευση:",
+ "Add rule group" : "Προσθέστε κανόνα ομάδας",
"File MIME type" : "Τύπος αρχείου MIME",
"is" : "είναι",
"is not" : "δεν είναι",
@@ -62,12 +68,6 @@ OC.L10N.register(
"Check #%s does not exist" : "Έλεγχος #%s δεν υπάρχει",
"Workflow" : "Ροή εργασίας",
"Open documentation" : "Άνοιγμα τεκμηρίωσης",
- "Add rule group" : "Προσθέστε κανόνα ομάδας",
- "Short rule description" : "Μικρή περιγραφή κανόνα",
- "Add rule" : "Προσθέστε κανόνα",
- "Reset" : "Επαναφορά",
- "Save" : "Αποθήκευση",
- "Saving…" : "Αποθηκεύεται...",
"Loading…" : "Φορτώνει..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/el.json b/apps/workflowengine/l10n/el.json
index 3a663a4d08b..cf1de5f1ac1 100644
--- a/apps/workflowengine/l10n/el.json
+++ b/apps/workflowengine/l10n/el.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Μικρή περιγραφή κανόνα",
+ "Add rule" : "Προσθέστε κανόνα",
+ "Reset" : "Επαναφορά",
+ "Save" : "Αποθήκευση",
+ "Saving…" : "Αποθηκεύεται...",
"Group list is empty" : "Η λίστα της ομάδας είναι κενή",
"Unable to retrieve the group list" : "Αδύνατη η ανάκτηση λίστας της ομάδας",
"Saved" : "Αποθηκεύτηκε",
"Saving failed:" : "Απέτυχε η αποθήκευση:",
+ "Add rule group" : "Προσθέστε κανόνα ομάδας",
"File MIME type" : "Τύπος αρχείου MIME",
"is" : "είναι",
"is not" : "δεν είναι",
@@ -60,12 +66,6 @@
"Check #%s does not exist" : "Έλεγχος #%s δεν υπάρχει",
"Workflow" : "Ροή εργασίας",
"Open documentation" : "Άνοιγμα τεκμηρίωσης",
- "Add rule group" : "Προσθέστε κανόνα ομάδας",
- "Short rule description" : "Μικρή περιγραφή κανόνα",
- "Add rule" : "Προσθέστε κανόνα",
- "Reset" : "Επαναφορά",
- "Save" : "Αποθήκευση",
- "Saving…" : "Αποθηκεύεται...",
"Loading…" : "Φορτώνει..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/en_GB.js b/apps/workflowengine/l10n/en_GB.js
index 9e4c2c578d6..6585b245e2a 100644
--- a/apps/workflowengine/l10n/en_GB.js
+++ b/apps/workflowengine/l10n/en_GB.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Short rule description",
+ "Add rule" : "Add rule",
+ "Reset" : "Reset",
+ "Save" : "Save",
+ "Saving…" : "Saving…",
"Group list is empty" : "Group list is empty",
"Unable to retrieve the group list" : "Unable to retrieve the group list",
"Saved" : "Saved",
"Saving failed:" : "Saving failed:",
+ "Add rule group" : "Add rule group",
"File MIME type" : "File MIME type",
"is" : "is",
"is not" : "is not",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Workflow",
"Files workflow engine" : "Files workflow engine",
"Open documentation" : "Open documentation",
- "Add rule group" : "Add rule group",
- "Short rule description" : "Short rule description",
- "Add rule" : "Add rule",
- "Reset" : "Reset",
- "Save" : "Save",
- "Saving…" : "Saving…",
"Loading…" : "Loading…"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/en_GB.json b/apps/workflowengine/l10n/en_GB.json
index 0118d982dc6..5f594ab294c 100644
--- a/apps/workflowengine/l10n/en_GB.json
+++ b/apps/workflowengine/l10n/en_GB.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Short rule description",
+ "Add rule" : "Add rule",
+ "Reset" : "Reset",
+ "Save" : "Save",
+ "Saving…" : "Saving…",
"Group list is empty" : "Group list is empty",
"Unable to retrieve the group list" : "Unable to retrieve the group list",
"Saved" : "Saved",
"Saving failed:" : "Saving failed:",
+ "Add rule group" : "Add rule group",
"File MIME type" : "File MIME type",
"is" : "is",
"is not" : "is not",
@@ -61,12 +67,6 @@
"Workflow" : "Workflow",
"Files workflow engine" : "Files workflow engine",
"Open documentation" : "Open documentation",
- "Add rule group" : "Add rule group",
- "Short rule description" : "Short rule description",
- "Add rule" : "Add rule",
- "Reset" : "Reset",
- "Save" : "Save",
- "Saving…" : "Saving…",
"Loading…" : "Loading…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es.js b/apps/workflowengine/l10n/es.js
index 4f8b7980e6d..b9107c25a3c 100644
--- a/apps/workflowengine/l10n/es.js
+++ b/apps/workflowengine/l10n/es.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción de la regla corta",
+ "Add rule" : "Añadir regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos está vacía",
"Unable to retrieve the group list" : "No es posible recibir la lista de grupos",
"Saved" : "Guardado",
"Saving failed:" : "Fallo al guardar:",
+ "Add rule group" : "Añadir regla al grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es/esta",
"is not" : "no es/esta",
"matches" : "coincidencias",
"does not match" : "no coincide",
"Example: {placeholder}" : "Ejemplo: {placeholder}",
+ "File name" : "Nombre del archivo",
"File size (upload)" : "Tamaño del archivo (para subir)",
"less" : "menos",
"less or equals" : "menor o igual",
@@ -25,7 +32,7 @@ OC.L10N.register(
"does not match IPv4" : "IPv4 sin coincidencias",
"matches IPv6" : "IPv6 coincidencias",
"does not match IPv6" : "IPv6 sin coincidencias",
- "Request time" : "Tiempo de espero",
+ "Request time" : "Tiempo de espera",
"between" : "entre",
"not between" : "no entre",
"Start" : "Inicio",
@@ -54,7 +61,7 @@ OC.L10N.register(
"The given start time is invalid" : "La hora de inicio dada no es válida",
"The given end time is invalid" : "El tiempo final no es valido",
"The given group does not exist" : "El grupo dado no existe",
- "Check %s is invalid or does not exist" : "Chequeo %s no es valido o no existe",
+ "Check %s is invalid or does not exist" : "Comprueba %s no es valido o no existe",
"Operation #%s does not exist" : "Operación #%s no existe",
"Operation %s does not exist" : "Operación %s no existe",
"Operation %s is invalid" : "Operación %s no es valida",
@@ -64,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Documentación abierta",
- "Add rule group" : "Añadir regla al grupo",
- "Short rule description" : "Descripción de la regla corta",
- "Add rule" : "Añadir regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es.json b/apps/workflowengine/l10n/es.json
index 67458458326..bab462629ce 100644
--- a/apps/workflowengine/l10n/es.json
+++ b/apps/workflowengine/l10n/es.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "Descripción de la regla corta",
+ "Add rule" : "Añadir regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos está vacía",
"Unable to retrieve the group list" : "No es posible recibir la lista de grupos",
"Saved" : "Guardado",
"Saving failed:" : "Fallo al guardar:",
+ "Add rule group" : "Añadir regla al grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es/esta",
"is not" : "no es/esta",
"matches" : "coincidencias",
"does not match" : "no coincide",
"Example: {placeholder}" : "Ejemplo: {placeholder}",
+ "File name" : "Nombre del archivo",
"File size (upload)" : "Tamaño del archivo (para subir)",
"less" : "menos",
"less or equals" : "menor o igual",
@@ -23,7 +30,7 @@
"does not match IPv4" : "IPv4 sin coincidencias",
"matches IPv6" : "IPv6 coincidencias",
"does not match IPv6" : "IPv6 sin coincidencias",
- "Request time" : "Tiempo de espero",
+ "Request time" : "Tiempo de espera",
"between" : "entre",
"not between" : "no entre",
"Start" : "Inicio",
@@ -52,7 +59,7 @@
"The given start time is invalid" : "La hora de inicio dada no es válida",
"The given end time is invalid" : "El tiempo final no es valido",
"The given group does not exist" : "El grupo dado no existe",
- "Check %s is invalid or does not exist" : "Chequeo %s no es valido o no existe",
+ "Check %s is invalid or does not exist" : "Comprueba %s no es valido o no existe",
"Operation #%s does not exist" : "Operación #%s no existe",
"Operation %s does not exist" : "Operación %s no existe",
"Operation %s is invalid" : "Operación %s no es valida",
@@ -62,12 +69,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Documentación abierta",
- "Add rule group" : "Añadir regla al grupo",
- "Short rule description" : "Descripción de la regla corta",
- "Add rule" : "Añadir regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_419.js b/apps/workflowengine/l10n/es_419.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_419.js
+++ b/apps/workflowengine/l10n/es_419.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_419.json b/apps/workflowengine/l10n/es_419.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_419.json
+++ b/apps/workflowengine/l10n/es_419.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_AR.js b/apps/workflowengine/l10n/es_AR.js
index 4c674602131..b49d600b9a6 100644
--- a/apps/workflowengine/l10n/es_AR.js
+++ b/apps/workflowengine/l10n/es_AR.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_AR.json b/apps/workflowengine/l10n/es_AR.json
index 4167c1320c1..df330ad964f 100644
--- a/apps/workflowengine/l10n/es_AR.json
+++ b/apps/workflowengine/l10n/es_AR.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_CL.js b/apps/workflowengine/l10n/es_CL.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_CL.js
+++ b/apps/workflowengine/l10n/es_CL.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_CL.json b/apps/workflowengine/l10n/es_CL.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_CL.json
+++ b/apps/workflowengine/l10n/es_CL.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_CO.js b/apps/workflowengine/l10n/es_CO.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_CO.js
+++ b/apps/workflowengine/l10n/es_CO.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_CO.json b/apps/workflowengine/l10n/es_CO.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_CO.json
+++ b/apps/workflowengine/l10n/es_CO.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_CR.js b/apps/workflowengine/l10n/es_CR.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_CR.js
+++ b/apps/workflowengine/l10n/es_CR.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_CR.json b/apps/workflowengine/l10n/es_CR.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_CR.json
+++ b/apps/workflowengine/l10n/es_CR.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_DO.js b/apps/workflowengine/l10n/es_DO.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_DO.js
+++ b/apps/workflowengine/l10n/es_DO.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_DO.json b/apps/workflowengine/l10n/es_DO.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_DO.json
+++ b/apps/workflowengine/l10n/es_DO.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_EC.js b/apps/workflowengine/l10n/es_EC.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_EC.js
+++ b/apps/workflowengine/l10n/es_EC.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_EC.json b/apps/workflowengine/l10n/es_EC.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_EC.json
+++ b/apps/workflowengine/l10n/es_EC.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_GT.js b/apps/workflowengine/l10n/es_GT.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_GT.js
+++ b/apps/workflowengine/l10n/es_GT.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_GT.json b/apps/workflowengine/l10n/es_GT.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_GT.json
+++ b/apps/workflowengine/l10n/es_GT.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_HN.js b/apps/workflowengine/l10n/es_HN.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_HN.js
+++ b/apps/workflowengine/l10n/es_HN.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_HN.json b/apps/workflowengine/l10n/es_HN.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_HN.json
+++ b/apps/workflowengine/l10n/es_HN.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_MX.js b/apps/workflowengine/l10n/es_MX.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_MX.js
+++ b/apps/workflowengine/l10n/es_MX.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_MX.json b/apps/workflowengine/l10n/es_MX.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_MX.json
+++ b/apps/workflowengine/l10n/es_MX.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_NI.js b/apps/workflowengine/l10n/es_NI.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_NI.js
+++ b/apps/workflowengine/l10n/es_NI.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_NI.json b/apps/workflowengine/l10n/es_NI.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_NI.json
+++ b/apps/workflowengine/l10n/es_NI.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_PA.js b/apps/workflowengine/l10n/es_PA.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_PA.js
+++ b/apps/workflowengine/l10n/es_PA.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_PA.json b/apps/workflowengine/l10n/es_PA.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_PA.json
+++ b/apps/workflowengine/l10n/es_PA.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_PE.js b/apps/workflowengine/l10n/es_PE.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_PE.js
+++ b/apps/workflowengine/l10n/es_PE.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_PE.json b/apps/workflowengine/l10n/es_PE.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_PE.json
+++ b/apps/workflowengine/l10n/es_PE.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_PR.js b/apps/workflowengine/l10n/es_PR.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_PR.js
+++ b/apps/workflowengine/l10n/es_PR.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_PR.json b/apps/workflowengine/l10n/es_PR.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_PR.json
+++ b/apps/workflowengine/l10n/es_PR.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_PY.js b/apps/workflowengine/l10n/es_PY.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_PY.js
+++ b/apps/workflowengine/l10n/es_PY.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_PY.json b/apps/workflowengine/l10n/es_PY.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_PY.json
+++ b/apps/workflowengine/l10n/es_PY.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_SV.js b/apps/workflowengine/l10n/es_SV.js
index 48cfb3adb42..25a9228126e 100644
--- a/apps/workflowengine/l10n/es_SV.js
+++ b/apps/workflowengine/l10n/es_SV.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_SV.json b/apps/workflowengine/l10n/es_SV.json
index 7baaa98fffd..5f92865b3f4 100644
--- a/apps/workflowengine/l10n/es_SV.json
+++ b/apps/workflowengine/l10n/es_SV.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Group list is empty" : "La lista de grupos esta vacía",
"Unable to retrieve the group list" : "No fue posible recuperar la lista del gurpo",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -61,12 +67,6 @@
"Workflow" : "Flujo de trabajo",
"Files workflow engine" : "Motor de flujo de trabajo de archivos",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/es_UY.js b/apps/workflowengine/l10n/es_UY.js
index b1bae553634..0341cf621f6 100644
--- a/apps/workflowengine/l10n/es_UY.js
+++ b/apps/workflowengine/l10n/es_UY.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/es_UY.json b/apps/workflowengine/l10n/es_UY.json
index 7b0db7e4727..2259733ef74 100644
--- a/apps/workflowengine/l10n/es_UY.json
+++ b/apps/workflowengine/l10n/es_UY.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Descripción corta de la regla",
+ "Add rule" : "Agregar regla",
+ "Reset" : "Restablecer",
+ "Save" : "Guardar",
+ "Saving…" : "Guardando...",
"Saved" : "Guardado",
"Saving failed:" : "Falla al guardar:",
+ "Add rule group" : "Agregar regla de grupo",
"File MIME type" : "Tipo MIME del archivo",
"is" : "es",
"is not" : "no es",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "La validación #%s no existe",
"Workflow" : "Flujo de trabajo",
"Open documentation" : "Abrir la documentación",
- "Add rule group" : "Agregar regla de grupo",
- "Short rule description" : "Descripción corta de la regla",
- "Add rule" : "Agregar regla",
- "Reset" : "Restablecer",
- "Save" : "Guardar",
- "Saving…" : "Guardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/et_EE.js b/apps/workflowengine/l10n/et_EE.js
index 6c8a36e12c4..6c5aecfe7ca 100644
--- a/apps/workflowengine/l10n/et_EE.js
+++ b/apps/workflowengine/l10n/et_EE.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Reegli lühikirjeldus",
+ "Add rule" : "Lisa reegel",
+ "Reset" : "Lähtesta",
+ "Save" : "Salvesta",
+ "Saving…" : "Salvestamine...",
"Saved" : "Salvestatud",
"Saving failed:" : "Salvestamine ebaõnnestus:",
+ "Add rule group" : "Lisa reegligrupp",
"File MIME type" : "Faili MIME tüüp",
"is" : "on",
"is not" : "ei ole",
@@ -55,12 +61,6 @@ OC.L10N.register(
"Operation %s is invalid" : "Tegevus %s on vigane",
"Workflow" : "Töövoog",
"Open documentation" : "Ava dokumentatsioon",
- "Add rule group" : "Lisa reegligrupp",
- "Short rule description" : "Reegli lühikirjeldus",
- "Add rule" : "Lisa reegel",
- "Reset" : "Lähtesta",
- "Save" : "Salvesta",
- "Saving…" : "Salvestamine...",
"Loading…" : "Laadimine..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/et_EE.json b/apps/workflowengine/l10n/et_EE.json
index d0e76070e55..39e0fd8c3b4 100644
--- a/apps/workflowengine/l10n/et_EE.json
+++ b/apps/workflowengine/l10n/et_EE.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Reegli lühikirjeldus",
+ "Add rule" : "Lisa reegel",
+ "Reset" : "Lähtesta",
+ "Save" : "Salvesta",
+ "Saving…" : "Salvestamine...",
"Saved" : "Salvestatud",
"Saving failed:" : "Salvestamine ebaõnnestus:",
+ "Add rule group" : "Lisa reegligrupp",
"File MIME type" : "Faili MIME tüüp",
"is" : "on",
"is not" : "ei ole",
@@ -53,12 +59,6 @@
"Operation %s is invalid" : "Tegevus %s on vigane",
"Workflow" : "Töövoog",
"Open documentation" : "Ava dokumentatsioon",
- "Add rule group" : "Lisa reegligrupp",
- "Short rule description" : "Reegli lühikirjeldus",
- "Add rule" : "Lisa reegel",
- "Reset" : "Lähtesta",
- "Save" : "Salvesta",
- "Saving…" : "Salvestamine...",
"Loading…" : "Laadimine..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/fa.js b/apps/workflowengine/l10n/fa.js
index da199e47cad..f809dbaeee1 100644
--- a/apps/workflowengine/l10n/fa.js
+++ b/apps/workflowengine/l10n/fa.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "توضیحات مختصر درباره قوانین ",
+ "Add rule" : "اضافه کردن قوانین ",
+ "Reset" : "ریست",
+ "Save" : "ذخیره",
+ "Saving…" : "در حال ذخیره",
"Saved" : "ذخیره شده ",
"Saving failed:" : "ذخیره فایل با خطا مواجه شد.",
+ "Add rule group" : "اضافه کردن قوانین گروه",
"File MIME type" : "فایل از نوع MIME",
"is" : "هست ",
"is not" : "نیست",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "%s را چک کنید وجود ندارد ",
"Workflow" : "جریان کاری",
"Open documentation" : "مستندات باز",
- "Add rule group" : "اضافه کردن قوانین گروه",
- "Short rule description" : "توضیحات مختصر درباره قوانین ",
- "Add rule" : "اضافه کردن قوانین ",
- "Reset" : "ریست",
- "Save" : "ذخیره",
- "Saving…" : "در حال ذخیره",
"Loading…" : "در حال بار گزاری"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/workflowengine/l10n/fa.json b/apps/workflowengine/l10n/fa.json
index b131e32cbb5..0b7320ab88d 100644
--- a/apps/workflowengine/l10n/fa.json
+++ b/apps/workflowengine/l10n/fa.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "توضیحات مختصر درباره قوانین ",
+ "Add rule" : "اضافه کردن قوانین ",
+ "Reset" : "ریست",
+ "Save" : "ذخیره",
+ "Saving…" : "در حال ذخیره",
"Saved" : "ذخیره شده ",
"Saving failed:" : "ذخیره فایل با خطا مواجه شد.",
+ "Add rule group" : "اضافه کردن قوانین گروه",
"File MIME type" : "فایل از نوع MIME",
"is" : "هست ",
"is not" : "نیست",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "%s را چک کنید وجود ندارد ",
"Workflow" : "جریان کاری",
"Open documentation" : "مستندات باز",
- "Add rule group" : "اضافه کردن قوانین گروه",
- "Short rule description" : "توضیحات مختصر درباره قوانین ",
- "Add rule" : "اضافه کردن قوانین ",
- "Reset" : "ریست",
- "Save" : "ذخیره",
- "Saving…" : "در حال ذخیره",
"Loading…" : "در حال بار گزاری"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/fi.js b/apps/workflowengine/l10n/fi.js
index 772cc2c2420..0c4490a264e 100644
--- a/apps/workflowengine/l10n/fi.js
+++ b/apps/workflowengine/l10n/fi.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Lyhyt sääntökuvaus",
+ "Add rule" : "Lisää sääntö",
+ "Reset" : "Palauta",
+ "Save" : "Tallenna",
+ "Saving…" : "Tallennetaan...",
"Group list is empty" : "Ryhmälista on tyhjä",
"Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa",
"Saved" : "Tallennettu",
"Saving failed:" : "Tallennus epäonnistui:",
+ "Add rule group" : "Lisää sääntöryhmä",
"File MIME type" : "Tiedoston MIME-tyyppi",
"is" : "on",
"is not" : "ei ole",
"matches" : "täsmää",
"does not match" : "ei täsmää",
"Example: {placeholder}" : "Esimerkki: {placeholder}",
+ "File name" : "Tiedostonimi",
"File size (upload)" : "Tiedostokoko (lähetys)",
"less" : "pienempi",
"less or equals" : "pienempi tai yhtä suuri kuin",
@@ -63,12 +70,6 @@ OC.L10N.register(
"Check #%s does not exist" : "Tarkistusta #%s ei ole olemassa",
"Workflow" : "Työnkulku",
"Open documentation" : "Avaa dokumentaatio",
- "Add rule group" : "Lisää sääntöryhmä",
- "Short rule description" : "Lyhyt sääntökuvaus",
- "Add rule" : "Lisää sääntö",
- "Reset" : "Palauta",
- "Save" : "Tallenna",
- "Saving…" : "Tallennetaan...",
"Loading…" : "Ladataan…"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/fi.json b/apps/workflowengine/l10n/fi.json
index a16485fb377..c319555c75b 100644
--- a/apps/workflowengine/l10n/fi.json
+++ b/apps/workflowengine/l10n/fi.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "Lyhyt sääntökuvaus",
+ "Add rule" : "Lisää sääntö",
+ "Reset" : "Palauta",
+ "Save" : "Tallenna",
+ "Saving…" : "Tallennetaan...",
"Group list is empty" : "Ryhmälista on tyhjä",
"Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa",
"Saved" : "Tallennettu",
"Saving failed:" : "Tallennus epäonnistui:",
+ "Add rule group" : "Lisää sääntöryhmä",
"File MIME type" : "Tiedoston MIME-tyyppi",
"is" : "on",
"is not" : "ei ole",
"matches" : "täsmää",
"does not match" : "ei täsmää",
"Example: {placeholder}" : "Esimerkki: {placeholder}",
+ "File name" : "Tiedostonimi",
"File size (upload)" : "Tiedostokoko (lähetys)",
"less" : "pienempi",
"less or equals" : "pienempi tai yhtä suuri kuin",
@@ -61,12 +68,6 @@
"Check #%s does not exist" : "Tarkistusta #%s ei ole olemassa",
"Workflow" : "Työnkulku",
"Open documentation" : "Avaa dokumentaatio",
- "Add rule group" : "Lisää sääntöryhmä",
- "Short rule description" : "Lyhyt sääntökuvaus",
- "Add rule" : "Lisää sääntö",
- "Reset" : "Palauta",
- "Save" : "Tallenna",
- "Saving…" : "Tallennetaan...",
"Loading…" : "Ladataan…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/fr.js b/apps/workflowengine/l10n/fr.js
index 47c73a3936d..3acc64456ba 100644
--- a/apps/workflowengine/l10n/fr.js
+++ b/apps/workflowengine/l10n/fr.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Trier par description de règle",
+ "Add rule" : "Ajouter règle",
+ "Reset" : "Réinitialiser",
+ "Save" : "Enregistrer",
+ "Saving…" : "Enregistrement...",
"Group list is empty" : "La liste du groupe est vide",
"Unable to retrieve the group list" : "Impossible de récupérer la liste du groupe",
"Saved" : "Sauvegardé",
"Saving failed:" : "L'enregistrement a échoué:",
+ "Add rule group" : "Ajouter une règle de groupe",
"File MIME type" : "Type MIME du fichier",
"is" : "est",
"is not" : "n'est pas",
@@ -65,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Flux d'activités",
"Files workflow engine" : "Moteur de Workflow de fichiers",
"Open documentation" : "Voir la documentation",
- "Add rule group" : "Ajouter une règle de groupe",
- "Short rule description" : "Trier par description de règle",
- "Add rule" : "Ajouter règle",
- "Reset" : "Réinitialiser",
- "Save" : "Enregistrer",
- "Saving…" : "Enregistrement...",
"Loading…" : "Chargement..."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/workflowengine/l10n/fr.json b/apps/workflowengine/l10n/fr.json
index 58aafac407d..06b0092fb60 100644
--- a/apps/workflowengine/l10n/fr.json
+++ b/apps/workflowengine/l10n/fr.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Trier par description de règle",
+ "Add rule" : "Ajouter règle",
+ "Reset" : "Réinitialiser",
+ "Save" : "Enregistrer",
+ "Saving…" : "Enregistrement...",
"Group list is empty" : "La liste du groupe est vide",
"Unable to retrieve the group list" : "Impossible de récupérer la liste du groupe",
"Saved" : "Sauvegardé",
"Saving failed:" : "L'enregistrement a échoué:",
+ "Add rule group" : "Ajouter une règle de groupe",
"File MIME type" : "Type MIME du fichier",
"is" : "est",
"is not" : "n'est pas",
@@ -63,12 +69,6 @@
"Workflow" : "Flux d'activités",
"Files workflow engine" : "Moteur de Workflow de fichiers",
"Open documentation" : "Voir la documentation",
- "Add rule group" : "Ajouter une règle de groupe",
- "Short rule description" : "Trier par description de règle",
- "Add rule" : "Ajouter règle",
- "Reset" : "Réinitialiser",
- "Save" : "Enregistrer",
- "Saving…" : "Enregistrement...",
"Loading…" : "Chargement..."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/gl.js b/apps/workflowengine/l10n/gl.js
index 1ff58214585..e67b16e76e2 100644
--- a/apps/workflowengine/l10n/gl.js
+++ b/apps/workflowengine/l10n/gl.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Breve descrición da regra",
+ "Add rule" : "Engadir regra",
+ "Reset" : "Restabelecer",
+ "Save" : "Gardar",
+ "Saving…" : "Gardando...",
"Saved" : "Gardado",
"Saving failed:" : "Erro gardando:",
+ "Add rule group" : "Engadir unha regra de grupo",
"File MIME type" : "Tipo MIME do ficheiro",
"is" : "é",
"is not" : "non é",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "Non existe a proba num. %s ",
"Workflow" : "Fluxo de traballo",
"Open documentation" : "Documentación aberta",
- "Add rule group" : "Engadir unha regra de grupo",
- "Short rule description" : "Breve descrición da regra",
- "Add rule" : "Engadir regra",
- "Reset" : "Restabelecer",
- "Save" : "Gardar",
- "Saving…" : "Gardando...",
"Loading…" : "Cargando..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/gl.json b/apps/workflowengine/l10n/gl.json
index 91511d581d4..01eaa32c0ce 100644
--- a/apps/workflowengine/l10n/gl.json
+++ b/apps/workflowengine/l10n/gl.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Breve descrición da regra",
+ "Add rule" : "Engadir regra",
+ "Reset" : "Restabelecer",
+ "Save" : "Gardar",
+ "Saving…" : "Gardando...",
"Saved" : "Gardado",
"Saving failed:" : "Erro gardando:",
+ "Add rule group" : "Engadir unha regra de grupo",
"File MIME type" : "Tipo MIME do ficheiro",
"is" : "é",
"is not" : "non é",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "Non existe a proba num. %s ",
"Workflow" : "Fluxo de traballo",
"Open documentation" : "Documentación aberta",
- "Add rule group" : "Engadir unha regra de grupo",
- "Short rule description" : "Breve descrición da regra",
- "Add rule" : "Engadir regra",
- "Reset" : "Restabelecer",
- "Save" : "Gardar",
- "Saving…" : "Gardando...",
"Loading…" : "Cargando..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/he.js b/apps/workflowengine/l10n/he.js
index 99bdf9db707..17b768a8e1d 100644
--- a/apps/workflowengine/l10n/he.js
+++ b/apps/workflowengine/l10n/he.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "תיאור מקוצר לכלל",
+ "Add rule" : "הוספת כלל",
+ "Reset" : "איפוס",
+ "Save" : "שמירה",
+ "Saving…" : "בהליכי שמירה…",
"Group list is empty" : "רשימת הקבוצות ריקה",
"Unable to retrieve the group list" : "לא ניתן לקבל את רשימת הקבוצות",
"Saved" : "נשמרה",
"Saving failed:" : "השמירה נכשלה:",
+ "Add rule group" : "הוספת קבוצת כללים",
"File MIME type" : "סוג ה־MIME של הקובץ",
"is" : "הוא",
"is not" : "אינו",
@@ -58,12 +64,6 @@ OC.L10N.register(
"Operation %s does not exist" : "הפעולה %s לא קיימת",
"Operation %s is invalid" : "הפעולה %s שגויה",
"Open documentation" : "פתיחת תיעוד",
- "Add rule group" : "הוספת קבוצת כללים",
- "Short rule description" : "תיאור מקוצר לכלל",
- "Add rule" : "הוספת כלל",
- "Reset" : "איפוס",
- "Save" : "שמירה",
- "Saving…" : "בהליכי שמירה…",
"Loading…" : "בטעינה…"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/apps/workflowengine/l10n/he.json b/apps/workflowengine/l10n/he.json
index c59825d5e75..c81b59bf676 100644
--- a/apps/workflowengine/l10n/he.json
+++ b/apps/workflowengine/l10n/he.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "תיאור מקוצר לכלל",
+ "Add rule" : "הוספת כלל",
+ "Reset" : "איפוס",
+ "Save" : "שמירה",
+ "Saving…" : "בהליכי שמירה…",
"Group list is empty" : "רשימת הקבוצות ריקה",
"Unable to retrieve the group list" : "לא ניתן לקבל את רשימת הקבוצות",
"Saved" : "נשמרה",
"Saving failed:" : "השמירה נכשלה:",
+ "Add rule group" : "הוספת קבוצת כללים",
"File MIME type" : "סוג ה־MIME של הקובץ",
"is" : "הוא",
"is not" : "אינו",
@@ -56,12 +62,6 @@
"Operation %s does not exist" : "הפעולה %s לא קיימת",
"Operation %s is invalid" : "הפעולה %s שגויה",
"Open documentation" : "פתיחת תיעוד",
- "Add rule group" : "הוספת קבוצת כללים",
- "Short rule description" : "תיאור מקוצר לכלל",
- "Add rule" : "הוספת כלל",
- "Reset" : "איפוס",
- "Save" : "שמירה",
- "Saving…" : "בהליכי שמירה…",
"Loading…" : "בטעינה…"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/hu.js b/apps/workflowengine/l10n/hu.js
index 2b0ecf190c7..b97f166a507 100644
--- a/apps/workflowengine/l10n/hu.js
+++ b/apps/workflowengine/l10n/hu.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "A szabály rövid leírása",
+ "Add rule" : "Szabály hozzáadás",
+ "Reset" : "Visszaállítás",
+ "Save" : "Mentés",
+ "Saving…" : "Mentés...",
"Group list is empty" : "Csoport lista üres",
"Unable to retrieve the group list" : "Csoportlista betöltése sikertelen",
"Saved" : "Elmentve",
"Saving failed:" : "Mentés sikertelen:",
+ "Add rule group" : "Szabály csoport hozzáadás",
"File MIME type" : "Fájl MIME típus",
"is" : "ez",
"is not" : "nem ez",
"matches" : "egyezik",
"does not match" : "nem egyezik",
"Example: {placeholder}" : "Például: {placeholder}",
+ "File name" : "Fájlnév",
"File size (upload)" : "Fájl méret (feltöltés)",
"less" : "kisebb",
"less or equals" : "kisebb vagy egyenlő",
@@ -64,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Munkafolyamat",
"Files workflow engine" : "Fájl munkafolyamat motor",
"Open documentation" : "Dokumentáció megnyitása",
- "Add rule group" : "Szabály csoport hozzáadás",
- "Short rule description" : "A szabály rövid leírása",
- "Add rule" : "Szabály hozzáadás",
- "Reset" : "Visszaállítás",
- "Save" : "Mentés",
- "Saving…" : "Mentés...",
"Loading…" : "Betöltés..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/hu.json b/apps/workflowengine/l10n/hu.json
index c417026e36d..8fe34b073ca 100644
--- a/apps/workflowengine/l10n/hu.json
+++ b/apps/workflowengine/l10n/hu.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "A szabály rövid leírása",
+ "Add rule" : "Szabály hozzáadás",
+ "Reset" : "Visszaállítás",
+ "Save" : "Mentés",
+ "Saving…" : "Mentés...",
"Group list is empty" : "Csoport lista üres",
"Unable to retrieve the group list" : "Csoportlista betöltése sikertelen",
"Saved" : "Elmentve",
"Saving failed:" : "Mentés sikertelen:",
+ "Add rule group" : "Szabály csoport hozzáadás",
"File MIME type" : "Fájl MIME típus",
"is" : "ez",
"is not" : "nem ez",
"matches" : "egyezik",
"does not match" : "nem egyezik",
"Example: {placeholder}" : "Például: {placeholder}",
+ "File name" : "Fájlnév",
"File size (upload)" : "Fájl méret (feltöltés)",
"less" : "kisebb",
"less or equals" : "kisebb vagy egyenlő",
@@ -62,12 +69,6 @@
"Workflow" : "Munkafolyamat",
"Files workflow engine" : "Fájl munkafolyamat motor",
"Open documentation" : "Dokumentáció megnyitása",
- "Add rule group" : "Szabály csoport hozzáadás",
- "Short rule description" : "A szabály rövid leírása",
- "Add rule" : "Szabály hozzáadás",
- "Reset" : "Visszaállítás",
- "Save" : "Mentés",
- "Saving…" : "Mentés...",
"Loading…" : "Betöltés..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ia.js b/apps/workflowengine/l10n/ia.js
index d99a235862b..d7f895808a1 100644
--- a/apps/workflowengine/l10n/ia.js
+++ b/apps/workflowengine/l10n/ia.js
@@ -1,6 +1,10 @@
OC.L10N.register(
"workflowengine",
{
+ "Add rule" : "Adder regula",
+ "Reset" : "Reinitialisar",
+ "Save" : "Salveguardar",
+ "Saving…" : "Salveguardante...",
"Saving failed:" : "Salveguardata falleva:",
"is" : "es",
"is not" : "non es",
@@ -37,10 +41,6 @@ OC.L10N.register(
"is member of" : "es membro de",
"is not member of" : "non es membro de",
"Open documentation" : "Aperir documentation",
- "Add rule" : "Adder regula",
- "Reset" : "Reinitialisar",
- "Save" : "Salveguardar",
- "Saving…" : "Salveguardante...",
"Loading…" : "Cargante..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/ia.json b/apps/workflowengine/l10n/ia.json
index 1ca7386e4f7..13a0cc6e433 100644
--- a/apps/workflowengine/l10n/ia.json
+++ b/apps/workflowengine/l10n/ia.json
@@ -1,4 +1,8 @@
{ "translations": {
+ "Add rule" : "Adder regula",
+ "Reset" : "Reinitialisar",
+ "Save" : "Salveguardar",
+ "Saving…" : "Salveguardante...",
"Saving failed:" : "Salveguardata falleva:",
"is" : "es",
"is not" : "non es",
@@ -35,10 +39,6 @@
"is member of" : "es membro de",
"is not member of" : "non es membro de",
"Open documentation" : "Aperir documentation",
- "Add rule" : "Adder regula",
- "Reset" : "Reinitialisar",
- "Save" : "Salveguardar",
- "Saving…" : "Salveguardante...",
"Loading…" : "Cargante..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/id.js b/apps/workflowengine/l10n/id.js
index f2c1af1d9d1..6d05790f746 100644
--- a/apps/workflowengine/l10n/id.js
+++ b/apps/workflowengine/l10n/id.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Deskripsi aturan singkat",
+ "Add rule" : "Tambahkan aturan",
+ "Reset" : "Setel ulang",
+ "Save" : "Simpan",
+ "Saving…" : "Menyimpan...",
"Saved" : "Disimpan",
"Saving failed:" : "Penyimpanan gagal:",
+ "Add rule group" : "Tambahkan aturan grup ",
"File MIME type" : "Berkas tipe MIME",
"is" : "adalah",
"is not" : "bukan",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "Cek #%s tidak ada",
"Workflow" : "Alur kerja",
"Open documentation" : "Buka dokumentasi",
- "Add rule group" : "Tambahkan aturan grup ",
- "Short rule description" : "Deskripsi aturan singkat",
- "Add rule" : "Tambahkan aturan",
- "Reset" : "Setel ulang",
- "Save" : "Simpan",
- "Saving…" : "Menyimpan...",
"Loading…" : "Memuat..."
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/id.json b/apps/workflowengine/l10n/id.json
index 7600308f0ac..a8b5a3b9ab0 100644
--- a/apps/workflowengine/l10n/id.json
+++ b/apps/workflowengine/l10n/id.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Deskripsi aturan singkat",
+ "Add rule" : "Tambahkan aturan",
+ "Reset" : "Setel ulang",
+ "Save" : "Simpan",
+ "Saving…" : "Menyimpan...",
"Saved" : "Disimpan",
"Saving failed:" : "Penyimpanan gagal:",
+ "Add rule group" : "Tambahkan aturan grup ",
"File MIME type" : "Berkas tipe MIME",
"is" : "adalah",
"is not" : "bukan",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "Cek #%s tidak ada",
"Workflow" : "Alur kerja",
"Open documentation" : "Buka dokumentasi",
- "Add rule group" : "Tambahkan aturan grup ",
- "Short rule description" : "Deskripsi aturan singkat",
- "Add rule" : "Tambahkan aturan",
- "Reset" : "Setel ulang",
- "Save" : "Simpan",
- "Saving…" : "Menyimpan...",
"Loading…" : "Memuat..."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/is.js b/apps/workflowengine/l10n/is.js
index dae012b1ea7..85a51d85507 100644
--- a/apps/workflowengine/l10n/is.js
+++ b/apps/workflowengine/l10n/is.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Stutt lýsing á reglu",
+ "Add rule" : "Bæta við reglu",
+ "Reset" : "Endurstilla",
+ "Save" : "Vista",
+ "Saving…" : "Vista…",
"Group list is empty" : "Listi yfir hópa er tómur",
"Unable to retrieve the group list" : "Tókst ekki að ná í lista yfir hópinn",
"Saved" : "Vistað",
"Saving failed:" : "Vistun mistókst:",
+ "Add rule group" : "Bæta við regluhópi",
"File MIME type" : "MIME-skráartegund",
"is" : "er",
"is not" : "er ekki",
@@ -64,12 +70,6 @@ OC.L10N.register(
"Workflow" : "Vinnuferli",
"Files workflow engine" : "Verkferlavél skráa",
"Open documentation" : "Opna hjálparskjöl",
- "Add rule group" : "Bæta við regluhópi",
- "Short rule description" : "Stutt lýsing á reglu",
- "Add rule" : "Bæta við reglu",
- "Reset" : "Endurstilla",
- "Save" : "Vista",
- "Saving…" : "Vista…",
"Loading…" : "Hleð inn..."
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/workflowengine/l10n/is.json b/apps/workflowengine/l10n/is.json
index b583570ed60..077a922de43 100644
--- a/apps/workflowengine/l10n/is.json
+++ b/apps/workflowengine/l10n/is.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Stutt lýsing á reglu",
+ "Add rule" : "Bæta við reglu",
+ "Reset" : "Endurstilla",
+ "Save" : "Vista",
+ "Saving…" : "Vista…",
"Group list is empty" : "Listi yfir hópa er tómur",
"Unable to retrieve the group list" : "Tókst ekki að ná í lista yfir hópinn",
"Saved" : "Vistað",
"Saving failed:" : "Vistun mistókst:",
+ "Add rule group" : "Bæta við regluhópi",
"File MIME type" : "MIME-skráartegund",
"is" : "er",
"is not" : "er ekki",
@@ -62,12 +68,6 @@
"Workflow" : "Vinnuferli",
"Files workflow engine" : "Verkferlavél skráa",
"Open documentation" : "Opna hjálparskjöl",
- "Add rule group" : "Bæta við regluhópi",
- "Short rule description" : "Stutt lýsing á reglu",
- "Add rule" : "Bæta við reglu",
- "Reset" : "Endurstilla",
- "Save" : "Vista",
- "Saving…" : "Vista…",
"Loading…" : "Hleð inn..."
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/it.js b/apps/workflowengine/l10n/it.js
index 8fe21a41dea..54110642c36 100644
--- a/apps/workflowengine/l10n/it.js
+++ b/apps/workflowengine/l10n/it.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descrizione breve della regola",
+ "Add rule" : "Aggiungi regola",
+ "Reset" : "Ripristina",
+ "Save" : "Salva",
+ "Saving…" : "Salvataggio in corso...",
"Group list is empty" : "L'elenco dei gruppi è vuoto",
"Unable to retrieve the group list" : "Impossibile recuperare l'elenco dei gruppi",
"Saved" : "Salvato",
"Saving failed:" : "Salvataggio non riuscito:",
+ "Add rule group" : "Aggiungi gruppo di regole",
"File MIME type" : "Tipo MIME del file",
"is" : "è",
"is not" : "non è",
@@ -65,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Flusso di lavoro",
"Files workflow engine" : "Motore delle procedure dei file",
"Open documentation" : "Apri documentazione",
- "Add rule group" : "Aggiungi gruppo di regole",
- "Short rule description" : "Descrizione breve della regola",
- "Add rule" : "Aggiungi regola",
- "Reset" : "Ripristina",
- "Save" : "Salva",
- "Saving…" : "Salvataggio in corso...",
"Loading…" : "Caricamento in corso..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/it.json b/apps/workflowengine/l10n/it.json
index 30f593f20d6..1f665b06502 100644
--- a/apps/workflowengine/l10n/it.json
+++ b/apps/workflowengine/l10n/it.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descrizione breve della regola",
+ "Add rule" : "Aggiungi regola",
+ "Reset" : "Ripristina",
+ "Save" : "Salva",
+ "Saving…" : "Salvataggio in corso...",
"Group list is empty" : "L'elenco dei gruppi è vuoto",
"Unable to retrieve the group list" : "Impossibile recuperare l'elenco dei gruppi",
"Saved" : "Salvato",
"Saving failed:" : "Salvataggio non riuscito:",
+ "Add rule group" : "Aggiungi gruppo di regole",
"File MIME type" : "Tipo MIME del file",
"is" : "è",
"is not" : "non è",
@@ -63,12 +69,6 @@
"Workflow" : "Flusso di lavoro",
"Files workflow engine" : "Motore delle procedure dei file",
"Open documentation" : "Apri documentazione",
- "Add rule group" : "Aggiungi gruppo di regole",
- "Short rule description" : "Descrizione breve della regola",
- "Add rule" : "Aggiungi regola",
- "Reset" : "Ripristina",
- "Save" : "Salva",
- "Saving…" : "Salvataggio in corso...",
"Loading…" : "Caricamento in corso..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ja.js b/apps/workflowengine/l10n/ja.js
index 05b786aa552..1722ba6b0ef 100644
--- a/apps/workflowengine/l10n/ja.js
+++ b/apps/workflowengine/l10n/ja.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "ルールの簡潔な説明",
+ "Add rule" : "ルールを追加",
+ "Reset" : "リセット",
+ "Save" : "保存",
+ "Saving…" : "保存中...",
"Group list is empty" : "グループリストが空です",
"Unable to retrieve the group list" : "グループリストを取得できません",
"Saved" : "保存しました",
"Saving failed:" : "保存に失敗しました:",
+ "Add rule group" : "ルールグループを追加する",
"File MIME type" : "ファイルMIMEタイプ",
"is" : "は",
"is not" : "は異なる",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "ワークフロー",
"Files workflow engine" : "ファイルワークフローエンジン",
"Open documentation" : "ドキュメントを開く",
- "Add rule group" : "ルールグループを追加する",
- "Short rule description" : "ルールの簡潔な説明",
- "Add rule" : "ルールを追加",
- "Reset" : "リセット",
- "Save" : "保存",
- "Saving…" : "保存中...",
"Loading…" : "読み込み中..."
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/ja.json b/apps/workflowengine/l10n/ja.json
index c383c4fdf5f..b97b0e35ee7 100644
--- a/apps/workflowengine/l10n/ja.json
+++ b/apps/workflowengine/l10n/ja.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "ルールの簡潔な説明",
+ "Add rule" : "ルールを追加",
+ "Reset" : "リセット",
+ "Save" : "保存",
+ "Saving…" : "保存中...",
"Group list is empty" : "グループリストが空です",
"Unable to retrieve the group list" : "グループリストを取得できません",
"Saved" : "保存しました",
"Saving failed:" : "保存に失敗しました:",
+ "Add rule group" : "ルールグループを追加する",
"File MIME type" : "ファイルMIMEタイプ",
"is" : "は",
"is not" : "は異なる",
@@ -61,12 +67,6 @@
"Workflow" : "ワークフロー",
"Files workflow engine" : "ファイルワークフローエンジン",
"Open documentation" : "ドキュメントを開く",
- "Add rule group" : "ルールグループを追加する",
- "Short rule description" : "ルールの簡潔な説明",
- "Add rule" : "ルールを追加",
- "Reset" : "リセット",
- "Save" : "保存",
- "Saving…" : "保存中...",
"Loading…" : "読み込み中..."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ka_GE.js b/apps/workflowengine/l10n/ka_GE.js
index cb67c3fb304..79cc2dabd48 100644
--- a/apps/workflowengine/l10n/ka_GE.js
+++ b/apps/workflowengine/l10n/ka_GE.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "წესის მოკლე აღწერა",
+ "Add rule" : "წესის დამატება",
+ "Reset" : "საწყის მდოგმარეობაში დაბრუნება",
+ "Save" : "შენახვა",
+ "Saving…" : "მიმდინარეობს დამახსოვრება...",
"Saved" : "შენახულია",
"Saving failed:" : "შენახვა ვერ მოხერხდა:",
+ "Add rule group" : "ჯგუფის წესის დამატება",
"File MIME type" : "ფაილის MIME სახეობა",
"is" : "არის",
"is not" : "არ არის",
@@ -61,12 +67,6 @@ OC.L10N.register(
"Workflow" : "შრომითი პროცესები",
"Files workflow engine" : "ფაილების სამუშაოს შესრულების ძრავა",
"Open documentation" : "ღია დოკუმენტაცია",
- "Add rule group" : "ჯგუფის წესის დამატება",
- "Short rule description" : "წესის მოკლე აღწერა",
- "Add rule" : "წესის დამატება",
- "Reset" : "საწყის მდოგმარეობაში დაბრუნება",
- "Save" : "შენახვა",
- "Saving…" : "მიმდინარეობს დამახსოვრება...",
"Loading…" : "იტვირთება..."
},
"nplurals=2; plural=(n!=1);");
diff --git a/apps/workflowengine/l10n/ka_GE.json b/apps/workflowengine/l10n/ka_GE.json
index 8ac29299d22..53887cbe99b 100644
--- a/apps/workflowengine/l10n/ka_GE.json
+++ b/apps/workflowengine/l10n/ka_GE.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "წესის მოკლე აღწერა",
+ "Add rule" : "წესის დამატება",
+ "Reset" : "საწყის მდოგმარეობაში დაბრუნება",
+ "Save" : "შენახვა",
+ "Saving…" : "მიმდინარეობს დამახსოვრება...",
"Saved" : "შენახულია",
"Saving failed:" : "შენახვა ვერ მოხერხდა:",
+ "Add rule group" : "ჯგუფის წესის დამატება",
"File MIME type" : "ფაილის MIME სახეობა",
"is" : "არის",
"is not" : "არ არის",
@@ -59,12 +65,6 @@
"Workflow" : "შრომითი პროცესები",
"Files workflow engine" : "ფაილების სამუშაოს შესრულების ძრავა",
"Open documentation" : "ღია დოკუმენტაცია",
- "Add rule group" : "ჯგუფის წესის დამატება",
- "Short rule description" : "წესის მოკლე აღწერა",
- "Add rule" : "წესის დამატება",
- "Reset" : "საწყის მდოგმარეობაში დაბრუნება",
- "Save" : "შენახვა",
- "Saving…" : "მიმდინარეობს დამახსოვრება...",
"Loading…" : "იტვირთება..."
},"pluralForm" :"nplurals=2; plural=(n!=1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ko.js b/apps/workflowengine/l10n/ko.js
index 46bbcf87c4e..e4518cd066b 100644
--- a/apps/workflowengine/l10n/ko.js
+++ b/apps/workflowengine/l10n/ko.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "짧은 규칙 설명",
+ "Add rule" : "규칙 추가",
+ "Reset" : "초기화",
+ "Save" : "저장",
+ "Saving…" : "저장 중…",
"Group list is empty" : "그룹 목록이 비었습니다.",
"Unable to retrieve the group list" : "그룹 리스트를 받아올 수 없습니다.",
"Saved" : "저장됨",
"Saving failed:" : "저장 실패:",
+ "Add rule group" : "규칙 그룹 추가",
"File MIME type" : "파일 MIME 형식",
"is" : "맞음",
"is not" : "아님",
@@ -62,12 +68,6 @@ OC.L10N.register(
"Check #%s does not exist" : "검사 #%s이(가) 존재하지 않음",
"Workflow" : "작업 흐름",
"Open documentation" : "문서 열기",
- "Add rule group" : "규칙 그룹 추가",
- "Short rule description" : "짧은 규칙 설명",
- "Add rule" : "규칙 추가",
- "Reset" : "초기화",
- "Save" : "저장",
- "Saving…" : "저장 중…",
"Loading…" : "불러오는 중…"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/ko.json b/apps/workflowengine/l10n/ko.json
index 44d3a8614d7..88cc50e1bdc 100644
--- a/apps/workflowengine/l10n/ko.json
+++ b/apps/workflowengine/l10n/ko.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "짧은 규칙 설명",
+ "Add rule" : "규칙 추가",
+ "Reset" : "초기화",
+ "Save" : "저장",
+ "Saving…" : "저장 중…",
"Group list is empty" : "그룹 목록이 비었습니다.",
"Unable to retrieve the group list" : "그룹 리스트를 받아올 수 없습니다.",
"Saved" : "저장됨",
"Saving failed:" : "저장 실패:",
+ "Add rule group" : "규칙 그룹 추가",
"File MIME type" : "파일 MIME 형식",
"is" : "맞음",
"is not" : "아님",
@@ -60,12 +66,6 @@
"Check #%s does not exist" : "검사 #%s이(가) 존재하지 않음",
"Workflow" : "작업 흐름",
"Open documentation" : "문서 열기",
- "Add rule group" : "규칙 그룹 추가",
- "Short rule description" : "짧은 규칙 설명",
- "Add rule" : "규칙 추가",
- "Reset" : "초기화",
- "Save" : "저장",
- "Saving…" : "저장 중…",
"Loading…" : "불러오는 중…"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/lt_LT.js b/apps/workflowengine/l10n/lt_LT.js
index 976e11ac2d4..59acbf41d18 100644
--- a/apps/workflowengine/l10n/lt_LT.js
+++ b/apps/workflowengine/l10n/lt_LT.js
@@ -1,9 +1,15 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Rodyti taisyklės aprašymą",
+ "Add rule" : "Pridėti taisyklę",
+ "Reset" : "Atstatyti",
+ "Save" : "Įrašyti",
+ "Saving…" : "Įrašoma…",
"Unable to retrieve the group list" : "Nepavyko nuskaityti grupių sąrašo",
"Saved" : "Įrašyta",
"Saving failed:" : "Įrašymas nepavyko:",
+ "Add rule group" : "Pridėti taisyklių grupę",
"File MIME type" : "Failo MIME tipas",
"is" : "yra",
"is not" : "nėra",
@@ -62,12 +68,6 @@ OC.L10N.register(
"Workflow" : "Darbo eiga",
"Files workflow engine" : "Darbo eigos su failais modulis",
"Open documentation" : "Atverti dokumentaciją",
- "Add rule group" : "Pridėti taisyklių grupę",
- "Short rule description" : "Rodyti taisyklės aprašymą",
- "Add rule" : "Pridėti taisyklę",
- "Reset" : "Atstatyti",
- "Save" : "Įrašyti",
- "Saving…" : "Įrašoma…",
"Loading…" : "Įkeliama…"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/workflowengine/l10n/lt_LT.json b/apps/workflowengine/l10n/lt_LT.json
index e609fcde96b..752d0919d1e 100644
--- a/apps/workflowengine/l10n/lt_LT.json
+++ b/apps/workflowengine/l10n/lt_LT.json
@@ -1,7 +1,13 @@
{ "translations": {
+ "Short rule description" : "Rodyti taisyklės aprašymą",
+ "Add rule" : "Pridėti taisyklę",
+ "Reset" : "Atstatyti",
+ "Save" : "Įrašyti",
+ "Saving…" : "Įrašoma…",
"Unable to retrieve the group list" : "Nepavyko nuskaityti grupių sąrašo",
"Saved" : "Įrašyta",
"Saving failed:" : "Įrašymas nepavyko:",
+ "Add rule group" : "Pridėti taisyklių grupę",
"File MIME type" : "Failo MIME tipas",
"is" : "yra",
"is not" : "nėra",
@@ -60,12 +66,6 @@
"Workflow" : "Darbo eiga",
"Files workflow engine" : "Darbo eigos su failais modulis",
"Open documentation" : "Atverti dokumentaciją",
- "Add rule group" : "Pridėti taisyklių grupę",
- "Short rule description" : "Rodyti taisyklės aprašymą",
- "Add rule" : "Pridėti taisyklę",
- "Reset" : "Atstatyti",
- "Save" : "Įrašyti",
- "Saving…" : "Įrašoma…",
"Loading…" : "Įkeliama…"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/lv.js b/apps/workflowengine/l10n/lv.js
index a3890a6dad1..b518b6031b2 100644
--- a/apps/workflowengine/l10n/lv.js
+++ b/apps/workflowengine/l10n/lv.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Īss kārtulas apraksts",
+ "Add rule" : "Pievienot kārtulu",
+ "Reset" : "Atiestatīt",
+ "Save" : "Saglabāt",
+ "Saving…" : "Saglabā...",
"Group list is empty" : "Grupu saraksts ir tukšš",
"Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu",
"Saved" : "Saglabāts",
"Saving failed:" : "Saglabāšana neizdevās:",
+ "Add rule group" : "Pievienot kārtulu grupas",
"File MIME type" : "Datnes MIME tips",
"is" : "ir",
"is not" : "nav",
@@ -62,12 +68,6 @@ OC.L10N.register(
"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
index f6447729589..772b52bd1d4 100644
--- a/apps/workflowengine/l10n/lv.json
+++ b/apps/workflowengine/l10n/lv.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Īss kārtulas apraksts",
+ "Add rule" : "Pievienot kārtulu",
+ "Reset" : "Atiestatīt",
+ "Save" : "Saglabāt",
+ "Saving…" : "Saglabā...",
"Group list is empty" : "Grupu saraksts ir tukšš",
"Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu",
"Saved" : "Saglabāts",
"Saving failed:" : "Saglabāšana neizdevās:",
+ "Add rule group" : "Pievienot kārtulu grupas",
"File MIME type" : "Datnes MIME tips",
"is" : "ir",
"is not" : "nav",
@@ -60,12 +66,6 @@
"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/mn.js b/apps/workflowengine/l10n/mn.js
index 7cec84ce7a7..6cd20a0b4af 100644
--- a/apps/workflowengine/l10n/mn.js
+++ b/apps/workflowengine/l10n/mn.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Дүрмийн тайлбар товч",
+ "Add rule" : "Дүрэм нэмэх",
+ "Reset" : "тохируулах",
+ "Save" : "хадгалах",
+ "Saving…" : "хадгалж байна",
"Saved" : "Хадгалсан",
"Saving failed:" : "Хадгалалт бүтэлгүйтэв:",
+ "Add rule group" : "Бүлэгт дүрэм нэмэх",
"File MIME type" : "Файлын MIME төрөл",
"is" : "бол",
"is not" : "биш",
@@ -53,12 +59,6 @@ OC.L10N.register(
"Operation #%s does not exist" : "%s үйл ажиллагаа байхгүй",
"Workflow" : "ажлын үйл явц",
"Open documentation" : "Нээлттэй баримт бичиг",
- "Add rule group" : "Бүлэгт дүрэм нэмэх",
- "Short rule description" : "Дүрмийн тайлбар товч",
- "Add rule" : "Дүрэм нэмэх",
- "Reset" : "тохируулах",
- "Save" : "хадгалах",
- "Saving…" : "хадгалж байна",
"Loading…" : "уншиж байна"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/mn.json b/apps/workflowengine/l10n/mn.json
index 33e759bd8cc..d1dc04726d1 100644
--- a/apps/workflowengine/l10n/mn.json
+++ b/apps/workflowengine/l10n/mn.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Дүрмийн тайлбар товч",
+ "Add rule" : "Дүрэм нэмэх",
+ "Reset" : "тохируулах",
+ "Save" : "хадгалах",
+ "Saving…" : "хадгалж байна",
"Saved" : "Хадгалсан",
"Saving failed:" : "Хадгалалт бүтэлгүйтэв:",
+ "Add rule group" : "Бүлэгт дүрэм нэмэх",
"File MIME type" : "Файлын MIME төрөл",
"is" : "бол",
"is not" : "биш",
@@ -51,12 +57,6 @@
"Operation #%s does not exist" : "%s үйл ажиллагаа байхгүй",
"Workflow" : "ажлын үйл явц",
"Open documentation" : "Нээлттэй баримт бичиг",
- "Add rule group" : "Бүлэгт дүрэм нэмэх",
- "Short rule description" : "Дүрмийн тайлбар товч",
- "Add rule" : "Дүрэм нэмэх",
- "Reset" : "тохируулах",
- "Save" : "хадгалах",
- "Saving…" : "хадгалж байна",
"Loading…" : "уншиж байна"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/nb.js b/apps/workflowengine/l10n/nb.js
index 368013b14fe..7fbc1d904f2 100644
--- a/apps/workflowengine/l10n/nb.js
+++ b/apps/workflowengine/l10n/nb.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kort beskrivelse av regel",
+ "Add rule" : "Legg til regel",
+ "Reset" : "Tilbakestill",
+ "Save" : "Lagre",
+ "Saving…" : "Lagrer…",
"Group list is empty" : "Gruppeliste er tom",
"Unable to retrieve the group list" : "Kunne ikke hente gruppelisten",
"Saved" : "Lagret",
"Saving failed:" : "Lagring mislyktes:",
+ "Add rule group" : "Legg til regelgruppe",
"File MIME type" : "Filens MIME-type",
"is" : "er",
"is not" : "er ikke",
@@ -63,12 +69,6 @@ OC.L10N.register(
"Workflow" : "Arbeidsflyt",
"Files workflow engine" : "Arbeidsflytmotor for filer",
"Open documentation" : "Åpne dokumentasjonen",
- "Add rule group" : "Legg til regelgruppe",
- "Short rule description" : "Kort beskrivelse av regel",
- "Add rule" : "Legg til regel",
- "Reset" : "Tilbakestill",
- "Save" : "Lagre",
- "Saving…" : "Lagrer…",
"Loading…" : "Laster…"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/nb.json b/apps/workflowengine/l10n/nb.json
index 7c47afb956b..b43e0b06c7a 100644
--- a/apps/workflowengine/l10n/nb.json
+++ b/apps/workflowengine/l10n/nb.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Kort beskrivelse av regel",
+ "Add rule" : "Legg til regel",
+ "Reset" : "Tilbakestill",
+ "Save" : "Lagre",
+ "Saving…" : "Lagrer…",
"Group list is empty" : "Gruppeliste er tom",
"Unable to retrieve the group list" : "Kunne ikke hente gruppelisten",
"Saved" : "Lagret",
"Saving failed:" : "Lagring mislyktes:",
+ "Add rule group" : "Legg til regelgruppe",
"File MIME type" : "Filens MIME-type",
"is" : "er",
"is not" : "er ikke",
@@ -61,12 +67,6 @@
"Workflow" : "Arbeidsflyt",
"Files workflow engine" : "Arbeidsflytmotor for filer",
"Open documentation" : "Åpne dokumentasjonen",
- "Add rule group" : "Legg til regelgruppe",
- "Short rule description" : "Kort beskrivelse av regel",
- "Add rule" : "Legg til regel",
- "Reset" : "Tilbakestill",
- "Save" : "Lagre",
- "Saving…" : "Lagrer…",
"Loading…" : "Laster…"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/nl.js b/apps/workflowengine/l10n/nl.js
index 8324bebcd2c..8cfe037329d 100644
--- a/apps/workflowengine/l10n/nl.js
+++ b/apps/workflowengine/l10n/nl.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Korte rolbeschrijving",
+ "Add rule" : "Voeg rol toe",
+ "Reset" : "Reset",
+ "Save" : "Opslaan",
+ "Saving…" : "Opslaan...",
"Group list is empty" : "Groepenlijst is leeg",
"Unable to retrieve the group list" : "Kan groepenoverzicht niet ophalen",
"Saved" : "Bewaard",
"Saving failed:" : "Opslaan mislukt:",
+ "Add rule group" : "Groepsrol toevoegen",
"File MIME type" : "Mimetype bestand",
"is" : "is",
"is not" : "is niet",
"matches" : "komt overeen",
"does not match" : "komt niet overeen",
"Example: {placeholder}" : "Bijvoorbeeld: {placeholder}",
+ "File name" : "Bestandsnaam",
"File size (upload)" : "Bestandsgrootte (upload)",
"less" : "minder",
"less or equals" : "minder of gelijk",
@@ -64,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Workflows",
"Files workflow engine" : "Betanden workflow engine",
"Open documentation" : "Open documentatie",
- "Add rule group" : "Groepsrol toevoegen",
- "Short rule description" : "Korte rolbeschrijving",
- "Add rule" : "Voeg rol toe",
- "Reset" : "Reset",
- "Save" : "Opslaan",
- "Saving…" : "Opslaan...",
"Loading…" : "Laden..."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/nl.json b/apps/workflowengine/l10n/nl.json
index b6147c35b03..fab24b9e03b 100644
--- a/apps/workflowengine/l10n/nl.json
+++ b/apps/workflowengine/l10n/nl.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "Korte rolbeschrijving",
+ "Add rule" : "Voeg rol toe",
+ "Reset" : "Reset",
+ "Save" : "Opslaan",
+ "Saving…" : "Opslaan...",
"Group list is empty" : "Groepenlijst is leeg",
"Unable to retrieve the group list" : "Kan groepenoverzicht niet ophalen",
"Saved" : "Bewaard",
"Saving failed:" : "Opslaan mislukt:",
+ "Add rule group" : "Groepsrol toevoegen",
"File MIME type" : "Mimetype bestand",
"is" : "is",
"is not" : "is niet",
"matches" : "komt overeen",
"does not match" : "komt niet overeen",
"Example: {placeholder}" : "Bijvoorbeeld: {placeholder}",
+ "File name" : "Bestandsnaam",
"File size (upload)" : "Bestandsgrootte (upload)",
"less" : "minder",
"less or equals" : "minder of gelijk",
@@ -62,12 +69,6 @@
"Workflow" : "Workflows",
"Files workflow engine" : "Betanden workflow engine",
"Open documentation" : "Open documentatie",
- "Add rule group" : "Groepsrol toevoegen",
- "Short rule description" : "Korte rolbeschrijving",
- "Add rule" : "Voeg rol toe",
- "Reset" : "Reset",
- "Save" : "Opslaan",
- "Saving…" : "Opslaan...",
"Loading…" : "Laden..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/pl.js b/apps/workflowengine/l10n/pl.js
index 22b1693a177..b1d3e6648c1 100644
--- a/apps/workflowengine/l10n/pl.js
+++ b/apps/workflowengine/l10n/pl.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Krótki opis reguły",
+ "Add rule" : "Dodaj regułę",
+ "Reset" : "Zresetuj",
+ "Save" : "Zapisz",
+ "Saving…" : "Zapisywanie…",
"Group list is empty" : "Lista grup jest pusta",
"Unable to retrieve the group list" : "Nie można pobrać listy grup",
"Saved" : "Zapisano",
"Saving failed:" : "Zapis się nie udał:",
+ "Add rule group" : "Dodaj grupę reguł",
"File MIME type" : "Typy plików MIME",
"is" : "jest",
"is not" : "nie jest",
@@ -64,12 +70,6 @@ OC.L10N.register(
"Workflow" : "Wpływ na pracę",
"Files workflow engine" : "Piliki silnika workflow",
"Open documentation" : "Otwórz dokumentację",
- "Add rule group" : "Dodaj grupę reguł",
- "Short rule description" : "Krótki opis reguły",
- "Add rule" : "Dodaj regułę",
- "Reset" : "Zresetuj",
- "Save" : "Zapisz",
- "Saving…" : "Zapisywanie…",
"Loading…" : "Wczytywanie…"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/workflowengine/l10n/pl.json b/apps/workflowengine/l10n/pl.json
index d80b7ee3d87..5bc7873eee7 100644
--- a/apps/workflowengine/l10n/pl.json
+++ b/apps/workflowengine/l10n/pl.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Krótki opis reguły",
+ "Add rule" : "Dodaj regułę",
+ "Reset" : "Zresetuj",
+ "Save" : "Zapisz",
+ "Saving…" : "Zapisywanie…",
"Group list is empty" : "Lista grup jest pusta",
"Unable to retrieve the group list" : "Nie można pobrać listy grup",
"Saved" : "Zapisano",
"Saving failed:" : "Zapis się nie udał:",
+ "Add rule group" : "Dodaj grupę reguł",
"File MIME type" : "Typy plików MIME",
"is" : "jest",
"is not" : "nie jest",
@@ -62,12 +68,6 @@
"Workflow" : "Wpływ na pracę",
"Files workflow engine" : "Piliki silnika workflow",
"Open documentation" : "Otwórz dokumentację",
- "Add rule group" : "Dodaj grupę reguł",
- "Short rule description" : "Krótki opis reguły",
- "Add rule" : "Dodaj regułę",
- "Reset" : "Zresetuj",
- "Save" : "Zapisz",
- "Saving…" : "Zapisywanie…",
"Loading…" : "Wczytywanie…"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/pt_BR.js b/apps/workflowengine/l10n/pt_BR.js
index a401a9c5654..e526e3f6a57 100644
--- a/apps/workflowengine/l10n/pt_BR.js
+++ b/apps/workflowengine/l10n/pt_BR.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Descrição curta da regra",
+ "Add rule" : "Adicionar regra",
+ "Reset" : "Redefinir",
+ "Save" : "Salvar",
+ "Saving…" : "Salvando...",
"Group list is empty" : "Lista de grupos vazia",
"Unable to retrieve the group list" : "Impossível recuperar a lista do grupo",
"Saved" : "Salvo",
"Saving failed:" : "A gravação falhou:",
+ "Add rule group" : "Adicionar regra do grupo",
"File MIME type" : "Tipo de arquivo MIME",
"is" : "é",
"is not" : "não é",
@@ -65,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Fluxo de trabalho",
"Files workflow engine" : "Sistema de fluxo de trabalho de arquivos",
"Open documentation" : "Abrir documentação",
- "Add rule group" : "Adicionar regra do grupo",
- "Short rule description" : "Descrição curta da regra",
- "Add rule" : "Adicionar regra",
- "Reset" : "Redefinir",
- "Save" : "Salvar",
- "Saving…" : "Salvando...",
"Loading…" : "Carregando..."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/workflowengine/l10n/pt_BR.json b/apps/workflowengine/l10n/pt_BR.json
index 46cf11c5367..c6cfd7f2c69 100644
--- a/apps/workflowengine/l10n/pt_BR.json
+++ b/apps/workflowengine/l10n/pt_BR.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Descrição curta da regra",
+ "Add rule" : "Adicionar regra",
+ "Reset" : "Redefinir",
+ "Save" : "Salvar",
+ "Saving…" : "Salvando...",
"Group list is empty" : "Lista de grupos vazia",
"Unable to retrieve the group list" : "Impossível recuperar a lista do grupo",
"Saved" : "Salvo",
"Saving failed:" : "A gravação falhou:",
+ "Add rule group" : "Adicionar regra do grupo",
"File MIME type" : "Tipo de arquivo MIME",
"is" : "é",
"is not" : "não é",
@@ -63,12 +69,6 @@
"Workflow" : "Fluxo de trabalho",
"Files workflow engine" : "Sistema de fluxo de trabalho de arquivos",
"Open documentation" : "Abrir documentação",
- "Add rule group" : "Adicionar regra do grupo",
- "Short rule description" : "Descrição curta da regra",
- "Add rule" : "Adicionar regra",
- "Reset" : "Redefinir",
- "Save" : "Salvar",
- "Saving…" : "Salvando...",
"Loading…" : "Carregando..."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/ru.js b/apps/workflowengine/l10n/ru.js
index 47ecbaba9e4..d77891e0ca1 100644
--- a/apps/workflowengine/l10n/ru.js
+++ b/apps/workflowengine/l10n/ru.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Краткое описание правила",
+ "Add rule" : "Добавить правило",
+ "Reset" : "Сбросить",
+ "Save" : "Сохранить",
+ "Saving…" : "Сохранение…",
"Group list is empty" : "Список групп пуст",
"Unable to retrieve the group list" : "Не удается получить список групп",
"Saved" : "Сохранено",
"Saving failed:" : "Ошибка при сохранении:",
+ "Add rule group" : "Добавить группу правил",
"File MIME type" : "MIME-тип файла",
"is" : "равняется",
"is not" : "не равняется",
"matches" : "соответствует",
"does not match" : "не соответствует",
"Example: {placeholder}" : "Пример: {placeholder}",
+ "File name" : "Имя файла",
"File size (upload)" : "Размер передаваемого на сервер файла",
"less" : "меньше",
"less or equals" : "меньше либо равно",
@@ -64,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Обработка файлов",
"Files workflow engine" : "Механизм обработки файлов",
"Open documentation" : "Открыть документацию",
- "Add rule group" : "Добавить группу правил",
- "Short rule description" : "Краткое описание правила",
- "Add rule" : "Добавить правило",
- "Reset" : "Сбросить",
- "Save" : "Сохранить",
- "Saving…" : "Сохранение…",
"Loading…" : "Загрузка…"
},
"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/workflowengine/l10n/ru.json b/apps/workflowengine/l10n/ru.json
index 2c548ebdb8d..d9c002208be 100644
--- a/apps/workflowengine/l10n/ru.json
+++ b/apps/workflowengine/l10n/ru.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "Краткое описание правила",
+ "Add rule" : "Добавить правило",
+ "Reset" : "Сбросить",
+ "Save" : "Сохранить",
+ "Saving…" : "Сохранение…",
"Group list is empty" : "Список групп пуст",
"Unable to retrieve the group list" : "Не удается получить список групп",
"Saved" : "Сохранено",
"Saving failed:" : "Ошибка при сохранении:",
+ "Add rule group" : "Добавить группу правил",
"File MIME type" : "MIME-тип файла",
"is" : "равняется",
"is not" : "не равняется",
"matches" : "соответствует",
"does not match" : "не соответствует",
"Example: {placeholder}" : "Пример: {placeholder}",
+ "File name" : "Имя файла",
"File size (upload)" : "Размер передаваемого на сервер файла",
"less" : "меньше",
"less or equals" : "меньше либо равно",
@@ -62,12 +69,6 @@
"Workflow" : "Обработка файлов",
"Files workflow engine" : "Механизм обработки файлов",
"Open documentation" : "Открыть документацию",
- "Add rule group" : "Добавить группу правил",
- "Short rule description" : "Краткое описание правила",
- "Add rule" : "Добавить правило",
- "Reset" : "Сбросить",
- "Save" : "Сохранить",
- "Saving…" : "Сохранение…",
"Loading…" : "Загрузка…"
},"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/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js
index f833baec147..bcaf6669dc1 100644
--- a/apps/workflowengine/l10n/sk.js
+++ b/apps/workflowengine/l10n/sk.js
@@ -1,9 +1,15 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Zobraziť popis pravidla",
+ "Add rule" : "Pridať pravidlo",
+ "Reset" : "Vynulovať",
+ "Save" : "Uložiť",
+ "Saving…" : "Ukladá sa...",
"Unable to retrieve the group list" : "Nie je možné načítať zoznam skupín",
"Saved" : "Uložené",
"Saving failed:" : "Ukladanie neúspešné:",
+ "Add rule group" : "Pridať skupinu pravidiel",
"File MIME type" : "MIME typ súboru",
"is" : "je",
"is not" : "nie je",
@@ -62,12 +68,6 @@ OC.L10N.register(
"Workflow" : "Systém práce",
"Files workflow engine" : "Typ spôsobu práce súborov",
"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=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json
index 295f1432407..747230c1c69 100644
--- a/apps/workflowengine/l10n/sk.json
+++ b/apps/workflowengine/l10n/sk.json
@@ -1,7 +1,13 @@
{ "translations": {
+ "Short rule description" : "Zobraziť popis pravidla",
+ "Add rule" : "Pridať pravidlo",
+ "Reset" : "Vynulovať",
+ "Save" : "Uložiť",
+ "Saving…" : "Ukladá sa...",
"Unable to retrieve the group list" : "Nie je možné načítať zoznam skupín",
"Saved" : "Uložené",
"Saving failed:" : "Ukladanie neúspešné:",
+ "Add rule group" : "Pridať skupinu pravidiel",
"File MIME type" : "MIME typ súboru",
"is" : "je",
"is not" : "nie je",
@@ -60,12 +66,6 @@
"Workflow" : "Systém práce",
"Files workflow engine" : "Typ spôsobu práce súborov",
"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=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/sl.js b/apps/workflowengine/l10n/sl.js
index 572b58ac15f..46073690983 100644
--- a/apps/workflowengine/l10n/sl.js
+++ b/apps/workflowengine/l10n/sl.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kratek opis pravila",
+ "Add rule" : "Dodaj pravilo",
+ "Reset" : "Razveljavi",
+ "Save" : "Shrani",
+ "Saving…" : "Poteka shranjevanje ...",
"Group list is empty" : "Skupinski seznam je prazen",
"Unable to retrieve the group list" : "Skupinskega seznama ni mogoče pridobiti.",
"Saved" : "Shranjeno",
"Saving failed:" : "Shranjevanje je spodletelo:",
+ "Add rule group" : "Dodaj skupino pravil",
"File MIME type" : "Vrsta MIME datoteke",
"is" : "je",
"is not" : "ni",
@@ -64,12 +70,6 @@ OC.L10N.register(
"Workflow" : "Delovni tok",
"Files workflow engine" : "Delovni tok datotek",
"Open documentation" : "Odpri dokumentacijo",
- "Add rule group" : "Dodaj skupino pravil",
- "Short rule description" : "Kratek opis pravila",
- "Add rule" : "Dodaj pravilo",
- "Reset" : "Razveljavi",
- "Save" : "Shrani",
- "Saving…" : "Poteka shranjevanje ...",
"Loading…" : "Poteka nalaganje ..."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/workflowengine/l10n/sl.json b/apps/workflowengine/l10n/sl.json
index 9b9755e20b9..7c329db4351 100644
--- a/apps/workflowengine/l10n/sl.json
+++ b/apps/workflowengine/l10n/sl.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Kratek opis pravila",
+ "Add rule" : "Dodaj pravilo",
+ "Reset" : "Razveljavi",
+ "Save" : "Shrani",
+ "Saving…" : "Poteka shranjevanje ...",
"Group list is empty" : "Skupinski seznam je prazen",
"Unable to retrieve the group list" : "Skupinskega seznama ni mogoče pridobiti.",
"Saved" : "Shranjeno",
"Saving failed:" : "Shranjevanje je spodletelo:",
+ "Add rule group" : "Dodaj skupino pravil",
"File MIME type" : "Vrsta MIME datoteke",
"is" : "je",
"is not" : "ni",
@@ -62,12 +68,6 @@
"Workflow" : "Delovni tok",
"Files workflow engine" : "Delovni tok datotek",
"Open documentation" : "Odpri dokumentacijo",
- "Add rule group" : "Dodaj skupino pravil",
- "Short rule description" : "Kratek opis pravila",
- "Add rule" : "Dodaj pravilo",
- "Reset" : "Razveljavi",
- "Save" : "Shrani",
- "Saving…" : "Poteka shranjevanje ...",
"Loading…" : "Poteka nalaganje ..."
},"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/workflowengine/l10n/sq.js b/apps/workflowengine/l10n/sq.js
index 7fa1525c82e..782379f45a2 100644
--- a/apps/workflowengine/l10n/sq.js
+++ b/apps/workflowengine/l10n/sq.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Përshkrim i shkurtër i rregullit",
+ "Add rule" : "Shto rregull",
+ "Reset" : "Rivendos",
+ "Save" : "Ruaj",
+ "Saving…" : "Duke u ruajtur...",
"Saved" : "E ruajtur",
"Saving failed:" : "Ruajtja dështoi:",
+ "Add rule group" : "Shto rregull grupi",
"File MIME type" : "Skedari i tipit MIME",
"is" : "është",
"is not" : "nuk është",
@@ -60,12 +66,6 @@ OC.L10N.register(
"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
index 022d3aefda3..d68ab57aac5 100644
--- a/apps/workflowengine/l10n/sq.json
+++ b/apps/workflowengine/l10n/sq.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "Përshkrim i shkurtër i rregullit",
+ "Add rule" : "Shto rregull",
+ "Reset" : "Rivendos",
+ "Save" : "Ruaj",
+ "Saving…" : "Duke u ruajtur...",
"Saved" : "E ruajtur",
"Saving failed:" : "Ruajtja dështoi:",
+ "Add rule group" : "Shto rregull grupi",
"File MIME type" : "Skedari i tipit MIME",
"is" : "është",
"is not" : "nuk është",
@@ -58,12 +64,6 @@
"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/sr.js b/apps/workflowengine/l10n/sr.js
index a85151cd879..4dad61565b1 100644
--- a/apps/workflowengine/l10n/sr.js
+++ b/apps/workflowengine/l10n/sr.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Кратки опис правила",
+ "Add rule" : "Додај правило",
+ "Reset" : "Ресетуј",
+ "Save" : "Сачувај",
+ "Saving…" : "Чувам…",
"Group list is empty" : "Списак група је празан",
"Unable to retrieve the group list" : "Није могуће дохватити списак група",
"Saved" : "Снимљено",
"Saving failed:" : "Снимање није успело:",
+ "Add rule group" : "Додај групу правила",
"File MIME type" : "MIME тип фајла",
"is" : "је",
"is not" : "није",
@@ -65,12 +71,6 @@ OC.L10N.register(
"Workflow" : "Процес рада",
"Files workflow engine" : "Датотеке за мотор процеса рада",
"Open documentation" : "Отвори документацију",
- "Add rule group" : "Додај групу правила",
- "Short rule description" : "Кратки опис правила",
- "Add rule" : "Додај правило",
- "Reset" : "Ресетуј",
- "Save" : "Сачувај",
- "Saving…" : "Чувам…",
"Loading…" : "Учитавање…"
},
"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/workflowengine/l10n/sr.json b/apps/workflowengine/l10n/sr.json
index aa49ea24fb1..eca92a1d83b 100644
--- a/apps/workflowengine/l10n/sr.json
+++ b/apps/workflowengine/l10n/sr.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "Кратки опис правила",
+ "Add rule" : "Додај правило",
+ "Reset" : "Ресетуј",
+ "Save" : "Сачувај",
+ "Saving…" : "Чувам…",
"Group list is empty" : "Списак група је празан",
"Unable to retrieve the group list" : "Није могуће дохватити списак група",
"Saved" : "Снимљено",
"Saving failed:" : "Снимање није успело:",
+ "Add rule group" : "Додај групу правила",
"File MIME type" : "MIME тип фајла",
"is" : "је",
"is not" : "није",
@@ -63,12 +69,6 @@
"Workflow" : "Процес рада",
"Files workflow engine" : "Датотеке за мотор процеса рада",
"Open documentation" : "Отвори документацију",
- "Add rule group" : "Додај групу правила",
- "Short rule description" : "Кратки опис правила",
- "Add rule" : "Додај правило",
- "Reset" : "Ресетуј",
- "Save" : "Сачувај",
- "Saving…" : "Чувам…",
"Loading…" : "Учитавање…"
},"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/workflowengine/l10n/sv.js b/apps/workflowengine/l10n/sv.js
index 27c4f6a96e9..856316f1e8d 100644
--- a/apps/workflowengine/l10n/sv.js
+++ b/apps/workflowengine/l10n/sv.js
@@ -1,14 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kort regelbeskrivning",
+ "Add rule" : "Lägg till regel",
+ "Reset" : "Återställ",
+ "Save" : "Spara",
+ "Saving…" : "Sparar...",
+ "Group list is empty" : "Grupplistan är tom",
+ "Unable to retrieve the group list" : "Kan inte hämta grupplistan",
"Saved" : "Sparad",
"Saving failed:" : "Gick ej att spara: ",
+ "Add rule group" : "Lägg till regelgrupp",
"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 name" : "Filnamn",
"File size (upload)" : "Filstorlek (uppladdning)",
"less" : "mindre",
"less or equals" : "mindre eller motsvarar",
@@ -37,6 +46,7 @@ OC.L10N.register(
"Android client" : "Android-klient",
"iOS client" : "iOS-klient",
"Desktop client" : "Skrivbordsklient",
+ "Thunderbird & Outlook addons" : "Thunderbird & Outlook - tillägg",
"User group membership" : "Användargruppsmedlemskap",
"is member of" : "är medlem i",
"is not member of" : "är inte medlem i",
@@ -60,12 +70,6 @@ OC.L10N.register(
"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
index 8827166bfc0..2e7f4d43fbc 100644
--- a/apps/workflowengine/l10n/sv.json
+++ b/apps/workflowengine/l10n/sv.json
@@ -1,12 +1,21 @@
{ "translations": {
+ "Short rule description" : "Kort regelbeskrivning",
+ "Add rule" : "Lägg till regel",
+ "Reset" : "Återställ",
+ "Save" : "Spara",
+ "Saving…" : "Sparar...",
+ "Group list is empty" : "Grupplistan är tom",
+ "Unable to retrieve the group list" : "Kan inte hämta grupplistan",
"Saved" : "Sparad",
"Saving failed:" : "Gick ej att spara: ",
+ "Add rule group" : "Lägg till regelgrupp",
"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 name" : "Filnamn",
"File size (upload)" : "Filstorlek (uppladdning)",
"less" : "mindre",
"less or equals" : "mindre eller motsvarar",
@@ -35,6 +44,7 @@
"Android client" : "Android-klient",
"iOS client" : "iOS-klient",
"Desktop client" : "Skrivbordsklient",
+ "Thunderbird & Outlook addons" : "Thunderbird & Outlook - tillägg",
"User group membership" : "Användargruppsmedlemskap",
"is member of" : "är medlem i",
"is not member of" : "är inte medlem i",
@@ -58,12 +68,6 @@
"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/tr.js b/apps/workflowengine/l10n/tr.js
index d09238621cb..576648ec1f1 100644
--- a/apps/workflowengine/l10n/tr.js
+++ b/apps/workflowengine/l10n/tr.js
@@ -1,16 +1,23 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "Kısa kural açıklaması",
+ "Add rule" : "Kural ekle",
+ "Reset" : "Sıfırla",
+ "Save" : "Kaydet",
+ "Saving…" : "Kaydediliyor...",
"Group list is empty" : "Grup listesi boş",
"Unable to retrieve the group list" : "Grup listesi alınamadı",
"Saved" : "Kaydedildi",
"Saving failed:" : "Kaydedilemedi:",
+ "Add rule group" : "Kural grubu ekle",
"File MIME type" : "Dosya MIME türü",
"is" : "şu olan",
"is not" : "şu olmayan",
"matches" : "şuna uyan",
"does not match" : "şuna uymayan",
"Example: {placeholder}" : "Örnek: {placeholder}",
+ "File name" : "Dosya adı",
"File size (upload)" : "Dosya boyutu (yükleme)",
"less" : "şundan küçük",
"less or equals" : "şundan küçük ya da eşit",
@@ -64,12 +71,6 @@ OC.L10N.register(
"Workflow" : "İş akışı",
"Files workflow engine" : "Dosya iş akışı motoru",
"Open documentation" : "Belgeleri aç",
- "Add rule group" : "Kural grubu ekle",
- "Short rule description" : "Kısa kural açıklaması",
- "Add rule" : "Kural ekle",
- "Reset" : "Sıfırla",
- "Save" : "Kaydet",
- "Saving…" : "Kaydediliyor...",
"Loading…" : "Yükleniyor..."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json
index 988f7a37f18..9356e4ec530 100644
--- a/apps/workflowengine/l10n/tr.json
+++ b/apps/workflowengine/l10n/tr.json
@@ -1,14 +1,21 @@
{ "translations": {
+ "Short rule description" : "Kısa kural açıklaması",
+ "Add rule" : "Kural ekle",
+ "Reset" : "Sıfırla",
+ "Save" : "Kaydet",
+ "Saving…" : "Kaydediliyor...",
"Group list is empty" : "Grup listesi boş",
"Unable to retrieve the group list" : "Grup listesi alınamadı",
"Saved" : "Kaydedildi",
"Saving failed:" : "Kaydedilemedi:",
+ "Add rule group" : "Kural grubu ekle",
"File MIME type" : "Dosya MIME türü",
"is" : "şu olan",
"is not" : "şu olmayan",
"matches" : "şuna uyan",
"does not match" : "şuna uymayan",
"Example: {placeholder}" : "Örnek: {placeholder}",
+ "File name" : "Dosya adı",
"File size (upload)" : "Dosya boyutu (yükleme)",
"less" : "şundan küçük",
"less or equals" : "şundan küçük ya da eşit",
@@ -62,12 +69,6 @@
"Workflow" : "İş akışı",
"Files workflow engine" : "Dosya iş akışı motoru",
"Open documentation" : "Belgeleri aç",
- "Add rule group" : "Kural grubu ekle",
- "Short rule description" : "Kısa kural açıklaması",
- "Add rule" : "Kural ekle",
- "Reset" : "Sıfırla",
- "Save" : "Kaydet",
- "Saving…" : "Kaydediliyor...",
"Loading…" : "Yükleniyor..."
},"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
index 35bfb47564f..0613a10d776 100644
--- a/apps/workflowengine/l10n/zh_CN.js
+++ b/apps/workflowengine/l10n/zh_CN.js
@@ -1,10 +1,16 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "短规则说明",
+ "Add rule" : "添加规则",
+ "Reset" : "重置",
+ "Save" : "保存",
+ "Saving…" : "保存中...",
"Group list is empty" : "用户群组列表空",
"Unable to retrieve the group list" : "无法获取用户群组列表",
"Saved" : "已保存",
"Saving failed:" : "保存失败:",
+ "Add rule group" : "添加规则组",
"File MIME type" : "文件MIME类型",
"is" : "是",
"is not" : "不是",
@@ -64,12 +70,6 @@ OC.L10N.register(
"Workflow" : "工作流",
"Files workflow engine" : "文件工作流引擎",
"Open documentation" : "打开文档",
- "Add rule group" : "添加规则组",
- "Short rule description" : "短规则说明",
- "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
index 7d442796593..f507c9a1974 100644
--- a/apps/workflowengine/l10n/zh_CN.json
+++ b/apps/workflowengine/l10n/zh_CN.json
@@ -1,8 +1,14 @@
{ "translations": {
+ "Short rule description" : "短规则说明",
+ "Add rule" : "添加规则",
+ "Reset" : "重置",
+ "Save" : "保存",
+ "Saving…" : "保存中...",
"Group list is empty" : "用户群组列表空",
"Unable to retrieve the group list" : "无法获取用户群组列表",
"Saved" : "已保存",
"Saving failed:" : "保存失败:",
+ "Add rule group" : "添加规则组",
"File MIME type" : "文件MIME类型",
"is" : "是",
"is not" : "不是",
@@ -62,12 +68,6 @@
"Workflow" : "工作流",
"Files workflow engine" : "文件工作流引擎",
"Open documentation" : "打开文档",
- "Add rule group" : "添加规则组",
- "Short rule description" : "短规则说明",
- "Add rule" : "添加规则",
- "Reset" : "重置",
- "Save" : "保存",
- "Saving…" : "保存中...",
"Loading…" : "加载中"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/workflowengine/l10n/zh_TW.js b/apps/workflowengine/l10n/zh_TW.js
index d05ab24bcae..b208485641e 100644
--- a/apps/workflowengine/l10n/zh_TW.js
+++ b/apps/workflowengine/l10n/zh_TW.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"workflowengine",
{
+ "Short rule description" : "簡短規則描述",
+ "Add rule" : "添加規則",
+ "Reset" : "重設",
+ "Save" : "儲存",
+ "Saving…" : "儲存中...",
"Saved" : "已儲存",
"Saving failed:" : "保存失敗:",
+ "Add rule group" : "新增群組規則",
"File MIME type" : "檔案MIME類型",
"is" : "是",
"is not" : "不是",
@@ -60,12 +66,6 @@ OC.L10N.register(
"Check #%s does not exist" : "檢查 #%s 不存在",
"Workflow" : "工作流程",
"Open documentation" : "開啟說明文件",
- "Add rule group" : "新增群組規則",
- "Short rule description" : "簡短規則描述",
- "Add rule" : "添加規則",
- "Reset" : "重設",
- "Save" : "儲存",
- "Saving…" : "儲存中...",
"Loading…" : "載入中…"
},
"nplurals=1; plural=0;");
diff --git a/apps/workflowengine/l10n/zh_TW.json b/apps/workflowengine/l10n/zh_TW.json
index 1179e279f41..a87db188b14 100644
--- a/apps/workflowengine/l10n/zh_TW.json
+++ b/apps/workflowengine/l10n/zh_TW.json
@@ -1,6 +1,12 @@
{ "translations": {
+ "Short rule description" : "簡短規則描述",
+ "Add rule" : "添加規則",
+ "Reset" : "重設",
+ "Save" : "儲存",
+ "Saving…" : "儲存中...",
"Saved" : "已儲存",
"Saving failed:" : "保存失敗:",
+ "Add rule group" : "新增群組規則",
"File MIME type" : "檔案MIME類型",
"is" : "是",
"is not" : "不是",
@@ -58,12 +64,6 @@
"Check #%s does not exist" : "檢查 #%s 不存在",
"Workflow" : "工作流程",
"Open documentation" : "開啟說明文件",
- "Add rule group" : "新增群組規則",
- "Short rule description" : "簡短規則描述",
- "Add rule" : "添加規則",
- "Reset" : "重設",
- "Save" : "儲存",
- "Saving…" : "儲存中...",
"Loading…" : "載入中…"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/build/package-lock.json b/build/package-lock.json
index 113e406650d..80e7a76565f 100644
--- a/build/package-lock.json
+++ b/build/package-lock.json
@@ -134,7 +134,6 @@
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
- "optional": true,
"requires": {
"tweetnacl": "^0.14.3"
}
@@ -178,7 +177,7 @@
},
"camelcase-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
@@ -229,9 +228,9 @@
"dev": true
},
"combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
+ "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
@@ -306,7 +305,6 @@
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
- "optional": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
@@ -368,13 +366,13 @@
"dev": true
},
"form-data": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
- "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
- "combined-stream": "1.0.6",
+ "combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
@@ -1216,12 +1214,12 @@
"dev": true
},
"har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
- "ajv": "^5.1.0",
+ "ajv": "^5.3.0",
"har-schema": "^2.0.0"
}
},
@@ -1302,7 +1300,7 @@
},
"is-builtin-module": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
@@ -1485,8 +1483,7 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"jsdoc": {
"version": "3.5.5",
@@ -3878,7 +3875,8 @@
"nodemailer-fetch": {
"version": "1.6.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"nodemailer-shared": {
"version": "1.1.0",
@@ -5977,7 +5975,7 @@
},
"load-json-file": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
@@ -6040,7 +6038,7 @@
},
"meow": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
@@ -6057,18 +6055,18 @@
}
},
"mime-db": {
- "version": "1.36.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
- "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
+ "version": "1.37.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
+ "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
"dev": true
},
"mime-types": {
- "version": "2.1.20",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
- "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
+ "version": "2.1.21",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
+ "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"dev": true,
"requires": {
- "mime-db": "~1.36.0"
+ "mime-db": "~1.37.0"
}
},
"minimatch": {
@@ -6131,16 +6129,16 @@
"dependencies": {
"semver": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
"dev": true
}
}
},
"node-sass": {
- "version": "4.9.3",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz",
- "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==",
+ "version": "4.9.4",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.4.tgz",
+ "integrity": "sha512-MXyurANsUoE4/6KmfMkwGcBzAnJQ5xJBGW7Ei6ea8KnUKuzHr/SguVBIi3uaUAHtZCPUYkvlJ3Ef5T5VAwVpaA==",
"dev": true,
"requires": {
"async-foreach": "^0.1.3",
@@ -6158,7 +6156,7 @@
"nan": "^2.10.0",
"node-gyp": "^3.8.0",
"npmlog": "^4.0.0",
- "request": "2.87.0",
+ "request": "^2.88.0",
"sass-graph": "^2.2.4",
"stdout-stream": "^1.4.0",
"true-case-path": "^1.0.2"
@@ -6204,9 +6202,9 @@
"dev": true
},
"oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
@@ -6859,7 +6857,7 @@
},
"pify": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
@@ -6890,6 +6888,12 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@@ -6925,7 +6929,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -6958,31 +6962,31 @@
}
},
"request": {
- "version": "2.87.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
- "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
- "aws4": "^1.6.0",
+ "aws4": "^1.8.0",
"caseless": "~0.12.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.1",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
"forever-agent": "~0.6.1",
- "form-data": "~2.3.1",
- "har-validator": "~5.0.3",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.17",
- "oauth-sign": "~0.8.2",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
- "qs": "~6.5.1",
- "safe-buffer": "^5.1.1",
- "tough-cookie": "~2.3.3",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
- "uuid": "^3.1.0"
+ "uuid": "^3.3.2"
}
},
"require-directory": {
@@ -7041,9 +7045,9 @@
}
},
"semver": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
- "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true
},
"set-blocking": {
@@ -7166,9 +7170,9 @@
}
},
"spdx-correct": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
- "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
+ "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
@@ -7176,9 +7180,9 @@
}
},
"spdx-exceptions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
- "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
@@ -7192,15 +7196,15 @@
}
},
"spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
+ "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
"dev": true
},
"sshpk": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
- "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+ "version": "1.15.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz",
+ "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==",
"dev": true,
"requires": {
"asn1": "~0.2.3",
@@ -7245,7 +7249,7 @@
},
"strip-ansi": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
@@ -7288,11 +7292,12 @@
}
},
"tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
+ "psl": "^1.1.24",
"punycode": "^1.4.1"
}
},
@@ -7324,8 +7329,7 @@
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true,
- "optional": true
+ "dev": true
},
"util-deprecate": {
"version": "1.0.2",
diff --git a/build/package.json b/build/package.json
index 650c75e113b..3e20b60df74 100644
--- a/build/package.json
+++ b/build/package.json
@@ -23,7 +23,7 @@
"karma-junit-reporter": "^1.2.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-viewport": "^1.0.2",
- "node-sass": "~4.9.3",
+ "node-sass": "~4.9.4",
"phantomjs-prebuilt": "*",
"sinon": "<= 5.0.7"
},
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php
index ecb4e479206..a9fb22f21b7 100644
--- a/core/Controller/LoginController.php
+++ b/core/Controller/LoginController.php
@@ -131,7 +131,7 @@ class LoginController extends Controller {
$this->userSession->logout();
$response = new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'));
- $response->addHeader('Clear-Site-Data', '"cache", "cookies", "storage", "executionContexts"');
+ $response->addHeader('Clear-Site-Data', '"cache", "storage", "executionContexts"');
return $response;
}
diff --git a/core/css/apps.scss b/core/css/apps.scss
index cce21aa26fb..dc05d2b3fbb 100644
--- a/core/css/apps.scss
+++ b/core/css/apps.scss
@@ -21,7 +21,7 @@
h2,
h3,
h4 {
- font-weight: 600;
+ font-weight: bold;
}
h2 {
@@ -727,7 +727,7 @@ kbd {
border-radius: 0;
text-align: left;
padding-left: 42px;
- font-weight: 400;
+ font-weight: normal;
/* like app-navigation a */
color: var(--color-main-text);
@@ -746,7 +746,6 @@ kbd {
.section {
display: block;
padding: 30px;
- color: var(--color-text-lighter);
margin-bottom: 24px;
&.hidden {
display: none !important;
@@ -804,7 +803,7 @@ kbd {
margin-bottom: 1px;
}
&.selected {
- font-weight: 600;
+ font-weight: bold;
}
&.selected,
&:hover,
@@ -921,7 +920,7 @@ $popovericon-size: 16px;
align-items: flex-start;
height: auto;
margin: 0;
- font-weight: 300;
+ font-weight: normal;
box-shadow: none;
width: 100%;
color: var(--color-main-text);
diff --git a/core/css/css-variables.scss b/core/css/css-variables.scss
index 058e018b415..a2946672294 100644
--- a/core/css/css-variables.scss
+++ b/core/css/css-variables.scss
@@ -5,6 +5,7 @@
:root {
--color-main-text: $color-main-text;
--color-main-background: $color-main-background;
+ --color-main-background-translucent: $color-main-background-translucent;
--color-background-dark: $color-background-dark;
--color-background-darker: $color-background-darker;
@@ -35,6 +36,7 @@
--color-border-dark: $color-border-dark;
--border-radius: $border-radius;
--border-radius-large: $border-radius-large;
+ --border-radius-pill: $border-radius-pill;
--font-face: $font-face;
}
diff --git a/core/css/fonts.scss b/core/css/fonts.scss
index 441b48f3856..1e0b14af22f 100644
--- a/core/css/fonts.scss
+++ b/core/css/fonts.scss
@@ -1,26 +1,43 @@
-/* for low-res screens, use Regular font-weight instead of Light */
-@media (-webkit-max-device-pixel-ratio: 1.3), (max-resolution: 124.8dpi) {
- @font-face {
- font-family: 'Open Sans';
- font-style: normal;
- font-weight: normal;
- src: local('Open Sans'), local('OpenSans'),
- url('../fonts/OpenSans-Regular.woff') format('woff');
- }
+/* latin-ext */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 400; /* normal */
+ src: local('Nunito Regular'), local('Nunito-Regular'),
+ url('../fonts/Nunito-Regular-latin-ext.woff2') format('woff2'),
+ url('../fonts/Nunito-Regular.ttf') format('truetype');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+
+/* latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 400; /* normal */
+ src: local('Nunito Regular'), local('Nunito-Regular'),
+ url('../fonts/Nunito-Regular.woff2') format('woff2'),
+ url('../fonts/Nunito-Regular.ttf') format('truetype');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
+/* latin-ext */
@font-face {
- font-family: 'Open Sans';
+ font-family: 'Nunito';
font-style: normal;
- font-weight: 300;
- src: local('Open Sans Light'), local('OpenSans-Light'),
- url('../fonts/OpenSans-Light.woff') format('woff');
+ font-weight: 700; /* bold */
+ src: local('Nunito Bold'), local('Nunito-Bold'),
+ url('../fonts/Nunito-Bold-latin-ext.woff2') format('woff2'),
+ url('../fonts/Nunito-Bold.ttf') format('truetype');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
+/* latin */
@font-face {
- font-family: 'Open Sans';
+ font-family: 'Nunito';
font-style: normal;
- font-weight: 600;
- src: local('Open Sans Semibold'), local('OpenSans-Semibold'),
- url('../fonts/OpenSans-Semibold.woff') format('woff');
+ font-weight: 700; /* bold */
+ src: local('Nunito Bold'), local('Nunito-Bold'),
+ url('../fonts/Nunito-Bold.woff2') format('woff2'),
+ url('../fonts/Nunito-Bold.ttf') format('truetype');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
diff --git a/core/css/guest.css b/core/css/guest.css
index ca15fee1894..ac12f171627 100644
--- a/core/css/guest.css
+++ b/core/css/guest.css
@@ -16,10 +16,10 @@ ul { list-style:none; }
body {
background-color: #ffffff;
- font-weight: 400;
+ font-weight: normal;
font-size: .8em;
line-height: 1.6em;
- font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+ font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
color: #000;
text-align: center;
background-color: #0082c9;
@@ -56,7 +56,7 @@ em {
h2,
h3,
h4 {
- font-weight: 600;
+ font-weight: bold;
}
h2 {
@@ -175,7 +175,7 @@ form #datadirField legend {
}
input, textarea, select, button, div[contenteditable=true] {
- font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+ font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
}
input,
input:not([type='range']),
@@ -184,7 +184,7 @@ a.button {
margin: 5px;
padding: 11px 10px 9px;
outline: none;
- border-radius: 3px;
+ border-radius: 3px; /* --border-radius */
-webkit-appearance: none;
}
input[type='submit'],
@@ -198,9 +198,10 @@ select {
min-width: 25px;
padding: 12px;
background-color: white;
- font-weight: 600;
+ font-weight: bold;
color: #555;
border: none;
+ border-radius: 100px; /* --border-radius-pill */
cursor: pointer;
}
input[type='text'],
@@ -216,7 +217,7 @@ input[type='email'] {
-moz-appearance: textfield;
box-sizing: content-box;
border: none;
- font-weight: 300;
+ font-weight: normal;
}
input.login {
width: 269px;
@@ -233,13 +234,19 @@ input.update-continue {
padding: 10px 20px;
color: #666 !important;
display: inline-block;
- border-radius: 3px;
+ border-radius: 100px; /* --border-radius-pill */
margin: 15px 5px;
}
.updateAnyways a.updateAnywaysButton:hover {
color: #222 !important;
}
+/* Get rid of the inside dotted line in Firefox */
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+}
+
input.primary,
button.primary,
a.primary {
@@ -397,7 +404,7 @@ form .warning input[type='checkbox']+label {
.two-factor-provider {
display: flex;
- border-radius: 3px;
+ border-radius: 3px; /* --border-radius */
margin: 12px 0;
border: 1px solid transparent;
text-align: left;
@@ -421,7 +428,7 @@ form .warning input[type='checkbox']+label {
margin: 0;
}
.two-factor-provider p {
- font-weight: 300;
+ font-weight: normal;
}
.two-factor-icon {
width: 100px;
@@ -432,7 +439,7 @@ form .warning input[type='checkbox']+label {
width: 100%;
padding: 10px;
margin: 0 0 5px 0;
- border-radius: 3px;
+ border-radius: 100px; /* --border-radius-pill */
font-size: 20px;
}
.two-factor-primary {
@@ -456,12 +463,12 @@ form .warning input[type='checkbox']+label {
margin: 10px 0;
text-align: center;
width: 100%;
- text-shadow: 0 0 2px rgba(0, 0, 0, .4); // better readability on bright background
+ text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */
}
.lost-password-container #lost-password,
.lost-password-container #lost-password-back {
display: inline-block;
- font-weight: 300;
+ font-weight: normal;
padding: 12px;
margin-top: -6px;
color: #fff;
@@ -489,7 +496,7 @@ form .warning input[type='checkbox']+label {
box-sizing: border-box;
background-color: #0082c9;
color: white;
- border-radius: 3px;
+ border-radius: 100px; /* --border-radius-pill */
}
/* fixes for update page TODO should be fixed some time in a proper way */
@@ -575,7 +582,7 @@ form #selectDbType label.ui-state-active {
color: #fff;
text-align: left;
word-wrap: break-word;
- border-radius: 10px;
+ border-radius: 10px; /* --border-radius-large */
cursor: default;
-moz-user-select: text;
-webkit-user-select: text;
@@ -607,7 +614,7 @@ form #selectDbType label.ui-state-active {
.warning a,
.error a {
color: #fff !important;
- font-weight: 600 !important;
+ font-weight: bold !important;
opacity: 1;
}
.error a.button {
@@ -652,7 +659,7 @@ fieldset.update legend + p {
}
p.info {
margin: 20px auto;
- text-shadow: 0 0 2px rgba(0, 0, 0, .4); // better readability on bright background
+ text-shadow: 0 0 2px rgba(0, 0, 0, .4); /* better readability on bright background */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
@@ -803,7 +810,7 @@ footer {
}
footer .info .entity-name {
- font-weight: 600;
+ font-weight: bold;
}
.hidden {
@@ -823,26 +830,47 @@ a.legal {
font-size: smaller;
}
-/* for low-res screens, use Regular font-weight instead of Light */
-@media (-webkit-max-device-pixel-ratio: 1.3), (max-resolution: 124.8dpi) {
- @font-face {
- font-family: 'Open Sans';
- font-style: normal;
- font-weight: normal;
- src: local('Open Sans'), local('OpenSans'), url('../fonts/OpenSans-Regular.woff') format('woff');
- }
+
+/* latin-ext */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 400; /* normal */
+ src: local('Nunito Regular'), local('Nunito-Regular'),
+ url('../fonts/Nunito-Regular-latin-ext.woff2') format('woff2'),
+ url('../fonts/Nunito-Regular.ttf') format('truetype');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
+/* latin */
@font-face {
- font-family: 'Open Sans';
+ font-family: 'Nunito';
font-style: normal;
- font-weight: 300;
- src: local('Open Sans Light'), local('OpenSans-Light'), url('../fonts/OpenSans-Light.woff') format('woff');
+ font-weight: 400; /* normal */
+ src: local('Nunito Regular'), local('Nunito-Regular'),
+ url('../fonts/Nunito-Regular.woff2') format('woff2'),
+ url('../fonts/Nunito-Regular.ttf') format('truetype');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
+/* latin-ext */
@font-face {
- font-family: 'Open Sans';
+ font-family: 'Nunito';
font-style: normal;
- font-weight: 600;
- src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url('../fonts/OpenSans-Semibold.woff') format('woff');
+ font-weight: 700; /* bold */
+ src: local('Nunito Bold'), local('Nunito-Bold'),
+ url('../fonts/Nunito-Bold-latin-ext.woff2') format('woff2'),
+ url('../fonts/Nunito-Bold.ttf') format('truetype');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+
+/* latin */
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 700; /* bold */
+ src: local('Nunito Bold'), local('Nunito-Bold'),
+ url('../fonts/Nunito-Bold.woff2') format('woff2'),
+ url('../fonts/Nunito-Bold.ttf') format('truetype');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
diff --git a/core/css/header.scss b/core/css/header.scss
index af98e20a9d3..f2527ca3a79 100644
--- a/core/css/header.scss
+++ b/core/css/header.scss
@@ -81,7 +81,7 @@
.header-right > div > .menu {
background-color: var(--color-main-background);
filter: drop-shadow(0 1px 5px var(--color-box-shadow));
- border-radius: 0 0 3px 3px;
+ border-radius: 0 0 var(--border-radius) var(--border-radius);
box-sizing: border-box;
z-index: 2000;
position: absolute;
@@ -212,7 +212,7 @@
.header-appname {
color: var(--color-primary-text);
font-size: 16px;
- font-weight: 600;
+ font-weight: bold;
margin: 0;
padding: 0;
padding-right: 5px;
@@ -273,6 +273,7 @@ nav[role='navigation'] {
}
a {
position: relative;
+ width: 100%;
display: inline-flex;
padding: 10px 12px;
height: 40px;
@@ -615,7 +616,7 @@ nav[role='navigation'] {
background-color: transparent;
color: var(--color-primary-text);
border: 0;
- border-radius: var(--border-radius);
+ border-radius: var(--border-radius-pill);
height: 34px;
width: 0;
cursor: pointer;
diff --git a/core/css/icons.scss b/core/css/icons.scss
index ca2a179d48f..5b96d1223a7 100644
--- a/core/css/icons.scss
+++ b/core/css/icons.scss
@@ -297,6 +297,7 @@ img, object, video, button, textarea, input, select, div[contenteditable='true']
@include icon-black-white('toggle', 'actions', 1, true);
@include icon-black-white('toggle-background', 'actions', 1, true);
@include icon-black-white('toggle-pictures', 'actions', 1, true);
+@include icon-black-white('toggle-filelist', 'actions', 1, true);
@include icon-black-white('triangle-e', 'actions', 1, true);
@include icon-black-white('triangle-n', 'actions', 1, true);
@include icon-black-white('triangle-s', 'actions', 1, true);
diff --git a/core/css/inputs.scss b/core/css/inputs.scss
index d28884d0c53..2611e1bb2f4 100644
--- a/core/css/inputs.scss
+++ b/core/css/inputs.scss
@@ -14,7 +14,7 @@
/* Specifically override browser styles */
input, textarea, select, button, div[contenteditable=true], div[contenteditable=false] {
- font-family: var(--font-face)
+ font-family: var(--font-face);
}
.select2-container-multi .select2-choices .select2-search-field input, .select2-search input, .ui-widget {
font-family: var(--font-face) !important;
@@ -174,7 +174,9 @@ input[type='button'],
input[type='submit'],
input[type='reset'] {
font-weight: bold;
- /* Get rid of the ugly firefox dotted line */
+ border-radius: var(--border-radius-pill);
+
+ /* Get rid of the inside dotted line in Firefox */
&::-moz-focus-inner {
border: 0;
}
@@ -286,7 +288,7 @@ button img,
}
select,
.button.multiselect {
- font-weight: 400;
+ font-weight: normal;
}
/* Radio & Checkboxes */
@@ -662,7 +664,7 @@ input {
border: 1px solid var(--color-border-dark);
cursor: pointer;
position: relative;
- border-radius: 3px;
+ border-radius: var(--border-radius);
height: 34px;
/* tag wrapper */
.multiselect__tags-wrap {
@@ -692,7 +694,7 @@ input {
border: 1px solid var(--color-border-dark);
display: inline-flex;
align-items: center;
- border-radius: 3px;
+ border-radius: var(--border-radius);
/* require to override the default width
and force the tag to shring properly */
min-width: 0;
diff --git a/core/css/public.scss b/core/css/public.scss
index 0edf391fa49..20048870e2c 100644
--- a/core/css/public.scss
+++ b/core/css/public.scss
@@ -70,7 +70,7 @@ $footer-height: 65px;
color: var(--color-text-lighter);
a {
color: var(--color-text-lighter);
- font-weight: 600;
+ font-weight: bold;
white-space: nowrap;
/* increasing clickability to more than the text height */
padding: 13px;
diff --git a/core/css/publicshareauth.css b/core/css/publicshareauth.css
index 2f7622ea221..2206f21dff6 100644
--- a/core/css/publicshareauth.css
+++ b/core/css/publicshareauth.css
@@ -3,10 +3,13 @@ form fieldset {
flex-direction: column;
}
+form fieldset > p {
+ position: relative;
+}
+
#password {
- margin-right: 0 !important;
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
+ margin: 5px 0;
+ padding-right: 45px;
height: 45px;
box-sizing: border-box;
flex: 1 1 auto;
@@ -16,13 +19,10 @@ form fieldset {
input[type='submit'],
input[type='submit'].icon-confirm {
- width: 45px;
+ position: absolute;
+ top: 0px;
+ right: -5px;
+ width: 45px !important;
height: 45px;
- margin-left: 0 !important;
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-
-fieldset > p {
- display: inline-flex;
+ background-color: transparent !important;
}
diff --git a/core/css/styles.scss b/core/css/styles.scss
index dc217fb8f22..5f68a0d08e0 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -84,7 +84,7 @@ ul {
body {
background-color: var(--color-main-background);
- font-weight: 300;
+ font-weight: normal;
font-size: .8em;
line-height: 1.6em;
font-family: var(--font-face);
@@ -167,7 +167,7 @@ body {
height: 44px;
padding: 0;
margin: 0;
- background-color: var(--color-main-background);
+ background-color: var(--color-main-background-translucent);
z-index: 60;
-webkit-user-select: none;
-moz-user-select: none;
@@ -327,14 +327,14 @@ label.infield {
.warning {
legend, a {
color: var(--color-primary-text) !important;
- font-weight: 600 !important;
+ font-weight: bold !important;
}
}
.error {
a {
color: var(--color-primary-text) !important;
- font-weight: 600 !important;
+ font-weight: bold !important;
&.button {
color: var(--color-text-lighter) !important;
display: inline-block;
@@ -541,7 +541,7 @@ code {
.ui-datepicker-title {
line-height: 1;
- font-weight: 300;
+ font-weight: normal;
}
.ui-icon {
opacity: .5;
@@ -622,7 +622,7 @@ code {
.ui-timepicker-title {
line-height: 1;
- font-weight: 300;
+ font-weight: normal;
}
}
/* AM/PM fix */
@@ -697,12 +697,15 @@ code {
}
/* ---- DIALOGS ---- */
-
#oc-dialog-filepicker-content {
+ position: relative;
+
.dirtree {
- width: 96%;
+ width: 100%;
flex-wrap: wrap;
padding-left: 12px;
+ padding-right: 44px;
+ box-sizing: border-box;
div:first-child a {
background-image: url('../img/places/home.svg?v=1');
@@ -722,6 +725,28 @@ code {
}
}
}
+
+ /* Grid view toggle */
+ #picker-view-toggle {
+ position: absolute;
+ background-color: transparent;
+ border: none;
+ margin: 0;
+ padding: 22px;
+ opacity: .5;
+ right: 0;
+ top: 0;
+
+ &:hover,
+ &:focus {
+ opacity: 1;
+ }
+ }
+ // keyboard focus
+ #picker-showgridview:focus + #picker-view-toggle {
+ opacity: 1;
+ }
+
.filelist-container {
box-sizing: border-box;
display: inline-block;
@@ -771,9 +796,54 @@ code {
.filesize {
text-align: right;
}
+ &.view-grid {
+ $grid-size: 120px;
+ $grid-pad: 10px;
+ $name-height: 20px;
+ display: flex;
+ flex-direction: column;
+
+ tbody {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, $grid-size);
+ justify-content: space-around;
+ row-gap: 15px;
+ margin: 15px 0;
+
+ tr {
+ display: block;
+ position: relative;
+ border-radius: var(--border-radius);
+ padding: $grid-pad;
+ display: flex;
+ flex-direction: column;
+ width: $grid-size - 2 * $grid-pad;
+
+ td {
+ border: none;
+ padding: 0;
+
+ &.filename {
+ padding: #{$grid-size - 2 * $grid-pad} 0 0 0;
+ background-position: center top;
+ background-size: contain;
+ line-height: $name-height;
+ height: $name-height;
+ }
+ &.filesize {
+ line-height: $name-height;
+ text-align: left;
+ }
+ &.date {
+ display: none;
+ }
+ }
+ }
+ }
+ }
}
.filepicker_element_selected {
- background-color: lightblue;
+ background-color: var(--color-background-darker);
}
}
@@ -1025,7 +1095,7 @@ div.crumb {
&:not(:first-child) a {
}
&:last-child {
- font-weight: 600;
+ font-weight: bold;
margin-right: 10px;
// Allow multiple span next to the main 'a'
a ~ span {
diff --git a/core/css/tooltip.scss b/core/css/tooltip.scss
index ad433185f1c..a23f5d3c34d 100644
--- a/core/css/tooltip.scss
+++ b/core/css/tooltip.scss
@@ -13,9 +13,9 @@
.tooltip {
position: absolute;
display: block;
- font-family: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
+ font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
font-style: normal;
- font-weight: 400;
+ font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: 1.6;
@@ -135,4 +135,4 @@
height: 0;
border-color: transparent;
border-style: solid;
-} \ No newline at end of file
+}
diff --git a/core/css/variables.scss b/core/css/variables.scss
index 8617c6e27d0..dffd6403471 100644
--- a/core/css/variables.scss
+++ b/core/css/variables.scss
@@ -31,8 +31,9 @@
// SCSS variables
// DEPRECATED, please use CSS4 vars
-$color-main-text: #000 !default;
+$color-main-text: #222 !default; // Not #000 for better readability
$color-main-background: #fff !default;
+$color-main-background-translucent: rgba($color-main-background, .97) !default;
// used for different active/disabled states
$color-background-dark: nc-darken($color-main-background, 7%) !default;
@@ -73,9 +74,11 @@ $color-border: nc-darken($color-main-background, 7%) !default;
// darker border like inputs or very visible elements
$color-border-dark: nc-darken($color-main-background, 14%) !default;
$border-radius: 3px !default;
-$border-radius-large: 10px;
+$border-radius-large: 10px !default;
+// Pill-style button, value is large so big buttons also have correct roundness
+$border-radius-pill: 100px !default;
-$font-face: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif !default;
+$font-face: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif !default;
// various structure data
diff --git a/core/fonts/LICENSE.txt b/core/fonts/LICENSE.txt
deleted file mode 100644
index 75b52484ea4..00000000000
--- a/core/fonts/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
diff --git a/core/fonts/Nunito-Bold-latin-ext.woff2 b/core/fonts/Nunito-Bold-latin-ext.woff2
new file mode 100644
index 00000000000..d69ce0d32e9
--- /dev/null
+++ b/core/fonts/Nunito-Bold-latin-ext.woff2
Binary files differ
diff --git a/core/fonts/Nunito-Bold.ttf b/core/fonts/Nunito-Bold.ttf
new file mode 100644
index 00000000000..d2037334825
--- /dev/null
+++ b/core/fonts/Nunito-Bold.ttf
Binary files differ
diff --git a/core/fonts/Nunito-Bold.woff2 b/core/fonts/Nunito-Bold.woff2
new file mode 100644
index 00000000000..fef6db672d6
--- /dev/null
+++ b/core/fonts/Nunito-Bold.woff2
Binary files differ
diff --git a/core/fonts/Nunito-Regular-latin-ext.woff2 b/core/fonts/Nunito-Regular-latin-ext.woff2
new file mode 100644
index 00000000000..8c7dd0f9898
--- /dev/null
+++ b/core/fonts/Nunito-Regular-latin-ext.woff2
Binary files differ
diff --git a/core/fonts/Nunito-Regular.ttf b/core/fonts/Nunito-Regular.ttf
new file mode 100644
index 00000000000..93a3f3e78ea
--- /dev/null
+++ b/core/fonts/Nunito-Regular.ttf
Binary files differ
diff --git a/core/fonts/Nunito-Regular.woff2 b/core/fonts/Nunito-Regular.woff2
new file mode 100644
index 00000000000..28b65a12e67
--- /dev/null
+++ b/core/fonts/Nunito-Regular.woff2
Binary files differ
diff --git a/core/fonts/OFL.txt b/core/fonts/OFL.txt
new file mode 100644
index 00000000000..601d961cd90
--- /dev/null
+++ b/core/fonts/OFL.txt
@@ -0,0 +1,93 @@
+Copyright 2014 The Nunito Project Authors (contact@sansoxygen.com)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/core/fonts/OpenSans-Bold.ttf b/core/fonts/OpenSans-Bold.ttf
deleted file mode 100644
index 80281ee0fc5..00000000000
--- a/core/fonts/OpenSans-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Bold.woff b/core/fonts/OpenSans-Bold.woff
deleted file mode 100644
index 138089c2ba0..00000000000
--- a/core/fonts/OpenSans-Bold.woff
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Light.ttf b/core/fonts/OpenSans-Light.ttf
deleted file mode 100644
index ecdea2de239..00000000000
--- a/core/fonts/OpenSans-Light.ttf
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Light.woff b/core/fonts/OpenSans-Light.woff
deleted file mode 100644
index 085eb478ef0..00000000000
--- a/core/fonts/OpenSans-Light.woff
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Regular.ttf b/core/fonts/OpenSans-Regular.ttf
deleted file mode 100644
index 29b9057ec45..00000000000
--- a/core/fonts/OpenSans-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Regular.woff b/core/fonts/OpenSans-Regular.woff
deleted file mode 100644
index a3f58d41a42..00000000000
--- a/core/fonts/OpenSans-Regular.woff
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Semibold.ttf b/core/fonts/OpenSans-Semibold.ttf
deleted file mode 100644
index 9c90d4ce833..00000000000
--- a/core/fonts/OpenSans-Semibold.ttf
+++ /dev/null
Binary files differ
diff --git a/core/fonts/OpenSans-Semibold.woff b/core/fonts/OpenSans-Semibold.woff
deleted file mode 100644
index 66428f67ebc..00000000000
--- a/core/fonts/OpenSans-Semibold.woff
+++ /dev/null
Binary files differ
diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js
index 7369298b8d5..5231a94f333 100644
--- a/core/js/oc-dialogs.js
+++ b/core/js/oc-dialogs.js
@@ -208,6 +208,7 @@ var OCdialogs = {
this.filepicker.loading = true;
this.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList)? OCA.Sharing.PublicApp.fileList.filesClient: OC.Files.getClient();
+
$.when(this._getFilePickerTemplate()).then(function($tmpl) {
self.filepicker.loading = false;
var dialogName = 'oc-dialog-filepicker-content';
@@ -237,6 +238,11 @@ var OCdialogs = {
$('body').append(self.$filePicker);
+ self.$showGridView = $('input#picker-showgridview');
+ self.$showGridView.on('change', _.bind(self._onGridviewChange, self));
+
+ self._getGridSettings();
+
self.$filePicker.ready(function() {
self.$filelist = self.$filePicker.find('.filelist tbody');
self.$dirTree = self.$filePicker.find('.dirtree');
@@ -779,6 +785,31 @@ var OCdialogs = {
//}
return dialogDeferred.promise();
},
+ // get the gridview setting and set the input accordingly
+ _getGridSettings: function() {
+ var self = this;
+ $.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {
+ self.$showGridView.checked = response.gridview;
+ self.$showGridView.next('#picker-view-toggle')
+ .removeClass('icon-toggle-filelist icon-toggle-pictures')
+ .addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')
+ $('.list-container').toggleClass('view-grid', response.gridview);
+ });
+ },
+ _onGridviewChange: function() {
+ var show = this.$showGridView.is(':checked');
+ // only save state if user is logged in
+ if (OC.currentUser) {
+ $.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {
+ show: show
+ });
+ }
+ this.$showGridView.next('#picker-view-toggle')
+ .removeClass('icon-toggle-filelist icon-toggle-pictures')
+ .addClass(show ? 'icon-toggle-filelist' : 'icon-toggle-pictures')
+
+ $('.list-container').toggleClass('view-grid', show);
+ },
_getFilePickerTemplate: function() {
var defer = $.Deferred();
if(!this.$filePickerTemplate) {
@@ -899,6 +930,8 @@ var OCdialogs = {
if (entry.type === 'file') {
var urlSpec = {
file: dir + '/' + entry.name,
+ x: 100,
+ y: 100
};
var img = new Image();
var previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec);
diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js
index aa59cc8181b..ca7d979f5f3 100644
--- a/core/js/setupchecks.js
+++ b/core/js/setupchecks.js
@@ -52,9 +52,14 @@
* @param url the URL to test
* @param placeholderUrl the placeholder URL - can be found at oc_defaults.docPlaceholderUrl
* @param {boolean} runCheck if this is set to false the check is skipped and no error is returned
+ * @param {int} expectedStatus the expected HTTP status to be returned by the URL, 207 by default
* @return $.Deferred object resolved with an array of error messages
*/
- checkWellKnownUrl: function(url, placeholderUrl, runCheck) {
+ checkWellKnownUrl: function(url, placeholderUrl, runCheck, expectedStatus) {
+ if (expectedStatus === undefined) {
+ expectedStatus = 207;
+ }
+
var deferred = $.Deferred();
if(runCheck === false) {
@@ -63,7 +68,7 @@
}
var afterCall = function(xhr) {
var messages = [];
- if (xhr.status !== 207) {
+ if (xhr.status !== expectedStatus) {
var docUrl = placeholderUrl.replace('PLACEHOLDER', 'admin-setup-well-known-URL');
messages.push({
msg: t('core', 'Your web server is not properly set up to resolve "{url}". Further information can be found in the <a target="_blank" rel="noreferrer noopener" href="{docLink}">documentation</a>.', { docLink: docUrl, url: url }),
diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js
index 3de1a4463b0..47443e5e727 100644
--- a/core/js/tests/specs/setupchecksSpec.js
+++ b/core/js/tests/specs/setupchecksSpec.js
@@ -61,8 +61,8 @@ describe('OC.SetupChecks tests', function() {
});
describe('checkWellKnownUrl', function() {
- it('should fail with another response status code than 207', function(done) {
- var async = OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', 'http://example.org/PLACEHOLDER', true);
+ it('should fail with another response status code than the expected one', function(done) {
+ var async = OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', 'http://example.org/PLACEHOLDER', true, 207);
suite.server.requests[0].respond(200);
@@ -75,7 +75,18 @@ describe('OC.SetupChecks tests', function() {
});
});
- it('should return no error with a response status code of 207', function(done) {
+ it('should return no error with the expected response status code', function(done) {
+ var async = OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', 'http://example.org/PLACEHOLDER', true, 207);
+
+ suite.server.requests[0].respond(207);
+
+ async.done(function( data, s, x ){
+ expect(data).toEqual([]);
+ done();
+ });
+ });
+
+ it('should return no error with the default expected response status code', function(done) {
var async = OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', 'http://example.org/PLACEHOLDER', true);
suite.server.requests[0].respond(207);
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index 6ab552dcdc0..748f16f180c 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -28,7 +28,7 @@ OC.L10N.register(
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Предупреждение при поправка:",
"Repair error: " : "Грешка при поправка:",
- "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за обновяване в команден ред, защото автоматичният е забранен в config.php.",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверяване на таблица %s",
"Turned on maintenance mode" : "Режимът за поддръжка е включен",
"Turned off maintenance mode" : "Режимът за поддръжка е изключен",
@@ -178,11 +178,11 @@ OC.L10N.register(
"new" : "нов",
"_download %n file_::_download %n files_" : ["изтегли %n файл","изтегли %n файла"],
"The update is in progress, leaving this page might interrupt the process in some environments." : "Актуализирането е в процес, в някой среди - напускането на тази страница може да прекъсне процеса.",
- "Update to {version}" : "Обнови до {version}",
+ "Update to {version}" : "Актуализирай до {version}",
"An error occurred." : "Възникна грешка.",
"Please reload the page." : "Моля, презаредете страницата.",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Актуализацията беше неуспешна. За допълнителна информация <a href=\"{url}\">прегледайте темата</a> относно този проблем.",
- "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Обновяването беше неуспешно. Моля отнесете този проблем към <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\"> Nextcloud общността</a>.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Актуализирането беше неуспешно. Моля отнесете този проблем към <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\"> Nextcloud общността</a>.",
"Continue to Nextcloud" : "Продължете към Nextcloud",
"Searching other places" : "Търсене на друго място",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} търсен резултат в друга папка","{count} търсени резултати в други папки"],
@@ -259,22 +259,22 @@ OC.L10N.register(
"Error while validating your second factor" : "Грешка при валидиране на втория ви фактор",
"Access through untrusted domain" : "Достъп чрез ненадежден домейн",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
- "App update required" : "Изисква се обновяване на добавката",
- "These apps will be updated:" : "Следните добавки ще бъдат обновени:",
+ "App update required" : "Изисква се актуализиране на приложението",
+ "These apps will be updated:" : "Следните добавки ще бъдат актуализирани:",
"These incompatible apps will be disabled:" : "Следните несъвместими добавки ще бъдат деактивирани:",
"The theme %s has been disabled." : "Темата %s е изключена.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Моля, уверете се, че сте направили копия на базата данни, папките с настройки и данните, преди да продължите.",
"Start update" : "Начало на обновяването",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "За да избегнеш таймаутове при по-големи инсталации, можеш да изпълниш следните команди в инсталанционната директория:",
"Detailed logs" : "Подробни журнали",
- "Update needed" : "Нужно е обновяване",
+ "Update needed" : "Нужно е актуализиране",
"For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
"Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск",
"This %s instance is currently in maintenance mode, which may take a while." : "В момента този %s се обновява, а това може да отнеме време.",
"This page will refresh itself when the %s instance is available again." : "Страницата ще се зареди автоматично, когато %s е отново на линия.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Свържете се със системния администратор ако това съобщение се задържи твърде дълго или се е появило неочаквано.",
"Thank you for your patience." : "Благодарим ви за търпението.",
- "Updated \"%s\" to %s" : "Обновен \"%s\" до %s",
+ "Updated \"%s\" to %s" : "Актуализирана \"%s\" до %s",
"There was an error loading your contacts" : "Възникна грешка при зареждането на контактите.",
"Shared with {recipients}" : "Споделено с {recipients}",
"Error setting expiration date" : "Грешка при задаване на срок на валидност",
@@ -294,7 +294,7 @@ OC.L10N.register(
"Enhanced security is enabled for your account. Please authenticate using a second factor." : "Повишената сигурност е активирана за профила ви. Моля удостоверете използвайки втори фактор.",
"You are accessing the server from an untrusted domain." : "Постъпвате сървъра от домейн, който не е маркиран като сигурен.",
"Add \"%s\" as trusted domain" : "Добави \"%s\" към списъка със сигурни домейни",
- "%s will be updated to version %s" : "%s ще бъде обновен до версия %s",
+ "%s will be updated to version %s" : "%s ще бъде актуализирана до версия %s",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
"You are about to grant %s access to your %s account." : "Ще разрешите на %s да ползва профила %s.",
"Please log in before granting %s access to your %s account." : "Необходимо е да се впишете, преди да дадете достъп на %s до вашия %s профил."
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index 5dca59ef494..9a5f744dd76 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -26,7 +26,7 @@
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Предупреждение при поправка:",
"Repair error: " : "Грешка при поправка:",
- "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за обновяване в команден ред, защото автоматичният е забранен в config.php.",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Моля използвайте съветникът за актуализиране в командния ред, защото автоматичният е забранен в config.php.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Проверяване на таблица %s",
"Turned on maintenance mode" : "Режимът за поддръжка е включен",
"Turned off maintenance mode" : "Режимът за поддръжка е изключен",
@@ -176,11 +176,11 @@
"new" : "нов",
"_download %n file_::_download %n files_" : ["изтегли %n файл","изтегли %n файла"],
"The update is in progress, leaving this page might interrupt the process in some environments." : "Актуализирането е в процес, в някой среди - напускането на тази страница може да прекъсне процеса.",
- "Update to {version}" : "Обнови до {version}",
+ "Update to {version}" : "Актуализирай до {version}",
"An error occurred." : "Възникна грешка.",
"Please reload the page." : "Моля, презаредете страницата.",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Актуализацията беше неуспешна. За допълнителна информация <a href=\"{url}\">прегледайте темата</a> относно този проблем.",
- "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Обновяването беше неуспешно. Моля отнесете този проблем към <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\"> Nextcloud общността</a>.",
+ "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Актуализирането беше неуспешно. Моля отнесете този проблем към <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\"> Nextcloud общността</a>.",
"Continue to Nextcloud" : "Продължете към Nextcloud",
"Searching other places" : "Търсене на друго място",
"_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} търсен резултат в друга папка","{count} търсени резултати в други папки"],
@@ -257,22 +257,22 @@
"Error while validating your second factor" : "Грешка при валидиране на втория ви фактор",
"Access through untrusted domain" : "Достъп чрез ненадежден домейн",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
- "App update required" : "Изисква се обновяване на добавката",
- "These apps will be updated:" : "Следните добавки ще бъдат обновени:",
+ "App update required" : "Изисква се актуализиране на приложението",
+ "These apps will be updated:" : "Следните добавки ще бъдат актуализирани:",
"These incompatible apps will be disabled:" : "Следните несъвместими добавки ще бъдат деактивирани:",
"The theme %s has been disabled." : "Темата %s е изключена.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Моля, уверете се, че сте направили копия на базата данни, папките с настройки и данните, преди да продължите.",
"Start update" : "Начало на обновяването",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "За да избегнеш таймаутове при по-големи инсталации, можеш да изпълниш следните команди в инсталанционната директория:",
"Detailed logs" : "Подробни журнали",
- "Update needed" : "Нужно е обновяване",
+ "Update needed" : "Нужно е актуализиране",
"For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
"Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск",
"This %s instance is currently in maintenance mode, which may take a while." : "В момента този %s се обновява, а това може да отнеме време.",
"This page will refresh itself when the %s instance is available again." : "Страницата ще се зареди автоматично, когато %s е отново на линия.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Свържете се със системния администратор ако това съобщение се задържи твърде дълго или се е появило неочаквано.",
"Thank you for your patience." : "Благодарим ви за търпението.",
- "Updated \"%s\" to %s" : "Обновен \"%s\" до %s",
+ "Updated \"%s\" to %s" : "Актуализирана \"%s\" до %s",
"There was an error loading your contacts" : "Възникна грешка при зареждането на контактите.",
"Shared with {recipients}" : "Споделено с {recipients}",
"Error setting expiration date" : "Грешка при задаване на срок на валидност",
@@ -292,7 +292,7 @@
"Enhanced security is enabled for your account. Please authenticate using a second factor." : "Повишената сигурност е активирана за профила ви. Моля удостоверете използвайки втори фактор.",
"You are accessing the server from an untrusted domain." : "Постъпвате сървъра от домейн, който не е маркиран като сигурен.",
"Add \"%s\" as trusted domain" : "Добави \"%s\" към списъка със сигурни домейни",
- "%s will be updated to version %s" : "%s ще бъде обновен до версия %s",
+ "%s will be updated to version %s" : "%s ще бъде актуализирана до версия %s",
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "За помощ, прегледайте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
"You are about to grant %s access to your %s account." : "Ще разрешите на %s да ползва профила %s.",
"Please log in before granting %s access to your %s account." : "Необходимо е да се впишете, преди да дадете достъп на %s до вашия %s профил."
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index 7fe2cea5c96..697dee17adb 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)",
"Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps",
+ "Updated \"%1$s\" to %2$s" : "Actualitzat \"%1$s\" a %2$s",
"Set log level to debug" : "Modifica el nivell de registre a depuració",
"Reset log level" : "Reinicia el nivell de registre",
"Starting code integrity check" : "Inicia el test d'integrigtat del codi",
@@ -127,6 +128,7 @@ OC.L10N.register(
"Check the background job settings" : "Comproveu la configuració de feina de fons",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Aquest servidor no té una connexió a Internet operativa: múltiples punts finals no es poden accedir. Això significa que algunes de les funcions com a muntar emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de tercers no funcionarà. L’accés a arxius remots i l’enviament d'e-mail de notificació podrien no funcionar, tampoc. Establir una connexió d'aquest servidor a Internet per a gaudir de totes les funcionalitats.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
+ "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Cap font d'aleatorietat trobada per PHP que és molt desaconsellat per motius de seguretat. Trobareu més informació a la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.",
"You are currently running PHP 5.6. The current major version of Nextcloud is the last that is supported on PHP 5.6. It is recommended to upgrade the PHP version to 7.0+ to be able to upgrade to Nextcloud 14." : "Actualment esteu executant PHP 5.6. La versió actual principal de Nextcloud és l'última que funciona a PHP 5.6. Es recomana actualitzar la versió PHP a 7.0+ per que es pugui actualitzar a Nextcloud 14.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "La configuració de capçaleres per intermediari web invers és incorrecta o estàs accedint a Nextcloud des d'un intermediari de confiança. Si no, aquest és un problema de seguretat i pot permetre a un atacant falsejar la seva adreça d'IP visible al Nextcloud. Trobareu més informació a la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
@@ -142,10 +144,16 @@ OC.L10N.register(
"This is particularly recommended when using the desktop client for file synchronisation." : "Això està especialment recomanat quan es faci servir el client d’escriptori per a la sincronització d'arxius.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a>." : "Per migrar a un altre base de dades l'eina de línia de comandes: 'occ db:convert-type', o mirar la <a target=\"_blank\"rel=\"noreferrer noopener\"href=\"{docLink}\">documentació ↗</a>.",
"Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "L’ús del propi php mailer ja no és compatible. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Si us plau actualitzi la configuració del seu servidor de correu electrònic ↗<a/>.",
+ "The PHP memory limit is below the recommended value of 512MB." : "El límit de memòria PHP està per sota del valor recomanat de 512 mbar.",
"Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Alguns directoris d'app són propietat d'un altre usuari diferent del servidor web. Això pot ser el cas si algunes apps s'han instal·lat manualment. Comprovar els permisos dels directoris d’app següents:",
"Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. És molt recomanable que configureu el servidor web de manera que el directori de dades no estigui accessible, o moure el directori de dades fora de l'arrel de documents del servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP \"{header}\" no s’ha definit com a \"{expected}\". Això és un risc potencial de seguretat o privacitat, ja que es recomana ajustar aquesta configuració en conseqüència.",
+ "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP “{header}” no té el valor “{expected}”. Alguna funcionalitat podria no funcionar correctament, tal com es recomana per ajustar aquesta configuració.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP “{header}” no conté “{expected}”. Això és un risc de seguretat o privacitat, tal com es recomana per ajustar aquesta configuració.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "La capçalera HTTP “{header}” no està definit com a \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" o \"{val5}\". Això pot filtrar informació. Veure la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\"> recomanació del W3C ↗</a>.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "La capçalera HTTP “Strict-Transport-Security” no està establert com a mínim \"{segons}\" segons. Per a més seguretat, es recomana permetre HSTS com es descriu en els <a href=\"{docUrl}\" rel=\"noreferrer noopener\">consells de seguretat ↗</a>.",
+ "Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "S'està accedint de manera no segura per HTTP. Es recomana utilitzar HTTPS, tal i com detallen els <a href=\"{docUrl}\">consells de seguretat ↗</a>.",
"Shared" : "Compartit",
"Shared with" : "Compartit amb",
"Shared by" : "Compartit per",
@@ -157,6 +165,7 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "Prem Ctrl-C per copiar.",
"Resharing is not allowed" : "No es permet compartir de nou",
"Share to {name}" : "Comparteix amb {name}",
+ "Copy link" : "Copiar enllaç",
"Link" : "Enllaç",
"Password protect" : "Protegir amb contrasenya",
"Allow editing" : "Permetre edició",
@@ -174,6 +183,7 @@ OC.L10N.register(
"Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}",
"Shared with you and {circle} by {owner}" : "Compartit amb tu i {circle} per {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Compartit amb tu i amb la conversa {conversation} per {owner}",
+ "Shared with you in a conversation by {owner}" : "Compartit amb vostè en una conversa per {owner}",
"Shared with you by {owner}" : "Compartit amb vos per {owner}",
"Choose a password for the mail share" : "Escolliu una contrasenya pel mail de compartició",
"group" : "grup",
@@ -190,6 +200,7 @@ OC.L10N.register(
"Can delete" : "Pot esborrar",
"Password protect by Talk" : "Contrasenya protegida per Talk",
"Access control" : "Control d'accés",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartida per enllaç",
"Could not unshare" : "No pot descompartir",
"Error while sharing" : "Error en compartir",
"Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.",
@@ -204,6 +215,7 @@ OC.L10N.register(
"{sharee} (remote group)" : "{sharee} (grup remot)",
"{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Share" : "Comparteix",
"Name or email address..." : "Nom o adreça electrònica...",
"Name or federated cloud ID..." : "Nom o ID de Núvol Federat…",
@@ -245,6 +257,8 @@ OC.L10N.register(
"Help" : "Ajuda",
"Access forbidden" : "Accés prohibit",
"File not found" : "No s'ha trobat l'arxiu",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "El document no s’ha trobat en el servidor. Potser la referència s'ha suprimit o ha expirat?",
+ "Back to %s" : "Tornar a %s",
"Internal Server Error" : "Error Intern del Servidor",
"The server was unable to complete your request." : "El servidor no ha pogut completar la teva petició.",
"If this happens again, please send the technical details below to the server administrator." : "Si això torna a passar, si us plau, envia els detalls tècnics de sota a l'administrador del servidor.",
@@ -306,23 +320,30 @@ OC.L10N.register(
"Forgot password?" : "Has oblidat la contrasenya?",
"Back to login" : "Torna a accedir",
"Connect to your account" : "Connectar al teu compte",
+ "Please log in before granting %1$s access to your %2$s account." : "Si us plau connectar abans de concedir %1$s accés al compte %2$s.",
"App token" : "Testimoni d'aplicació",
"Grant access" : "Concedeix accés",
"Alternative log in using app token" : "Entrada alternativa fent servir testimoni d’app",
"Account access" : "Compte d'accés",
+ "You are about to grant %1$s access to your %2$s account." : "Esteu a punt de concedir %1$s accés al compte %2$s.",
"Redirecting …" : "Redirigint …",
"New password" : "Contrasenya nova",
"New Password" : "Contrasenya nova",
"This share is password-protected" : "Aquesta porció està protegida amb contrasenya",
"The password is wrong. Try again." : "Contrasenya incorrecta. Torni a intentar-ho.",
"Two-factor authentication" : "Segon factor d'autenticació",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "La seguretat millorada està habilitada per al vostre compte. Trieu un segon factor d'autenticació:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "No es pot carregar al menys un dels seus mètodes d'autenticació de dos factors permessos. Contacti amb el seu administrador.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "L’autenticació de dos factors és obligada, però no s’ha configurat al teu compte. Contactar amb el teu admin per ajuda.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "L’autenticació de dos factor és obligada, però no ha estat configurat al teu compte. Utilitzeu un dels codis secundaris per connectar o contactar amb el teu admin per ajuda.",
"Use backup code" : "Utilitza un codi de copia de seguretat",
"Cancel log in" : "Cancel·la l'accés a",
"Error while validating your second factor" : "Error al validar el segon factor d'autenticació",
"Access through untrusted domain" : "Accedeix a través d'un domini que no és de confiança",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Si us plau, contacta amb el teu administrador. Si tu ets l'administrador, edita la configuració de \"trusted_domains\" a config/config.php tal com mostra l'exemple de config.samble.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Més informació de com configurar això es poden trobar a la %1$sdocumentació%2$s.",
"App update required" : "Cal que actualitzeu la aplicació",
+ "%1$s will be updated to version %2$s" : "%1$s s'anirà actualitzant a la versió %2$s",
"These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:",
"These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:",
"The theme %s has been disabled." : "S'ha desactivat el tema %s.",
@@ -332,6 +353,7 @@ OC.L10N.register(
"Detailed logs" : "Registres detallats",
"Update needed" : "Actualització necessaria",
"Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'actualitzador de línia de comandes perquè teniu una gran instància amb més de 50 usuàries.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per ajuda, vegeu la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> documentació</a>.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.",
"Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat",
"This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.",
@@ -339,7 +361,23 @@ OC.L10N.register(
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.",
"Thank you for your patience." : "Gràcies per la paciència.",
"Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s",
+ "%s (3rdparty)" : "%s (de tercers)",
"There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre actualitzacions o instal·lació d'apps de terceres parts no funcionaran. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "La configuració de les capçaleres del proxy invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar l’adreça IP que veu Nextcloud. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached està configurat com a memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu la <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de memcached sobre ambdós mòduls</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest tema a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Llista de fitxers no vàlids...</a> / <a href=\"{rescanEndpoint}\">Tornar a escanejar...</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "La OPcache de PHP no està configurada correctament. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Per millor rendiment recomanem</a> utilitzar-la seguint la configuració en el <code>php.ini</code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mitga execució, trencant la instal·lació. Us recomanem activar aquesta funció.",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de documents del servidor web.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "La capçalera HTTP “{header}” no està configurada per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per a millor seguretat recomanem permetre HSTS com es descriu en els nostres <a href=\"{docUrl}\" rel=\"noreferrer\">consells de seguretat</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>.",
"Shared with {recipients}" : "Compartit amb {recipients}",
"Error setting expiration date" : "Error en establir la data de venciment",
"The public link will expire no later than {days} days after it is created" : "L'enllaç públic tindrà venciment abans de {days} dies després de crear-lo",
@@ -349,6 +387,9 @@ OC.L10N.register(
"Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.",
"The specified document has not been found on the server." : "El document especificat no s'ha trobat al servidor.",
"You can click here to return to %s." : "Pots clicar aquí per tornar a %s.",
+ "The server encountered an internal error and was unable to complete your request." : "El servidor ha trobat un error intern i no pot finalitzar la seva petició.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Per favor, posi's en contacte amb l'administrador del servidor si aquest error torna a aparèixer diverses vegades, per favor inclogui els detalls tècnics a sota en el seu informe.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentació</a>.",
"This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:",
"Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?",
"Stay logged in" : "Mantén la sessió connectada",
@@ -364,10 +405,12 @@ OC.L10N.register(
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, vegeu la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> documentació</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomanable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
"Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "El seu PHP no té suport per FreeType, el que resulta en un trencament de les fotos de perfil i la interfície de configuració.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips</a>." : "La capçalera HTTP \"Estricte-Transport-seguretat\" no està establert com a mínim \"{segons}\" segons. Per a més seguretat, es recomana activar HSTS com es descriu en els <a href=\"{docUrl}\" rel=\"noreferrer noopener\">consells de seguretat</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "S'està accedint de manera no segura mitjançant HTTP. Es recomana utilitzar HTTPS, tal i com detallen els <a href=\"{docUrl}\">consells de seguretat</a>.",
"Back to log in" : "Torna a l'accés",
"You are about to grant %s access to your %s account." : "Estàs a punt d'autoritzar a %s a accedir al teu compte %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Depenent de la teva configuració, aquest botó també podria funcionar per confiar en el domini:",
+ "Copy URL" : "Copiar URL",
"Please log in before granting %s access to your %s account." : "Si us plau entrar abans de donar %s accés al teu compte %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Més informació de com configurar això es pot trobar a la %sdocumentation%s."
},
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 67bd7f54b6d..8c48dd7d66a 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Comprovades les actualitzacions de l'aplicació \"%s\" al repositori",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprovar si l'esquema de base de dades per %s pot ser actualitzat (això pot trigar temps segons la mida de la base de dades)",
"Checked database schema update for apps" : "S'ha comprobat l'actualització de l'esquema de la base de dades per les apps",
+ "Updated \"%1$s\" to %2$s" : "Actualitzat \"%1$s\" a %2$s",
"Set log level to debug" : "Modifica el nivell de registre a depuració",
"Reset log level" : "Reinicia el nivell de registre",
"Starting code integrity check" : "Inicia el test d'integrigtat del codi",
@@ -125,6 +126,7 @@
"Check the background job settings" : "Comproveu la configuració de feina de fons",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Aquest servidor no té una connexió a Internet operativa: múltiples punts finals no es poden accedir. Això significa que algunes de les funcions com a muntar emmagatzematge extern, notificacions sobre les actualitzacions o instal·lació d'apps de tercers no funcionarà. L’accés a arxius remots i l’enviament d'e-mail de notificació podrien no funcionar, tampoc. Establir una connexió d'aquest servidor a Internet per a gaudir de totes les funcionalitats.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
+ "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Cap font d'aleatorietat trobada per PHP que és molt desaconsellat per motius de seguretat. Trobareu més informació a la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.",
"You are currently running PHP 5.6. The current major version of Nextcloud is the last that is supported on PHP 5.6. It is recommended to upgrade the PHP version to 7.0+ to be able to upgrade to Nextcloud 14." : "Actualment esteu executant PHP 5.6. La versió actual principal de Nextcloud és l'última que funciona a PHP 5.6. Es recomana actualitzar la versió PHP a 7.0+ per que es pugui actualitzar a Nextcloud 14.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "La configuració de capçaleres per intermediari web invers és incorrecta o estàs accedint a Nextcloud des d'un intermediari de confiança. Si no, aquest és un problema de seguretat i pot permetre a un atacant falsejar la seva adreça d'IP visible al Nextcloud. Trobareu més informació a la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
@@ -140,10 +142,16 @@
"This is particularly recommended when using the desktop client for file synchronisation." : "Això està especialment recomanat quan es faci servir el client d’escriptori per a la sincronització d'arxius.",
"To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a>." : "Per migrar a un altre base de dades l'eina de línia de comandes: 'occ db:convert-type', o mirar la <a target=\"_blank\"rel=\"noreferrer noopener\"href=\"{docLink}\">documentació ↗</a>.",
"Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "L’ús del propi php mailer ja no és compatible. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Si us plau actualitzi la configuració del seu servidor de correu electrònic ↗<a/>.",
+ "The PHP memory limit is below the recommended value of 512MB." : "El límit de memòria PHP està per sota del valor recomanat de 512 mbar.",
"Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Alguns directoris d'app són propietat d'un altre usuari diferent del servidor web. Això pot ser el cas si algunes apps s'han instal·lat manualment. Comprovar els permisos dels directoris d’app següents:",
"Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. És molt recomanable que configureu el servidor web de manera que el directori de dades no estigui accessible, o moure el directori de dades fora de l'arrel de documents del servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP \"{header}\" no s’ha definit com a \"{expected}\". Això és un risc potencial de seguretat o privacitat, ja que es recomana ajustar aquesta configuració en conseqüència.",
+ "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP “{header}” no té el valor “{expected}”. Alguna funcionalitat podria no funcionar correctament, tal com es recomana per ajustar aquesta configuració.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La capçalera HTTP “{header}” no conté “{expected}”. Això és un risc de seguretat o privacitat, tal com es recomana per ajustar aquesta configuració.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "La capçalera HTTP “{header}” no està definit com a \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" o \"{val5}\". Això pot filtrar informació. Veure la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\"> recomanació del W3C ↗</a>.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "La capçalera HTTP “Strict-Transport-Security” no està establert com a mínim \"{segons}\" segons. Per a més seguretat, es recomana permetre HSTS com es descriu en els <a href=\"{docUrl}\" rel=\"noreferrer noopener\">consells de seguretat ↗</a>.",
+ "Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "S'està accedint de manera no segura per HTTP. Es recomana utilitzar HTTPS, tal i com detallen els <a href=\"{docUrl}\">consells de seguretat ↗</a>.",
"Shared" : "Compartit",
"Shared with" : "Compartit amb",
"Shared by" : "Compartit per",
@@ -155,6 +163,7 @@
"Press Ctrl-C to copy." : "Prem Ctrl-C per copiar.",
"Resharing is not allowed" : "No es permet compartir de nou",
"Share to {name}" : "Comparteix amb {name}",
+ "Copy link" : "Copiar enllaç",
"Link" : "Enllaç",
"Password protect" : "Protegir amb contrasenya",
"Allow editing" : "Permetre edició",
@@ -172,6 +181,7 @@
"Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}",
"Shared with you and {circle} by {owner}" : "Compartit amb tu i {circle} per {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Compartit amb tu i amb la conversa {conversation} per {owner}",
+ "Shared with you in a conversation by {owner}" : "Compartit amb vostè en una conversa per {owner}",
"Shared with you by {owner}" : "Compartit amb vos per {owner}",
"Choose a password for the mail share" : "Escolliu una contrasenya pel mail de compartició",
"group" : "grup",
@@ -188,6 +198,7 @@
"Can delete" : "Pot esborrar",
"Password protect by Talk" : "Contrasenya protegida per Talk",
"Access control" : "Control d'accés",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartida per enllaç",
"Could not unshare" : "No pot descompartir",
"Error while sharing" : "Error en compartir",
"Share details could not be loaded for this item." : "No s'han pogut carregar els detalls de compartició de l'element.",
@@ -202,6 +213,7 @@
"{sharee} (remote group)" : "{sharee} (grup remot)",
"{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Share" : "Comparteix",
"Name or email address..." : "Nom o adreça electrònica...",
"Name or federated cloud ID..." : "Nom o ID de Núvol Federat…",
@@ -243,6 +255,8 @@
"Help" : "Ajuda",
"Access forbidden" : "Accés prohibit",
"File not found" : "No s'ha trobat l'arxiu",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "El document no s’ha trobat en el servidor. Potser la referència s'ha suprimit o ha expirat?",
+ "Back to %s" : "Tornar a %s",
"Internal Server Error" : "Error Intern del Servidor",
"The server was unable to complete your request." : "El servidor no ha pogut completar la teva petició.",
"If this happens again, please send the technical details below to the server administrator." : "Si això torna a passar, si us plau, envia els detalls tècnics de sota a l'administrador del servidor.",
@@ -304,23 +318,30 @@
"Forgot password?" : "Has oblidat la contrasenya?",
"Back to login" : "Torna a accedir",
"Connect to your account" : "Connectar al teu compte",
+ "Please log in before granting %1$s access to your %2$s account." : "Si us plau connectar abans de concedir %1$s accés al compte %2$s.",
"App token" : "Testimoni d'aplicació",
"Grant access" : "Concedeix accés",
"Alternative log in using app token" : "Entrada alternativa fent servir testimoni d’app",
"Account access" : "Compte d'accés",
+ "You are about to grant %1$s access to your %2$s account." : "Esteu a punt de concedir %1$s accés al compte %2$s.",
"Redirecting …" : "Redirigint …",
"New password" : "Contrasenya nova",
"New Password" : "Contrasenya nova",
"This share is password-protected" : "Aquesta porció està protegida amb contrasenya",
"The password is wrong. Try again." : "Contrasenya incorrecta. Torni a intentar-ho.",
"Two-factor authentication" : "Segon factor d'autenticació",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "La seguretat millorada està habilitada per al vostre compte. Trieu un segon factor d'autenticació:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "No es pot carregar al menys un dels seus mètodes d'autenticació de dos factors permessos. Contacti amb el seu administrador.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "L’autenticació de dos factors és obligada, però no s’ha configurat al teu compte. Contactar amb el teu admin per ajuda.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "L’autenticació de dos factor és obligada, però no ha estat configurat al teu compte. Utilitzeu un dels codis secundaris per connectar o contactar amb el teu admin per ajuda.",
"Use backup code" : "Utilitza un codi de copia de seguretat",
"Cancel log in" : "Cancel·la l'accés a",
"Error while validating your second factor" : "Error al validar el segon factor d'autenticació",
"Access through untrusted domain" : "Accedeix a través d'un domini que no és de confiança",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Si us plau, contacta amb el teu administrador. Si tu ets l'administrador, edita la configuració de \"trusted_domains\" a config/config.php tal com mostra l'exemple de config.samble.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Més informació de com configurar això es poden trobar a la %1$sdocumentació%2$s.",
"App update required" : "Cal que actualitzeu la aplicació",
+ "%1$s will be updated to version %2$s" : "%1$s s'anirà actualitzant a la versió %2$s",
"These apps will be updated:" : "Aquestes aplicacions s'actualitzaran:",
"These incompatible apps will be disabled:" : "Aquestes aplicacions incompatibles es desactivaran:",
"The theme %s has been disabled." : "S'ha desactivat el tema %s.",
@@ -330,6 +351,7 @@
"Detailed logs" : "Registres detallats",
"Update needed" : "Actualització necessaria",
"Please use the command line updater because you have a big instance with more than 50 users." : "Utilitzeu l'actualitzador de línia de comandes perquè teniu una gran instància amb més de 50 usuàries.",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Per ajuda, vegeu la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> documentació</a>.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Sé que si continuo fent l'actualització mitjançant l’interfície d’usuari web té el risc que la sol·licitud esgoti un temps d'espera, que podria causa pèrdua de dades, però tinc una còpia de seguretat i se com restaurar la meva instància en cas de fallada.",
"Upgrade via web on my own risk" : "Actualitza via web sota la teva responsabilitat",
"This %s instance is currently in maintenance mode, which may take a while." : "Aquesta instància %s està actualment en manteniment i podria trigar una estona.",
@@ -337,7 +359,23 @@
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.",
"Thank you for your patience." : "Gràcies per la paciència.",
"Updated \"%s\" to %s" : "Actualitzat \"%s\" a %s",
+ "%s (3rdparty)" : "%s (de tercers)",
"There was an error loading your contacts" : "Hi ha hagut un error al carregar els teus contactes",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "El teu servidor web no està configurat correctament per resoldre \"{url}\". Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Aquest servidor no té cap connexió a Internet operativa: múltiples punts finals no es van poder contactar. Això significa que algunes de les funcions com muntatge d'emmagatzematge extern, notificacions sobre actualitzacions o instal·lació d'apps de terceres parts no funcionaran. L’accés remot a arxius i l’enviament d'e-mail de notificació podrien no funcionar tampoc. Suggerim habilitar la connexió a Internet per a aquest servidor si voleu tenir tota la funcionalitat.",
+ "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No s’ha configurat cap memòria cau. Per millorar el seu rendiment configureu un memcache si està disponible. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomenable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Actualment esteu executant PHP {version}. Us animem a actualitzar la versió de PHP que feu servir per tenir avantatge d’<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">actualitzacions de rendiment i seguretat proporcionats pel PHP Group</a> tan aviat com ho suporti la vostra distribució.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "La configuració de les capçaleres del proxy invers és incorrecta o estàs accedint a Nextcloud des d'un proxy de confiança. Si no estàs accedint a Nextcloud des d'un proxy de confiança, això és un risc de seguretat i pot permetre a un atacant suplantar l’adreça IP que veu Nextcloud. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>.",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached està configurat com a memoria cau distribuïda, però s’ha instal·lat el mòdul erroni de PHP \"memcache\". \\OC\\Memcache\\Memcached només dóna suport a “memcached\" i no \"memcache\". Mireu la <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de memcached sobre ambdós mòduls</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns fitxers no han passat la comprovació d'integritat. Trobareu més informació sobre com resoldre aquest tema a la nostra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentació</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Llista de fitxers no vàlids...</a> / <a href=\"{rescanEndpoint}\">Tornar a escanejar...</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "La OPcache de PHP no està configurada correctament. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Per millor rendiment recomanem</a> utilitzar-la seguint la configuració en el <code>php.ini</code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La funció PHP \"set_time_limit\" no està disponible. Això podria resultar en scripts que s’aturin a mitga execució, trencant la instal·lació. Us recomanem activar aquesta funció.",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "El teu directori de dades i fitxers són probablement accessibles des d'Internet. L'arxiu .htaccess no està funcionant. Es recomana que configureu el servidor web de manera que el directori de dades no estigui accessible o moure el directori de dades fora de l'arrel de documents del servidor web.",
+ "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "La capçalera HTTP “{header}” no està configurada per ser igual a “{expected}”. Aquest és un potencial risc de seguretat o privacitat, i es recomana ajustar aquesta configuració.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "La capçalera HTTP “Strict-Transport-Security” no està configurada a un mínim de “{seconds}” segons. Per a millor seguretat recomanem permetre HSTS com es descriu en els nostres <a href=\"{docUrl}\" rel=\"noreferrer\">consells de seguretat</a>.",
+ "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>.",
"Shared with {recipients}" : "Compartit amb {recipients}",
"Error setting expiration date" : "Error en establir la data de venciment",
"The public link will expire no later than {days} days after it is created" : "L'enllaç públic tindrà venciment abans de {days} dies després de crear-lo",
@@ -347,6 +385,9 @@
"Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.",
"The specified document has not been found on the server." : "El document especificat no s'ha trobat al servidor.",
"You can click here to return to %s." : "Pots clicar aquí per tornar a %s.",
+ "The server encountered an internal error and was unable to complete your request." : "El servidor ha trobat un error intern i no pot finalitzar la seva petició.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Per favor, posi's en contacte amb l'administrador del servidor si aquest error torna a aparèixer diverses vegades, per favor inclogui els detalls tècnics a sota en el seu informe.",
+ "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Per a informació sobre com configurar correctament el servidor, podeu consultar la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentació</a>.",
"This action requires you to confirm your password:" : "Aquesta acció necessita que confirmis la teva contrasenya:",
"Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?",
"Stay logged in" : "Mantén la sessió connectada",
@@ -362,10 +403,12 @@
"For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Per obtenir ajuda, vegeu la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\"> documentació</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no és llegible per PHP que no és gens recomanable per motius de seguretat. Trobareu més informació a la nostra <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentació</a>.",
"Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "El seu PHP no té suport per FreeType, el que resulta en un trencament de les fotos de perfil i la interfície de configuració.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips</a>." : "La capçalera HTTP \"Estricte-Transport-seguretat\" no està establert com a mínim \"{segons}\" segons. Per a més seguretat, es recomana activar HSTS com es descriu en els <a href=\"{docUrl}\" rel=\"noreferrer noopener\">consells de seguretat</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "S'està accedint de manera no segura mitjançant HTTP. Es recomana utilitzar HTTPS, tal i com detallen els <a href=\"{docUrl}\">consells de seguretat</a>.",
"Back to log in" : "Torna a l'accés",
"You are about to grant %s access to your %s account." : "Estàs a punt d'autoritzar a %s a accedir al teu compte %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Depenent de la teva configuració, aquest botó també podria funcionar per confiar en el domini:",
+ "Copy URL" : "Copiar URL",
"Please log in before granting %s access to your %s account." : "Si us plau entrar abans de donar %s accés al teu compte %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Més informació de com configurar això es pot trobar a la %sdocumentation%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 132b57da497..837eb674329 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -18,7 +18,7 @@ OC.L10N.register(
"Password reset is disabled" : "Reset hesla je vypnut",
"Couldn't reset password because the token is invalid" : "Heslo nebylo změněno kvůli neplatnému tokenu",
"Couldn't reset password because the token is expired" : "Heslo nebylo změněno z důvodu skončení platnosti tokenu",
- "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat e-mail pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Kontaktujte prosím svého administrátora.",
+ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat e-mail pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Obraťte se na svého správce.",
"%s password reset" : "reset hesla %s",
"Password reset" : "Reset hesla",
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Pokud chcete resetovat své heslo, klikněte na tlačítko níže. Pokud jste o resetování hesla nežádali, tento e-mail ignorujte.",
@@ -30,7 +30,7 @@ OC.L10N.register(
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Upozornění opravy:",
"Repair error: " : "Chyba opravy:",
- "Please use the command line updater because automatic updating is disabled in the config.php." : "Použijte aktualizační příkazový řádek, protože automatická aktualizace je zakázána v config.php",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Zaktualizujte z příkazového řádku, protože automatická aktualizace je zakázána v config.php.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabulky %s",
"Turned on maintenance mode" : "Zapnut režim údržby",
"Turned off maintenance mode" : "Vypnut režim údržby",
@@ -44,10 +44,11 @@ OC.L10N.register(
"Checking for update of app \"%s\" in appstore" : "Hledám aktualizaci aplikace „%s“ v obchodu s aplikacemi",
"Update app \"%s\" from appstore" : "Aktualizuje se aplikace „%s“ z katalogu aplikací",
"Checked for update of app \"%s\" in appstore" : "Zkontrolována aktualizace aplikace „%s“ v katalogu aplikací",
- "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Probíhá ověření, zda je možné aktualizovat schéma databáze %s (toto může trvat déle v závislosti na velikosti databáze)",
- "Checked database schema update for apps" : "Aktualizace schéma databáze aplikací byla ověřena",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Probíhá zjišťování, zda je možné aktualizovat schéma databáze používané %s (v závislosti na velikosti databáze to může zabrat delší dobu)",
+ "Checked database schema update for apps" : "Aktualizace schéma databáze pro aplikace byla ověřena",
+ "Updated \"%1$s\" to %2$s" : "Aktualizováno „%1$s“ na %2$s",
"Set log level to debug" : "Nastavit úroveň logování na debug",
- "Reset log level" : "Resetovat úroveň logování",
+ "Reset log level" : "Vrátit podrobnost záznamu událostí na výchozí úroveň",
"Starting code integrity check" : "Spouští se kontrola integrity kódu",
"Finished code integrity check" : "Kontrola integrity kódu dokončena",
"%s (incompatible)" : "%s (nekompatibilní)",
@@ -90,7 +91,7 @@ OC.L10N.register(
"Error loading file picker template: {error}" : "Chyba při načítání šablony výběru souborů: {error}",
"OK" : "OK",
"Error loading message template: {error}" : "Chyba při nahrávání šablony zprávy: {error}",
- "read-only" : "pouze ke čtení",
+ "read-only" : "pouze pro čtení",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} souborový konflikt","{count} souborové konflikty","{count} souborových konfliktů","{count} souborových konfliktů"],
"One file conflict" : "Jeden konflikt souboru",
"New Files" : "Nové soubory",
@@ -111,7 +112,7 @@ OC.L10N.register(
"Weak password" : "Slabé heslo",
"So-so password" : "Středně silné heslo",
"Good password" : "Dobré heslo",
- "Strong password" : "Silné heslo",
+ "Strong password" : "Odolné heslo",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Váš webový server ještě není správně nastaven, pro umožnění synchronizace souborů, rozhraní WebDAV pravděpodobně není funkční.",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Váš webový server není správně nastaven pro rozpoznání „{url}“. Více informací lze nalézt v naší <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaci</a>.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Zdá se, že PHP není správně nastaveno pro dotazování proměnných prostředí systému. Test s příkazem getenv (\"PATH\") vrátí pouze prázdnou odpověď.",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Váš datový adresář a vaše soubory jsou pravděpodobně dostupné z internetu. Soubor .htaccess nefunguje. Je velmi doporučeno zajistit, aby tento adresář již nebyl dostupný z internetu, nebo byl přesunut mimo document root webového serveru.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ není nastavena ve shodě s „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ není nastavena ve shodě s „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP hlavička „{header}“ není nastavena na „{val1}“, „{val2}“, „{val3}“ nebo „{val4}“. To může odhalovat referer informaci. Viz <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">doporučení W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ neobsahuje „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP hlavička „{header}“ není nastavena na „{val1}“, „{val2}“, „{val3}“, „{val4}“ nebo „{val5}“. To může odhalovat referer informaci. Viz <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">doporučení W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP hlavička „Strict-Transport-Security“ není nastavena na přinejmenším „{seconds}“ sekund. Pro lepší zabezpečení je doporučeno zapnout HSTS, jak je popsáno v <a href=\"{docUrl}\" rel=\"noreferrer noopener\">tipech pro zabezpečení ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Přistupujete přes nezabezpečené HTTP. Silně doporučujeme nastavit svůj server tak, aby vyžadoval namísto toho HTTPS, jak je popsáno v <a href=\"{docUrl}\">tipech pro zabezpečení ↗</a>.",
"Shared" : "Sdílené",
@@ -163,9 +165,10 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "Zmáčknout Ctrl-C pro kopírování.",
"Resharing is not allowed" : "Sdílení už sdílené položky není povoleno",
"Share to {name}" : "Sdílet {name}",
+ "Copy link" : "Zkopírovat odkaz",
"Link" : "Odkaz",
"Password protect" : "Chránit heslem",
- "Allow editing" : "Povolit úpravy",
+ "Allow editing" : "Umožnit úpravy",
"Email link to person" : "Odeslat osobě odkaz e-mailem",
"Send" : "Odeslat",
"Allow upload and editing" : "Povolit nahrávání a úpravy",
@@ -175,13 +178,13 @@ OC.L10N.register(
"Expiration" : "Konec platnosti",
"Expiration date" : "Datum skončení platnosti",
"Note to recipient" : "Poznámka pro příjemce",
- "Share link" : "Sdílet odkaz",
+ "Share link" : "Odkaz pro sdílení",
"Enable" : "Povolit",
"Shared with you and the group {group} by {owner}" : "S Vámi a skupinou {group} sdílí {owner}",
"Shared with you and {circle} by {owner}" : "Sdíleno s vámi a {circle} od {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Sdíleno {owner} s vámi a konverzací {conversation}",
"Shared with you in a conversation by {owner}" : "Sdílí s vámi {owner} v konverzaci",
- "Shared with you by {owner}" : "S Vámi sdílí {owner}",
+ "Shared with you by {owner}" : "S vámi sdílí {owner}",
"Choose a password for the mail share" : "Zvolte si heslo e-mailového sdílení",
"group" : "skupina",
"remote" : "vzdálený",
@@ -197,6 +200,7 @@ OC.L10N.register(
"Can delete" : "Může mazat",
"Password protect by Talk" : "Ochrana heslem pomocí Talk",
"Access control" : "Řízení přístupu",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} nasdílel(a) prostřednictvím odkazu",
"Could not unshare" : "Nelze zrušit sdílení",
"Error while sharing" : "Chyba při sdílení",
"Share details could not be loaded for this item." : "Detaily sdílení pro tuto položku nelze načíst.",
@@ -253,6 +257,8 @@ OC.L10N.register(
"Help" : "Nápověda",
"Access forbidden" : "Přístup zakázán",
"File not found" : "Soubor nenalezen",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokument se nepodařilo na serveru najít. Možná bylo sdílení smazáno nebo skončila jeho platnost?",
+ "Back to %s" : "Zpět na %s",
"Internal Server Error" : "Vnitřní chyba serveru",
"The server was unable to complete your request." : "Server nemohl dokončit váš požadavek.",
"If this happens again, please send the technical details below to the server administrator." : "Pokud se to stane znovu, pošlete níže uvedené technické detaily administrátorovi serveru.",
@@ -275,17 +281,17 @@ OC.L10N.register(
"Data folder" : "Složka s daty",
"Configure the database" : "Nastavit databázi",
"Only %s is available." : "Je k dispozici pouze %s.",
- "Install and activate additional PHP modules to choose other database types." : "Pro výběr jiných typů databáze je třeba nainstalovat a povolit dodatečné PHP moduly.",
+ "Install and activate additional PHP modules to choose other database types." : "Aby bylo možné vybrat jiné typy databáze je třeba nainstalovat a povolit dodatečné PHP moduly.",
"For more details check out the documentation." : "Více informací lze nalézt v dokumentaci.",
"Database user" : "Uživatel databáze",
"Database password" : "Heslo databáze",
"Database name" : "Název databáze",
"Database tablespace" : "Tabulkový prostor databáze",
- "Database host" : "Hostitel databáze",
+ "Database host" : "Stroj na kterém se nachází databáze",
"Please specify the port number along with the host name (e.g., localhost:5432)." : "Zadejte port spolu s názvem hostitele (t. j., localhost:5432).",
"Performance warning" : "Varování o výkonu",
"SQLite will be used as database." : "Bude použita SQLite databáze.",
- "For larger installations we recommend to choose a different database backend." : "Pro větší instalace doporučujeme vybrat jiné databázové řešení.",
+ "For larger installations we recommend to choose a different database backend." : "Pro větší instalace doporučujeme zvolit jiné databázové řešení.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Obzvláště při používání klientské aplikace pro synchronizaci s desktopem není SQLite doporučeno.",
"Finish setup" : "Dokončit nastavení",
"Finishing …" : "Dokončování…",
@@ -314,26 +320,33 @@ OC.L10N.register(
"Forgot password?" : "Zapomněli jste heslo?",
"Back to login" : "Zpět na přihlášení",
"Connect to your account" : "Připojit ke svému účtu",
+ "Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
"App token" : "Token aplikace",
"Grant access" : "Povolit přístup",
"Alternative log in using app token" : "Alternativní přihlášení pomocí tokenu aplikace",
"Account access" : "Přístup k účtu",
+ "You are about to grant %1$s access to your %2$s account." : "Chystáte se udělit %1$s přístup ke svému %2$s účtu.",
"Redirecting …" : "Přesměrovávání…",
"New password" : "Nové heslo",
"New Password" : "Nové heslo",
"This share is password-protected" : "Toto sdílení je chráněno heslem",
"The password is wrong. Try again." : "Chybné heslo. Zkuste to znovu.",
"Two-factor authentication" : "Dvoufaktorové přihlášení",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Bylo zapnuto vylepšené zabezpečení pro tento účet. Zvolte druhý faktor pro ověřování:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Nedaří se načíst ani jednu ze zapnutých metod dvouúrovňového ověřování. Obraťte se na svého správce.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Je vynucováno dvoufázové ověřování ale to pro váš účet není nastaveno. Obraťte o pomoc na svého správce.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Je vynucováno dvoufázové ověřování ale to pro váš účet není nastaveno. Přihlaste se použitím nějakého ze svých záložních kódů nebo se obraťte o pomoc na svého správce.",
"Use backup code" : "Použít záložní kód",
"Cancel log in" : "Zrušit přihlášení",
"Error while validating your second factor" : "Chyba při ověřování druhého faktoru",
"Access through untrusted domain" : "Přístup prostřednictvím nedůvěryhodné domény",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Obraťte se na svého správce. Pokud jste jím vy, upravte v souboru s nastaveními config/config.php parametr „trusted_domains“ podle příkladu v config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Další informace o tom, jak toto nastavit jsou k dispozici v %1$sdokumentaci%2$s.",
"App update required" : "Vyžadována aktualizace aplikace",
+ "%1$s will be updated to version %2$s" : "%1$s bude aktualizováno na verzi %2$s",
"These apps will be updated:" : "Následující aplikace budou aktualizovány:",
"These incompatible apps will be disabled:" : "Následující nekompatibilní aplikace budou zakázány:",
- "The theme %s has been disabled." : "Vzhled %s byl zakázán.",
+ "The theme %s has been disabled." : "Motiv vzhledu %s byl vypnut.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Před provedením dalšího kroku se ujistěte, že je zazálohována databáze a složky s nastaveními a daty.",
"Start update" : "Spustit aktualizaci",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "U větších instalací, abyste zabránili překračování časového limitu, můžete namísto toho spustit následující příkaz v hlavním adresáři:",
@@ -343,8 +356,8 @@ OC.L10N.register(
"For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pro pomoc, nahlédněte do <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentace</a>.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Beru na vědomí, že při aktualizaci skrze webové rozhraní hrozí nebezpečí vypršení požadavku, který může vyústit ve ztrátu dat. Mám pro takový případ zálohu a vím, jak ji v případě selhání obnovit.",
"Upgrade via web on my own risk" : "Na vlastní nebezpečí aktualizovat skrze web",
- "This %s instance is currently in maintenance mode, which may take a while." : "Tato instalace %s je právě ve stavu údržby a to může chvíli trvat.",
- "This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky načte poté, co bude opět dostupná instance %s.",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Tato instalace %s je právě ve stavu údržby a ta může chvíli trvat.",
+ "This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky znovu načte, jakmile bude instance %s opět dostupná .",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Pokud se tato zpráva objevuje opakovaně nebo nečekaně, obraťte se správce systému.",
"Thank you for your patience." : "Děkujeme za vaši trpělivost.",
"Updated \"%s\" to %s" : "Aktualizováno z „%s“ na %s",
@@ -366,7 +379,7 @@ OC.L10N.register(
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "HTTP hlavička \"Strict-Transport-Security\" není nakonfigurována na minimum \"{seconds}\" sekund. Pro vylepšení bezpečnosti doporučujeme povolit HSTS dle popisu v našich <a href=\"{docUrl}\" rel=\"noreferrer\">bezpečnostních tipech</a>.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Přistupujete na tuto stránku přes protokol HTTP. Důrazně doporučujeme nakonfigurovat server tak, aby vyžadoval použití HTTPS jak je popsáno v našich <a href=\"{docUrl}\">bezpečnostních tipech</a>.",
"Shared with {recipients}" : "Sdíleno s {recipients}",
- "Error setting expiration date" : "Chyba při nastavení data vypršení platnosti",
+ "Error setting expiration date" : "Chyba při nastavení data skončení platnosti",
"The public link will expire no later than {days} days after it is created" : "Veřejný odkaz vyprší nejpozději {days} dní od svého vytvoření",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} sdílí pomocí odkazu",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, skupiny, federovaného cloud ID, nebo e-mailové adresy.",
@@ -397,6 +410,7 @@ OC.L10N.register(
"Back to log in" : "Zpět na přihlášení",
"You are about to grant %s access to your %s account." : "Chystáte se povolit %s přístup k vašemu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:",
+ "Copy URL" : "Kopírovat URL",
"Please log in before granting %s access to your %s account." : "Přihlaste se před udělením %s přístupu k vašemu %s účtu.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Více informací o tom, jak toto nastavit, jsou k dispozici v%sdokumentaci%s."
},
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index e27fc6625b7..0c1809d48e5 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -16,7 +16,7 @@
"Password reset is disabled" : "Reset hesla je vypnut",
"Couldn't reset password because the token is invalid" : "Heslo nebylo změněno kvůli neplatnému tokenu",
"Couldn't reset password because the token is expired" : "Heslo nebylo změněno z důvodu skončení platnosti tokenu",
- "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat e-mail pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Kontaktujte prosím svého administrátora.",
+ "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat e-mail pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Obraťte se na svého správce.",
"%s password reset" : "reset hesla %s",
"Password reset" : "Reset hesla",
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Pokud chcete resetovat své heslo, klikněte na tlačítko níže. Pokud jste o resetování hesla nežádali, tento e-mail ignorujte.",
@@ -28,7 +28,7 @@
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair warning: " : "Upozornění opravy:",
"Repair error: " : "Chyba opravy:",
- "Please use the command line updater because automatic updating is disabled in the config.php." : "Použijte aktualizační příkazový řádek, protože automatická aktualizace je zakázána v config.php",
+ "Please use the command line updater because automatic updating is disabled in the config.php." : "Zaktualizujte z příkazového řádku, protože automatická aktualizace je zakázána v config.php.",
"[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabulky %s",
"Turned on maintenance mode" : "Zapnut režim údržby",
"Turned off maintenance mode" : "Vypnut režim údržby",
@@ -42,10 +42,11 @@
"Checking for update of app \"%s\" in appstore" : "Hledám aktualizaci aplikace „%s“ v obchodu s aplikacemi",
"Update app \"%s\" from appstore" : "Aktualizuje se aplikace „%s“ z katalogu aplikací",
"Checked for update of app \"%s\" in appstore" : "Zkontrolována aktualizace aplikace „%s“ v katalogu aplikací",
- "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Probíhá ověření, zda je možné aktualizovat schéma databáze %s (toto může trvat déle v závislosti na velikosti databáze)",
- "Checked database schema update for apps" : "Aktualizace schéma databáze aplikací byla ověřena",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Probíhá zjišťování, zda je možné aktualizovat schéma databáze používané %s (v závislosti na velikosti databáze to může zabrat delší dobu)",
+ "Checked database schema update for apps" : "Aktualizace schéma databáze pro aplikace byla ověřena",
+ "Updated \"%1$s\" to %2$s" : "Aktualizováno „%1$s“ na %2$s",
"Set log level to debug" : "Nastavit úroveň logování na debug",
- "Reset log level" : "Resetovat úroveň logování",
+ "Reset log level" : "Vrátit podrobnost záznamu událostí na výchozí úroveň",
"Starting code integrity check" : "Spouští se kontrola integrity kódu",
"Finished code integrity check" : "Kontrola integrity kódu dokončena",
"%s (incompatible)" : "%s (nekompatibilní)",
@@ -88,7 +89,7 @@
"Error loading file picker template: {error}" : "Chyba při načítání šablony výběru souborů: {error}",
"OK" : "OK",
"Error loading message template: {error}" : "Chyba při nahrávání šablony zprávy: {error}",
- "read-only" : "pouze ke čtení",
+ "read-only" : "pouze pro čtení",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} souborový konflikt","{count} souborové konflikty","{count} souborových konfliktů","{count} souborových konfliktů"],
"One file conflict" : "Jeden konflikt souboru",
"New Files" : "Nové soubory",
@@ -109,7 +110,7 @@
"Weak password" : "Slabé heslo",
"So-so password" : "Středně silné heslo",
"Good password" : "Dobré heslo",
- "Strong password" : "Silné heslo",
+ "Strong password" : "Odolné heslo",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Váš webový server ještě není správně nastaven, pro umožnění synchronizace souborů, rozhraní WebDAV pravděpodobně není funkční.",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Váš webový server není správně nastaven pro rozpoznání „{url}“. Více informací lze nalézt v naší <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentaci</a>.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Zdá se, že PHP není správně nastaveno pro dotazování proměnných prostředí systému. Test s příkazem getenv (\"PATH\") vrátí pouze prázdnou odpověď.",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Váš datový adresář a vaše soubory jsou pravděpodobně dostupné z internetu. Soubor .htaccess nefunguje. Je velmi doporučeno zajistit, aby tento adresář již nebyl dostupný z internetu, nebo byl přesunut mimo document root webového serveru.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ není nastavena ve shodě s „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ není nastavena ve shodě s „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP hlavička „{header}“ není nastavena na „{val1}“, „{val2}“, „{val3}“ nebo „{val4}“. To může odhalovat referer informaci. Viz <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">doporučení W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP hlavička „{header}“ neobsahuje „{expected}“. To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP hlavička „{header}“ není nastavena na „{val1}“, „{val2}“, „{val3}“, „{val4}“ nebo „{val5}“. To může odhalovat referer informaci. Viz <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">doporučení W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP hlavička „Strict-Transport-Security“ není nastavena na přinejmenším „{seconds}“ sekund. Pro lepší zabezpečení je doporučeno zapnout HSTS, jak je popsáno v <a href=\"{docUrl}\" rel=\"noreferrer noopener\">tipech pro zabezpečení ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Přistupujete přes nezabezpečené HTTP. Silně doporučujeme nastavit svůj server tak, aby vyžadoval namísto toho HTTPS, jak je popsáno v <a href=\"{docUrl}\">tipech pro zabezpečení ↗</a>.",
"Shared" : "Sdílené",
@@ -161,9 +163,10 @@
"Press Ctrl-C to copy." : "Zmáčknout Ctrl-C pro kopírování.",
"Resharing is not allowed" : "Sdílení už sdílené položky není povoleno",
"Share to {name}" : "Sdílet {name}",
+ "Copy link" : "Zkopírovat odkaz",
"Link" : "Odkaz",
"Password protect" : "Chránit heslem",
- "Allow editing" : "Povolit úpravy",
+ "Allow editing" : "Umožnit úpravy",
"Email link to person" : "Odeslat osobě odkaz e-mailem",
"Send" : "Odeslat",
"Allow upload and editing" : "Povolit nahrávání a úpravy",
@@ -173,13 +176,13 @@
"Expiration" : "Konec platnosti",
"Expiration date" : "Datum skončení platnosti",
"Note to recipient" : "Poznámka pro příjemce",
- "Share link" : "Sdílet odkaz",
+ "Share link" : "Odkaz pro sdílení",
"Enable" : "Povolit",
"Shared with you and the group {group} by {owner}" : "S Vámi a skupinou {group} sdílí {owner}",
"Shared with you and {circle} by {owner}" : "Sdíleno s vámi a {circle} od {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Sdíleno {owner} s vámi a konverzací {conversation}",
"Shared with you in a conversation by {owner}" : "Sdílí s vámi {owner} v konverzaci",
- "Shared with you by {owner}" : "S Vámi sdílí {owner}",
+ "Shared with you by {owner}" : "S vámi sdílí {owner}",
"Choose a password for the mail share" : "Zvolte si heslo e-mailového sdílení",
"group" : "skupina",
"remote" : "vzdálený",
@@ -195,6 +198,7 @@
"Can delete" : "Může mazat",
"Password protect by Talk" : "Ochrana heslem pomocí Talk",
"Access control" : "Řízení přístupu",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} nasdílel(a) prostřednictvím odkazu",
"Could not unshare" : "Nelze zrušit sdílení",
"Error while sharing" : "Chyba při sdílení",
"Share details could not be loaded for this item." : "Detaily sdílení pro tuto položku nelze načíst.",
@@ -251,6 +255,8 @@
"Help" : "Nápověda",
"Access forbidden" : "Přístup zakázán",
"File not found" : "Soubor nenalezen",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokument se nepodařilo na serveru najít. Možná bylo sdílení smazáno nebo skončila jeho platnost?",
+ "Back to %s" : "Zpět na %s",
"Internal Server Error" : "Vnitřní chyba serveru",
"The server was unable to complete your request." : "Server nemohl dokončit váš požadavek.",
"If this happens again, please send the technical details below to the server administrator." : "Pokud se to stane znovu, pošlete níže uvedené technické detaily administrátorovi serveru.",
@@ -273,17 +279,17 @@
"Data folder" : "Složka s daty",
"Configure the database" : "Nastavit databázi",
"Only %s is available." : "Je k dispozici pouze %s.",
- "Install and activate additional PHP modules to choose other database types." : "Pro výběr jiných typů databáze je třeba nainstalovat a povolit dodatečné PHP moduly.",
+ "Install and activate additional PHP modules to choose other database types." : "Aby bylo možné vybrat jiné typy databáze je třeba nainstalovat a povolit dodatečné PHP moduly.",
"For more details check out the documentation." : "Více informací lze nalézt v dokumentaci.",
"Database user" : "Uživatel databáze",
"Database password" : "Heslo databáze",
"Database name" : "Název databáze",
"Database tablespace" : "Tabulkový prostor databáze",
- "Database host" : "Hostitel databáze",
+ "Database host" : "Stroj na kterém se nachází databáze",
"Please specify the port number along with the host name (e.g., localhost:5432)." : "Zadejte port spolu s názvem hostitele (t. j., localhost:5432).",
"Performance warning" : "Varování o výkonu",
"SQLite will be used as database." : "Bude použita SQLite databáze.",
- "For larger installations we recommend to choose a different database backend." : "Pro větší instalace doporučujeme vybrat jiné databázové řešení.",
+ "For larger installations we recommend to choose a different database backend." : "Pro větší instalace doporučujeme zvolit jiné databázové řešení.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Obzvláště při používání klientské aplikace pro synchronizaci s desktopem není SQLite doporučeno.",
"Finish setup" : "Dokončit nastavení",
"Finishing …" : "Dokončování…",
@@ -312,26 +318,33 @@
"Forgot password?" : "Zapomněli jste heslo?",
"Back to login" : "Zpět na přihlášení",
"Connect to your account" : "Připojit ke svému účtu",
+ "Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
"App token" : "Token aplikace",
"Grant access" : "Povolit přístup",
"Alternative log in using app token" : "Alternativní přihlášení pomocí tokenu aplikace",
"Account access" : "Přístup k účtu",
+ "You are about to grant %1$s access to your %2$s account." : "Chystáte se udělit %1$s přístup ke svému %2$s účtu.",
"Redirecting …" : "Přesměrovávání…",
"New password" : "Nové heslo",
"New Password" : "Nové heslo",
"This share is password-protected" : "Toto sdílení je chráněno heslem",
"The password is wrong. Try again." : "Chybné heslo. Zkuste to znovu.",
"Two-factor authentication" : "Dvoufaktorové přihlášení",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Bylo zapnuto vylepšené zabezpečení pro tento účet. Zvolte druhý faktor pro ověřování:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Nedaří se načíst ani jednu ze zapnutých metod dvouúrovňového ověřování. Obraťte se na svého správce.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Je vynucováno dvoufázové ověřování ale to pro váš účet není nastaveno. Obraťte o pomoc na svého správce.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Je vynucováno dvoufázové ověřování ale to pro váš účet není nastaveno. Přihlaste se použitím nějakého ze svých záložních kódů nebo se obraťte o pomoc na svého správce.",
"Use backup code" : "Použít záložní kód",
"Cancel log in" : "Zrušit přihlášení",
"Error while validating your second factor" : "Chyba při ověřování druhého faktoru",
"Access through untrusted domain" : "Přístup prostřednictvím nedůvěryhodné domény",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Obraťte se na svého správce. Pokud jste jím vy, upravte v souboru s nastaveními config/config.php parametr „trusted_domains“ podle příkladu v config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Další informace o tom, jak toto nastavit jsou k dispozici v %1$sdokumentaci%2$s.",
"App update required" : "Vyžadována aktualizace aplikace",
+ "%1$s will be updated to version %2$s" : "%1$s bude aktualizováno na verzi %2$s",
"These apps will be updated:" : "Následující aplikace budou aktualizovány:",
"These incompatible apps will be disabled:" : "Následující nekompatibilní aplikace budou zakázány:",
- "The theme %s has been disabled." : "Vzhled %s byl zakázán.",
+ "The theme %s has been disabled." : "Motiv vzhledu %s byl vypnut.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Před provedením dalšího kroku se ujistěte, že je zazálohována databáze a složky s nastaveními a daty.",
"Start update" : "Spustit aktualizaci",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "U větších instalací, abyste zabránili překračování časového limitu, můžete namísto toho spustit následující příkaz v hlavním adresáři:",
@@ -341,8 +354,8 @@
"For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Pro pomoc, nahlédněte do <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentace</a>.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Beru na vědomí, že při aktualizaci skrze webové rozhraní hrozí nebezpečí vypršení požadavku, který může vyústit ve ztrátu dat. Mám pro takový případ zálohu a vím, jak ji v případě selhání obnovit.",
"Upgrade via web on my own risk" : "Na vlastní nebezpečí aktualizovat skrze web",
- "This %s instance is currently in maintenance mode, which may take a while." : "Tato instalace %s je právě ve stavu údržby a to může chvíli trvat.",
- "This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky načte poté, co bude opět dostupná instance %s.",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Tato instalace %s je právě ve stavu údržby a ta může chvíli trvat.",
+ "This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky znovu načte, jakmile bude instance %s opět dostupná .",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Pokud se tato zpráva objevuje opakovaně nebo nečekaně, obraťte se správce systému.",
"Thank you for your patience." : "Děkujeme za vaši trpělivost.",
"Updated \"%s\" to %s" : "Aktualizováno z „%s“ na %s",
@@ -364,7 +377,7 @@
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "HTTP hlavička \"Strict-Transport-Security\" není nakonfigurována na minimum \"{seconds}\" sekund. Pro vylepšení bezpečnosti doporučujeme povolit HSTS dle popisu v našich <a href=\"{docUrl}\" rel=\"noreferrer\">bezpečnostních tipech</a>.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Přistupujete na tuto stránku přes protokol HTTP. Důrazně doporučujeme nakonfigurovat server tak, aby vyžadoval použití HTTPS jak je popsáno v našich <a href=\"{docUrl}\">bezpečnostních tipech</a>.",
"Shared with {recipients}" : "Sdíleno s {recipients}",
- "Error setting expiration date" : "Chyba při nastavení data vypršení platnosti",
+ "Error setting expiration date" : "Chyba při nastavení data skončení platnosti",
"The public link will expire no later than {days} days after it is created" : "Veřejný odkaz vyprší nejpozději {days} dní od svého vytvoření",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} sdílí pomocí odkazu",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, skupiny, federovaného cloud ID, nebo e-mailové adresy.",
@@ -395,6 +408,7 @@
"Back to log in" : "Zpět na přihlášení",
"You are about to grant %s access to your %s account." : "Chystáte se povolit %s přístup k vašemu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:",
+ "Copy URL" : "Kopírovat URL",
"Please log in before granting %s access to your %s account." : "Přihlaste se před udělením %s přístupu k vašemu %s účtu.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Více informací o tom, jak toto nastavit, jsou k dispozici v%sdokumentaci%s."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 82d9acd728d..2bd329bca6e 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "App-Store auf Aktualisierung für die App \"%s\" geprüft",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Prüft, ob das Datenbankschema für %s aktualisiert werden kann (dies kann je nach Datenbankgröße sehr lange dauern)",
"Checked database schema update for apps" : "Datenbankschema-Aktualisierung für Apps überprüft",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\" aktualisiert auf %2$s",
"Set log level to debug" : "Log-Level auf \"debug\" gesetzt",
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass du es aus dem Dokument-Root-Verzeichnis des Webservers bewegst.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Einige Funktionen funktionieren möglicherweise nicht richtig. Daher wird empfohlen, diese Einstellung zu ändern.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\" oder \"{val4}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" oder \"{val5}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Der \"Strict-Transport-Security\" HTTP-Header ist nicht auf mindestens \"{seconds}\" Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den <a href=\"{docUrl}\" rel=\"noreferrer noopener\">Sicherheitshinweisen</a> erläutert ist.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Der Zugriff auf diese Site erfolgt über HTTP. Es wird dringend geraten, Ihren Server so zu konfigurieren, dass stattdessen nur HTTPS akzeptiert wird, wie es in den <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.",
"Shared" : "Geteilt",
@@ -318,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Passwort vergessen?",
"Back to login" : "Zur Anmeldung wechseln",
"Connect to your account" : "Verbinde Dich mit Deinem Konto",
+ "Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Du %1$s Zugriff auf Dein %2$s-Konto gewährst.",
"App token" : "App-Token",
"Grant access" : "Zugriff gewähren",
"Alternative log in using app token" : "Alternative Anmeldung via App-Token",
"Account access" : "Kontozugriff ",
+ "You are about to grant %1$s access to your %2$s account." : "Du bist dabei, %1$s Zugriff auf Dein %2$s-Konto zu gewähren.",
"Redirecting …" : "Weiterleiten…",
"New password" : "Neues Passwort",
"New Password" : "Neues Passwort",
@@ -337,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Fehler beim Bestätigen des zweiten Sicherheitsfaktors",
"Access through untrusted domain" : "Zugriff über eine nicht vertrauenswürdige Domain",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Bitte kontaktiere deinen Administrator. Wenn du Administrator bist, bearbeite die „trusted_domains“-Einstellung in config/config.php. Siehe Beispiel in config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Weitere Informationen zur Konfiguration findest Du in der %1$sDokumentation%2$s.",
"App update required" : "App-Aktualisierung notwendig",
+ "%1$s will be updated to version %2$s" : "%1$s wird auf Version %2$s aktualisiert",
"These apps will be updated:" : "Diese Apps werden aktualisiert:",
"These incompatible apps will be disabled:" : "Diese inkompatiblen Apps werden deaktiviert:",
"The theme %s has been disabled." : "Das Thema %s wurde deaktiviert.",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index c2bac485663..fa1d2fb77b4 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "App-Store auf Aktualisierung für die App \"%s\" geprüft",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Prüft, ob das Datenbankschema für %s aktualisiert werden kann (dies kann je nach Datenbankgröße sehr lange dauern)",
"Checked database schema update for apps" : "Datenbankschema-Aktualisierung für Apps überprüft",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\" aktualisiert auf %2$s",
"Set log level to debug" : "Log-Level auf \"debug\" gesetzt",
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass du es aus dem Dokument-Root-Verzeichnis des Webservers bewegst.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Einige Funktionen funktionieren möglicherweise nicht richtig. Daher wird empfohlen, diese Einstellung zu ändern.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\" oder \"{val4}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" oder \"{val5}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Der \"Strict-Transport-Security\" HTTP-Header ist nicht auf mindestens \"{seconds}\" Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den <a href=\"{docUrl}\" rel=\"noreferrer noopener\">Sicherheitshinweisen</a> erläutert ist.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Der Zugriff auf diese Site erfolgt über HTTP. Es wird dringend geraten, Ihren Server so zu konfigurieren, dass stattdessen nur HTTPS akzeptiert wird, wie es in den <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.",
"Shared" : "Geteilt",
@@ -316,10 +318,12 @@
"Forgot password?" : "Passwort vergessen?",
"Back to login" : "Zur Anmeldung wechseln",
"Connect to your account" : "Verbinde Dich mit Deinem Konto",
+ "Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Du %1$s Zugriff auf Dein %2$s-Konto gewährst.",
"App token" : "App-Token",
"Grant access" : "Zugriff gewähren",
"Alternative log in using app token" : "Alternative Anmeldung via App-Token",
"Account access" : "Kontozugriff ",
+ "You are about to grant %1$s access to your %2$s account." : "Du bist dabei, %1$s Zugriff auf Dein %2$s-Konto zu gewähren.",
"Redirecting …" : "Weiterleiten…",
"New password" : "Neues Passwort",
"New Password" : "Neues Passwort",
@@ -335,7 +339,9 @@
"Error while validating your second factor" : "Fehler beim Bestätigen des zweiten Sicherheitsfaktors",
"Access through untrusted domain" : "Zugriff über eine nicht vertrauenswürdige Domain",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Bitte kontaktiere deinen Administrator. Wenn du Administrator bist, bearbeite die „trusted_domains“-Einstellung in config/config.php. Siehe Beispiel in config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Weitere Informationen zur Konfiguration findest Du in der %1$sDokumentation%2$s.",
"App update required" : "App-Aktualisierung notwendig",
+ "%1$s will be updated to version %2$s" : "%1$s wird auf Version %2$s aktualisiert",
"These apps will be updated:" : "Diese Apps werden aktualisiert:",
"These incompatible apps will be disabled:" : "Diese inkompatiblen Apps werden deaktiviert:",
"The theme %s has been disabled." : "Das Thema %s wurde deaktiviert.",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 529a0cc5fa2..bb764aecb86 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "App-Store auf Aktualisierung für die App \"%s\" geprüft",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Prüft, ob das Datenbankschema für %s aktualisiert werden kann (dies kann je nach Datenbankgröße sehr lange dauern)",
"Checked database schema update for apps" : "Datenbankschema-Aktualisierung für Apps überprüft",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\" aktualisiert auf %2$s",
"Set log level to debug" : "Log-Level auf \"debug\" gesetzt",
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Einige Funktionen funktionieren möglicherweise nicht richtig. Daher wird empfohlen, diese Einstellung zu ändern.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\" oder \"{val4}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" oder \"{val5}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Der \"Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens \"{seconds}“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den <a href=\"{docUrl}\" rel=\"noreferrer noopener\">Sicherheitshinweisen</a> erläutert ist.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Der Zugriff auf diese Site erfolgt über HTTP. Es wird dringend geraten, den Server so zu konfigurieren, dass stattdessen nur HTTPS akzeptiert wird, wie es in den <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.",
"Shared" : "Geteilt",
@@ -318,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Passwort vergessen?",
"Back to login" : "Zur Anmeldung wechseln",
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
+ "Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
"App token" : "App-Token",
"Grant access" : "Zugriff gewähren",
"Alternative log in using app token" : "Alternative Anmeldung via App-Token",
"Account access" : "Kontozugriff ",
+ "You are about to grant %1$s access to your %2$s account." : "Sie sind dabei, %1$s Zugriff auf Ihr %2$s-Konto zu gewähren.",
"Redirecting …" : "Weiterleiten…",
"New password" : "Neues Passwort",
"New Password" : "Neues Passwort",
@@ -337,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Fehler beim Bestätigen des zweiten Sicherheitsfaktors",
"Access through untrusted domain" : "Zugriff über eine nicht vertrauenswürdige Domain",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Bitte kontaktieren Sie Ihren Administrator. Wenn Sie Administrator sind, bearbeiten Sie die „trusted_domains“-Einstellung in config/config.php. Siehe Beispiel in config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Weitere Informationen zur Konfiguration finden Sie in der %1$sDokumentation%2$s.",
"App update required" : "App-Aktualisierung notwendig",
+ "%1$s will be updated to version %2$s" : "%1$s wird auf Version %2$s aktualisiert",
"These apps will be updated:" : "Diese Apps werden aktualisiert:",
"These incompatible apps will be disabled:" : "Diese inkompatiblen Apps werden deaktiviert:",
"The theme %s has been disabled." : "Das Thema %s wurde deaktiviert.",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index f6a3174fdea..14911875609 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "App-Store auf Aktualisierung für die App \"%s\" geprüft",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Prüft, ob das Datenbankschema für %s aktualisiert werden kann (dies kann je nach Datenbankgröße sehr lange dauern)",
"Checked database schema update for apps" : "Datenbankschema-Aktualisierung für Apps überprüft",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\" aktualisiert auf %2$s",
"Set log level to debug" : "Log-Level auf \"debug\" gesetzt",
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Einige Funktionen funktionieren möglicherweise nicht richtig. Daher wird empfohlen, diese Einstellung zu ändern.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\" oder \"{val4}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ enthält. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Der \"{header}\" HTTP-Header ist nicht gesetzt auf \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" oder \"{val5}\". Dadurch können Verweis-Informationen preisgegeben werden. Siehe die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C-Empfehlung</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Der \"Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens \"{seconds}“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den <a href=\"{docUrl}\" rel=\"noreferrer noopener\">Sicherheitshinweisen</a> erläutert ist.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Der Zugriff auf diese Site erfolgt über HTTP. Es wird dringend geraten, den Server so zu konfigurieren, dass stattdessen nur HTTPS akzeptiert wird, wie es in den <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.",
"Shared" : "Geteilt",
@@ -316,10 +318,12 @@
"Forgot password?" : "Passwort vergessen?",
"Back to login" : "Zur Anmeldung wechseln",
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
+ "Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
"App token" : "App-Token",
"Grant access" : "Zugriff gewähren",
"Alternative log in using app token" : "Alternative Anmeldung via App-Token",
"Account access" : "Kontozugriff ",
+ "You are about to grant %1$s access to your %2$s account." : "Sie sind dabei, %1$s Zugriff auf Ihr %2$s-Konto zu gewähren.",
"Redirecting …" : "Weiterleiten…",
"New password" : "Neues Passwort",
"New Password" : "Neues Passwort",
@@ -335,7 +339,9 @@
"Error while validating your second factor" : "Fehler beim Bestätigen des zweiten Sicherheitsfaktors",
"Access through untrusted domain" : "Zugriff über eine nicht vertrauenswürdige Domain",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Bitte kontaktieren Sie Ihren Administrator. Wenn Sie Administrator sind, bearbeiten Sie die „trusted_domains“-Einstellung in config/config.php. Siehe Beispiel in config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Weitere Informationen zur Konfiguration finden Sie in der %1$sDokumentation%2$s.",
"App update required" : "App-Aktualisierung notwendig",
+ "%1$s will be updated to version %2$s" : "%1$s wird auf Version %2$s aktualisiert",
"These apps will be updated:" : "Diese Apps werden aktualisiert:",
"These incompatible apps will be disabled:" : "Diese inkompatiblen Apps werden deaktiviert:",
"The theme %s has been disabled." : "Das Thema %s wurde deaktiviert.",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 6b97d321787..05f331f10b1 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Buscar actualizaciones de aplicaciones %s en la AppStore",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprobar si se puede actualizar el esquema de la base de datos %s (esto puede tardar bastante tiempo, dependiendo del tamaño de la base de datos)",
"Checked database schema update for apps" : "Comprobada la actualización del esquema de la base de datos para aplicaciones",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\" actualizado a %2$s",
"Set log level to debug" : "Establecer el nivel de registro a depuración",
"Reset log level" : "Restablecer el nivel de registro",
"Starting code integrity check" : "Comenzando comprobación de integridad de código",
@@ -149,7 +150,7 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess no funciona. Se recomienda encarecidamente que configures tu servidor web de tal manera que el directorio de datos no sea accesible, o que lo muevas fuera de la raíz de documentos del servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no está configurada como \"{expected}\". Esto es un riesgo potencial de seguridad o privacidad, y se recomienda ajustar esta configuración de forma adecuada.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no está configurada como \"{expected}\". Algunas características podrían no funcionar correctamente, por lo que se recomienda ajustar esta configuración.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "La cabecera HTTP {header}\" no está configurada como \"{val1}\", \"{val2}\", \"{val3}\" o \"{val4}\". Esto puede filtrar información de referencia. Ver la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recomendación del W3C ↗</a>.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "La cabecera HTTP \"{header}\" no está configurada como {val1}\", \"{val2}\", \"{val3}\", \"{val4}\" o \"{val5}\". Esto puede filtrar información de referencia. Ver la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recomendación del W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{seconds}\" segundos. Para mejorar la seguridad, se recomienda activar HSTS como se describe en los <a href=\"{docUrl}\" rel=\"noreferrer noopener\">trucos de seguridad ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Se está accediendo al sitio de forma insegura vía HTTP. Se recomienda con fuerza configurar que el servidor requiera HTTPS, como se describe en los <a href=\"{docUrl}\">trucos de seguridad ↗</a>.",
"Shared" : "Compartido",
@@ -198,6 +199,7 @@ OC.L10N.register(
"Can delete" : "Puede eliminar",
"Password protect by Talk" : "Protegido con contraseña por Talk",
"Access control" : "Control de acceso",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartido por medio de un link",
"Could not unshare" : "No se puede quitar el comparto",
"Error while sharing" : "Error al compartir",
"Share details could not be loaded for this item." : "No se han podido cargar los detalles de compartición para este elemento.",
@@ -317,10 +319,12 @@ OC.L10N.register(
"Forgot password?" : "¿Contraseña olvidada?",
"Back to login" : "Volver a la identificación",
"Connect to your account" : "Conectar a cuenta",
+ "Please log in before granting %1$s access to your %2$s account." : "Por favor, inicia sesión antes de conceder a %1$s acceso a tu cuenta %2$s.",
"App token" : "Token de la aplicación",
"Grant access" : "Conceder acceso",
"Alternative log in using app token" : "Inicio de sesión alternativo usando el token de la aplicación",
"Account access" : "Acceso a la cuenta",
+ "You are about to grant %1$s access to your %2$s account." : "Estás a punto de conceder a %1$s acceso a tu cuenta %2$s.",
"Redirecting …" : "Redireccionando...",
"New password" : "Nueva contraseña",
"New Password" : "Contraseña nueva",
@@ -336,7 +340,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Error al validar su segundo factor",
"Access through untrusted domain" : "Acceso a través de un dominio en el que no se confía",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Por favor, ponte en contacto con tu administrador. Si eres un administrador, edita la configuración \"trusted_domains\" en config/config.php como el ejemplo que aparece en config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Más información sobre cómo configurar esto se puede encontrar en la %1$sdocumentación%2$s.",
"App update required" : "Es necesaria una actualización en la aplicación",
+ "%1$s will be updated to version %2$s" : "%1$s se actualizará a la versión %2$s",
"These apps will be updated:" : "Estas aplicaciones serán actualizadas:",
"These incompatible apps will be disabled:" : "Estas aplicaciones incompatibles serán deshabilitadas:",
"The theme %s has been disabled." : "El tema %s ha sido desactivado.",
@@ -403,6 +409,7 @@ OC.L10N.register(
"Back to log in" : "Volver al registro",
"You are about to grant %s access to your %s account." : "Estás a punto de conceder a %s acceso a tu cuenta de %s",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependiendo de tu configuración, este botón también podría servir para confiar en el dominio:",
+ "Copy URL" : "Copiar URL",
"Please log in before granting %s access to your %s account." : "Por favor, inicie sesión antes de conceder %s acceso a tu %s cuenta.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Más información sobre cómo configurar esto se puede encontrar en la %sdocumentación%s."
},
diff --git a/core/l10n/es.json b/core/l10n/es.json
index a622e1ee37f..d8948ed4d5b 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Buscar actualizaciones de aplicaciones %s en la AppStore",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprobar si se puede actualizar el esquema de la base de datos %s (esto puede tardar bastante tiempo, dependiendo del tamaño de la base de datos)",
"Checked database schema update for apps" : "Comprobada la actualización del esquema de la base de datos para aplicaciones",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\" actualizado a %2$s",
"Set log level to debug" : "Establecer el nivel de registro a depuración",
"Reset log level" : "Restablecer el nivel de registro",
"Starting code integrity check" : "Comenzando comprobación de integridad de código",
@@ -147,7 +148,7 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess no funciona. Se recomienda encarecidamente que configures tu servidor web de tal manera que el directorio de datos no sea accesible, o que lo muevas fuera de la raíz de documentos del servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no está configurada como \"{expected}\". Esto es un riesgo potencial de seguridad o privacidad, y se recomienda ajustar esta configuración de forma adecuada.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no está configurada como \"{expected}\". Algunas características podrían no funcionar correctamente, por lo que se recomienda ajustar esta configuración.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "La cabecera HTTP {header}\" no está configurada como \"{val1}\", \"{val2}\", \"{val3}\" o \"{val4}\". Esto puede filtrar información de referencia. Ver la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recomendación del W3C ↗</a>.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "La cabecera HTTP \"{header}\" no está configurada como {val1}\", \"{val2}\", \"{val3}\", \"{val4}\" o \"{val5}\". Esto puede filtrar información de referencia. Ver la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recomendación del W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{seconds}\" segundos. Para mejorar la seguridad, se recomienda activar HSTS como se describe en los <a href=\"{docUrl}\" rel=\"noreferrer noopener\">trucos de seguridad ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Se está accediendo al sitio de forma insegura vía HTTP. Se recomienda con fuerza configurar que el servidor requiera HTTPS, como se describe en los <a href=\"{docUrl}\">trucos de seguridad ↗</a>.",
"Shared" : "Compartido",
@@ -196,6 +197,7 @@
"Can delete" : "Puede eliminar",
"Password protect by Talk" : "Protegido con contraseña por Talk",
"Access control" : "Control de acceso",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartido por medio de un link",
"Could not unshare" : "No se puede quitar el comparto",
"Error while sharing" : "Error al compartir",
"Share details could not be loaded for this item." : "No se han podido cargar los detalles de compartición para este elemento.",
@@ -315,10 +317,12 @@
"Forgot password?" : "¿Contraseña olvidada?",
"Back to login" : "Volver a la identificación",
"Connect to your account" : "Conectar a cuenta",
+ "Please log in before granting %1$s access to your %2$s account." : "Por favor, inicia sesión antes de conceder a %1$s acceso a tu cuenta %2$s.",
"App token" : "Token de la aplicación",
"Grant access" : "Conceder acceso",
"Alternative log in using app token" : "Inicio de sesión alternativo usando el token de la aplicación",
"Account access" : "Acceso a la cuenta",
+ "You are about to grant %1$s access to your %2$s account." : "Estás a punto de conceder a %1$s acceso a tu cuenta %2$s.",
"Redirecting …" : "Redireccionando...",
"New password" : "Nueva contraseña",
"New Password" : "Contraseña nueva",
@@ -334,7 +338,9 @@
"Error while validating your second factor" : "Error al validar su segundo factor",
"Access through untrusted domain" : "Acceso a través de un dominio en el que no se confía",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Por favor, ponte en contacto con tu administrador. Si eres un administrador, edita la configuración \"trusted_domains\" en config/config.php como el ejemplo que aparece en config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Más información sobre cómo configurar esto se puede encontrar en la %1$sdocumentación%2$s.",
"App update required" : "Es necesaria una actualización en la aplicación",
+ "%1$s will be updated to version %2$s" : "%1$s se actualizará a la versión %2$s",
"These apps will be updated:" : "Estas aplicaciones serán actualizadas:",
"These incompatible apps will be disabled:" : "Estas aplicaciones incompatibles serán deshabilitadas:",
"The theme %s has been disabled." : "El tema %s ha sido desactivado.",
@@ -401,6 +407,7 @@
"Back to log in" : "Volver al registro",
"You are about to grant %s access to your %s account." : "Estás a punto de conceder a %s acceso a tu cuenta de %s",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependiendo de tu configuración, este botón también podría servir para confiar en el dominio:",
+ "Copy URL" : "Copiar URL",
"Please log in before granting %s access to your %s account." : "Por favor, inicie sesión antes de conceder %s acceso a tu %s cuenta.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Más información sobre cómo configurar esto se puede encontrar en la %sdocumentación%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index b86202f1958..3bc82f9a69c 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -45,6 +45,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Päivitys sovellukseen \"%s\" tarkistettu sovelluskaupasta",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tarkistetaan, onko kohteen %s tietokannan skeemaa mahdollista päivittää (tämä saattaa kestää kauan riippuen tietokannan koosta)",
"Checked database schema update for apps" : "Tarkistettu tietokannan skeemapäivitys sovelluksille",
+ "Updated \"%1$s\" to %2$s" : "Päivitetty \"%1$s\" versioon %2$s",
"Set log level to debug" : "Asetettu lokitasoksi vianetsintä",
"Reset log level" : "Nollattu lokitaso",
"Starting code integrity check" : "Aloitetaan koodin eheystarkistus",
@@ -359,6 +360,7 @@ OC.L10N.register(
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "Käytät sivustoa HTTP-yhteydellä. On suositeltavaa, että palvelin vaatiii HTTPS-yhteyden, kuten <a href=\"{docUrl}\">tietoturvavinkeissä</a> neuvotaan.",
"Back to log in" : "Palaa kirjautumiseen",
"You are about to grant %s access to your %s account." : "Olet antamassa lupaa laitteelle %s päästä sinun %s tilille.",
- "Depending on your configuration, this button could also work to trust the domain:" : "Asetuksista riippuen, ylläpitäjänä saatat pystyä alla olevalla painikkeella lisäämään tämän verkkotunnuksen luotetuksi."
+ "Depending on your configuration, this button could also work to trust the domain:" : "Asetuksista riippuen, ylläpitäjänä saatat pystyä alla olevalla painikkeella lisäämään tämän verkkotunnuksen luotetuksi.",
+ "Copy URL" : "Kopioi osoite"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index c14f708292a..f20859196e4 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -43,6 +43,7 @@
"Checked for update of app \"%s\" in appstore" : "Päivitys sovellukseen \"%s\" tarkistettu sovelluskaupasta",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Tarkistetaan, onko kohteen %s tietokannan skeemaa mahdollista päivittää (tämä saattaa kestää kauan riippuen tietokannan koosta)",
"Checked database schema update for apps" : "Tarkistettu tietokannan skeemapäivitys sovelluksille",
+ "Updated \"%1$s\" to %2$s" : "Päivitetty \"%1$s\" versioon %2$s",
"Set log level to debug" : "Asetettu lokitasoksi vianetsintä",
"Reset log level" : "Nollattu lokitaso",
"Starting code integrity check" : "Aloitetaan koodin eheystarkistus",
@@ -357,6 +358,7 @@
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "Käytät sivustoa HTTP-yhteydellä. On suositeltavaa, että palvelin vaatiii HTTPS-yhteyden, kuten <a href=\"{docUrl}\">tietoturvavinkeissä</a> neuvotaan.",
"Back to log in" : "Palaa kirjautumiseen",
"You are about to grant %s access to your %s account." : "Olet antamassa lupaa laitteelle %s päästä sinun %s tilille.",
- "Depending on your configuration, this button could also work to trust the domain:" : "Asetuksista riippuen, ylläpitäjänä saatat pystyä alla olevalla painikkeella lisäämään tämän verkkotunnuksen luotetuksi."
+ "Depending on your configuration, this button could also work to trust the domain:" : "Asetuksista riippuen, ylläpitäjänä saatat pystyä alla olevalla painikkeella lisäämään tämän verkkotunnuksen luotetuksi.",
+ "Copy URL" : "Kopioi osoite"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 1950be12554..99320ccc4ce 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Présence de mise à jour vérifiée pour l'application \"%s\" dans l'appstore",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Vérification de la possibilité de mettre à jour le schéma de la base de données pour %s (cela peut prendre un certain temps selon la taille de la base de données)",
"Checked database schema update for apps" : "Mise à jour du schéma de la base de données pour les applications vérifiée",
+ "Updated \"%1$s\" to %2$s" : "Mise à jour de \"%1$s\" vers %2$s",
"Set log level to debug" : "Réglage du niveau de journalisation à \"déboguage\"",
"Reset log level" : "Réinitialisation du niveau de journalisation",
"Starting code integrity check" : "Lancement de la vérification d'intégrité du code",
@@ -95,7 +96,7 @@ OC.L10N.register(
"One file conflict" : "Un conflit de fichier",
"New Files" : "Nouveaux fichiers",
"Already existing files" : "Fichiers déjà existants",
- "Which files do you want to keep?" : "Quels fichiers désirez-vous garder ?",
+ "Which files do you want to keep?" : "Quels fichiers désirez-vous conserver ?",
"If you select both versions, the copied file will have a number added to its name." : "Si vous sélectionnez les deux versions, un nombre sera ajouté au nom du fichier copié.",
"Cancel" : "Annuler",
"Continue" : "Continuer",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\". Ceci constitue un risque potentiel relatif à la sécurité et à la vie privée étant donné qu'il est recommandé d'ajuster ce paramètre.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\". Certaines fonctionnalités peuvent ne pas fonctionner correctement étant donné qu'il est recommandé d'ajuster ce paramètre.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'en-tête HTTP \"{header}\" n'est pas défini sur \"{val1}\", \"{val2}\", \"{val3}\" ou \"{val4}\". Cela peut entraîner une fuite d'informations. Veuillez voir les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recommandations du W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" ne contient pas \"{expected}\". Ceci est un risque potentiel pour la sécurité ou la vie privée, et il est recommandé d'ajuster ce paramètre en conséquence.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'en-tête HTTP \"{header}\" n'est pas défini sur \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" ou \"{val5}\". Cela peut entraîner une fuite d'informations. Veuillez voir les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recommandations du W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à au moins \"{seconds}\" secondes. Pour renforcer la sécurité, nous recommandons d'activer HSTS comme décrit dans nos <a href=\"{docUrl}\" rel=\"noreferrer noopener\">conseils de sécurisation ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Vous accédez à ce site via HTTP. Nous vous recommandons fortement de configurer votre serveur pour forcer l'utilisation de HTTPS, comme expliqué dans nos <a href=\"{docUrl}\">conseils de sécurisation ↗</a>.",
"Shared" : "Partagé",
@@ -318,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Mot de passe oublié ?",
"Back to login" : "Retour à la page de connexion",
"Connect to your account" : "Connectez vous à votre compte",
+ "Please log in before granting %1$s access to your %2$s account." : "Veuillez vous connecter avant d'autoriser %1$s à accéder à votre compte %2$s.",
"App token" : "Jeton d'application",
"Grant access" : "Autoriser l'accès",
"Alternative log in using app token" : "Authentification alternative en utilisant un jeton d'application",
"Account access" : "Accès au compte",
+ "You are about to grant %1$s access to your %2$s account." : "Vous êtes sur le point d'accorder à \"%1$s\" l'accès à votre compte \"%2$s\".",
"Redirecting …" : "Redirection en cours...",
"New password" : "Nouveau mot de passe",
"New Password" : "Nouveau mot de passe",
@@ -337,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Erreur lors de la validation de votre second facteur",
"Access through untrusted domain" : "Accès à partir d'un domaine non approuvé",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Veuillez contacter votre administrateur. Si vous êtes un administrateur, éditez la variable \"trusted_domains\" dans le fichier config/config.php comme l'exemple dans le fichier config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Vous trouverez d'autres informations sur la configuration dans la %1$sdocumentation %2$s.",
"App update required" : "Mise à jour de l'application nécessaire",
+ "%1$s will be updated to version %2$s" : "%1$s sera mis à jour vers la version %2$s",
"These apps will be updated:" : "Les applications suivantes seront mises à jour :",
"These incompatible apps will be disabled:" : "Ces applications incompatibles ont été désactivées :",
"The theme %s has been disabled." : "Le thème %s a été désactivé.",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 590ea4149b7..6130cea7259 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Présence de mise à jour vérifiée pour l'application \"%s\" dans l'appstore",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Vérification de la possibilité de mettre à jour le schéma de la base de données pour %s (cela peut prendre un certain temps selon la taille de la base de données)",
"Checked database schema update for apps" : "Mise à jour du schéma de la base de données pour les applications vérifiée",
+ "Updated \"%1$s\" to %2$s" : "Mise à jour de \"%1$s\" vers %2$s",
"Set log level to debug" : "Réglage du niveau de journalisation à \"déboguage\"",
"Reset log level" : "Réinitialisation du niveau de journalisation",
"Starting code integrity check" : "Lancement de la vérification d'intégrité du code",
@@ -93,7 +94,7 @@
"One file conflict" : "Un conflit de fichier",
"New Files" : "Nouveaux fichiers",
"Already existing files" : "Fichiers déjà existants",
- "Which files do you want to keep?" : "Quels fichiers désirez-vous garder ?",
+ "Which files do you want to keep?" : "Quels fichiers désirez-vous conserver ?",
"If you select both versions, the copied file will have a number added to its name." : "Si vous sélectionnez les deux versions, un nombre sera ajouté au nom du fichier copié.",
"Cancel" : "Annuler",
"Continue" : "Continuer",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\". Ceci constitue un risque potentiel relatif à la sécurité et à la vie privée étant donné qu'il est recommandé d'ajuster ce paramètre.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\". Certaines fonctionnalités peuvent ne pas fonctionner correctement étant donné qu'il est recommandé d'ajuster ce paramètre.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'en-tête HTTP \"{header}\" n'est pas défini sur \"{val1}\", \"{val2}\", \"{val3}\" ou \"{val4}\". Cela peut entraîner une fuite d'informations. Veuillez voir les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recommandations du W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" ne contient pas \"{expected}\". Ceci est un risque potentiel pour la sécurité ou la vie privée, et il est recommandé d'ajuster ce paramètre en conséquence.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'en-tête HTTP \"{header}\" n'est pas défini sur \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" ou \"{val5}\". Cela peut entraîner une fuite d'informations. Veuillez voir les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">recommandations du W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à au moins \"{seconds}\" secondes. Pour renforcer la sécurité, nous recommandons d'activer HSTS comme décrit dans nos <a href=\"{docUrl}\" rel=\"noreferrer noopener\">conseils de sécurisation ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Vous accédez à ce site via HTTP. Nous vous recommandons fortement de configurer votre serveur pour forcer l'utilisation de HTTPS, comme expliqué dans nos <a href=\"{docUrl}\">conseils de sécurisation ↗</a>.",
"Shared" : "Partagé",
@@ -316,10 +318,12 @@
"Forgot password?" : "Mot de passe oublié ?",
"Back to login" : "Retour à la page de connexion",
"Connect to your account" : "Connectez vous à votre compte",
+ "Please log in before granting %1$s access to your %2$s account." : "Veuillez vous connecter avant d'autoriser %1$s à accéder à votre compte %2$s.",
"App token" : "Jeton d'application",
"Grant access" : "Autoriser l'accès",
"Alternative log in using app token" : "Authentification alternative en utilisant un jeton d'application",
"Account access" : "Accès au compte",
+ "You are about to grant %1$s access to your %2$s account." : "Vous êtes sur le point d'accorder à \"%1$s\" l'accès à votre compte \"%2$s\".",
"Redirecting …" : "Redirection en cours...",
"New password" : "Nouveau mot de passe",
"New Password" : "Nouveau mot de passe",
@@ -335,7 +339,9 @@
"Error while validating your second factor" : "Erreur lors de la validation de votre second facteur",
"Access through untrusted domain" : "Accès à partir d'un domaine non approuvé",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Veuillez contacter votre administrateur. Si vous êtes un administrateur, éditez la variable \"trusted_domains\" dans le fichier config/config.php comme l'exemple dans le fichier config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Vous trouverez d'autres informations sur la configuration dans la %1$sdocumentation %2$s.",
"App update required" : "Mise à jour de l'application nécessaire",
+ "%1$s will be updated to version %2$s" : "%1$s sera mis à jour vers la version %2$s",
"These apps will be updated:" : "Les applications suivantes seront mises à jour :",
"These incompatible apps will be disabled:" : "Ces applications incompatibles ont été désactivées :",
"The theme %s has been disabled." : "Le thème %s a été désactivé.",
diff --git a/core/l10n/he.js b/core/l10n/he.js
index eb3a1e6270c..d1537484f16 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -146,7 +146,6 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "תיקיית הנתונים והקבצים שלך כנראה נגישים דרך האינטרנט. קובץ ה־‎.htaccess אינו עובד. מומלץ בחום להגדיר את השרת שלך כך שתיקיית הנתונים אינה נגישה עוד או לחלופין להעביר את תיקיית הנתונים אל מחוץ לתיקיית השורש של שירות אירוח האתרים.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "כותרת ה־HTTP‏ „{header}” אינה מוגדרת לערך „{expected}”. מדובר בפרצת אבטחה או פרטיות, מומלץ להתאים את ההגדרה הזאת בהתאם.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "כותרת ה־HTTP‏ „{header}” אינה מוגדרת לערך „{expected}”. יתכן שחלק מהתכונות לא תעבודנה כראוי, מומלץ להתאים את ההגדרה הזאת בהתאם.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "כותרת ה־HTTP‏ „{header}” אינה מוגדרת לערכים „{val1}”, „{val2}”, „{val3}” או \"{val4}”. מצב כזה יכול לגרום לדליפת פרטי הפנייה. נא לעיין ב<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">המלצות ה־W3C ↖️</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "כותרת ה־HTTP בשם „Strict-Transport-Security” אינה מוגדרת עד לפחות „{seconds}” שניות. לטובת אבטחה מוגברת אנו ממליצים להפעיל HSTS כפי שמתואר ב<a href=\"{docUrl}\" rel=\"noreferrer noopener\">עצות האבטחה ↖️</a> שלנו.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "גישה בלתי מאובטחת לאתר עם HTTP. מומלץ בחום להגדיר את השרת שלך כדי לדרוש HTTPS במקום, כפי שמתואר ב<a href=\"{docUrl}\">עצות האבטחה ↖️</a>.",
"Shared" : "שותף",
diff --git a/core/l10n/he.json b/core/l10n/he.json
index 9ec7719e3fb..0ae2af48b59 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -144,7 +144,6 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "תיקיית הנתונים והקבצים שלך כנראה נגישים דרך האינטרנט. קובץ ה־‎.htaccess אינו עובד. מומלץ בחום להגדיר את השרת שלך כך שתיקיית הנתונים אינה נגישה עוד או לחלופין להעביר את תיקיית הנתונים אל מחוץ לתיקיית השורש של שירות אירוח האתרים.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "כותרת ה־HTTP‏ „{header}” אינה מוגדרת לערך „{expected}”. מדובר בפרצת אבטחה או פרטיות, מומלץ להתאים את ההגדרה הזאת בהתאם.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "כותרת ה־HTTP‏ „{header}” אינה מוגדרת לערך „{expected}”. יתכן שחלק מהתכונות לא תעבודנה כראוי, מומלץ להתאים את ההגדרה הזאת בהתאם.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "כותרת ה־HTTP‏ „{header}” אינה מוגדרת לערכים „{val1}”, „{val2}”, „{val3}” או \"{val4}”. מצב כזה יכול לגרום לדליפת פרטי הפנייה. נא לעיין ב<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">המלצות ה־W3C ↖️</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "כותרת ה־HTTP בשם „Strict-Transport-Security” אינה מוגדרת עד לפחות „{seconds}” שניות. לטובת אבטחה מוגברת אנו ממליצים להפעיל HSTS כפי שמתואר ב<a href=\"{docUrl}\" rel=\"noreferrer noopener\">עצות האבטחה ↖️</a> שלנו.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "גישה בלתי מאובטחת לאתר עם HTTP. מומלץ בחום להגדיר את השרת שלך כדי לדרוש HTTPS במקום, כפי שמתואר ב<a href=\"{docUrl}\">עצות האבטחה ↖️</a>.",
"Shared" : "שותף",
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index 48eded70815..0d1d33da56f 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -77,7 +77,7 @@ OC.L10N.register(
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A jelszó visszaállításához a hivatkozást e-mailben elküldtük. Ha a levél elfogadható időn belül nem érkezik meg, ellenőrizze a spam/levélszemét mappát.<br>Ha nincs ott, kérdezze meg a helyi rendszergazdát.",
"Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Fájljaid titkosítva vannak. A jelszó visszaállítása után nem lesz semmi mód sem azok visszafejtésére.<br />Ha nem tudod mit teszel ezzel, beszélj a rendszergazdáddal<br />Biztosan folytatod?",
"I know what I'm doing" : "Tudom mit csinálok.",
- "Password can not be changed. Please contact your administrator." : "A jelszót nem lehet visszaállítani. Kérjük, lépjen kapcsolatba a redszergazdával.",
+ "Password can not be changed. Please contact your administrator." : "A jelszót nem lehet visszaállítani. Kérjük, lépjen kapcsolatba a rendszergazdával.",
"Reset password" : "Jelszó-visszaállítás",
"Sending email …" : "E-mail küldése ...",
"No" : "Nem",
@@ -144,7 +144,6 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Az adatmappád és fájljaid elérhetők az interneten. A .htaccess fájlod nem működik. Erősen javasolt, hogy a webszerveredet úgy állítsd be, hogy a mappa tartalma ne legyen közvetlenül elérhető, vagy mozgasd át a mappát a kiszolgálási területen kívülre.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági és adatvédelmi kockázat. Kérjük, hogy változtassa meg a beállításokat.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "A \"{header}\" HTTP nem ezzel egyenlőre van beállítva \"{expected}\". Egyes szolgáltatások esetleg nem fognak megfelelően működni, javasoljuk az átállítását.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "A \"{header}\" HTTP fejlécben nincs beállítva a \"{val1}\", \"{val2}\", \"{val3}\" vagy \"{val4}\". Ez hivatkozási információ hiányosságot okoz. Nézd meg a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C ajánlásokat ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs legalább \"{seconds}\" másodpercre állítva. A fejlettebb védelem érdekében javasoljuk a HSTS engedélyezését a <a href=\"{docUrl}\" rel=\"noreferrer noopener\">biztonsági tippekben ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Erősen ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippekben ↗</a>.",
"Shared" : "Megosztott",
@@ -236,7 +235,7 @@ OC.L10N.register(
"Personal" : "Személyes",
"Users" : "Felhasználók",
"Apps" : "Alkalmazások",
- "Admin" : "Adminisztrátor",
+ "Admin" : "Rendszergazda",
"Help" : "Súgó",
"Access forbidden" : "A hozzáférés nem engedélyezett",
"File not found" : "Fájl nem található",
@@ -308,12 +307,12 @@ OC.L10N.register(
"New Password" : "Új jelszó",
"This share is password-protected" : "Ez egy jelszóval védett megosztás",
"The password is wrong. Try again." : "A megadott jelszó nem megfelelő. Próbálja újra!",
- "Two-factor authentication" : "Kétlépcsős hitelesítés",
+ "Two-factor authentication" : "Kétfaktoros hitelesítés",
"Use backup code" : "Biztonsági kód használata",
"Cancel log in" : "Bejelentkezés megszakítása",
"Error while validating your second factor" : "Hiba történt a második lépés évényesítésekor",
"Access through untrusted domain" : "Nem megbízható domain-en keresztüli hozzáférés",
- "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Lépj kapcsolatba az adminisztrátoroddal. Ha te vagy az, szerkeszd a \"trusted_domains\" beállítást a config/config.php-ban a config.sample.php-hoz hasonlóan.",
+ "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Lépj kapcsolatba a rendszergazdáddal. Ha te vagy az, szerkeszd a \"trusted_domains\" beállítást a config/config.php-ban a config.sample.php-hoz hasonlóan.",
"App update required" : "Alkalmazás frissítése szükséges",
"These apps will be updated:" : "A következő alkalmazások lesznek frissítve:",
"These incompatible apps will be disabled:" : "A követlező inkompatibilis alkalmazások tiltva lesznek:",
@@ -353,9 +352,9 @@ OC.L10N.register(
"Error setting expiration date" : "Nem sikerült a lejárati időt beállítani",
"The public link will expire no later than {days} days after it is created" : "A nyilvános hivatkozás érvényessége legkorábban {days} nappal a létrehozása után jár csak le",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} megosztva hivatkozással",
- "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Megosztás más emberekkel név vagy csoport, egy egységes felhőazonosító vagy e-mailcím megadásával.",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Megosztás más emberekkel név vagy csoport, egy egységes felhőazonosító vagy e-mail cím megadásával.",
"Share with other people by entering a user or group or a federated cloud ID." : "Megosztás más emberekkel felhasználó, csoport vagy egyesített felhőazonosító megadásával.",
- "Share with other people by entering a user or group or an email address." : "Megosztás más emberekkel név, csoport vagy e-mailcím megadásával.",
+ "Share with other people by entering a user or group or an email address." : "Megosztás más emberekkel név, csoport vagy e-mail cím megadásával.",
"The specified document has not been found on the server." : "A meghatározott dokumentum nem található a szerveren.",
"You can click here to return to %s." : "Ide kattintva visszatérhet ide: %s.",
"The server encountered an internal error and was unable to complete your request." : "A szerver belső hibával találkozott és nem tudja teljesíteni a kérést.",
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index a59b175811f..f192935a9a7 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -75,7 +75,7 @@
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A jelszó visszaállításához a hivatkozást e-mailben elküldtük. Ha a levél elfogadható időn belül nem érkezik meg, ellenőrizze a spam/levélszemét mappát.<br>Ha nincs ott, kérdezze meg a helyi rendszergazdát.",
"Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Fájljaid titkosítva vannak. A jelszó visszaállítása után nem lesz semmi mód sem azok visszafejtésére.<br />Ha nem tudod mit teszel ezzel, beszélj a rendszergazdáddal<br />Biztosan folytatod?",
"I know what I'm doing" : "Tudom mit csinálok.",
- "Password can not be changed. Please contact your administrator." : "A jelszót nem lehet visszaállítani. Kérjük, lépjen kapcsolatba a redszergazdával.",
+ "Password can not be changed. Please contact your administrator." : "A jelszót nem lehet visszaállítani. Kérjük, lépjen kapcsolatba a rendszergazdával.",
"Reset password" : "Jelszó-visszaállítás",
"Sending email …" : "E-mail küldése ...",
"No" : "Nem",
@@ -142,7 +142,6 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Az adatmappád és fájljaid elérhetők az interneten. A .htaccess fájlod nem működik. Erősen javasolt, hogy a webszerveredet úgy állítsd be, hogy a mappa tartalma ne legyen közvetlenül elérhető, vagy mozgasd át a mappát a kiszolgálási területen kívülre.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági és adatvédelmi kockázat. Kérjük, hogy változtassa meg a beállításokat.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "A \"{header}\" HTTP nem ezzel egyenlőre van beállítva \"{expected}\". Egyes szolgáltatások esetleg nem fognak megfelelően működni, javasoljuk az átállítását.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "A \"{header}\" HTTP fejlécben nincs beállítva a \"{val1}\", \"{val2}\", \"{val3}\" vagy \"{val4}\". Ez hivatkozási információ hiányosságot okoz. Nézd meg a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C ajánlásokat ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs legalább \"{seconds}\" másodpercre állítva. A fejlettebb védelem érdekében javasoljuk a HSTS engedélyezését a <a href=\"{docUrl}\" rel=\"noreferrer noopener\">biztonsági tippekben ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Erősen ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippekben ↗</a>.",
"Shared" : "Megosztott",
@@ -234,7 +233,7 @@
"Personal" : "Személyes",
"Users" : "Felhasználók",
"Apps" : "Alkalmazások",
- "Admin" : "Adminisztrátor",
+ "Admin" : "Rendszergazda",
"Help" : "Súgó",
"Access forbidden" : "A hozzáférés nem engedélyezett",
"File not found" : "Fájl nem található",
@@ -306,12 +305,12 @@
"New Password" : "Új jelszó",
"This share is password-protected" : "Ez egy jelszóval védett megosztás",
"The password is wrong. Try again." : "A megadott jelszó nem megfelelő. Próbálja újra!",
- "Two-factor authentication" : "Kétlépcsős hitelesítés",
+ "Two-factor authentication" : "Kétfaktoros hitelesítés",
"Use backup code" : "Biztonsági kód használata",
"Cancel log in" : "Bejelentkezés megszakítása",
"Error while validating your second factor" : "Hiba történt a második lépés évényesítésekor",
"Access through untrusted domain" : "Nem megbízható domain-en keresztüli hozzáférés",
- "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Lépj kapcsolatba az adminisztrátoroddal. Ha te vagy az, szerkeszd a \"trusted_domains\" beállítást a config/config.php-ban a config.sample.php-hoz hasonlóan.",
+ "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Lépj kapcsolatba a rendszergazdáddal. Ha te vagy az, szerkeszd a \"trusted_domains\" beállítást a config/config.php-ban a config.sample.php-hoz hasonlóan.",
"App update required" : "Alkalmazás frissítése szükséges",
"These apps will be updated:" : "A következő alkalmazások lesznek frissítve:",
"These incompatible apps will be disabled:" : "A követlező inkompatibilis alkalmazások tiltva lesznek:",
@@ -351,9 +350,9 @@
"Error setting expiration date" : "Nem sikerült a lejárati időt beállítani",
"The public link will expire no later than {days} days after it is created" : "A nyilvános hivatkozás érvényessége legkorábban {days} nappal a létrehozása után jár csak le",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} megosztva hivatkozással",
- "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Megosztás más emberekkel név vagy csoport, egy egységes felhőazonosító vagy e-mailcím megadásával.",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Megosztás más emberekkel név vagy csoport, egy egységes felhőazonosító vagy e-mail cím megadásával.",
"Share with other people by entering a user or group or a federated cloud ID." : "Megosztás más emberekkel felhasználó, csoport vagy egyesített felhőazonosító megadásával.",
- "Share with other people by entering a user or group or an email address." : "Megosztás más emberekkel név, csoport vagy e-mailcím megadásával.",
+ "Share with other people by entering a user or group or an email address." : "Megosztás más emberekkel név, csoport vagy e-mail cím megadásával.",
"The specified document has not been found on the server." : "A meghatározott dokumentum nem található a szerveren.",
"You can click here to return to %s." : "Ide kattintva visszatérhet ide: %s.",
"The server encountered an internal error and was unable to complete your request." : "A szerver belső hibával találkozott és nem tudja teljesíteni a kérést.",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index 02ea5293496..d23e024484e 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Verificati aggiornamento dell'applicazione \"%s\" nel negozio delle applicazioni",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Controllo che lo schema del database di %s possa essere aggiornato (ciò potrebbe richiedere molto tempo in base alla dimensione del database)",
"Checked database schema update for apps" : "L'aggiornamento dello schema del database per le applicazioni è stato verificato",
+ "Updated \"%1$s\" to %2$s" : "Aggiornato \"%1$s\" a %2$s",
"Set log level to debug" : "Imposta il livello del log per il debug",
"Reset log level" : "Ripristina il livello del log",
"Starting code integrity check" : "Avvio del controllo di integrità del codice",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o di spostare la cartella fuori dalla radice del server web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza, e noi consigliamo di modificare questa impostazione.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". Alcune funzionalità potrebbero non funzionare correttamente e ti consigliamo di modificare questa impostazione.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'intestazione HTTP \"{header}\" non è impostata a \"{val1}\", \"{val2}\", \"{val3}\" o \"{val4}\". Ciò può far trapelare informazioni sul referer. Vedi la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non contien \"{expected}\". Questo è un potenziale rischio di sicurezza o di riservatezza, e consigliamo di modificare questa impostazione.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'intestazione HTTP \"{header}\" non è impostata a \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" o \"{val5}\". Ciò può far trapelare informazioni sul referer. Vedi la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "L'intestazione HTTP \"Strict-Transport-Security\" non è configurata con un valore di almeno \"{seconds}\" secondi. Per migliorare la sicurezza, consigliamo di abilitare HSTS come descritto nei <a href=\"{docUrl}\" rel=\"noreferrer noopener\">consigli sulla sicurezza ↗ </a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Sei connesso a questo sito tramite HTTP. Ti suggeriamo vivamente di configurare il tuo server per richiedere invece HTTPS, come descritto nei <a href=\"{docUrl}\">consigli sulla sicurezza ↗</a>.",
"Shared" : "Condiviso",
@@ -318,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Hai dimenticato la password?",
"Back to login" : "Torna alla schermata di accesso",
"Connect to your account" : "Connetti il tuo account",
+ "Please log in before granting %1$s access to your %2$s account." : "Accedi prima di accordare a %1$s l'accesso al tuo account %2$s.",
"App token" : "Token applicazione",
"Grant access" : "Accorda accesso",
"Alternative log in using app token" : "Accesso alternativo utilizzando il token dell'applicazione",
"Account access" : "Accesso account",
+ "You are about to grant %1$s access to your %2$s account." : "Stai per accordare a %1$s l'accesso al tuo account %2$s.",
"Redirecting …" : "Redirezione in corso...",
"New password" : "Nuova password",
"New Password" : "Nuova password",
@@ -337,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Errore durante la convalida del tuo secondo fattore",
"Access through untrusted domain" : "Accedi tramite un dominio non attendibile",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Contatta il tuo amministratore. Se sei un amministratore, modifica l'impostazione \"trusted_domains\" in config/config.php come l'esempio disponibile in config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Ulteriori informazioni sulla configurazione sono disponibili nella %1$s documentazione %2$s.",
"App update required" : "Aggiornamento dell'applicazione richiesto",
+ "%1$s will be updated to version %2$s" : "%1$s sarà aggiornato alla versione %2$s",
"These apps will be updated:" : "Queste applicazioni saranno aggiornate:",
"These incompatible apps will be disabled:" : "Queste applicazioni incompatibili saranno disabilitate:",
"The theme %s has been disabled." : "Il tema %s è stato disabilitato.",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 534208fe2de..8acf8784448 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Verificati aggiornamento dell'applicazione \"%s\" nel negozio delle applicazioni",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Controllo che lo schema del database di %s possa essere aggiornato (ciò potrebbe richiedere molto tempo in base alla dimensione del database)",
"Checked database schema update for apps" : "L'aggiornamento dello schema del database per le applicazioni è stato verificato",
+ "Updated \"%1$s\" to %2$s" : "Aggiornato \"%1$s\" a %2$s",
"Set log level to debug" : "Imposta il livello del log per il debug",
"Reset log level" : "Ripristina il livello del log",
"Starting code integrity check" : "Avvio del controllo di integrità del codice",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o di spostare la cartella fuori dalla radice del server web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza, e noi consigliamo di modificare questa impostazione.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". Alcune funzionalità potrebbero non funzionare correttamente e ti consigliamo di modificare questa impostazione.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'intestazione HTTP \"{header}\" non è impostata a \"{val1}\", \"{val2}\", \"{val3}\" o \"{val4}\". Ciò può far trapelare informazioni sul referer. Vedi la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non contien \"{expected}\". Questo è un potenziale rischio di sicurezza o di riservatezza, e consigliamo di modificare questa impostazione.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "L'intestazione HTTP \"{header}\" non è impostata a \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" o \"{val5}\". Ciò può far trapelare informazioni sul referer. Vedi la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "L'intestazione HTTP \"Strict-Transport-Security\" non è configurata con un valore di almeno \"{seconds}\" secondi. Per migliorare la sicurezza, consigliamo di abilitare HSTS come descritto nei <a href=\"{docUrl}\" rel=\"noreferrer noopener\">consigli sulla sicurezza ↗ </a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Sei connesso a questo sito tramite HTTP. Ti suggeriamo vivamente di configurare il tuo server per richiedere invece HTTPS, come descritto nei <a href=\"{docUrl}\">consigli sulla sicurezza ↗</a>.",
"Shared" : "Condiviso",
@@ -316,10 +318,12 @@
"Forgot password?" : "Hai dimenticato la password?",
"Back to login" : "Torna alla schermata di accesso",
"Connect to your account" : "Connetti il tuo account",
+ "Please log in before granting %1$s access to your %2$s account." : "Accedi prima di accordare a %1$s l'accesso al tuo account %2$s.",
"App token" : "Token applicazione",
"Grant access" : "Accorda accesso",
"Alternative log in using app token" : "Accesso alternativo utilizzando il token dell'applicazione",
"Account access" : "Accesso account",
+ "You are about to grant %1$s access to your %2$s account." : "Stai per accordare a %1$s l'accesso al tuo account %2$s.",
"Redirecting …" : "Redirezione in corso...",
"New password" : "Nuova password",
"New Password" : "Nuova password",
@@ -335,7 +339,9 @@
"Error while validating your second factor" : "Errore durante la convalida del tuo secondo fattore",
"Access through untrusted domain" : "Accedi tramite un dominio non attendibile",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Contatta il tuo amministratore. Se sei un amministratore, modifica l'impostazione \"trusted_domains\" in config/config.php come l'esempio disponibile in config/config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Ulteriori informazioni sulla configurazione sono disponibili nella %1$s documentazione %2$s.",
"App update required" : "Aggiornamento dell'applicazione richiesto",
+ "%1$s will be updated to version %2$s" : "%1$s sarà aggiornato alla versione %2$s",
"These apps will be updated:" : "Queste applicazioni saranno aggiornate:",
"These incompatible apps will be disabled:" : "Queste applicazioni incompatibili saranno disabilitate:",
"The theme %s has been disabled." : "Il tema %s è stato disabilitato.",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index 13d4777074d..a33126adc05 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -4,7 +4,7 @@ OC.L10N.register(
"Please select a file." : "ファイルを選択してください。",
"File is too big" : "ファイルが大きすぎます",
"The selected file is not an image." : "選択されたファイルは画像ではありません",
- "The selected file cannot be read." : "選択されたファイルを読込みできませんでした",
+ "The selected file cannot be read." : "選択されたファイルを読み込めませんでした",
"Invalid file provided" : "無効なファイルが提供されました",
"No image or file provided" : "画像またはファイルが提供されていません",
"Unknown filetype" : "不明なファイルタイプ",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index b75f90767d4..22de8568191 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -2,7 +2,7 @@
"Please select a file." : "ファイルを選択してください。",
"File is too big" : "ファイルが大きすぎます",
"The selected file is not an image." : "選択されたファイルは画像ではありません",
- "The selected file cannot be read." : "選択されたファイルを読込みできませんでした",
+ "The selected file cannot be read." : "選択されたファイルを読み込めませんでした",
"Invalid file provided" : "無効なファイルが提供されました",
"No image or file provided" : "画像またはファイルが提供されていません",
"Unknown filetype" : "不明なファイルタイプ",
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index dacf9cee44b..25c7b3fb9c2 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -148,7 +148,6 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Det anbefales sterkt at du setter opp vev-tjeneren slik at datamappen ikke kan nås eller at du flytter datamappen ut av vev-tjenerens dokumentrot.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp likt \"{expected}\". Dette kan være en sikkerhet- eller personvernsrisiko og det anbefales at denne innstillingen endres.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp til å være likt \"{expected}\". Det kan hende noen funksjoner ikke fungerer rett, og det anbefales å justere denne innstillingen henholdsvis.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP-overskriften \"{header}\" er ikke satt til \"{val1}\", \"{val2}\", \"{val3}\" eller \"{val4}\". Dette kan lekke refererinformasjon. Se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP-overskriften \"Strict-Transport-Security\" er ikke satt til minst \"{sekunder}\" sekunder. For forbedret sikkerhet anbefales det å aktivere HSTS som beskrevet i <a href=\"{docUrl}\" rel=\"noreferrer noopener\">tips for bedre sikkerhet ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Få tilgang til nettstedet usikkert via HTTP. Du er sterkt anbefalt å sette opp serveren din for å kreve HTTPS i stedet, som beskrevet i<a href=\"{docUrl}\">tips for bedre sikkerhet ↗</a>.",
"Shared" : "Delt",
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index 905fde1941f..fb7b86bc3ef 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -146,7 +146,6 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Det anbefales sterkt at du setter opp vev-tjeneren slik at datamappen ikke kan nås eller at du flytter datamappen ut av vev-tjenerens dokumentrot.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp likt \"{expected}\". Dette kan være en sikkerhet- eller personvernsrisiko og det anbefales at denne innstillingen endres.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp til å være likt \"{expected}\". Det kan hende noen funksjoner ikke fungerer rett, og det anbefales å justere denne innstillingen henholdsvis.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP-overskriften \"{header}\" er ikke satt til \"{val1}\", \"{val2}\", \"{val3}\" eller \"{val4}\". Dette kan lekke refererinformasjon. Se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP-overskriften \"Strict-Transport-Security\" er ikke satt til minst \"{sekunder}\" sekunder. For forbedret sikkerhet anbefales det å aktivere HSTS som beskrevet i <a href=\"{docUrl}\" rel=\"noreferrer noopener\">tips for bedre sikkerhet ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Få tilgang til nettstedet usikkert via HTTP. Du er sterkt anbefalt å sette opp serveren din for å kreve HTTPS i stedet, som beskrevet i<a href=\"{docUrl}\">tips for bedre sikkerhet ↗</a>.",
"Shared" : "Delt",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index 9e4ff6635d7..6c625136fe8 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Op updates gecontroleerd voor de app \"%s\"",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Controleert of het databaseschema voor %s geüpdatet kan worden (dit kan lang duren afhankelijk van de grootte van de database)",
"Checked database schema update for apps" : "Databaseschema update voor apps gecontroleerd",
+ "Updated \"%1$s\" to %2$s" : "Werkte \"%1$s\" bij tot %2$s",
"Set log level to debug" : "Debug logniveau instellen",
"Reset log level" : "Terugzetten logniveau",
"Starting code integrity check" : "Starten code betrouwbaarheidscontrole",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Je datamap en je bestanden zijn waarschijnlijk vanaf het internet bereikbaar. Het .htaccess-bestand werkt niet. We raden ten zeerste aan aan om je webserver zodanig te configureren, dat de datadirectory niet bereikbaar is vanaf het internet of om je datadirectory te verplaatsen naar een locatie buiten de document-root van de webserver.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header is niet ingesteld als \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header is ingesteld als \"{expected}\". Sommige functies werken mogelijk niet zoals bedoeld en we adviseren om deze instelling te wijzigen.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "De \"{header}\" HTTP header is niet ingesteld op \"{val1}\", \"{val2}\", \"{val3}\" of \"{val4}\". Hierdoor kan refer informatie uitlekken. Zie de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C aanbeveling ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header bevat niet \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "De \"{header}\" HTTP header is niet ingesteld op \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" of \"{val5}\". Hierdoor kan verwijzingsinformatie uitlekken. Zie de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C aanbeveling ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "De \"Strict-Transport-Security\" HTTP header is niet ingesteld als minimaal \"{seconds}\" seconden. Voor verbeterde beveiliging adviseren we HSTS in te schakelen zoals beschreven in de <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "De site is onveilig verbonden over HTTP. We adviseren je dringend om je server zo te configureren dat HTTPS wordt vereist, zoals beschreven in de <a href=\"{docUrl}\">security tips ↗</a>.",
"Shared" : "Gedeeld",
@@ -198,6 +200,7 @@ OC.L10N.register(
"Can delete" : "Kan verwijderen",
"Password protect by Talk" : "Wachtwoord beveiligd door Talk",
"Access control" : "Toegangscontrole",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} gedeeld via link",
"Could not unshare" : "Kon delen niet ongedaan maken",
"Error while sharing" : "Fout tijdens het delen",
"Share details could not be loaded for this item." : "Deel details van dit object kon niet worden geladen.",
@@ -254,6 +257,7 @@ OC.L10N.register(
"Help" : "Help",
"Access forbidden" : "Toegang verboden",
"File not found" : "Bestand niet gevonden",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Het document werd niet gevonden op de server. Misschien is de share verwijderd of verlopen?",
"Back to %s" : "Terug naar %s",
"Internal Server Error" : "Interne serverfout",
"The server was unable to complete your request." : "De server was niet in staat je aanvraag te verwerken.",
@@ -316,23 +320,30 @@ OC.L10N.register(
"Forgot password?" : "Wachtwoord vergeten?",
"Back to login" : "Terug naar inloggen",
"Connect to your account" : "Verbind jouw account",
+ "Please log in before granting %1$s access to your %2$s account." : "Eerst inloggen voordat je %1$s toegang geeft tot je %2$s account.",
"App token" : "App token",
"Grant access" : "Verleen toegang",
"Alternative log in using app token" : "Alterenatieve login doormiddel van app token.",
"Account access" : "Account toegang",
+ "You are about to grant %1$s access to your %2$s account." : "Je staat op het punt om %1$s toegang te verlenen to je %2$s account.",
"Redirecting …" : "Omleiding ...",
"New password" : "Nieuw wachtwoord",
"New Password" : "Nieuw wachtwoord",
"This share is password-protected" : "Deze share is wachtwoordbeveiligd",
"The password is wrong. Try again." : "Het wachtwoord is onjuist. Probeer opnieuw.",
"Two-factor authentication" : "Tweefactor authenticatie",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Versterkte beveiliging is ingeschakeld voor je account. Kies een tweede factor voor authenticatie:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Kon niet minimaal één an jouw ingeschakelde two-factor auth methoden laden. Neem contact op met je beheerder.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Tweefactor authenticatie is ingeschakeld, maar niet geconfigureerd voor je account. Neem voor hulp contact op met je beheerder.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Tweefactor authenticatie is ingeschakeld, maar niet geconfigureerd voor je account. Gebruik een van je backup codes om in te loggen of neem voor hulp contact op met je beheerder.",
"Use backup code" : "Gebruik back-upcode",
"Cancel log in" : "Inloggen annuleren",
"Error while validating your second factor" : "Fout bij het verifiëren van je tweede factor",
"Access through untrusted domain" : "Toegang via een niet vertrouwd domein",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Neem contact op met je beheerder. Wanneer je een beheerder bent kun je de \"trusted_domains\" instelling bewerken in config/config.php zoals in het voorbeeld config.sample.php. ",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Verdere informatie over hoe je dit instelt staat in de %1$s documentatie %2$s.",
"App update required" : "Bijwerken App vereist",
+ "%1$s will be updated to version %2$s" : "%1$s wordt geüpdatet naar versie %2$s",
"These apps will be updated:" : "Deze apps worden bijgewerkt:",
"These incompatible apps will be disabled:" : "De volgende incompatibele apps worden uitgeschakeld:",
"The theme %s has been disabled." : "Het thema %s is uitgeschakeld.",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 35a00c85dba..53c89aba580 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Op updates gecontroleerd voor de app \"%s\"",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Controleert of het databaseschema voor %s geüpdatet kan worden (dit kan lang duren afhankelijk van de grootte van de database)",
"Checked database schema update for apps" : "Databaseschema update voor apps gecontroleerd",
+ "Updated \"%1$s\" to %2$s" : "Werkte \"%1$s\" bij tot %2$s",
"Set log level to debug" : "Debug logniveau instellen",
"Reset log level" : "Terugzetten logniveau",
"Starting code integrity check" : "Starten code betrouwbaarheidscontrole",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Je datamap en je bestanden zijn waarschijnlijk vanaf het internet bereikbaar. Het .htaccess-bestand werkt niet. We raden ten zeerste aan aan om je webserver zodanig te configureren, dat de datadirectory niet bereikbaar is vanaf het internet of om je datadirectory te verplaatsen naar een locatie buiten de document-root van de webserver.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header is niet ingesteld als \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header is ingesteld als \"{expected}\". Sommige functies werken mogelijk niet zoals bedoeld en we adviseren om deze instelling te wijzigen.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "De \"{header}\" HTTP header is niet ingesteld op \"{val1}\", \"{val2}\", \"{val3}\" of \"{val4}\". Hierdoor kan refer informatie uitlekken. Zie de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C aanbeveling ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header bevat niet \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "De \"{header}\" HTTP header is niet ingesteld op \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" of \"{val5}\". Hierdoor kan verwijzingsinformatie uitlekken. Zie de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C aanbeveling ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "De \"Strict-Transport-Security\" HTTP header is niet ingesteld als minimaal \"{seconds}\" seconden. Voor verbeterde beveiliging adviseren we HSTS in te schakelen zoals beschreven in de <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "De site is onveilig verbonden over HTTP. We adviseren je dringend om je server zo te configureren dat HTTPS wordt vereist, zoals beschreven in de <a href=\"{docUrl}\">security tips ↗</a>.",
"Shared" : "Gedeeld",
@@ -196,6 +198,7 @@
"Can delete" : "Kan verwijderen",
"Password protect by Talk" : "Wachtwoord beveiligd door Talk",
"Access control" : "Toegangscontrole",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} gedeeld via link",
"Could not unshare" : "Kon delen niet ongedaan maken",
"Error while sharing" : "Fout tijdens het delen",
"Share details could not be loaded for this item." : "Deel details van dit object kon niet worden geladen.",
@@ -252,6 +255,7 @@
"Help" : "Help",
"Access forbidden" : "Toegang verboden",
"File not found" : "Bestand niet gevonden",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Het document werd niet gevonden op de server. Misschien is de share verwijderd of verlopen?",
"Back to %s" : "Terug naar %s",
"Internal Server Error" : "Interne serverfout",
"The server was unable to complete your request." : "De server was niet in staat je aanvraag te verwerken.",
@@ -314,23 +318,30 @@
"Forgot password?" : "Wachtwoord vergeten?",
"Back to login" : "Terug naar inloggen",
"Connect to your account" : "Verbind jouw account",
+ "Please log in before granting %1$s access to your %2$s account." : "Eerst inloggen voordat je %1$s toegang geeft tot je %2$s account.",
"App token" : "App token",
"Grant access" : "Verleen toegang",
"Alternative log in using app token" : "Alterenatieve login doormiddel van app token.",
"Account access" : "Account toegang",
+ "You are about to grant %1$s access to your %2$s account." : "Je staat op het punt om %1$s toegang te verlenen to je %2$s account.",
"Redirecting …" : "Omleiding ...",
"New password" : "Nieuw wachtwoord",
"New Password" : "Nieuw wachtwoord",
"This share is password-protected" : "Deze share is wachtwoordbeveiligd",
"The password is wrong. Try again." : "Het wachtwoord is onjuist. Probeer opnieuw.",
"Two-factor authentication" : "Tweefactor authenticatie",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Versterkte beveiliging is ingeschakeld voor je account. Kies een tweede factor voor authenticatie:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Kon niet minimaal één an jouw ingeschakelde two-factor auth methoden laden. Neem contact op met je beheerder.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Tweefactor authenticatie is ingeschakeld, maar niet geconfigureerd voor je account. Neem voor hulp contact op met je beheerder.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Tweefactor authenticatie is ingeschakeld, maar niet geconfigureerd voor je account. Gebruik een van je backup codes om in te loggen of neem voor hulp contact op met je beheerder.",
"Use backup code" : "Gebruik back-upcode",
"Cancel log in" : "Inloggen annuleren",
"Error while validating your second factor" : "Fout bij het verifiëren van je tweede factor",
"Access through untrusted domain" : "Toegang via een niet vertrouwd domein",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Neem contact op met je beheerder. Wanneer je een beheerder bent kun je de \"trusted_domains\" instelling bewerken in config/config.php zoals in het voorbeeld config.sample.php. ",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Verdere informatie over hoe je dit instelt staat in de %1$s documentatie %2$s.",
"App update required" : "Bijwerken App vereist",
+ "%1$s will be updated to version %2$s" : "%1$s wordt geüpdatet naar versie %2$s",
"These apps will be updated:" : "Deze apps worden bijgewerkt:",
"These incompatible apps will be disabled:" : "De volgende incompatibele apps worden uitgeschakeld:",
"The theme %s has been disabled." : "Het thema %s is uitgeschakeld.",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index 47925320364..fd013121654 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -149,7 +149,6 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Twój katalog z danymi i twoje pliki prawdopodobnie są dostępne przez Internet. Plik .htaccess nie działa. Usilnie zalecamy, żebyś tak skonfigurował swój serwer, żeby katalog z danymi nie był dalej dostępny lub przenieś swój katalog z danymi poza katalog root serwera webowego.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Nagłówek HTTP {header} nie jest skonfigurowany, aby pasował do {expected}. Jest to poterncjalne zagrożenie prywatności oraz bezpieczeństwa i zalecamy poprawienie tego ustawienia.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Nagłówek HTTP {header} nie jest skonfigurowany, aby pasował do {expected}. Jest to poterncjalne zagrożenie prywatności oraz bezpieczeństwa i zalecamy poprawienie tego ustawienia.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Nagłówek HTTP \"{header}\" nie jest ustawiony na \"{val1}\", \"{val2}\", \"{val3}\", ani \"{val4}\". Może to powodować wycieki adresu strony. Zobacz<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">rekomendacje W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Nagłówek HTTP \"Strict-Transport-Security\" nie jest ustawiony na przynajmniej \"{seconds}\" sekund. Dla zwiększenia bezpieczeństwa zalecamy ustawienie HSTS tak jak opisaliśmy to w naszych <a href=\"{docUrl}\" rel=\"noreferrer noopener\">wskazówkach dotyczących bezpieczeństwa ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Dostęp do tej strony jest za pośrednictwem protokołu HTTP. Zalecamy skonfigurowanie dostępu do serwera za pomocą protokołu HTTPS zamiast HTTP, jak to opisano w naszych <a href=\"{docUrl}\">wskazówkach bezpieczeństwa ↗</a>.",
"Shared" : "Udostępniono",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 059e8905261..9673fde8d5a 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -147,7 +147,6 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Twój katalog z danymi i twoje pliki prawdopodobnie są dostępne przez Internet. Plik .htaccess nie działa. Usilnie zalecamy, żebyś tak skonfigurował swój serwer, żeby katalog z danymi nie był dalej dostępny lub przenieś swój katalog z danymi poza katalog root serwera webowego.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Nagłówek HTTP {header} nie jest skonfigurowany, aby pasował do {expected}. Jest to poterncjalne zagrożenie prywatności oraz bezpieczeństwa i zalecamy poprawienie tego ustawienia.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Nagłówek HTTP {header} nie jest skonfigurowany, aby pasował do {expected}. Jest to poterncjalne zagrożenie prywatności oraz bezpieczeństwa i zalecamy poprawienie tego ustawienia.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Nagłówek HTTP \"{header}\" nie jest ustawiony na \"{val1}\", \"{val2}\", \"{val3}\", ani \"{val4}\". Może to powodować wycieki adresu strony. Zobacz<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">rekomendacje W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Nagłówek HTTP \"Strict-Transport-Security\" nie jest ustawiony na przynajmniej \"{seconds}\" sekund. Dla zwiększenia bezpieczeństwa zalecamy ustawienie HSTS tak jak opisaliśmy to w naszych <a href=\"{docUrl}\" rel=\"noreferrer noopener\">wskazówkach dotyczących bezpieczeństwa ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Dostęp do tej strony jest za pośrednictwem protokołu HTTP. Zalecamy skonfigurowanie dostępu do serwera za pomocą protokołu HTTPS zamiast HTTP, jak to opisano w naszych <a href=\"{docUrl}\">wskazówkach bezpieczeństwa ↗</a>.",
"Shared" : "Udostępniono",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 6006a9fadc9..3ab52fa3de3 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Verificada atualização do aplicativo \"%s\" na appstore",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificando se o schema do banco de dados para %s pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)",
"Checked database schema update for apps" : "Verificada a atualização do schema do banco de dados para aplicativos",
+ "Updated \"%1$s\" to %2$s" : "Atualizou \"%1$s\" para %2$s",
"Set log level to debug" : "Definir o nível de log para debug",
"Reset log level" : "Redefinir o nível do log",
"Starting code integrity check" : "Inicializando a verificação da integridade do código",
@@ -149,14 +150,15 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Seu diretório de dados e arquivos provavelmente podem ser acessados pela Internet. O arquivo .htaccess não está funcionando. É altamente recomendado que você configure seu servidor web para que o diretório de dados não seja mais acessível ou mova o diretório de dados fora da raiz de documentos do servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não está definido para \"{expected}\". Este é um potencial risco de segurança ou privacidade e é recomendado ajustar esta configuração de acordo.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não está definido para \"{expected}\". Alguns recursos podem não funcionar corretamente e é recomendado ajustar esta configuração de acordo.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "O cabeçalho HTTP \"{header}\" não está definido como \"{val1}\", \"{val2}\", \"{val3}\" ou \"{val4}\". Isso pode vazar informações de referência. Veja a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">Recomendação W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não contém \"{expected}\". Esse é um risco potencial de segurança ou privacidade. É recomendável ajustar essa configuração de acordo.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "O cabeçalho HTTP \"{header}\" não está definido para \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" ou \"{val5}\". Pode haver vazamento de informações de referência. Veja a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">Recomendação W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "O cabeçalho HTTP \"Strict-Transport-Security\" não está definido para ao menos \"{seconds}\" segundos. Para maior segurança, é recomendado ativar o HSTS conforme descrito nas <a href=\"{docUrl}\" rel=\"noreferrer noopener\">dicas de segurança ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Acessando o site de forma insegura via HTTP. É recomendado configurar seu servidor para exigir HTTPS, conforme descrito nas <a href=\"{docUrl}\">dicas de segurança ↗</a>.",
"Shared" : "Compartilhado",
"Shared with" : "Compartilhado com",
"Shared by" : "Compartilhado por",
- "Choose a password for the public link" : "Escolha uma senha para o link público",
- "Choose a password for the public link or press the \"Enter\" key" : "Escolha uma senha para o link público ou pressione \"Enter\"",
+ "Choose a password for the public link" : "Escolha uma senha",
+ "Choose a password for the public link or press the \"Enter\" key" : "Escolha uma senha",
"Copied!" : "Copiado!",
"Not supported!" : "Não suportado!",
"Press ⌘-C to copy." : "Pressione ⌘-C para copiar.",
@@ -183,7 +185,7 @@ OC.L10N.register(
"Shared with you and the conversation {conversation} by {owner}" : "Compartilhado com você e a conversa {conversation} por {owner}",
"Shared with you in a conversation by {owner}" : "Compartilhado com você em uma conversa por {owner}",
"Shared with you by {owner}" : "Compartilhado com você por {owner}",
- "Choose a password for the mail share" : "Escolha uma senha para o compartilhamento de e-mail",
+ "Choose a password for the mail share" : "Escolha uma senha",
"group" : "grupo",
"remote" : "remoto",
"remote group" : "grupo remoto",
@@ -243,7 +245,7 @@ OC.L10N.register(
"Please reload the page." : "Por favor recarregue a página",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique nosso post no fórum</a> que abrange esta questão.",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "A atualização não foi realizada com sucesso. Por favor, informe este problema para  a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.",
- "Continue to Nextcloud" : "Prosseguir para Nextcloud",
+ "Continue to Nextcloud" : "Abrir o Nextcloud",
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundo.","A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundos."],
"Searching other places" : "Pesquisando em outros lugares",
"No search results in other folders for {tag}{filter}{endtag}" : "Pesquisa sem resultados em outras pastas para {tag}{filter}{endtag}",
@@ -318,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Esqueceu a senha?",
"Back to login" : "Voltar ao login",
"Connect to your account" : "Conectar à sua conta",
+ "Please log in before granting %1$s access to your %2$s account." : "Logue-se antes de conceder acesso %1$s à sua conta %2$s.",
"App token" : "Token do aplicativo",
"Grant access" : "Conceder acesso",
"Alternative log in using app token" : "Login alternativo usando aplicativo de token",
"Account access" : "Acesso à conta",
+ "You are about to grant %1$s access to your %2$s account." : "Você irá conceder acesso %1$s à sua conta %2$s.",
"Redirecting …" : "Redirecionando...",
"New password" : "Nova senha",
"New Password" : "Nova senha",
@@ -337,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Erro ao validar o segundo fator",
"Access through untrusted domain" : "Acessar através de um domínio inseguro",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Por favor contacte seu administrador. Se você for o administrador, edite a configuração \"trusted_domains\" em config/config.php como o exemplo em config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Mais informações de como configurar isso pode ser encontrado na %1$sdocumentação%2$s.",
"App update required" : "Atualização de aplicativo é necessária",
+ "%1$s will be updated to version %2$s" : "%1$s será atualizado par a versão %2$s",
"These apps will be updated:" : "Esses aplicativos serão atualizados:",
"These incompatible apps will be disabled:" : "Esses aplicativos incompatíveis serão desabilitados:",
"The theme %s has been disabled." : "O tema %s foi desativado.",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 2f9579ed0cf..2fceda821ec 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Verificada atualização do aplicativo \"%s\" na appstore",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificando se o schema do banco de dados para %s pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)",
"Checked database schema update for apps" : "Verificada a atualização do schema do banco de dados para aplicativos",
+ "Updated \"%1$s\" to %2$s" : "Atualizou \"%1$s\" para %2$s",
"Set log level to debug" : "Definir o nível de log para debug",
"Reset log level" : "Redefinir o nível do log",
"Starting code integrity check" : "Inicializando a verificação da integridade do código",
@@ -147,14 +148,15 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Seu diretório de dados e arquivos provavelmente podem ser acessados pela Internet. O arquivo .htaccess não está funcionando. É altamente recomendado que você configure seu servidor web para que o diretório de dados não seja mais acessível ou mova o diretório de dados fora da raiz de documentos do servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não está definido para \"{expected}\". Este é um potencial risco de segurança ou privacidade e é recomendado ajustar esta configuração de acordo.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não está definido para \"{expected}\". Alguns recursos podem não funcionar corretamente e é recomendado ajustar esta configuração de acordo.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "O cabeçalho HTTP \"{header}\" não está definido como \"{val1}\", \"{val2}\", \"{val3}\" ou \"{val4}\". Isso pode vazar informações de referência. Veja a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">Recomendação W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não contém \"{expected}\". Esse é um risco potencial de segurança ou privacidade. É recomendável ajustar essa configuração de acordo.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "O cabeçalho HTTP \"{header}\" não está definido para \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" ou \"{val5}\". Pode haver vazamento de informações de referência. Veja a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">Recomendação W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "O cabeçalho HTTP \"Strict-Transport-Security\" não está definido para ao menos \"{seconds}\" segundos. Para maior segurança, é recomendado ativar o HSTS conforme descrito nas <a href=\"{docUrl}\" rel=\"noreferrer noopener\">dicas de segurança ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Acessando o site de forma insegura via HTTP. É recomendado configurar seu servidor para exigir HTTPS, conforme descrito nas <a href=\"{docUrl}\">dicas de segurança ↗</a>.",
"Shared" : "Compartilhado",
"Shared with" : "Compartilhado com",
"Shared by" : "Compartilhado por",
- "Choose a password for the public link" : "Escolha uma senha para o link público",
- "Choose a password for the public link or press the \"Enter\" key" : "Escolha uma senha para o link público ou pressione \"Enter\"",
+ "Choose a password for the public link" : "Escolha uma senha",
+ "Choose a password for the public link or press the \"Enter\" key" : "Escolha uma senha",
"Copied!" : "Copiado!",
"Not supported!" : "Não suportado!",
"Press ⌘-C to copy." : "Pressione ⌘-C para copiar.",
@@ -181,7 +183,7 @@
"Shared with you and the conversation {conversation} by {owner}" : "Compartilhado com você e a conversa {conversation} por {owner}",
"Shared with you in a conversation by {owner}" : "Compartilhado com você em uma conversa por {owner}",
"Shared with you by {owner}" : "Compartilhado com você por {owner}",
- "Choose a password for the mail share" : "Escolha uma senha para o compartilhamento de e-mail",
+ "Choose a password for the mail share" : "Escolha uma senha",
"group" : "grupo",
"remote" : "remoto",
"remote group" : "grupo remoto",
@@ -241,7 +243,7 @@
"Please reload the page." : "Por favor recarregue a página",
"The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique nosso post no fórum</a> que abrange esta questão.",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "A atualização não foi realizada com sucesso. Por favor, informe este problema para  a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.",
- "Continue to Nextcloud" : "Prosseguir para Nextcloud",
+ "Continue to Nextcloud" : "Abrir o Nextcloud",
"_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundo.","A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundos."],
"Searching other places" : "Pesquisando em outros lugares",
"No search results in other folders for {tag}{filter}{endtag}" : "Pesquisa sem resultados em outras pastas para {tag}{filter}{endtag}",
@@ -316,10 +318,12 @@
"Forgot password?" : "Esqueceu a senha?",
"Back to login" : "Voltar ao login",
"Connect to your account" : "Conectar à sua conta",
+ "Please log in before granting %1$s access to your %2$s account." : "Logue-se antes de conceder acesso %1$s à sua conta %2$s.",
"App token" : "Token do aplicativo",
"Grant access" : "Conceder acesso",
"Alternative log in using app token" : "Login alternativo usando aplicativo de token",
"Account access" : "Acesso à conta",
+ "You are about to grant %1$s access to your %2$s account." : "Você irá conceder acesso %1$s à sua conta %2$s.",
"Redirecting …" : "Redirecionando...",
"New password" : "Nova senha",
"New Password" : "Nova senha",
@@ -335,7 +339,9 @@
"Error while validating your second factor" : "Erro ao validar o segundo fator",
"Access through untrusted domain" : "Acessar através de um domínio inseguro",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Por favor contacte seu administrador. Se você for o administrador, edite a configuração \"trusted_domains\" em config/config.php como o exemplo em config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Mais informações de como configurar isso pode ser encontrado na %1$sdocumentação%2$s.",
"App update required" : "Atualização de aplicativo é necessária",
+ "%1$s will be updated to version %2$s" : "%1$s será atualizado par a versão %2$s",
"These apps will be updated:" : "Esses aplicativos serão atualizados:",
"These incompatible apps will be disabled:" : "Esses aplicativos incompatíveis serão desabilitados:",
"The theme %s has been disabled." : "O tema %s foi desativado.",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index 6483e06f897..4b91d5bec04 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -242,6 +242,7 @@ OC.L10N.register(
"Username or email" : "Nume de utilizator sau adresă email",
"Log in" : "Autentificare",
"Wrong password." : "Parolă greșită.",
+ "Forgot password?" : "Ai uitat parola?",
"App token" : "Token aplicație",
"Account access" : "Acces cont",
"Redirecting …" : "Redirectare...",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index 07002af94a2..c28f678fc32 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -240,6 +240,7 @@
"Username or email" : "Nume de utilizator sau adresă email",
"Log in" : "Autentificare",
"Wrong password." : "Parolă greșită.",
+ "Forgot password?" : "Ai uitat parola?",
"App token" : "Token aplicație",
"Account access" : "Acces cont",
"Redirecting …" : "Redirectare...",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index ad247e0b472..cffbd615e34 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Наличие обновления приложения «%s» в магазине приложений проверено",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Проверка возможности обновления схемы базы данных для %s (это может занять длительное время в зависимости от размера базы данных)",
"Checked database schema update for apps" : "Проверено обновление схемы БД приложений",
+ "Updated \"%1$s\" to %2$s" : "Обновлено с \"%1$s\" на %2$s",
"Set log level to debug" : "Установлен отладочный уровень протоколирования",
"Reset log level" : "Сброс уровня протоколирования",
"Starting code integrity check" : "Начинается проверка целостности кода",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Каталог данных и файлы, возможно, доступны из Интернета. Файл .htaccess не работает. Настоятельно рекомендуется настроить веб сервер таким образом, чтобы каталог данных не был доступен из внешней сети, либо переместить каталог данных за пределы корневого каталога веб-сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не настроен на значение «{expected}». Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не настроен на значение «{expected}». Это может привести к неработоспособности некоторых из функций и рекомендуется изменить эти настройки.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Заголовок HTTP «{header}» не установлен в значения «{val1}», «{val2}», «{val3}» или «{val4}», что может привести к утечке информации об адресе источника перехода по ссылке. Для получения более подробной информации обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">рекомендациии W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не содержит параметр «{expected}». Это может привести к проблемам безопасности. Рекомендуется задать этот параметр.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Заголовок HTTP «{header}» не содержит значения «{val1}», «{val2}», «{val3}» или «{val4}», что может привести к утечке информации об адресе источника перехода по ссылке. Для получения более подробной информации обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">рекомендациии W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «{seconds}» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим <a href=\"{docUrl}\" rel=\"noreferrer noopener\">подсказкам по безопасности ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Используется небезопасное соединение по протоколу HTTP. Настоятельно рекомендуется настроить сервер на использование HTTPS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности ↗</a>.",
"Shared" : "Общий доступ",
@@ -162,25 +164,26 @@ OC.L10N.register(
"Press ⌘-C to copy." : "Нажмите ⌘-C для копирования.",
"Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.",
"Resharing is not allowed" : "Повторное открытие доступа запрещено",
- "Share to {name}" : "Поделиться с {name}",
+ "Share to {name}" : "Поделиться с {name}",
"Copy link" : "Копировать ссылку",
"Link" : "Ссылка",
"Password protect" : "Защитить паролем",
"Allow editing" : "Разрешить редактирование",
"Email link to person" : "Отправить ссылку по электронной почте",
"Send" : "Отправить",
- "Allow upload and editing" : "Разрешить загрузку и редактирование",
+ "Allow upload and editing" : "Разрешить приём и редактирование",
"Read only" : "Только чтение",
- "File drop (upload only)" : "Хранилище (только для приема файлов)",
+ "File drop (upload only)" : "Хранилище (только приём файлов)",
"Set expiration date" : "Установить срок действия",
"Expiration" : "Срок действия",
"Expiration date" : "Дата окончания",
"Note to recipient" : "Примечание для получателя",
- "Share link" : "Поделиться ссылкой",
- "Enable" : "Включить",
+ "Share link" : "Общий доступ по ссылке",
+ "Enable" : "Использовать",
"Shared with you and the group {group} by {owner}" : "{owner} предоставил(а) доступ Вам и группе {group}",
"Shared with you and {circle} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам круга «{circle}»",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам беседы «{conversation} »",
+ "Shared with you in a conversation by {owner}" : "Пользователь {owner} предоставил(а) Вам доступ во время беседы",
"Shared with you by {owner}" : "{owner} предоставил(а) Вам доступ",
"Choose a password for the mail share" : "Укажите пароль для ссылки по почте",
"group" : "группа",
@@ -197,6 +200,7 @@ OC.L10N.register(
"Can delete" : "Можно удалять",
"Password protect by Talk" : "Защита пароля Talk",
"Access control" : "Управление доступом",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} предоставил(а) доступ созданием ссылки",
"Could not unshare" : "Невозможно закрыть общий доступ",
"Error while sharing" : "При попытке поделиться произошла ошибка",
"Share details could not be loaded for this item." : "Не удалось загрузить информацию об общем доступе для этого элемента.",
@@ -214,8 +218,8 @@ OC.L10N.register(
"{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Поделиться",
"Name or email address..." : "Имя или адрес email…",
- "Name or federated cloud ID..." : "Имя или ID федеративного облачного хранилища…",
- "Name, federated cloud ID or email address..." : "Имя, ID федеративного облачного хранилища или адрес email…",
+ "Name or federated cloud ID..." : "Имя или ID межсерверного обмена…",
+ "Name, federated cloud ID or email address..." : "Имя, ID межсерверного обмена или адрес эл.почты",
"Name..." : "Имя…",
"Error" : "Ошибка",
"Error removing share" : "Ошибка удаления общего доступа",
@@ -253,6 +257,8 @@ OC.L10N.register(
"Help" : "Помощь",
"Access forbidden" : "Доступ запрещён",
"File not found" : "Файл не найден",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Документ не найден на сервере. Возможно доступ к нему был удален или истек срок действия доступа.",
+ "Back to %s" : "Вернуться к %s",
"Internal Server Error" : "Внутренняя ошибка сервера",
"The server was unable to complete your request." : "Запрос не может быть обработан сервером.",
"If this happens again, please send the technical details below to the server administrator." : "Если это случится ещё раз, отправьте администратору сервера подробное сообщение о произошедшем, приведённое ниже.",
@@ -314,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Забыли пароль?",
"Back to login" : "Вернуться на страницу входа",
"Connect to your account" : "Подключитесь к своей учётной записи",
+ "Please log in before granting %1$s access to your %2$s account." : "Пожалуйста авторизуйтесь прежде чем предоставить %1$sдоступ к вашей учетной записи %2$s",
"App token" : "Токен приложения",
"Grant access" : "Предоставить доступ",
"Alternative log in using app token" : "Альтернативный вход с токеном приложения",
"Account access" : "Доступ к аккаунту",
+ "You are about to grant %1$s access to your %2$s account." : "Вы собираетесь предоставить %1$s доступ к своей учетной записи %2$s",
"Redirecting …" : "Перенаправление…",
"New password" : "Новый пароль",
"New Password" : "Новый пароль",
@@ -327,12 +335,15 @@ OC.L10N.register(
"Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Повышенная безопасность включена для вашей учетной записи. Выберете второй фактор для подтверждения подлинности пользователя.",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Не удалось использовать хотя бы один из двух настроенных способов двуфакторной аутентификации. Обратитесь к администратору.",
"Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Двухфакторная аутентификация включена но не сконфигурирована для вашей учетной записи. Обратитесь к администратору сервера для консультации. ",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Двухфакторное подтверждение подлинности включено в настройках но ваша учётная запись еще не сконфигурирована для его использования. Используйте один из резервных кодов для входа в аккаунт или свяжитесь с вашим администратором для получения помощи.",
"Use backup code" : "Использовать код восстановления",
"Cancel log in" : "Отменить вход",
"Error while validating your second factor" : "Ошибка проверки кода",
"Access through untrusted domain" : "Доступ через недоверенный домен",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Обратитесь к администратору. Если вы являетесь администратором этого сервера, отредактируйте параметр «trusted_domains» в файле «config/config.php». Пример настройки можно найти в файле «config/config.sample.php».",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Дополнительная информация как это настроить может быть найдена в %1$sдокументации %2$s",
"App update required" : "Требуется обновление приложения",
+ "%1$s will be updated to version %2$s" : "%1$sбудет обновлена до версии %2$s",
"These apps will be updated:" : "Следующие приложения будут обновлены:",
"These incompatible apps will be disabled:" : "Эти несовместимые приложения будут отключены:",
"The theme %s has been disabled." : "Тема %s была отключена.",
@@ -371,8 +382,8 @@ OC.L10N.register(
"Error setting expiration date" : "Ошибка при установке срока доступа",
"The public link will expire no later than {days} days after it is created" : "Срок действия общедоступной ссылки истекает не позже чем через {days} дней после её создания",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} предоставил(а) доступ созданием ссылки",
- "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Поделиться, указав имя пользователя или группы, либо ID федеративного облачного хранилища или адрес email.",
- "Share with other people by entering a user or group or a federated cloud ID." : "Поделиться, указав имя пользователя или группы, либо ID федеративного облачного хранилища.",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Поделиться, указав имя пользователя или группы, ID межсерверного обмена хранилища или адрес эл. почты.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Поделиться, указав имя пользователя или группы или ID межсерверного обмена.",
"Share with other people by entering a user or group or an email address." : "Поделиться, указав имя пользователя или группы, либо адрес email.",
"The specified document has not been found on the server." : "Указанный документ не найден на сервере.",
"You can click here to return to %s." : "Вы можете нажать здесь, чтобы вернуться в %s.",
@@ -399,6 +410,7 @@ OC.L10N.register(
"Back to log in" : "Вернуться к диалогу входа в систему",
"You are about to grant %s access to your %s account." : "Вы собираетесь предоставить пользователю %s доступ к вашему аккаунту %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "В зависимости от конфигурации, эта кнопка может сделать доверенным следующий домен:",
+ "Copy URL" : "Копировать ссылку",
"Please log in before granting %s access to your %s account." : "Пожалуйста, авторизуйтесь до того, как предоставить пользователю %s доступ к вашей учётной записи %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Более подробная информация о том, как это сконфигурировать, может быть найдена в %sдокументации%s."
},
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 9e8474b6470..672b41a7eb9 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Наличие обновления приложения «%s» в магазине приложений проверено",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Проверка возможности обновления схемы базы данных для %s (это может занять длительное время в зависимости от размера базы данных)",
"Checked database schema update for apps" : "Проверено обновление схемы БД приложений",
+ "Updated \"%1$s\" to %2$s" : "Обновлено с \"%1$s\" на %2$s",
"Set log level to debug" : "Установлен отладочный уровень протоколирования",
"Reset log level" : "Сброс уровня протоколирования",
"Starting code integrity check" : "Начинается проверка целостности кода",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Каталог данных и файлы, возможно, доступны из Интернета. Файл .htaccess не работает. Настоятельно рекомендуется настроить веб сервер таким образом, чтобы каталог данных не был доступен из внешней сети, либо переместить каталог данных за пределы корневого каталога веб-сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не настроен на значение «{expected}». Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не настроен на значение «{expected}». Это может привести к неработоспособности некоторых из функций и рекомендуется изменить эти настройки.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Заголовок HTTP «{header}» не установлен в значения «{val1}», «{val2}», «{val3}» или «{val4}», что может привести к утечке информации об адресе источника перехода по ссылке. Для получения более подробной информации обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">рекомендациии W3C ↗</a>.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не содержит параметр «{expected}». Это может привести к проблемам безопасности. Рекомендуется задать этот параметр.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "Заголовок HTTP «{header}» не содержит значения «{val1}», «{val2}», «{val3}» или «{val4}», что может привести к утечке информации об адресе источника перехода по ссылке. Для получения более подробной информации обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">рекомендациии W3C ↗</a>.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «{seconds}» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим <a href=\"{docUrl}\" rel=\"noreferrer noopener\">подсказкам по безопасности ↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Используется небезопасное соединение по протоколу HTTP. Настоятельно рекомендуется настроить сервер на использование HTTPS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности ↗</a>.",
"Shared" : "Общий доступ",
@@ -160,25 +162,26 @@
"Press ⌘-C to copy." : "Нажмите ⌘-C для копирования.",
"Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.",
"Resharing is not allowed" : "Повторное открытие доступа запрещено",
- "Share to {name}" : "Поделиться с {name}",
+ "Share to {name}" : "Поделиться с {name}",
"Copy link" : "Копировать ссылку",
"Link" : "Ссылка",
"Password protect" : "Защитить паролем",
"Allow editing" : "Разрешить редактирование",
"Email link to person" : "Отправить ссылку по электронной почте",
"Send" : "Отправить",
- "Allow upload and editing" : "Разрешить загрузку и редактирование",
+ "Allow upload and editing" : "Разрешить приём и редактирование",
"Read only" : "Только чтение",
- "File drop (upload only)" : "Хранилище (только для приема файлов)",
+ "File drop (upload only)" : "Хранилище (только приём файлов)",
"Set expiration date" : "Установить срок действия",
"Expiration" : "Срок действия",
"Expiration date" : "Дата окончания",
"Note to recipient" : "Примечание для получателя",
- "Share link" : "Поделиться ссылкой",
- "Enable" : "Включить",
+ "Share link" : "Общий доступ по ссылке",
+ "Enable" : "Использовать",
"Shared with you and the group {group} by {owner}" : "{owner} предоставил(а) доступ Вам и группе {group}",
"Shared with you and {circle} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам круга «{circle}»",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам беседы «{conversation} »",
+ "Shared with you in a conversation by {owner}" : "Пользователь {owner} предоставил(а) Вам доступ во время беседы",
"Shared with you by {owner}" : "{owner} предоставил(а) Вам доступ",
"Choose a password for the mail share" : "Укажите пароль для ссылки по почте",
"group" : "группа",
@@ -195,6 +198,7 @@
"Can delete" : "Можно удалять",
"Password protect by Talk" : "Защита пароля Talk",
"Access control" : "Управление доступом",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} предоставил(а) доступ созданием ссылки",
"Could not unshare" : "Невозможно закрыть общий доступ",
"Error while sharing" : "При попытке поделиться произошла ошибка",
"Share details could not be loaded for this item." : "Не удалось загрузить информацию об общем доступе для этого элемента.",
@@ -212,8 +216,8 @@
"{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Поделиться",
"Name or email address..." : "Имя или адрес email…",
- "Name or federated cloud ID..." : "Имя или ID федеративного облачного хранилища…",
- "Name, federated cloud ID or email address..." : "Имя, ID федеративного облачного хранилища или адрес email…",
+ "Name or federated cloud ID..." : "Имя или ID межсерверного обмена…",
+ "Name, federated cloud ID or email address..." : "Имя, ID межсерверного обмена или адрес эл.почты",
"Name..." : "Имя…",
"Error" : "Ошибка",
"Error removing share" : "Ошибка удаления общего доступа",
@@ -251,6 +255,8 @@
"Help" : "Помощь",
"Access forbidden" : "Доступ запрещён",
"File not found" : "Файл не найден",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Документ не найден на сервере. Возможно доступ к нему был удален или истек срок действия доступа.",
+ "Back to %s" : "Вернуться к %s",
"Internal Server Error" : "Внутренняя ошибка сервера",
"The server was unable to complete your request." : "Запрос не может быть обработан сервером.",
"If this happens again, please send the technical details below to the server administrator." : "Если это случится ещё раз, отправьте администратору сервера подробное сообщение о произошедшем, приведённое ниже.",
@@ -312,10 +318,12 @@
"Forgot password?" : "Забыли пароль?",
"Back to login" : "Вернуться на страницу входа",
"Connect to your account" : "Подключитесь к своей учётной записи",
+ "Please log in before granting %1$s access to your %2$s account." : "Пожалуйста авторизуйтесь прежде чем предоставить %1$sдоступ к вашей учетной записи %2$s",
"App token" : "Токен приложения",
"Grant access" : "Предоставить доступ",
"Alternative log in using app token" : "Альтернативный вход с токеном приложения",
"Account access" : "Доступ к аккаунту",
+ "You are about to grant %1$s access to your %2$s account." : "Вы собираетесь предоставить %1$s доступ к своей учетной записи %2$s",
"Redirecting …" : "Перенаправление…",
"New password" : "Новый пароль",
"New Password" : "Новый пароль",
@@ -325,12 +333,15 @@
"Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Повышенная безопасность включена для вашей учетной записи. Выберете второй фактор для подтверждения подлинности пользователя.",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Не удалось использовать хотя бы один из двух настроенных способов двуфакторной аутентификации. Обратитесь к администратору.",
"Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Двухфакторная аутентификация включена но не сконфигурирована для вашей учетной записи. Обратитесь к администратору сервера для консультации. ",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Двухфакторное подтверждение подлинности включено в настройках но ваша учётная запись еще не сконфигурирована для его использования. Используйте один из резервных кодов для входа в аккаунт или свяжитесь с вашим администратором для получения помощи.",
"Use backup code" : "Использовать код восстановления",
"Cancel log in" : "Отменить вход",
"Error while validating your second factor" : "Ошибка проверки кода",
"Access through untrusted domain" : "Доступ через недоверенный домен",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Обратитесь к администратору. Если вы являетесь администратором этого сервера, отредактируйте параметр «trusted_domains» в файле «config/config.php». Пример настройки можно найти в файле «config/config.sample.php».",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Дополнительная информация как это настроить может быть найдена в %1$sдокументации %2$s",
"App update required" : "Требуется обновление приложения",
+ "%1$s will be updated to version %2$s" : "%1$sбудет обновлена до версии %2$s",
"These apps will be updated:" : "Следующие приложения будут обновлены:",
"These incompatible apps will be disabled:" : "Эти несовместимые приложения будут отключены:",
"The theme %s has been disabled." : "Тема %s была отключена.",
@@ -369,8 +380,8 @@
"Error setting expiration date" : "Ошибка при установке срока доступа",
"The public link will expire no later than {days} days after it is created" : "Срок действия общедоступной ссылки истекает не позже чем через {days} дней после её создания",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} предоставил(а) доступ созданием ссылки",
- "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Поделиться, указав имя пользователя или группы, либо ID федеративного облачного хранилища или адрес email.",
- "Share with other people by entering a user or group or a federated cloud ID." : "Поделиться, указав имя пользователя или группы, либо ID федеративного облачного хранилища.",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "Поделиться, указав имя пользователя или группы, ID межсерверного обмена хранилища или адрес эл. почты.",
+ "Share with other people by entering a user or group or a federated cloud ID." : "Поделиться, указав имя пользователя или группы или ID межсерверного обмена.",
"Share with other people by entering a user or group or an email address." : "Поделиться, указав имя пользователя или группы, либо адрес email.",
"The specified document has not been found on the server." : "Указанный документ не найден на сервере.",
"You can click here to return to %s." : "Вы можете нажать здесь, чтобы вернуться в %s.",
@@ -397,6 +408,7 @@
"Back to log in" : "Вернуться к диалогу входа в систему",
"You are about to grant %s access to your %s account." : "Вы собираетесь предоставить пользователю %s доступ к вашему аккаунту %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "В зависимости от конфигурации, эта кнопка может сделать доверенным следующий домен:",
+ "Copy URL" : "Копировать ссылку",
"Please log in before granting %s access to your %s account." : "Пожалуйста, авторизуйтесь до того, как предоставить пользователю %s доступ к вашей учётной записи %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Более подробная информация о том, как это сконфигурировать, может быть найдена в %sдокументации%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/core/l10n/sk.js b/core/l10n/sk.js
index f96ff03209f..f9df5678a20 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Hľadá sa aktualizácia aplikácie \"%s\" v obchode",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Kontroluje sa, či je možné aktualizovať schému databázy pre %s (to môže trvať dlhší čas v závislosti na veľkosti databázy)",
"Checked database schema update for apps" : "Aktualizácia schémy databázy aplikácií bola overená",
+ "Updated \"%1$s\" to %2$s" : "Aktualizované \"%1$s\" na %2$s",
"Set log level to debug" : "Nastaviť úroveň záznamu na ladenie",
"Reset log level" : "Obnoviť úroveň záznamu",
"Starting code integrity check" : "Začína kontrola integrity kódu",
@@ -115,23 +116,44 @@ OC.L10N.register(
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Váš webový server nie je zatiaľ správne nastavený, aby umožnil synchronizáciu súborov, pretože rozhranie WebDAV sa zdá byť nefunkčné.",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Vśš webový server nie je správne nastavený na spracovanie \"{url}\". Viac informácií môžete nájsť v našej <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Zdá sa že PHP nie je nastavené korektne na získanie premenných prostredia. Test s príkazom getenv(\"PATH\") vráti prázdnu odpoveď.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Prosím skontrolujte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">inštalačnú dokumentáciu</a>ohľadne PHP konfigurácie a PHP konfiguráciu Vášho servra, hlavne ak používate php-fpm.",
+ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurácia je nastavená len na čítanie. Toto znemožňuje urobiť niektoré nastavenia prostredníctvom webového rozhrania. Okrem toho, súbor musí mať zapisovanie ručne povolené pre každú aktualizáciu.",
+ "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Vaša databáza nebeží s úrovňou izolácie transakcií \"READ COMMITTED\". Toto môže spôsobovať problémy v prípade ak viacero akcií beží paralelne.",
+ "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Chýba PHP modul 'fileinfo'. Dôrazne doporučujeme ho povoliť pre dosiahnutie najlepších výsledkov zisťovania MIME-typu.",
+ "{name} below version {version} is installed, for stability and performance reasons it is recommended to update to a newer {name} version." : "{name} s verziou nižšou ako {version} nainštalovaný, z dôvodu stability a výkonu sa odporúča aktualizovať na novšiu {name} verziu.",
+ "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "Tranzakčné uzamykanie súborov je vypnuté, toto môže viesť k problémom. Nastavte \"filelocking.enabled\" v config.php. Viac informácií viď <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácia</a>.",
+ "If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (suggestion: \"{suggestedOverwriteCliURL}\")" : "Inštalácia mimo koreňový priečinok domény a používanie systémového príkazu cron môže spôsobiť problém s generovaním správnej URL. Pre zabránenie týmto chybám nastavte prosím správnu cestu v svojom config.php súbore pre hodnotu \"overwrite.cli.url\" (Doporučujeme: \"{suggestedOverwriteCliURL}\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nebolo možné spustiť cron úlohu na pozadí pomocou CLI. Toto sú chyby:",
+ "Last background job execution ran {relativeTime}. Something seems wrong." : "Úloha na pozadí naposledy prebehla {relativeTime}. Zdá sa, že niečo nie je v poriadku.",
+ "Check the background job settings" : "Skontrolujte nastavenie úloh na pozadí",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Server nemá funkčné pripojenie k internetu. Niektoré moduly ako napr. externé úložisko, oznámenie o dostupných aktualizáciách alebo inštalácia aplikácií tretích strán nebudú fungovať. Vzdialený prístup k súborom a odosielanie oznamovacích emailov tiež nemusí fungovať. Ak chcete využívať všetky funkcie, odporúčame povoliť tomuto serveru pripojenie k internetu.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Nie je nakonfigurovaná vyrovnávacia pamäť. Ak chcete zvýšiť výkon, nakonfigurujte prosím memcache ak je to možné. Viac informácií nájdete v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
+ "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Použiteľný zdroj náhodnosti pre PHP nebol nájdený, čo nie je odporúčané z bezpečnostných dôvodov. Viac informácií nájdete v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Aktuálne používate PHP {version}. Dôrazne odporúčame prechod na vyššiu verziu ihneď, ako to vaša distribúcia dovolí, aby ste využili <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">všetky výkonnostné a bezpečnostné možnosti novej verzie PHP</a> od PHP Group.",
"You are currently running PHP 5.6. The current major version of Nextcloud is the last that is supported on PHP 5.6. It is recommended to upgrade the PHP version to 7.0+ to be able to upgrade to Nextcloud 14." : "Aktuálne používate PHP 5.6. Aktuálne verzia Nextcloud podporuje verziu PHP 5.6, ale odporúčame upgrade na PHP verzie 7.0 a vyššej pre upgrade na Nextcloud 14",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Konfigurácia hlavičiek reverse proxy nie je správna alebo pristupujete k NextCloud z dôveryhodného proxy servera. Ak k Nextcloud nepristupujete z dôveryhodného proxy servera, vzniká bezpečnostné riziko - IP adresa potenciálneho útočníka, ktorú vidí Nextcloud, môže byť falošná. Viac informácií nájdete v našej <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached je nakonfigurovaný ako distribuovaná vyrovnávacia pamäť, ale v PHP je nainštalovaný nesprávny modul - \"memcache\". \\OC\\Memcache\\Memcached podporuje len modul \"memcached\", \"memcache\" nie je podporovaný. Viac informácií nájdete na <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki stránke o oboch moduloch</a>.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Niektoré zo súborov neprešli kontrolou integrity. Viac informácii, aku napraviť túto situáciu, nájdete v našej <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Zobraziť zoznam podozrivých súborov</a> / <a href=\"{rescanEndpoint}\">Verifikovať znovu..</a>)",
+ "The PHP OPcache module is not loaded. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to load it into your PHP installation." : "PHP modul OPcache nie je načítaný. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Pre zvýšenie výkonu ho odporúčame</a> zahrnúť do Vašej PHP inštalácie.",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache nie je nakonfigurovaná správne. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Pre zvýšenie výkonu</a> použite v <code>php.ini</code> nasledovné odporúčané nastavenia:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Funkcia PHP \"set_time_limit\" nie je k dispozícii. To by mohlo viesť k zastaveniu skriptov v polovici vykonávania, čím by došlo k prerušeniu inštalácie. Dôrazne odporúčame povoliť túto funkciu.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Vaše PHP nemá podporu FreeType, čo bude mať za následok poškodenie profilových obrázkov a rozhrania nastavení.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Chýbajúci index \"{indexName}\" v tabuľke \"{tableName}\".",
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "V databáze chýbajú nejaké indexy. Keďže pridávanie indexov voči veľkým tabuľkám môže trvať dlho, tak neboli pridané automaticky. Spustením príkazu \"occ db:add-missing-indices\" môžete tieto chýbajúce indexy pridať ručne počas behu. Akonáhle budú indexy aktívne, tak požiadavky voči databáze budú podstatne rýchlejšie.",
+ "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Ako databáza je použitá SQLite. Pre väčšie inštalácie odporúčame prejsť na inú databázu.",
+ "This is particularly recommended when using the desktop client for file synchronisation." : "Toto odporúčame najmä pri používaní klientských aplikácií na synchronizáciu s desktopom.",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a>." : "Pre migráciu na inú databázu použite príkaz: 'occ db:convert-type', alebo viď <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácia</a>.",
+ "Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "Použitie PHP interného mailera už nie je podporované. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Prosím aktualizujte nastavenie Vášho email servra<a/>.",
+ "The PHP memory limit is below the recommended value of 512MB." : "Limit pre pamäť PHP je nižší ako odporúčaná hodnota 512MB.",
+ "Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Niektoré aplikačné priečinky majú iného vlastníka ako web server. Toto môže nastať ak aplikácie boli inštalované manuálne. Skontrolujte práva nasledovných priečinkov nasledovných aplikácií:",
"Error occurred while checking server setup" : "Počas kontroly nastavenia serveru sa stala chyba",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Váš priečinok s dátami aj vaše súbory sú pravdepodobne prístupné z internetu. Súbor .htaccess nefunguje. Dôrazne odporúčame nakonfigurovať webový server tak, aby priečinok s dátami nebol naďalej prístupný alebo presunúť priečinok s dátami mimo priestoru, ktorý webový server sprístupňuje.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" neobsahuje \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP hlavička \"{header}\" nie je nastavená na \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" alebo \"{val5}\". Môže to spôsobiť únik referer informácie. Pozrite si <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C odporúčania</a>.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Hlavička HTTP \"Strict-Transport-Security\" nie je nakonfigurovaná aspoň na \"{seconds}\" sekúnd. Pre zvýšenie bezpečnosti odporúčame povoliť HSTS tak, ako je to popísané v našich <a href=\"{docUrl}\" rel=\"noreferrer noopener\">bezpečnostných tipoch</a>.",
+ "Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Prístup na túto stránku sa uskutočňuje prostredníctvom nezabezpečeného protokolu HTTP. Dôrazne odporúčame, aby ste namiesto toho nakonfigurovali server tak, aby vyžadoval použitie HTTPS, ako je to popísané v našich <a href=\"{docUrl}\">bezpečnostných tipoch</a>.",
"Shared" : "Sprístupnené",
"Shared with" : "Sprístupnené používateľovi",
"Shared by" : "Sprístupnené používateľom",
@@ -143,6 +165,7 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "Stlač Ctrl-C pre skopírovanie.",
"Resharing is not allowed" : "Sprístupnenie už sprístupnenej položky nie je povolené",
"Share to {name}" : "Zdieľať s {name}",
+ "Copy link" : "Kopíruj odkaz",
"Link" : "Odkaz",
"Password protect" : "Chrániť heslom",
"Allow editing" : "Povoliť úpravy",
@@ -160,6 +183,7 @@ OC.L10N.register(
"Shared with you and the group {group} by {owner}" : "Sprístupnené vám a skupine {group} používateľom {owner}",
"Shared with you and {circle} by {owner}" : "Sprístupnené vám a {circle} od {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Sprístupnené vám a rozhovoru {conversation} od {owner}",
+ "Shared with you in a conversation by {owner}" : "Sprístupnené vám vrámci rozhovoru s {owner}",
"Shared with you by {owner}" : "Sprístupnené vám používateľom {owner}",
"Choose a password for the mail share" : "Zvoľte heslo pre zdieľanie pošty",
"group" : "skupina",
@@ -176,6 +200,7 @@ OC.L10N.register(
"Can delete" : "Môže odstraňovať",
"Password protect by Talk" : "Chránené heslom apkou Talk",
"Access control" : "Prístupové práva",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} zdieľal pomocou odkazu",
"Could not unshare" : "Nepodarilo sa zrušiť sprístupnenie",
"Error while sharing" : "Chyba počas sprístupňovania",
"Share details could not be loaded for this item." : "Nebolo možné načítať údaje o sprístupnení tejto položky.",
@@ -232,6 +257,8 @@ OC.L10N.register(
"Help" : "Pomoc",
"Access forbidden" : "Prístup odmietnutý",
"File not found" : "Súbor nenájdený",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokument nebol nájdený na servri. Je možné že zdieľanie bolo vymazané alebo expirovalo?",
+ "Back to %s" : "Späť na %s",
"Internal Server Error" : "Vnútorná chyba servera",
"The server was unable to complete your request." : "Server nebol schopný dokončiť vašu žiadosť.",
"If this happens again, please send the technical details below to the server administrator." : "Ak sa to stane opäť, nižšie zašlite technické podrobnosti správcovi servera.",
@@ -293,23 +320,30 @@ OC.L10N.register(
"Forgot password?" : "Zabudli ste heslo?",
"Back to login" : "Späť na prihlásenie",
"Connect to your account" : "Pripojte sa k svojmu účtu",
+ "Please log in before granting %1$s access to your %2$s account." : "Skôr než udelíte prístup pre %1$s do vášho účtu %2$s je potrebné sa prihlásiť.",
"App token" : "Token aplikácie",
"Grant access" : "Povoliť prístup",
"Alternative log in using app token" : "Alternatívne prihlásenie pomocou tokenu aplikácie",
"Account access" : "Prístup k účtu",
+ "You are about to grant %1$s access to your %2$s account." : "Chystáte sa udeliť %1$s prístup k svojmu %2$s účtu.",
"Redirecting …" : "Presmerovanie...",
"New password" : "Nové heslo",
"New Password" : "Nové heslo",
"This share is password-protected" : "Toto sprístupnenie je chránené heslom",
"The password is wrong. Try again." : "Heslo je chybné. Skúste to znova.",
"Two-factor authentication" : "Dvojzložkové overovanie",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Vylepšená bezpečnosť je pre váš účet povolená. Vyberte druhý faktor overenia:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Nedá sa načíťať minimálne jeden z vašich povolených spôsobov na dvojzložkové overovanie. Kontaktujte prosím správcu systému.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Dvojfaktorová autentifikácia je vyžadovaná ale nebola nakonfigurovaná pre Váš účet. Kontaktujte administrátora pre ďalšiu asistenciu.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Dvojfaktorová autentifikácia je vyžadovaná ale nebola nakonfigurovaná pre Váš účet. Použite jeden zo záložných kódov na prihlásenie alebo kontaktujte administrátora pre ďalšiu asistenciu.",
"Use backup code" : "Použiť záložný kód",
"Cancel log in" : "Zrušiť prihlásenie",
"Error while validating your second factor" : "Chyba počas overovania druhého faktora",
"Access through untrusted domain" : "Prístup cez nedôveryhodnú doménu",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Kontaktujte svojho správcu. Ak ste administrátorom vy, upravte nastavenie \"trusted_domains\" v config/config.php ako napríklad v config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Viac informácií o konfigurácii je možné nájsť v %1$s dokumentácii %2$s.",
"App update required" : "Je nutná aktualizácia aplikácie",
+ "%1$s will be updated to version %2$s" : "%1$s bude zaktualizovaný na verziu %2$s.",
"These apps will be updated:" : "Tieto aplikácie budú aktualizované:",
"These incompatible apps will be disabled:" : "Tieto nekompatibilné aplikácie budú vypnuté:",
"The theme %s has been disabled." : "Téma %s bola zakázaná.",
@@ -376,6 +410,7 @@ OC.L10N.register(
"Back to log in" : "Späť na prihlásenie",
"You are about to grant %s access to your %s account." : "Chystáte sa udeliť %s prístup k svojmu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:",
+ "Copy URL" : "Kopírovať URL",
"Please log in before granting %s access to your %s account." : "Skôr než udelíte prístup pre %s do vášho účtu %s je potrebné sa prihlásiť.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Viac informácií o konfigurácii je možné nájsť v %sdokumentácii%s."
},
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index fd2450974be..24bd721f6e5 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Hľadá sa aktualizácia aplikácie \"%s\" v obchode",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Kontroluje sa, či je možné aktualizovať schému databázy pre %s (to môže trvať dlhší čas v závislosti na veľkosti databázy)",
"Checked database schema update for apps" : "Aktualizácia schémy databázy aplikácií bola overená",
+ "Updated \"%1$s\" to %2$s" : "Aktualizované \"%1$s\" na %2$s",
"Set log level to debug" : "Nastaviť úroveň záznamu na ladenie",
"Reset log level" : "Obnoviť úroveň záznamu",
"Starting code integrity check" : "Začína kontrola integrity kódu",
@@ -113,23 +114,44 @@
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Váš webový server nie je zatiaľ správne nastavený, aby umožnil synchronizáciu súborov, pretože rozhranie WebDAV sa zdá byť nefunkčné.",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Vśš webový server nie je správne nastavený na spracovanie \"{url}\". Viac informácií môžete nájsť v našej <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Zdá sa že PHP nie je nastavené korektne na získanie premenných prostredia. Test s príkazom getenv(\"PATH\") vráti prázdnu odpoveď.",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Prosím skontrolujte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">inštalačnú dokumentáciu</a>ohľadne PHP konfigurácie a PHP konfiguráciu Vášho servra, hlavne ak používate php-fpm.",
+ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurácia je nastavená len na čítanie. Toto znemožňuje urobiť niektoré nastavenia prostredníctvom webového rozhrania. Okrem toho, súbor musí mať zapisovanie ručne povolené pre každú aktualizáciu.",
+ "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Vaša databáza nebeží s úrovňou izolácie transakcií \"READ COMMITTED\". Toto môže spôsobovať problémy v prípade ak viacero akcií beží paralelne.",
+ "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Chýba PHP modul 'fileinfo'. Dôrazne doporučujeme ho povoliť pre dosiahnutie najlepších výsledkov zisťovania MIME-typu.",
+ "{name} below version {version} is installed, for stability and performance reasons it is recommended to update to a newer {name} version." : "{name} s verziou nižšou ako {version} nainštalovaný, z dôvodu stability a výkonu sa odporúča aktualizovať na novšiu {name} verziu.",
+ "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "Tranzakčné uzamykanie súborov je vypnuté, toto môže viesť k problémom. Nastavte \"filelocking.enabled\" v config.php. Viac informácií viď <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácia</a>.",
+ "If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (suggestion: \"{suggestedOverwriteCliURL}\")" : "Inštalácia mimo koreňový priečinok domény a používanie systémového príkazu cron môže spôsobiť problém s generovaním správnej URL. Pre zabránenie týmto chybám nastavte prosím správnu cestu v svojom config.php súbore pre hodnotu \"overwrite.cli.url\" (Doporučujeme: \"{suggestedOverwriteCliURL}\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nebolo možné spustiť cron úlohu na pozadí pomocou CLI. Toto sú chyby:",
+ "Last background job execution ran {relativeTime}. Something seems wrong." : "Úloha na pozadí naposledy prebehla {relativeTime}. Zdá sa, že niečo nie je v poriadku.",
+ "Check the background job settings" : "Skontrolujte nastavenie úloh na pozadí",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Server nemá funkčné pripojenie k internetu. Niektoré moduly ako napr. externé úložisko, oznámenie o dostupných aktualizáciách alebo inštalácia aplikácií tretích strán nebudú fungovať. Vzdialený prístup k súborom a odosielanie oznamovacích emailov tiež nemusí fungovať. Ak chcete využívať všetky funkcie, odporúčame povoliť tomuto serveru pripojenie k internetu.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Nie je nakonfigurovaná vyrovnávacia pamäť. Ak chcete zvýšiť výkon, nakonfigurujte prosím memcache ak je to možné. Viac informácií nájdete v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
+ "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Použiteľný zdroj náhodnosti pre PHP nebol nájdený, čo nie je odporúčané z bezpečnostných dôvodov. Viac informácií nájdete v <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Aktuálne používate PHP {version}. Dôrazne odporúčame prechod na vyššiu verziu ihneď, ako to vaša distribúcia dovolí, aby ste využili <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">všetky výkonnostné a bezpečnostné možnosti novej verzie PHP</a> od PHP Group.",
"You are currently running PHP 5.6. The current major version of Nextcloud is the last that is supported on PHP 5.6. It is recommended to upgrade the PHP version to 7.0+ to be able to upgrade to Nextcloud 14." : "Aktuálne používate PHP 5.6. Aktuálne verzia Nextcloud podporuje verziu PHP 5.6, ale odporúčame upgrade na PHP verzie 7.0 a vyššej pre upgrade na Nextcloud 14",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Konfigurácia hlavičiek reverse proxy nie je správna alebo pristupujete k NextCloud z dôveryhodného proxy servera. Ak k Nextcloud nepristupujete z dôveryhodného proxy servera, vzniká bezpečnostné riziko - IP adresa potenciálneho útočníka, ktorú vidí Nextcloud, môže byť falošná. Viac informácií nájdete v našej <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached je nakonfigurovaný ako distribuovaná vyrovnávacia pamäť, ale v PHP je nainštalovaný nesprávny modul - \"memcache\". \\OC\\Memcache\\Memcached podporuje len modul \"memcached\", \"memcache\" nie je podporovaný. Viac informácií nájdete na <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki stránke o oboch moduloch</a>.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Niektoré zo súborov neprešli kontrolou integrity. Viac informácii, aku napraviť túto situáciu, nájdete v našej <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácii</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Zobraziť zoznam podozrivých súborov</a> / <a href=\"{rescanEndpoint}\">Verifikovať znovu..</a>)",
+ "The PHP OPcache module is not loaded. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to load it into your PHP installation." : "PHP modul OPcache nie je načítaný. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Pre zvýšenie výkonu ho odporúčame</a> zahrnúť do Vašej PHP inštalácie.",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache nie je nakonfigurovaná správne. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Pre zvýšenie výkonu</a> použite v <code>php.ini</code> nasledovné odporúčané nastavenia:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Funkcia PHP \"set_time_limit\" nie je k dispozícii. To by mohlo viesť k zastaveniu skriptov v polovici vykonávania, čím by došlo k prerušeniu inštalácie. Dôrazne odporúčame povoliť túto funkciu.",
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Vaše PHP nemá podporu FreeType, čo bude mať za následok poškodenie profilových obrázkov a rozhrania nastavení.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Chýbajúci index \"{indexName}\" v tabuľke \"{tableName}\".",
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "V databáze chýbajú nejaké indexy. Keďže pridávanie indexov voči veľkým tabuľkám môže trvať dlho, tak neboli pridané automaticky. Spustením príkazu \"occ db:add-missing-indices\" môžete tieto chýbajúce indexy pridať ručne počas behu. Akonáhle budú indexy aktívne, tak požiadavky voči databáze budú podstatne rýchlejšie.",
+ "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Ako databáza je použitá SQLite. Pre väčšie inštalácie odporúčame prejsť na inú databázu.",
+ "This is particularly recommended when using the desktop client for file synchronisation." : "Toto odporúčame najmä pri používaní klientských aplikácií na synchronizáciu s desktopom.",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a>." : "Pre migráciu na inú databázu použite príkaz: 'occ db:convert-type', alebo viď <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentácia</a>.",
+ "Use of the the built in php mailer is no longer supported. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Please update your email server settings ↗<a/>." : "Použitie PHP interného mailera už nie je podporované. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Prosím aktualizujte nastavenie Vášho email servra<a/>.",
+ "The PHP memory limit is below the recommended value of 512MB." : "Limit pre pamäť PHP je nižší ako odporúčaná hodnota 512MB.",
+ "Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:" : "Niektoré aplikačné priečinky majú iného vlastníka ako web server. Toto môže nastať ak aplikácie boli inštalované manuálne. Skontrolujte práva nasledovných priečinkov nasledovných aplikácií:",
"Error occurred while checking server setup" : "Počas kontroly nastavenia serveru sa stala chyba",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Váš priečinok s dátami aj vaše súbory sú pravdepodobne prístupné z internetu. Súbor .htaccess nefunguje. Dôrazne odporúčame nakonfigurovať webový server tak, aby priečinok s dátami nebol naďalej prístupný alebo presunúť priečinok s dátami mimo priestoru, ktorý webový server sprístupňuje.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" neobsahuje \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP hlavička \"{header}\" nie je nastavená na \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" alebo \"{val5}\". Môže to spôsobiť únik referer informácie. Pozrite si <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C odporúčania</a>.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "Hlavička HTTP \"Strict-Transport-Security\" nie je nakonfigurovaná aspoň na \"{seconds}\" sekúnd. Pre zvýšenie bezpečnosti odporúčame povoliť HSTS tak, ako je to popísané v našich <a href=\"{docUrl}\" rel=\"noreferrer noopener\">bezpečnostných tipoch</a>.",
+ "Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Prístup na túto stránku sa uskutočňuje prostredníctvom nezabezpečeného protokolu HTTP. Dôrazne odporúčame, aby ste namiesto toho nakonfigurovali server tak, aby vyžadoval použitie HTTPS, ako je to popísané v našich <a href=\"{docUrl}\">bezpečnostných tipoch</a>.",
"Shared" : "Sprístupnené",
"Shared with" : "Sprístupnené používateľovi",
"Shared by" : "Sprístupnené používateľom",
@@ -141,6 +163,7 @@
"Press Ctrl-C to copy." : "Stlač Ctrl-C pre skopírovanie.",
"Resharing is not allowed" : "Sprístupnenie už sprístupnenej položky nie je povolené",
"Share to {name}" : "Zdieľať s {name}",
+ "Copy link" : "Kopíruj odkaz",
"Link" : "Odkaz",
"Password protect" : "Chrániť heslom",
"Allow editing" : "Povoliť úpravy",
@@ -158,6 +181,7 @@
"Shared with you and the group {group} by {owner}" : "Sprístupnené vám a skupine {group} používateľom {owner}",
"Shared with you and {circle} by {owner}" : "Sprístupnené vám a {circle} od {owner}",
"Shared with you and the conversation {conversation} by {owner}" : "Sprístupnené vám a rozhovoru {conversation} od {owner}",
+ "Shared with you in a conversation by {owner}" : "Sprístupnené vám vrámci rozhovoru s {owner}",
"Shared with you by {owner}" : "Sprístupnené vám používateľom {owner}",
"Choose a password for the mail share" : "Zvoľte heslo pre zdieľanie pošty",
"group" : "skupina",
@@ -174,6 +198,7 @@
"Can delete" : "Môže odstraňovať",
"Password protect by Talk" : "Chránené heslom apkou Talk",
"Access control" : "Prístupové práva",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} zdieľal pomocou odkazu",
"Could not unshare" : "Nepodarilo sa zrušiť sprístupnenie",
"Error while sharing" : "Chyba počas sprístupňovania",
"Share details could not be loaded for this item." : "Nebolo možné načítať údaje o sprístupnení tejto položky.",
@@ -230,6 +255,8 @@
"Help" : "Pomoc",
"Access forbidden" : "Prístup odmietnutý",
"File not found" : "Súbor nenájdený",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokument nebol nájdený na servri. Je možné že zdieľanie bolo vymazané alebo expirovalo?",
+ "Back to %s" : "Späť na %s",
"Internal Server Error" : "Vnútorná chyba servera",
"The server was unable to complete your request." : "Server nebol schopný dokončiť vašu žiadosť.",
"If this happens again, please send the technical details below to the server administrator." : "Ak sa to stane opäť, nižšie zašlite technické podrobnosti správcovi servera.",
@@ -291,23 +318,30 @@
"Forgot password?" : "Zabudli ste heslo?",
"Back to login" : "Späť na prihlásenie",
"Connect to your account" : "Pripojte sa k svojmu účtu",
+ "Please log in before granting %1$s access to your %2$s account." : "Skôr než udelíte prístup pre %1$s do vášho účtu %2$s je potrebné sa prihlásiť.",
"App token" : "Token aplikácie",
"Grant access" : "Povoliť prístup",
"Alternative log in using app token" : "Alternatívne prihlásenie pomocou tokenu aplikácie",
"Account access" : "Prístup k účtu",
+ "You are about to grant %1$s access to your %2$s account." : "Chystáte sa udeliť %1$s prístup k svojmu %2$s účtu.",
"Redirecting …" : "Presmerovanie...",
"New password" : "Nové heslo",
"New Password" : "Nové heslo",
"This share is password-protected" : "Toto sprístupnenie je chránené heslom",
"The password is wrong. Try again." : "Heslo je chybné. Skúste to znova.",
"Two-factor authentication" : "Dvojzložkové overovanie",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Vylepšená bezpečnosť je pre váš účet povolená. Vyberte druhý faktor overenia:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Nedá sa načíťať minimálne jeden z vašich povolených spôsobov na dvojzložkové overovanie. Kontaktujte prosím správcu systému.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Dvojfaktorová autentifikácia je vyžadovaná ale nebola nakonfigurovaná pre Váš účet. Kontaktujte administrátora pre ďalšiu asistenciu.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Dvojfaktorová autentifikácia je vyžadovaná ale nebola nakonfigurovaná pre Váš účet. Použite jeden zo záložných kódov na prihlásenie alebo kontaktujte administrátora pre ďalšiu asistenciu.",
"Use backup code" : "Použiť záložný kód",
"Cancel log in" : "Zrušiť prihlásenie",
"Error while validating your second factor" : "Chyba počas overovania druhého faktora",
"Access through untrusted domain" : "Prístup cez nedôveryhodnú doménu",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Kontaktujte svojho správcu. Ak ste administrátorom vy, upravte nastavenie \"trusted_domains\" v config/config.php ako napríklad v config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Viac informácií o konfigurácii je možné nájsť v %1$s dokumentácii %2$s.",
"App update required" : "Je nutná aktualizácia aplikácie",
+ "%1$s will be updated to version %2$s" : "%1$s bude zaktualizovaný na verziu %2$s.",
"These apps will be updated:" : "Tieto aplikácie budú aktualizované:",
"These incompatible apps will be disabled:" : "Tieto nekompatibilné aplikácie budú vypnuté:",
"The theme %s has been disabled." : "Téma %s bola zakázaná.",
@@ -374,6 +408,7 @@
"Back to log in" : "Späť na prihlásenie",
"You are about to grant %s access to your %s account." : "Chystáte sa udeliť %s prístup k svojmu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:",
+ "Copy URL" : "Kopírovať URL",
"Please log in before granting %s access to your %s account." : "Skôr než udelíte prístup pre %s do vášho účtu %s je potrebné sa prihlásiť.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Viac informácií o konfigurácii je možné nájsť v %sdokumentácii%s."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 153f54e165f..29da33de6d1 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -49,6 +49,7 @@ OC.L10N.register(
"%s (incompatible)" : "%s (neskladno)",
"Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s",
"Already up to date" : "Sistem je že posodobljen",
+ "Could not load your contacts" : "Tvojih stikov ni bilo mogoče naložiti",
"Search contacts …" : "Iščem stike...",
"No contacts found" : "Ne najdem stikov",
"Show all contacts …" : "Prikaži vse kontakte",
@@ -65,6 +66,7 @@ OC.L10N.register(
"This action requires you to confirm your password" : "Opravilo zahteva potrditev z vpisom skrbniškega gesla.",
"Confirm" : "Potrdi",
"Password" : "Geslo",
+ "Failed to authenticate, try again" : "Napaka pri preverjanju prisotnosti, poskusi znova",
"seconds ago" : "pred nekaj sekundami",
"Logging in …" : "Prijava...",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Povezava za ponastavitev gesla je bila poslana na naveden elektronski naslov. V kolikor sporočila ne dobite v kratkem, preverite tudi mapo neželene pošte.<br> Če sporočila ni niti v tej mapi, stopite v stik s skrbnikom.",
@@ -94,6 +96,9 @@ OC.L10N.register(
"({count} selected)" : "({count} izbranih)",
"Error loading file exists template" : "Napaka nalaganja predloge obstoječih datotek",
"Pending" : "Na čakanju",
+ "Copy to {folder}" : "Kopiraj v {folder}",
+ "Move to {folder}" : "Premakni v {folder}",
+ "View changelog" : "Ogled dnevnika sprememb",
"Very weak password" : "Zelo šibko geslo",
"Weak password" : "Šibko geslo",
"So-so password" : "Slabo geslo",
@@ -102,13 +107,16 @@ OC.L10N.register(
"Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
"Shared" : "V souporabi",
"Shared with" : "V skupni rabi z",
+ "Shared by" : "V souporabi od",
"Choose a password for the public link" : "Izberite geslo za javno povezavo",
+ "Choose a password for the public link or press the \"Enter\" key" : "Izberite geslo za javno povezavo ali pritisnite \"Enter\"",
"Copied!" : "Skopirano!",
"Not supported!" : "Ni podprto!",
"Press ⌘-C to copy." : "Pritisni ⌘-C za kopiranje.",
"Press Ctrl-C to copy." : "Pritisni Ctrl-C za kopiranje.",
"Resharing is not allowed" : "Nadaljnja souporaba ni dovoljena",
"Share to {name}" : "Deli z {name}",
+ "Copy link" : "Kopiraj povezavo",
"Link" : "Povezava",
"Password protect" : "Zaščiti z geslom",
"Allow editing" : "Dovoli urejanje",
@@ -120,12 +128,16 @@ OC.L10N.register(
"Set expiration date" : "Nastavi datum preteka",
"Expiration" : "Datum preteka",
"Expiration date" : "Datum preteka",
+ "Note to recipient" : "Opomba prejemniku",
"Share link" : "Povezava za prejem",
+ "Enable" : "Omogoči",
"Shared with you and the group {group} by {owner}" : "V souporabi z vami in skupino {group}. Lastnik je {owner}.",
"Shared with you by {owner}" : "V souporabi z vami. Lastnik je {owner}.",
"group" : "skupina",
"remote" : "oddaljeno",
+ "remote group" : "oddaljena skupina",
"email" : "e-pošta",
+ "conversation" : "pogovor",
"shared by {sharer}" : "deli {sharer}",
"Unshare" : "Prekliči souporabo",
"Can reshare" : "Lahko deli naprej",
@@ -239,8 +251,8 @@ OC.L10N.register(
"Cancel log in" : "Prekini prijavo",
"Error while validating your second factor" : "Napaka med preverjanjem drugega koraka",
"App update required" : "Zahtevana je posodobitev programa",
- "These apps will be updated:" : "Posodobljeni bodo naslednji vstavki:",
- "These incompatible apps will be disabled:" : "Ti neskladni vstavki bodo onemogočeni:",
+ "These apps will be updated:" : "Posodobljeni bodo programi:",
+ "These incompatible apps will be disabled:" : "Navedeni neskladni programi bodo onemogočeni:",
"The theme %s has been disabled." : "Tema %s je onemogočena za uporabo.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pred nadaljevanjem se prepričajte se, da je ustvarjena varnostna kopija podatkovne zbirke, nastavitvenih datotek in podatkovne mape.",
"Start update" : "Začni posodobitev",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index c2deea7a200..f1e59d537e6 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -47,6 +47,7 @@
"%s (incompatible)" : "%s (neskladno)",
"Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s",
"Already up to date" : "Sistem je že posodobljen",
+ "Could not load your contacts" : "Tvojih stikov ni bilo mogoče naložiti",
"Search contacts …" : "Iščem stike...",
"No contacts found" : "Ne najdem stikov",
"Show all contacts …" : "Prikaži vse kontakte",
@@ -63,6 +64,7 @@
"This action requires you to confirm your password" : "Opravilo zahteva potrditev z vpisom skrbniškega gesla.",
"Confirm" : "Potrdi",
"Password" : "Geslo",
+ "Failed to authenticate, try again" : "Napaka pri preverjanju prisotnosti, poskusi znova",
"seconds ago" : "pred nekaj sekundami",
"Logging in …" : "Prijava...",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Povezava za ponastavitev gesla je bila poslana na naveden elektronski naslov. V kolikor sporočila ne dobite v kratkem, preverite tudi mapo neželene pošte.<br> Če sporočila ni niti v tej mapi, stopite v stik s skrbnikom.",
@@ -92,6 +94,9 @@
"({count} selected)" : "({count} izbranih)",
"Error loading file exists template" : "Napaka nalaganja predloge obstoječih datotek",
"Pending" : "Na čakanju",
+ "Copy to {folder}" : "Kopiraj v {folder}",
+ "Move to {folder}" : "Premakni v {folder}",
+ "View changelog" : "Ogled dnevnika sprememb",
"Very weak password" : "Zelo šibko geslo",
"Weak password" : "Šibko geslo",
"So-so password" : "Slabo geslo",
@@ -100,13 +105,16 @@
"Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
"Shared" : "V souporabi",
"Shared with" : "V skupni rabi z",
+ "Shared by" : "V souporabi od",
"Choose a password for the public link" : "Izberite geslo za javno povezavo",
+ "Choose a password for the public link or press the \"Enter\" key" : "Izberite geslo za javno povezavo ali pritisnite \"Enter\"",
"Copied!" : "Skopirano!",
"Not supported!" : "Ni podprto!",
"Press ⌘-C to copy." : "Pritisni ⌘-C za kopiranje.",
"Press Ctrl-C to copy." : "Pritisni Ctrl-C za kopiranje.",
"Resharing is not allowed" : "Nadaljnja souporaba ni dovoljena",
"Share to {name}" : "Deli z {name}",
+ "Copy link" : "Kopiraj povezavo",
"Link" : "Povezava",
"Password protect" : "Zaščiti z geslom",
"Allow editing" : "Dovoli urejanje",
@@ -118,12 +126,16 @@
"Set expiration date" : "Nastavi datum preteka",
"Expiration" : "Datum preteka",
"Expiration date" : "Datum preteka",
+ "Note to recipient" : "Opomba prejemniku",
"Share link" : "Povezava za prejem",
+ "Enable" : "Omogoči",
"Shared with you and the group {group} by {owner}" : "V souporabi z vami in skupino {group}. Lastnik je {owner}.",
"Shared with you by {owner}" : "V souporabi z vami. Lastnik je {owner}.",
"group" : "skupina",
"remote" : "oddaljeno",
+ "remote group" : "oddaljena skupina",
"email" : "e-pošta",
+ "conversation" : "pogovor",
"shared by {sharer}" : "deli {sharer}",
"Unshare" : "Prekliči souporabo",
"Can reshare" : "Lahko deli naprej",
@@ -237,8 +249,8 @@
"Cancel log in" : "Prekini prijavo",
"Error while validating your second factor" : "Napaka med preverjanjem drugega koraka",
"App update required" : "Zahtevana je posodobitev programa",
- "These apps will be updated:" : "Posodobljeni bodo naslednji vstavki:",
- "These incompatible apps will be disabled:" : "Ti neskladni vstavki bodo onemogočeni:",
+ "These apps will be updated:" : "Posodobljeni bodo programi:",
+ "These incompatible apps will be disabled:" : "Navedeni neskladni programi bodo onemogočeni:",
"The theme %s has been disabled." : "Tema %s je onemogočena za uporabo.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pred nadaljevanjem se prepričajte se, da je ustvarjena varnostna kopija podatkovne zbirke, nastavitvenih datotek in podatkovne mape.",
"Start update" : "Začni posodobitev",
diff --git a/core/l10n/sr.js b/core/l10n/sr.js
index 762180ba0c8..08c52e0e36e 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "Проверено ажурирање апликације „%s“ у продавници",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Провера да ли шема база за %s може бити ажурирана (ово може да потраје, у зависности колика је база)",
"Checked database schema update for apps" : "Проверено ажурирање шеме базе података за апликације",
+ "Updated \"%1$s\" to %2$s" : "„%1$s“ ажурирано на %2$s",
"Set log level to debug" : "Постави ниво уписа у дневник на дебаговање",
"Reset log level" : "Поништи ниво уписа у дневник",
"Starting code integrity check" : "Почиње провера интегритета кода",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ваша фасцикла са подацима и фајлови су вероватно доступни са интернета. .htaccess фајл не ради. Препоручујемо да подесите Ваш веб сервер тако да је фасцикла са подацима ван фасцикле кореног документа веб сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ није подешено као „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручује се да подесите ову поставку.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ није подешено као „{expected}“. Неке функције можда неће радити исправно, па препоручује се да подесите ову поставку.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP заглавље \"{header}\" није постављено на \"{val1}\", \"{val2}\", \"{val3}\" или \"{val4}\". Овиме могу процурети информације о рефералу. Погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C препоруке↗</a>",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ не садржи „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручује се да подесите ову поставку.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP заглавље \"{header}\" није постављено на \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" или \"{val5}\". Овиме могу процурети информације о рефералу. Погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C препоруке↗</a>",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "\"Strict-Transport-Security\" HTTP заглавље није подешено да буде бар \"{seconds}\" секунди. За додатну сигурност, предлаже се да омогућите HSTS као што је описано у <a href=\"{docUrl}\" rel=\"noreferrer noopener\">сигурносним саветима↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Приступање сајту преко HTTP-а. Препоручује се да подесите Ваш сервер да захтева HTTPS као што је описано у <a href=\"{docUrl}\">безбедоносним саветима↗</a>",
"Shared" : "Дељено",
@@ -318,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Заборавили сте лозинку?",
"Back to login" : "Назад на пријаву",
"Connect to your account" : "Повежите се на Ваш налог",
+ "Please log in before granting %1$s access to your %2$s account." : "Прво се пријавите пре него што одобрите привилегију %1$s приступ Вашем налогу %2$s.",
"App token" : "Апликативни жетон",
"Grant access" : "Одобри приступ",
"Alternative log in using app token" : "Алтернативна пријава коришћењем апликативног жетона",
"Account access" : "Приступ налогу",
+ "You are about to grant %1$s access to your %2$s account." : "Управо ћете одобрити %1$s приступ Вашем %2$s налогу.",
"Redirecting …" : "Преусмеравање ...",
"New password" : "Нова лозинка",
"New Password" : "Нова лозинка",
@@ -337,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "Грешка при провери Вашег другог фактора",
"Access through untrusted domain" : "Приступ кроз небезбедни домен",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Контактирајте Вашег администратора. Ако сте Ви администратор, измените \"trusted_domains\" подешавање у config/config.php као у примеру config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Више информација о томе како ово подесити можете да нађете у %1$s документацији%2$s.",
"App update required" : "Потребно ажурирање апликације",
+ "%1$s will be updated to version %2$s" : "%1$s ће бити ажурирана на верзију %2$s",
"These apps will be updated:" : "Следеће апликације ће бити ажуриране:",
"These incompatible apps will be disabled:" : "Следеће некомпатибилне апликације ће бити онемогућене:",
"The theme %s has been disabled." : "Тема %s је онемогућена.",
diff --git a/core/l10n/sr.json b/core/l10n/sr.json
index 876f00925a9..39a7ef703fd 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "Проверено ажурирање апликације „%s“ у продавници",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Провера да ли шема база за %s може бити ажурирана (ово може да потраје, у зависности колика је база)",
"Checked database schema update for apps" : "Проверено ажурирање шеме базе података за апликације",
+ "Updated \"%1$s\" to %2$s" : "„%1$s“ ажурирано на %2$s",
"Set log level to debug" : "Постави ниво уписа у дневник на дебаговање",
"Reset log level" : "Поништи ниво уписа у дневник",
"Starting code integrity check" : "Почиње провера интегритета кода",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ваша фасцикла са подацима и фајлови су вероватно доступни са интернета. .htaccess фајл не ради. Препоручујемо да подесите Ваш веб сервер тако да је фасцикла са подацима ван фасцикле кореног документа веб сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ није подешено као „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручује се да подесите ову поставку.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ није подешено као „{expected}“. Неке функције можда неће радити исправно, па препоручује се да подесите ову поставку.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP заглавље \"{header}\" није постављено на \"{val1}\", \"{val2}\", \"{val3}\" или \"{val4}\". Овиме могу процурети информације о рефералу. Погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C препоруке↗</a>",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ не садржи „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручује се да подесите ову поставку.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP заглавље \"{header}\" није постављено на \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" или \"{val5}\". Овиме могу процурети информације о рефералу. Погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C препоруке↗</a>",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "\"Strict-Transport-Security\" HTTP заглавље није подешено да буде бар \"{seconds}\" секунди. За додатну сигурност, предлаже се да омогућите HSTS као што је описано у <a href=\"{docUrl}\" rel=\"noreferrer noopener\">сигурносним саветима↗</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Приступање сајту преко HTTP-а. Препоручује се да подесите Ваш сервер да захтева HTTPS као што је описано у <a href=\"{docUrl}\">безбедоносним саветима↗</a>",
"Shared" : "Дељено",
@@ -316,10 +318,12 @@
"Forgot password?" : "Заборавили сте лозинку?",
"Back to login" : "Назад на пријаву",
"Connect to your account" : "Повежите се на Ваш налог",
+ "Please log in before granting %1$s access to your %2$s account." : "Прво се пријавите пре него што одобрите привилегију %1$s приступ Вашем налогу %2$s.",
"App token" : "Апликативни жетон",
"Grant access" : "Одобри приступ",
"Alternative log in using app token" : "Алтернативна пријава коришћењем апликативног жетона",
"Account access" : "Приступ налогу",
+ "You are about to grant %1$s access to your %2$s account." : "Управо ћете одобрити %1$s приступ Вашем %2$s налогу.",
"Redirecting …" : "Преусмеравање ...",
"New password" : "Нова лозинка",
"New Password" : "Нова лозинка",
@@ -335,7 +339,9 @@
"Error while validating your second factor" : "Грешка при провери Вашег другог фактора",
"Access through untrusted domain" : "Приступ кроз небезбедни домен",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Контактирајте Вашег администратора. Ако сте Ви администратор, измените \"trusted_domains\" подешавање у config/config.php као у примеру config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Више информација о томе како ово подесити можете да нађете у %1$s документацији%2$s.",
"App update required" : "Потребно ажурирање апликације",
+ "%1$s will be updated to version %2$s" : "%1$s ће бити ажурирана на верзију %2$s",
"These apps will be updated:" : "Следеће апликације ће бити ажуриране:",
"These incompatible apps will be disabled:" : "Следеће некомпатибилне апликације ће бити онемогућене:",
"The theme %s has been disabled." : "Тема %s је онемогућена.",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index 2b78152be06..1fc5065f73f 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -123,6 +123,7 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "Tryck ned Ctrl-C för att kopiera.",
"Resharing is not allowed" : "Dela vidare är inte tillåtet",
"Share to {name}" : "Dela till {name}",
+ "Copy link" : "Kopiera länk",
"Link" : "Länk",
"Password protect" : "Lösenordsskydda",
"Allow editing" : "Tillåt redigering",
@@ -155,8 +156,9 @@ OC.L10N.register(
"Can create" : "Kan skapa",
"Can change" : "Kan ändra",
"Can delete" : "Kan radera",
- "Password protect by Talk" : "Lösenordsskydd av Talk",
+ "Password protect by Talk" : "Lösenordsskydda med Talk",
"Access control" : "Åtkomstkontroll",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} delad via länk",
"Could not unshare" : "Kunde inte ta bort delning",
"Error while sharing" : "Fel vid delning",
"Share details could not be loaded for this item." : "Delningsdetaljer kunde inte laddas för detta objekt.",
@@ -211,6 +213,8 @@ OC.L10N.register(
"Help" : "Hjälp",
"Access forbidden" : "Åtkomst förbjuden",
"File not found" : "Filen kunde inte hittas",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokumentet kunde inte hittas på servern. Kanske var delningen raderad eller har gått ut?",
+ "Back to %s" : "Tillbaka till %s",
"Internal Server Error" : "Internt serverfel",
"The server was unable to complete your request." : "Servern kunde inte slutföra din begäran.",
"If this happens again, please send the technical details below to the server administrator." : "Om det händer igen, vänligen skicka de tekniska detaljerna nedan till din serveradministratör.",
@@ -271,23 +275,30 @@ OC.L10N.register(
"Forgot password?" : "Glömt lösenordet?",
"Back to login" : "Tillbaka till inloggning",
"Connect to your account" : "Anslut ditt konto",
+ "Please log in before granting %1$s access to your %2$s account." : "Logga in innan du ger %1$s åtkomst till ditt %2$s konto.",
"App token" : "App-polett",
"Grant access" : "Tillåt åtkomst",
"Alternative log in using app token" : "Alternativ inloggning med app-token",
"Account access" : "Kontoåtkomst",
+ "You are about to grant %1$s access to your %2$s account." : "Du håller på att ge %1$s åtkomst till ditt %2$s konto.",
"Redirecting …" : "Omdirigerar ...",
"New password" : "Nytt lösenord",
"New Password" : "Nytt lösenord",
"This share is password-protected" : "Denna delning är lösenordsskyddad",
"The password is wrong. Try again." : "Felaktigt lösenord. Försök igen.",
"Two-factor authentication" : "Tvåfaktorsautentisering",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Förbättrad säkerhet är aktiverad för ditt konto. Välj en andra faktor för autentisering:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Kunde inte ladda minst en av dina aktiverade inloggningsmetoder. Vänligen kontakta din systemadministratören.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Tvåfaktorsautentisering krävs men har inte konfigurerats för ditt konto. Kontakta din administratör för hjälp.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Tvåfaktorsautentisering krävs men har inte konfigurerats för ditt konto. Använd en av dina säkerhetskoder för att logga in eller kontakta din administratör för hjälp.",
"Use backup code" : "Använd reservkod",
"Cancel log in" : "Avbryt inloggning",
"Error while validating your second factor" : "Fel vid verifiering av tvåfaktorsautentisering.",
"Access through untrusted domain" : "Åtkomst genom obetrodd domän",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Vänligen kontakta din administratör. Om du är en administratör, ändra \"trusted_domains\"-inställningen i config/config.php likt exemplet i config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Ytterligare information hur du konfigurerar detta finns i %1$sdokumentationen%2$s.",
"App update required" : "Appen behöver uppdateras",
+ "%1$s will be updated to version %2$s" : "%1$s kommer att uppdateras till version %2$s",
"These apps will be updated:" : "Dessa appar kommer att uppdateras:",
"These incompatible apps will be disabled:" : "Dessa inkompatibla appar kommer att inaktiveras",
"The theme %s has been disabled." : "Temat %s har blivit inaktiverat.",
@@ -316,6 +327,8 @@ OC.L10N.register(
"Share with other people by entering a user or group or an email address." : "Dela med andra personer genom att ange användarnamn, grupp eller en e-postadress.",
"The specified document has not been found on the server." : "Det angivna dokumentet hittades inte på servern.",
"You can click here to return to %s." : "Du kan klicka här för att återvända till %s.",
+ "The server encountered an internal error and was unable to complete your request." : "Ett internt fel uppstod och servern kunde inte slutföra i din begäran.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kontakta serveradministratören om detta fel återkommer flera gånger och inkludera nedanstående tekniska detaljer i din felrapport.",
"This action requires you to confirm your password:" : "Denna åtgärd kräver att du bekräftar ditt lösenord:",
"Wrong password. Reset it?" : "Felaktigt lösenord. Vill du återställa?",
"Stay logged in" : "Fortsätt vara inloggad.",
@@ -330,6 +343,7 @@ OC.L10N.register(
"Back to log in" : "Tillbaks till inloggning",
"You are about to grant %s access to your %s account." : "Du håller på att ge %s tillgång till ditt %s-konto.",
"Depending on your configuration, this button could also work to trust the domain:" : "Beroende på din konfiguration kan denna knappen också fungera föra att lita på domänen:",
+ "Copy URL" : "Kopiera URL",
"Please log in before granting %s access to your %s account." : "Logga in innan du ger %s åtkomst till ditt %s konto.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ytterligare information hur du konfigurerar detta finns i %sdokumentationen%s."
},
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 27782bae4d6..a0f6abce657 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -121,6 +121,7 @@
"Press Ctrl-C to copy." : "Tryck ned Ctrl-C för att kopiera.",
"Resharing is not allowed" : "Dela vidare är inte tillåtet",
"Share to {name}" : "Dela till {name}",
+ "Copy link" : "Kopiera länk",
"Link" : "Länk",
"Password protect" : "Lösenordsskydda",
"Allow editing" : "Tillåt redigering",
@@ -153,8 +154,9 @@
"Can create" : "Kan skapa",
"Can change" : "Kan ändra",
"Can delete" : "Kan radera",
- "Password protect by Talk" : "Lösenordsskydd av Talk",
+ "Password protect by Talk" : "Lösenordsskydda med Talk",
"Access control" : "Åtkomstkontroll",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} delad via länk",
"Could not unshare" : "Kunde inte ta bort delning",
"Error while sharing" : "Fel vid delning",
"Share details could not be loaded for this item." : "Delningsdetaljer kunde inte laddas för detta objekt.",
@@ -209,6 +211,8 @@
"Help" : "Hjälp",
"Access forbidden" : "Åtkomst förbjuden",
"File not found" : "Filen kunde inte hittas",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "Dokumentet kunde inte hittas på servern. Kanske var delningen raderad eller har gått ut?",
+ "Back to %s" : "Tillbaka till %s",
"Internal Server Error" : "Internt serverfel",
"The server was unable to complete your request." : "Servern kunde inte slutföra din begäran.",
"If this happens again, please send the technical details below to the server administrator." : "Om det händer igen, vänligen skicka de tekniska detaljerna nedan till din serveradministratör.",
@@ -269,23 +273,30 @@
"Forgot password?" : "Glömt lösenordet?",
"Back to login" : "Tillbaka till inloggning",
"Connect to your account" : "Anslut ditt konto",
+ "Please log in before granting %1$s access to your %2$s account." : "Logga in innan du ger %1$s åtkomst till ditt %2$s konto.",
"App token" : "App-polett",
"Grant access" : "Tillåt åtkomst",
"Alternative log in using app token" : "Alternativ inloggning med app-token",
"Account access" : "Kontoåtkomst",
+ "You are about to grant %1$s access to your %2$s account." : "Du håller på att ge %1$s åtkomst till ditt %2$s konto.",
"Redirecting …" : "Omdirigerar ...",
"New password" : "Nytt lösenord",
"New Password" : "Nytt lösenord",
"This share is password-protected" : "Denna delning är lösenordsskyddad",
"The password is wrong. Try again." : "Felaktigt lösenord. Försök igen.",
"Two-factor authentication" : "Tvåfaktorsautentisering",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "Förbättrad säkerhet är aktiverad för ditt konto. Välj en andra faktor för autentisering:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "Kunde inte ladda minst en av dina aktiverade inloggningsmetoder. Vänligen kontakta din systemadministratören.",
+ "Two-factor authentication is enforced but has not been configured on your account. Contact your admin for assistance." : "Tvåfaktorsautentisering krävs men har inte konfigurerats för ditt konto. Kontakta din administratör för hjälp.",
+ "Two-factor authentication is enforced but has not been configured on your account. Use one of your backup codes to log in or contact your admin for assistance." : "Tvåfaktorsautentisering krävs men har inte konfigurerats för ditt konto. Använd en av dina säkerhetskoder för att logga in eller kontakta din administratör för hjälp.",
"Use backup code" : "Använd reservkod",
"Cancel log in" : "Avbryt inloggning",
"Error while validating your second factor" : "Fel vid verifiering av tvåfaktorsautentisering.",
"Access through untrusted domain" : "Åtkomst genom obetrodd domän",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Vänligen kontakta din administratör. Om du är en administratör, ändra \"trusted_domains\"-inställningen i config/config.php likt exemplet i config.sample.php.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Ytterligare information hur du konfigurerar detta finns i %1$sdokumentationen%2$s.",
"App update required" : "Appen behöver uppdateras",
+ "%1$s will be updated to version %2$s" : "%1$s kommer att uppdateras till version %2$s",
"These apps will be updated:" : "Dessa appar kommer att uppdateras:",
"These incompatible apps will be disabled:" : "Dessa inkompatibla appar kommer att inaktiveras",
"The theme %s has been disabled." : "Temat %s har blivit inaktiverat.",
@@ -314,6 +325,8 @@
"Share with other people by entering a user or group or an email address." : "Dela med andra personer genom att ange användarnamn, grupp eller en e-postadress.",
"The specified document has not been found on the server." : "Det angivna dokumentet hittades inte på servern.",
"You can click here to return to %s." : "Du kan klicka här för att återvända till %s.",
+ "The server encountered an internal error and was unable to complete your request." : "Ett internt fel uppstod och servern kunde inte slutföra i din begäran.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kontakta serveradministratören om detta fel återkommer flera gånger och inkludera nedanstående tekniska detaljer i din felrapport.",
"This action requires you to confirm your password:" : "Denna åtgärd kräver att du bekräftar ditt lösenord:",
"Wrong password. Reset it?" : "Felaktigt lösenord. Vill du återställa?",
"Stay logged in" : "Fortsätt vara inloggad.",
@@ -328,6 +341,7 @@
"Back to log in" : "Tillbaks till inloggning",
"You are about to grant %s access to your %s account." : "Du håller på att ge %s tillgång till ditt %s-konto.",
"Depending on your configuration, this button could also work to trust the domain:" : "Beroende på din konfiguration kan denna knappen också fungera föra att lita på domänen:",
+ "Copy URL" : "Kopiera URL",
"Please log in before granting %s access to your %s account." : "Logga in innan du ger %s åtkomst till ditt %s konto.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ytterligare information hur du konfigurerar detta finns i %sdokumentationen%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index 19c4343c950..4bff4024639 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "\"%s\" uygulama mağazasının güncellemesi uygulama mağazasından denetlendi",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı şeması güncellemesi denetleniyor (veritabanının büyüklüğüne bağlı olarak uzun sürebilir)",
"Checked database schema update for apps" : "Uygulamalar için veritabanı şema güncellemesi denetlendi",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\", %2$s sürümüne güncellendi",
"Set log level to debug" : "Günlükleme düzeyini Hata Ayıklama olarak ayarla",
"Reset log level" : "Günlükleme düzeyini sıfırla",
"Starting code integrity check" : "Kod bütünlük sınaması başlatılıyor",
@@ -123,8 +124,8 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu durum yarış koşullarında (race condition) sorun çıkarabilir. Bu sorunlardan kaçınmak için config.php dosyasındaki 'filelocking.enabled' seçeneğini etkinleştirin. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere ↗</a> bakabilirsiniz.",
"If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (suggestion: \"{suggestedOverwriteCliURL}\")" : "Kurulumunuz etki alanının kök klasörüne yapılmamış ve sistem Zamanlanmış Görevini kullanıyorsa, İnternet adresi oluşturma sorunları oluşabilir. Bu sorunların önüne geçmek için, kurulumunuzun config.php dosyasındaki \"overwrite.cli.url\" seçeneğini web kök klasörü olarak ayarlayın (Önerilen: \"{suggestedOverwriteCliURL}\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Zamanlanmış görev CLI üzerinden çalıştırılamadı. Şu teknik sorunlar çıktı:",
- "Last background job execution ran {relativeTime}. Something seems wrong." : "Görevin art alanda son olarak {relativeTime} zamanında yürütülmüş. Bir şeyler yanlış görünüyor.",
- "Check the background job settings" : "Art alan görevi ayarlarını denetleyin",
+ "Last background job execution ran {relativeTime}. Something seems wrong." : "Görev arka planda son olarak {relativeTime} zamanında yürütülmüş. Bir şeyler yanlış görünüyor.",
+ "Check the background job settings" : "Arka plan görevi ayarlarını denetleyin",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Birden çok uç noktaya erişilemez. Bu durumda dış depolama alanı bağlama, güncelleme bildirimleri ya da üçüncü taraf uygulamalarını kurmak gibi bazı özellikler çalışmaz. Dosyalara uzaktan erişim ve bildirim e-postalarının gönderilmesi işlemleri de yapılamaz. Tüm bu özelliklerin kullanılabilmesi için sunucuyu İnternet üzerine bağlamanız önerilir.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Henüz bir ön bellek yapılandırılmamış. Olabiliyorsa başarımı arttırmak için memcache ön bellek ayarlarını yapın. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere</a> bakabilirsiniz.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Güvenlik nedeniyle kullanılması önemle önerilen rastgelelik kaynağı PHP tarafından bulunamıyor. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere</a> bakabilirsiniz.",
@@ -149,7 +150,8 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü web sunucu kök klasörü dışına taşımanız önemle önerilir.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisi \"{expected}\" şeklinde ayarlanmamış. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın belirtildiği gibi yapılması önerilir.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisi \"{expected}\" şeklinde ayarlanmamış. Bu durum bazı özelliklerin düzgün çalışmasını engelleyebileceğinden bu ayarın belirtildiği gibi yapılması önerilir.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "\"{header}\" HTTP üst bilgisi \"{val1}\", \"{val2}\", \"{val3}\" ya da \"{val4}\" olarak ayarlanmamış. Bu durum yönlendiren bilgilerinin sızmasına neden olabilir. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Önerilerine ↗</a> bakabilirsiniz.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisinde \"{expected}\" bulunmuyor. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın uygun şekilde yapılması önerilir.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "\"{header}\" HTTP üst bilgisi \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" ya da \"{val5}\" olarak ayarlanmamış. Bu durum yönlendiren bilgilerinin sızmasına neden olabilir. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Önerilerine ↗</a> bakabilirsiniz.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "\"Strict-Transport-Security\" HTTP üst bilgisi en azından\"{seconds}\" saniyedir ayarlanmamış. Gelişmiş güvenlik sağlamak için <a href=\"{docUrl}\" rel=\"noreferrer noopener\">güvenlik ipuçlarında ↗</a> anlatıldığı şekilde HSTS özelliğinin etkinleştirilmesi önerilir.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Siteye HTTP üzerinden erişiliyor. Sunucunuzu <a href=\"{docUrl}\">güvenlik ipuçlarında ↗</a> anlatıldığı şekilde HTTPS kullanımı gerekecek şekilde yapılandırmanız önemle önerilir.",
"Shared" : "Paylaşılmış",
@@ -198,6 +200,7 @@ OC.L10N.register(
"Can delete" : "Silebilir",
"Password protect by Talk" : "Talk tarafından parola koruması",
"Access control" : "Erişim denetimi",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} bağlantı ile paylaşılmış",
"Could not unshare" : "Paylaşım kaldırılamadı",
"Error while sharing" : "Paylaşılırken sorun çıktı",
"Share details could not be loaded for this item." : "Bu öge için paylaşma ayrıntıları yüklenemedi.",
@@ -317,10 +320,12 @@ OC.L10N.register(
"Forgot password?" : "Parolamı unuttum",
"Back to login" : "Oturum açmaya geri dön",
"Connect to your account" : "Hesabınızı bağlayın",
+ "Please log in before granting %1$s access to your %2$s account." : "Lütfen %1$s için %2$s hesabınıza erişim izni vermeden önce oturum açın.",
"App token" : "Uygulama Kodu",
"Grant access" : "Erişim izni ver",
"Alternative log in using app token" : "Uygulama kodu ile alternatif oturum açma",
"Account access" : "Hesap erişimi",
+ "You are about to grant %1$s access to your %2$s account." : "%1$s için %2$s hesabınıza erişim izni vermek üzeresiniz.",
"Redirecting …" : "Yönlendiriliyor...",
"New password" : "Yeni parola",
"New Password" : "Yeni Parola",
@@ -336,7 +341,9 @@ OC.L10N.register(
"Error while validating your second factor" : "İkinci aşama doğrulanırken sorun çıktı",
"Access through untrusted domain" : "Güvenilmeyen etki alanı üzerinden erişim",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Lütfen yöneticiniz ile görüşün. Yöneticisi siz iseniz, config/config.php dosyası içerisindeki \"trusted_domain\" ayarını config/config.sample.php dosyasındaki gibi düzenleyin.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Bu ayar ile ilgili ayrıntılı bilgi almak için %1$sbelgelere%2$s bakabilirsiniz.",
"App update required" : "Uygulamanın güncellenmesi gerekli",
+ "%1$s will be updated to version %2$s" : "%1$s, %2$s sürümüne güncellenecek",
"These apps will be updated:" : "Şu uygulamalar güncellenecek:",
"These incompatible apps will be disabled:" : "Şu uyumsuz uygulamalar devre dışı bırakılacak:",
"The theme %s has been disabled." : "%s teması devre dışı bırakıldı.",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 57cdc35f209..64268e6e118 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "\"%s\" uygulama mağazasının güncellemesi uygulama mağazasından denetlendi",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı şeması güncellemesi denetleniyor (veritabanının büyüklüğüne bağlı olarak uzun sürebilir)",
"Checked database schema update for apps" : "Uygulamalar için veritabanı şema güncellemesi denetlendi",
+ "Updated \"%1$s\" to %2$s" : "\"%1$s\", %2$s sürümüne güncellendi",
"Set log level to debug" : "Günlükleme düzeyini Hata Ayıklama olarak ayarla",
"Reset log level" : "Günlükleme düzeyini sıfırla",
"Starting code integrity check" : "Kod bütünlük sınaması başlatılıyor",
@@ -121,8 +122,8 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu durum yarış koşullarında (race condition) sorun çıkarabilir. Bu sorunlardan kaçınmak için config.php dosyasındaki 'filelocking.enabled' seçeneğini etkinleştirin. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere ↗</a> bakabilirsiniz.",
"If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (suggestion: \"{suggestedOverwriteCliURL}\")" : "Kurulumunuz etki alanının kök klasörüne yapılmamış ve sistem Zamanlanmış Görevini kullanıyorsa, İnternet adresi oluşturma sorunları oluşabilir. Bu sorunların önüne geçmek için, kurulumunuzun config.php dosyasındaki \"overwrite.cli.url\" seçeneğini web kök klasörü olarak ayarlayın (Önerilen: \"{suggestedOverwriteCliURL}\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Zamanlanmış görev CLI üzerinden çalıştırılamadı. Şu teknik sorunlar çıktı:",
- "Last background job execution ran {relativeTime}. Something seems wrong." : "Görevin art alanda son olarak {relativeTime} zamanında yürütülmüş. Bir şeyler yanlış görünüyor.",
- "Check the background job settings" : "Art alan görevi ayarlarını denetleyin",
+ "Last background job execution ran {relativeTime}. Something seems wrong." : "Görev arka planda son olarak {relativeTime} zamanında yürütülmüş. Bir şeyler yanlış görünüyor.",
+ "Check the background job settings" : "Arka plan görevi ayarlarını denetleyin",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Birden çok uç noktaya erişilemez. Bu durumda dış depolama alanı bağlama, güncelleme bildirimleri ya da üçüncü taraf uygulamalarını kurmak gibi bazı özellikler çalışmaz. Dosyalara uzaktan erişim ve bildirim e-postalarının gönderilmesi işlemleri de yapılamaz. Tüm bu özelliklerin kullanılabilmesi için sunucuyu İnternet üzerine bağlamanız önerilir.",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Henüz bir ön bellek yapılandırılmamış. Olabiliyorsa başarımı arttırmak için memcache ön bellek ayarlarını yapın. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere</a> bakabilirsiniz.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Güvenlik nedeniyle kullanılması önemle önerilen rastgelelik kaynağı PHP tarafından bulunamıyor. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere</a> bakabilirsiniz.",
@@ -147,7 +148,8 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü web sunucu kök klasörü dışına taşımanız önemle önerilir.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisi \"{expected}\" şeklinde ayarlanmamış. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın belirtildiği gibi yapılması önerilir.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisi \"{expected}\" şeklinde ayarlanmamış. Bu durum bazı özelliklerin düzgün çalışmasını engelleyebileceğinden bu ayarın belirtildiği gibi yapılması önerilir.",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "\"{header}\" HTTP üst bilgisi \"{val1}\", \"{val2}\", \"{val3}\" ya da \"{val4}\" olarak ayarlanmamış. Bu durum yönlendiren bilgilerinin sızmasına neden olabilir. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Önerilerine ↗</a> bakabilirsiniz.",
+ "The \"{header}\" HTTP header doesn't contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisinde \"{expected}\" bulunmuyor. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın uygun şekilde yapılması önerilir.",
+ "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "\"{header}\" HTTP üst bilgisi \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" ya da \"{val5}\" olarak ayarlanmamış. Bu durum yönlendiren bilgilerinin sızmasına neden olabilir. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Önerilerine ↗</a> bakabilirsiniz.",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "\"Strict-Transport-Security\" HTTP üst bilgisi en azından\"{seconds}\" saniyedir ayarlanmamış. Gelişmiş güvenlik sağlamak için <a href=\"{docUrl}\" rel=\"noreferrer noopener\">güvenlik ipuçlarında ↗</a> anlatıldığı şekilde HSTS özelliğinin etkinleştirilmesi önerilir.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips ↗</a>." : "Siteye HTTP üzerinden erişiliyor. Sunucunuzu <a href=\"{docUrl}\">güvenlik ipuçlarında ↗</a> anlatıldığı şekilde HTTPS kullanımı gerekecek şekilde yapılandırmanız önemle önerilir.",
"Shared" : "Paylaşılmış",
@@ -196,6 +198,7 @@
"Can delete" : "Silebilir",
"Password protect by Talk" : "Talk tarafından parola koruması",
"Access control" : "Erişim denetimi",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} bağlantı ile paylaşılmış",
"Could not unshare" : "Paylaşım kaldırılamadı",
"Error while sharing" : "Paylaşılırken sorun çıktı",
"Share details could not be loaded for this item." : "Bu öge için paylaşma ayrıntıları yüklenemedi.",
@@ -315,10 +318,12 @@
"Forgot password?" : "Parolamı unuttum",
"Back to login" : "Oturum açmaya geri dön",
"Connect to your account" : "Hesabınızı bağlayın",
+ "Please log in before granting %1$s access to your %2$s account." : "Lütfen %1$s için %2$s hesabınıza erişim izni vermeden önce oturum açın.",
"App token" : "Uygulama Kodu",
"Grant access" : "Erişim izni ver",
"Alternative log in using app token" : "Uygulama kodu ile alternatif oturum açma",
"Account access" : "Hesap erişimi",
+ "You are about to grant %1$s access to your %2$s account." : "%1$s için %2$s hesabınıza erişim izni vermek üzeresiniz.",
"Redirecting …" : "Yönlendiriliyor...",
"New password" : "Yeni parola",
"New Password" : "Yeni Parola",
@@ -334,7 +339,9 @@
"Error while validating your second factor" : "İkinci aşama doğrulanırken sorun çıktı",
"Access through untrusted domain" : "Güvenilmeyen etki alanı üzerinden erişim",
"Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Lütfen yöneticiniz ile görüşün. Yöneticisi siz iseniz, config/config.php dosyası içerisindeki \"trusted_domain\" ayarını config/config.sample.php dosyasındaki gibi düzenleyin.",
+ "Further information how to configure this can be found in the %1$sdocumentation%2$s." : "Bu ayar ile ilgili ayrıntılı bilgi almak için %1$sbelgelere%2$s bakabilirsiniz.",
"App update required" : "Uygulamanın güncellenmesi gerekli",
+ "%1$s will be updated to version %2$s" : "%1$s, %2$s sürümüne güncellenecek",
"These apps will be updated:" : "Şu uygulamalar güncellenecek:",
"These incompatible apps will be disabled:" : "Şu uyumsuz uygulamalar devre dışı bırakılacak:",
"The theme %s has been disabled." : "%s teması devre dışı bırakıldı.",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 41cf8722167..94f5e6c72de 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "已检查%s应用的是否有更新",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "检查 %s 的数据库结构是否可以更新 (这可能需要很长的时间, 这取决于数据库大小)",
"Checked database schema update for apps" : "已经检查应用的数据库结构更新",
+ "Updated \"%1$s\" to %2$s" : "已更新 “%1$s” 到 %2$s",
"Set log level to debug" : "设置日志级别为 调试",
"Reset log level" : "重设日志级别",
"Starting code integrity check" : "开始代码完整性检查",
@@ -105,6 +106,7 @@ OC.L10N.register(
"Pending" : "等待",
"Copy to {folder}" : "复制{文件夹}",
"Move to {folder}" : "移动{文件夹}",
+ "New in" : "新品",
"View changelog" : "查看更新记录",
"Very weak password" : "非常弱的密码",
"Weak password" : "弱密码",
@@ -115,6 +117,11 @@ OC.L10N.register(
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "您的网页服务器未正确设置以解析“{url}”。更多信息请参见<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">文档</a>。",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP的安装似乎不正确,无法访问系统环境变量。getenv(\"PATH\")函数测试返回了一个空值。",
"Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "请参照<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">安装说明文档 ↗</a>中的PHP配置说明查阅您服务器的PHP配置信息,特别是在使用php-fpm时。",
+ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "只读配置已启用。这可以在浏览器界面保护配置。另外,每次更新时需手动赋予该文件写权限。",
+ "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "数据库没有运行在 \"READ COMMITTED\" 事务隔离级别。当多项操作同时执行时将产生问题。",
+ "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "未找到 PHP 的 \"fileinfo\" 模块。强烈推荐启用该模块,从而获得更好的 MIME 类型探测结果。",
+ "{name} below version {version} is installed, for stability and performance reasons it is recommended to update to a newer {name} version." : "{name} 已安装 {version} 版本,出于稳定和性能的考虑,建议更新到 {name} 版本。",
+ "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "已禁用事务性文件锁定,这可能在竞争条件下导致问题。在 config.php 中启用 \"filelocking.enabled\" 可以避免此问题。详情查阅 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">文档 ↗</a>。",
"Check the background job settings" : "请检查后台任务设置",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "此服务器没有可用的互联网连接:多个节点无法访问。这意味着某些功能比如挂载外部存储,更新通知以及安装第三方应用将无法工作。远程访问文件和发送通知邮件可能也不工作。启用这台服务器上的互联网连接以享用所有功能。",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">文档</a>。",
@@ -132,7 +139,6 @@ OC.L10N.register(
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "您的数据目录和文件可以从互联网直接访问。.htaccess 文件不起作用。强烈建议您配置 Web 服务器,以便数据目录不再可访问,或者你可以将数据目录移动到 Web 服务器文档根目录。",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP 请求头 \"{header}\" 没有配置为 \"{expected}\"。这是一个潜在的安全或隐私风险, 我们建议您调整这项设置.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP 请求头 \"{header}\" 没有配置为 \"{expected}\"。某些功能可能无法正常工作,因此建议相应地调整此设置。",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP的请求头 \"{header}\" 未设置为 \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". 这会导致信息泄露. 请查阅 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C 建议↗</a>",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP的请求头 \"Strict-Transport-Security\" 未设置为至少 \"{seconds}\" 秒. 为了提高安全性,建议参照<a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>中的说明启用HSTS.",
"Shared" : "已共享",
"Shared with" : "共享给",
@@ -144,7 +150,7 @@ OC.L10N.register(
"Press ⌘-C to copy." : "按 ⌘ + C 进行复制.",
"Press Ctrl-C to copy." : "按 Ctrl + C 进行复制.",
"Resharing is not allowed" : "不允许二次共享",
- "Share to {name}" : "分享给{name}",
+ "Share to {name}" : "共享给{name}",
"Link" : "链接",
"Password protect" : "密码保护",
"Allow editing" : "允许编辑",
@@ -156,20 +162,20 @@ OC.L10N.register(
"Set expiration date" : "设置过期日期",
"Expiration" : "过期",
"Expiration date" : "过期日期",
- "Share link" : "分享链接",
+ "Share link" : "共享链接",
"Enable" : "启用",
- "Shared with you and the group {group} by {owner}" : "{owner} 分享给您及 {group} 分组",
+ "Shared with you and the group {group} by {owner}" : "{owner} 共享给您及 {group} 分组",
"Shared with you and {circle} by {owner}" : "{owner} 共享给您及 {circle}",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} 共享给您及对话 {conversation}",
- "Shared with you by {owner}" : "{owner} 分享给您",
- "Choose a password for the mail share" : "为电子邮件分享选择一个密码",
+ "Shared with you by {owner}" : "{owner} 共享给您",
+ "Choose a password for the mail share" : "为电子邮件共享选择一个密码",
"group" : "群组",
"remote" : "外部",
"remote group" : "远程群组",
"email" : "邮件",
- "shared by {sharer}" : "由 {sharer} 分享",
+ "shared by {sharer}" : "由 {sharer} 共享",
"Unshare" : "取消共享",
- "Can reshare" : "可以再次分享",
+ "Can reshare" : "可以再次共享",
"Can edit" : "可以编辑",
"Can create" : "可以创建",
"Can change" : "可以修改",
@@ -177,7 +183,7 @@ OC.L10N.register(
"Access control" : "访问控制",
"Could not unshare" : "无法共享",
"Error while sharing" : "共享时出错",
- "Share details could not be loaded for this item." : "无法加载这个项目的分享详情.",
+ "Share details could not be loaded for this item." : "无法加载这个项目的共享详情.",
"_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["{count}字符需要自动完成"],
"This list is maybe truncated - please refine your search term to see more results." : "此列表可能会被截断 - 请缩短您的搜索词以查看更多结果.",
"No users or groups found for {search}" : "{search} 条件下没有找到用户或用户组",
@@ -188,13 +194,13 @@ OC.L10N.register(
"{sharee} (remote)" : "{sharee} (外部)",
"{sharee} (email)" : "{sharee} (邮件)",
"{sharee} ({type}, {owner})" : "{share}({type},{owner})",
- "Share" : "分享",
+ "Share" : "共享",
"Name or email address..." : "姓名或电子邮件地址...",
"Name or federated cloud ID..." : "姓名或联合云 ID...",
"Name, federated cloud ID or email address..." : "姓名, 联合云 ID 或电子邮件地址...",
"Name..." : "名称...",
"Error" : "错误",
- "Error removing share" : "移除分享时出错",
+ "Error removing share" : "移除共享时出错",
"Non-existing tag #{tag}" : "标签 #{tag} 不存在",
"restricted" : "受限",
"invisible" : "不可见",
@@ -338,13 +344,13 @@ OC.L10N.register(
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP 请求头 \"{header}\" 没有配置为 \"{expected}\". 这是一个潜在的安全或隐私风险, 我们建议您调整这项设置.",
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "HTTP 请求头 \"Strict-Transport-Security\" 没有配置为至少 “{seconds}” 秒. 出于增强安全性考虑, 我们推荐按照<a href=\"{docUrl}\" rel=\"noreferrer\">安全提示</a>中的说明启用 HSTS.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "您正在通过 HTTP 访问该站点, 我们强烈建议您按照<a href=\"{docUrl}\">安全提示</a>中的说明配置服务器强制使用 HTTPS.",
- "Shared with {recipients}" : "由 {recipients} 分享",
+ "Shared with {recipients}" : "由 {recipients} 共享",
"Error setting expiration date" : "设置过期日期时出错",
"The public link will expire no later than {days} days after it is created" : "该共享链接将在创建后 {days} 天失效",
- "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 通过链接分享",
- "Share with other people by entering a user or group, a federated cloud ID or an email address." : "通过输入用户或组,联合云ID或电子邮件地址与其他人分享。",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 通过链接共享",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "通过输入用户或组,联合云ID或电子邮件地址与其他人共享。",
"Share with other people by entering a user or group or a federated cloud ID." : "通过输入用户或组或联合云ID与其他人共享。",
- "Share with other people by entering a user or group or an email address." : "输入用户/组织或邮箱地址来分享给其他人.",
+ "Share with other people by entering a user or group or an email address." : "输入用户/组织或邮箱地址来共享给其他人.",
"The specified document has not been found on the server." : "在服务器上没找到指定的文件.",
"You can click here to return to %s." : "你可以点击这里返回 %s.",
"The server encountered an internal error and was unable to complete your request." : "服务器发生一个内部错误并且无法完成你的请求.",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index a0e63f286a2..b4906398e39 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "已检查%s应用的是否有更新",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "检查 %s 的数据库结构是否可以更新 (这可能需要很长的时间, 这取决于数据库大小)",
"Checked database schema update for apps" : "已经检查应用的数据库结构更新",
+ "Updated \"%1$s\" to %2$s" : "已更新 “%1$s” 到 %2$s",
"Set log level to debug" : "设置日志级别为 调试",
"Reset log level" : "重设日志级别",
"Starting code integrity check" : "开始代码完整性检查",
@@ -103,6 +104,7 @@
"Pending" : "等待",
"Copy to {folder}" : "复制{文件夹}",
"Move to {folder}" : "移动{文件夹}",
+ "New in" : "新品",
"View changelog" : "查看更新记录",
"Very weak password" : "非常弱的密码",
"Weak password" : "弱密码",
@@ -113,6 +115,11 @@
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "您的网页服务器未正确设置以解析“{url}”。更多信息请参见<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">文档</a>。",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP的安装似乎不正确,无法访问系统环境变量。getenv(\"PATH\")函数测试返回了一个空值。",
"Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "请参照<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">安装说明文档 ↗</a>中的PHP配置说明查阅您服务器的PHP配置信息,特别是在使用php-fpm时。",
+ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "只读配置已启用。这可以在浏览器界面保护配置。另外,每次更新时需手动赋予该文件写权限。",
+ "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "数据库没有运行在 \"READ COMMITTED\" 事务隔离级别。当多项操作同时执行时将产生问题。",
+ "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "未找到 PHP 的 \"fileinfo\" 模块。强烈推荐启用该模块,从而获得更好的 MIME 类型探测结果。",
+ "{name} below version {version} is installed, for stability and performance reasons it is recommended to update to a newer {name} version." : "{name} 已安装 {version} 版本,出于稳定和性能的考虑,建议更新到 {name} 版本。",
+ "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation ↗</a> for more information." : "已禁用事务性文件锁定,这可能在竞争条件下导致问题。在 config.php 中启用 \"filelocking.enabled\" 可以避免此问题。详情查阅 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">文档 ↗</a>。",
"Check the background job settings" : "请检查后台任务设置",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "此服务器没有可用的互联网连接:多个节点无法访问。这意味着某些功能比如挂载外部存储,更新通知以及安装第三方应用将无法工作。远程访问文件和发送通知邮件可能也不工作。启用这台服务器上的互联网连接以享用所有功能。",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">文档</a>。",
@@ -130,7 +137,6 @@
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "您的数据目录和文件可以从互联网直接访问。.htaccess 文件不起作用。强烈建议您配置 Web 服务器,以便数据目录不再可访问,或者你可以将数据目录移动到 Web 服务器文档根目录。",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP 请求头 \"{header}\" 没有配置为 \"{expected}\"。这是一个潜在的安全或隐私风险, 我们建议您调整这项设置.",
"The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP 请求头 \"{header}\" 没有配置为 \"{expected}\"。某些功能可能无法正常工作,因此建议相应地调整此设置。",
- "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". This can leak referer information. See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C Recommendation ↗</a>." : "HTTP的请求头 \"{header}\" 未设置为 \"{val1}\", \"{val2}\", \"{val3}\" or \"{val4}\". 这会导致信息泄露. 请查阅 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{link}\">W3C 建议↗</a>",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>." : "HTTP的请求头 \"Strict-Transport-Security\" 未设置为至少 \"{seconds}\" 秒. 为了提高安全性,建议参照<a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips ↗</a>中的说明启用HSTS.",
"Shared" : "已共享",
"Shared with" : "共享给",
@@ -142,7 +148,7 @@
"Press ⌘-C to copy." : "按 ⌘ + C 进行复制.",
"Press Ctrl-C to copy." : "按 Ctrl + C 进行复制.",
"Resharing is not allowed" : "不允许二次共享",
- "Share to {name}" : "分享给{name}",
+ "Share to {name}" : "共享给{name}",
"Link" : "链接",
"Password protect" : "密码保护",
"Allow editing" : "允许编辑",
@@ -154,20 +160,20 @@
"Set expiration date" : "设置过期日期",
"Expiration" : "过期",
"Expiration date" : "过期日期",
- "Share link" : "分享链接",
+ "Share link" : "共享链接",
"Enable" : "启用",
- "Shared with you and the group {group} by {owner}" : "{owner} 分享给您及 {group} 分组",
+ "Shared with you and the group {group} by {owner}" : "{owner} 共享给您及 {group} 分组",
"Shared with you and {circle} by {owner}" : "{owner} 共享给您及 {circle}",
"Shared with you and the conversation {conversation} by {owner}" : "{owner} 共享给您及对话 {conversation}",
- "Shared with you by {owner}" : "{owner} 分享给您",
- "Choose a password for the mail share" : "为电子邮件分享选择一个密码",
+ "Shared with you by {owner}" : "{owner} 共享给您",
+ "Choose a password for the mail share" : "为电子邮件共享选择一个密码",
"group" : "群组",
"remote" : "外部",
"remote group" : "远程群组",
"email" : "邮件",
- "shared by {sharer}" : "由 {sharer} 分享",
+ "shared by {sharer}" : "由 {sharer} 共享",
"Unshare" : "取消共享",
- "Can reshare" : "可以再次分享",
+ "Can reshare" : "可以再次共享",
"Can edit" : "可以编辑",
"Can create" : "可以创建",
"Can change" : "可以修改",
@@ -175,7 +181,7 @@
"Access control" : "访问控制",
"Could not unshare" : "无法共享",
"Error while sharing" : "共享时出错",
- "Share details could not be loaded for this item." : "无法加载这个项目的分享详情.",
+ "Share details could not be loaded for this item." : "无法加载这个项目的共享详情.",
"_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["{count}字符需要自动完成"],
"This list is maybe truncated - please refine your search term to see more results." : "此列表可能会被截断 - 请缩短您的搜索词以查看更多结果.",
"No users or groups found for {search}" : "{search} 条件下没有找到用户或用户组",
@@ -186,13 +192,13 @@
"{sharee} (remote)" : "{sharee} (外部)",
"{sharee} (email)" : "{sharee} (邮件)",
"{sharee} ({type}, {owner})" : "{share}({type},{owner})",
- "Share" : "分享",
+ "Share" : "共享",
"Name or email address..." : "姓名或电子邮件地址...",
"Name or federated cloud ID..." : "姓名或联合云 ID...",
"Name, federated cloud ID or email address..." : "姓名, 联合云 ID 或电子邮件地址...",
"Name..." : "名称...",
"Error" : "错误",
- "Error removing share" : "移除分享时出错",
+ "Error removing share" : "移除共享时出错",
"Non-existing tag #{tag}" : "标签 #{tag} 不存在",
"restricted" : "受限",
"invisible" : "不可见",
@@ -336,13 +342,13 @@
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP 请求头 \"{header}\" 没有配置为 \"{expected}\". 这是一个潜在的安全或隐私风险, 我们建议您调整这项设置.",
"The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "HTTP 请求头 \"Strict-Transport-Security\" 没有配置为至少 “{seconds}” 秒. 出于增强安全性考虑, 我们推荐按照<a href=\"{docUrl}\" rel=\"noreferrer\">安全提示</a>中的说明启用 HSTS.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "您正在通过 HTTP 访问该站点, 我们强烈建议您按照<a href=\"{docUrl}\">安全提示</a>中的说明配置服务器强制使用 HTTPS.",
- "Shared with {recipients}" : "由 {recipients} 分享",
+ "Shared with {recipients}" : "由 {recipients} 共享",
"Error setting expiration date" : "设置过期日期时出错",
"The public link will expire no later than {days} days after it is created" : "该共享链接将在创建后 {days} 天失效",
- "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 通过链接分享",
- "Share with other people by entering a user or group, a federated cloud ID or an email address." : "通过输入用户或组,联合云ID或电子邮件地址与其他人分享。",
+ "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 通过链接共享",
+ "Share with other people by entering a user or group, a federated cloud ID or an email address." : "通过输入用户或组,联合云ID或电子邮件地址与其他人共享。",
"Share with other people by entering a user or group or a federated cloud ID." : "通过输入用户或组或联合云ID与其他人共享。",
- "Share with other people by entering a user or group or an email address." : "输入用户/组织或邮箱地址来分享给其他人.",
+ "Share with other people by entering a user or group or an email address." : "输入用户/组织或邮箱地址来共享给其他人.",
"The specified document has not been found on the server." : "在服务器上没找到指定的文件.",
"You can click here to return to %s." : "你可以点击这里返回 %s.",
"The server encountered an internal error and was unable to complete your request." : "服务器发生一个内部错误并且无法完成你的请求.",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 795deaad540..9f5c99afa04 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Checked for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "檢查 %s 是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)",
"Checked database schema update for apps" : "已檢查應用程式的資料庫格式更新",
+ "Updated \"%1$s\" to %2$s" : "已從 %1$s 更新至 %2$s",
"Set log level to debug" : "設定紀錄變成除錯層級",
"Reset log level" : "重設記錄層級",
"Starting code integrity check" : "開始檢查程式碼完整性",
@@ -114,6 +115,14 @@ OC.L10N.register(
"Strong password" : "密碼強度極佳",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面似乎是故障的",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "您的網頁伺服器設定不正確,因此無法解析 \"{url}\" ,請至<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">說明文件</a>瞭解更多資訊。",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 設定似乎不完整,導致無法正確取得系統環境變數,因為偵測到 getenv(\"PATH\") 回傳資料為空值",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "請您參考 <a target=\\\"_blank\\\" href=\\\"%s\\\">安裝說明 ↗</a> 來設定 PHP ,尤其如果您使用 php-fpm。",
+ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "「唯讀設定檔」已經啟用,這樣可以防止來自網頁端的設定操作,每次需要更改設定時,都需要手動將設定檔暫時改為可讀寫。",
+ "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "未偵測到 PHP 模組 'fileinfo'。我們強烈建議啟用這個模組以取得最好的 MIME 檔案類型偵測支援。",
+ "{name} below version {version} is installed, for stability and performance reasons it is recommended to update to a newer {name} version." : "偵測到目前安裝的 {name} 低於版本 {version},為了更好的穩定性及效能,建議升級到較新的 {name} 版本。",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : " 無法透過 CLI 來執行排程工作,發生以下技術性錯誤:",
+ "Last background job execution ran {relativeTime}. Something seems wrong." : "上次背景工作是於 {relativeTime} 前執行,似乎很久沒有執行了,有點問題",
+ "Check the background job settings" : "請檢查背景工作的設定",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "伺服器沒有網際網路連線(無法與多個端點取得聯繫),有些功能,像是外部儲存、應用程式更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "您沒有設定記憶體快取 (memcache),如果可以,請完成設定來提升效能。更多資訊請查閱<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">說明文件</a>",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "您目前正運行 PHP {version} ,我們建議您升級 PHP 到您的發行版所支援的最新版本,以獲得 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">PHP 開發團隊提供的效能與安全性更新</a>。",
@@ -139,6 +148,7 @@ OC.L10N.register(
"Press Ctrl-C to copy." : "按下 Ctrl-C 來複製",
"Resharing is not allowed" : "不允許重新分享",
"Share to {name}" : "分享給 {name}",
+ "Copy link" : "複製連結",
"Link" : "連結",
"Password protect" : "密碼保護",
"Allow editing" : "允許編輯",
@@ -173,6 +183,7 @@ OC.L10N.register(
"Can delete" : "允許刪除",
"Password protect by Talk" : "密碼受 Talk 保護",
"Access control" : "存取控制",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} 分享了連結",
"Could not unshare" : "無法取消分享",
"Error while sharing" : "分享時發生錯誤",
"Share details could not be loaded for this item." : "無法載入分享細節",
@@ -229,6 +240,8 @@ OC.L10N.register(
"Help" : "說明",
"Access forbidden" : "存取被拒",
"File not found" : "找不到檔案",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "伺服器上找不到該文件,或許這個分享已經被刪除或是過期了?",
+ "Back to %s" : "回到 %s",
"Internal Server Error" : "內部伺服器錯誤",
"The server was unable to complete your request." : "伺服器無法完成你的請求。",
"If this happens again, please send the technical details below to the server administrator." : "如果此問題重複發生,請寄送技術資訊給管理員。",
@@ -290,16 +303,19 @@ OC.L10N.register(
"Forgot password?" : "忘記密碼?",
"Back to login" : "回到登入畫面",
"Connect to your account" : "連結你的帳號",
+ "Please log in before granting %1$s access to your %2$s account." : "請登入後再授權「%1$s」存取您的 %2$s 帳號",
"App token" : "App token",
"Grant access" : "允許存取",
"Alternative log in using app token" : "使用應用程式 token 來登入",
"Account access" : "帳戶存取",
+ "You are about to grant %1$s access to your %2$s account." : "您將授權「%1$s」存取您的 %2$s 帳戶",
"Redirecting …" : "重新導向…",
"New password" : "新密碼",
"New Password" : "新密碼",
"This share is password-protected" : "此分享受密碼保護",
"The password is wrong. Try again." : "密碼錯誤,請重試",
"Two-factor authentication" : "二階段認證",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "您的帳號已啟用進階安全機制,請選擇一個兩步驗證方法:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "無法載入任何一個二階認證方法,請聯絡管理員",
"Use backup code" : "使用備用認證碼",
"Cancel log in" : "取消登入",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 3505fd09534..de6369a654c 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -44,6 +44,7 @@
"Checked for update of app \"%s\" in appstore" : "從應用商店檢查 \"%s\" 的更新",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "檢查 %s 是否有可更新的資料庫格式(若資料庫較大,可能需要一段時間)",
"Checked database schema update for apps" : "已檢查應用程式的資料庫格式更新",
+ "Updated \"%1$s\" to %2$s" : "已從 %1$s 更新至 %2$s",
"Set log level to debug" : "設定紀錄變成除錯層級",
"Reset log level" : "重設記錄層級",
"Starting code integrity check" : "開始檢查程式碼完整性",
@@ -112,6 +113,14 @@
"Strong password" : "密碼強度極佳",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面似乎是故障的",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "您的網頁伺服器設定不正確,因此無法解析 \"{url}\" ,請至<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">說明文件</a>瞭解更多資訊。",
+ "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP 設定似乎不完整,導致無法正確取得系統環境變數,因為偵測到 getenv(\"PATH\") 回傳資料為空值",
+ "Please check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">installation documentation ↗</a> for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "請您參考 <a target=\\\"_blank\\\" href=\\\"%s\\\">安裝說明 ↗</a> 來設定 PHP ,尤其如果您使用 php-fpm。",
+ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "「唯讀設定檔」已經啟用,這樣可以防止來自網頁端的設定操作,每次需要更改設定時,都需要手動將設定檔暫時改為可讀寫。",
+ "The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "未偵測到 PHP 模組 'fileinfo'。我們強烈建議啟用這個模組以取得最好的 MIME 檔案類型偵測支援。",
+ "{name} below version {version} is installed, for stability and performance reasons it is recommended to update to a newer {name} version." : "偵測到目前安裝的 {name} 低於版本 {version},為了更好的穩定性及效能,建議升級到較新的 {name} 版本。",
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : " 無法透過 CLI 來執行排程工作,發生以下技術性錯誤:",
+ "Last background job execution ran {relativeTime}. Something seems wrong." : "上次背景工作是於 {relativeTime} 前執行,似乎很久沒有執行了,有點問題",
+ "Check the background job settings" : "請檢查背景工作的設定",
"This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "伺服器沒有網際網路連線(無法與多個端點取得聯繫),有些功能,像是外部儲存、應用程式更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。",
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "您沒有設定記憶體快取 (memcache),如果可以,請完成設定來提升效能。更多資訊請查閱<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">說明文件</a>",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "您目前正運行 PHP {version} ,我們建議您升級 PHP 到您的發行版所支援的最新版本,以獲得 <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">PHP 開發團隊提供的效能與安全性更新</a>。",
@@ -137,6 +146,7 @@
"Press Ctrl-C to copy." : "按下 Ctrl-C 來複製",
"Resharing is not allowed" : "不允許重新分享",
"Share to {name}" : "分享給 {name}",
+ "Copy link" : "複製連結",
"Link" : "連結",
"Password protect" : "密碼保護",
"Allow editing" : "允許編輯",
@@ -171,6 +181,7 @@
"Can delete" : "允許刪除",
"Password protect by Talk" : "密碼受 Talk 保護",
"Access control" : "存取控制",
+ "{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} 分享了連結",
"Could not unshare" : "無法取消分享",
"Error while sharing" : "分享時發生錯誤",
"Share details could not be loaded for this item." : "無法載入分享細節",
@@ -227,6 +238,8 @@
"Help" : "說明",
"Access forbidden" : "存取被拒",
"File not found" : "找不到檔案",
+ "The document could not be found on the server. Maybe the share was deleted or has expired?" : "伺服器上找不到該文件,或許這個分享已經被刪除或是過期了?",
+ "Back to %s" : "回到 %s",
"Internal Server Error" : "內部伺服器錯誤",
"The server was unable to complete your request." : "伺服器無法完成你的請求。",
"If this happens again, please send the technical details below to the server administrator." : "如果此問題重複發生,請寄送技術資訊給管理員。",
@@ -288,16 +301,19 @@
"Forgot password?" : "忘記密碼?",
"Back to login" : "回到登入畫面",
"Connect to your account" : "連結你的帳號",
+ "Please log in before granting %1$s access to your %2$s account." : "請登入後再授權「%1$s」存取您的 %2$s 帳號",
"App token" : "App token",
"Grant access" : "允許存取",
"Alternative log in using app token" : "使用應用程式 token 來登入",
"Account access" : "帳戶存取",
+ "You are about to grant %1$s access to your %2$s account." : "您將授權「%1$s」存取您的 %2$s 帳戶",
"Redirecting …" : "重新導向…",
"New password" : "新密碼",
"New Password" : "新密碼",
"This share is password-protected" : "此分享受密碼保護",
"The password is wrong. Try again." : "密碼錯誤,請重試",
"Two-factor authentication" : "二階段認證",
+ "Enhanced security is enabled for your account. Choose a second factor for authentication:" : "您的帳號已啟用進階安全機制,請選擇一個兩步驗證方法:",
"Could not load at least one of your enabled two-factor auth methods. Please contact your admin." : "無法載入任何一個二階認證方法,請聯絡管理員",
"Use backup code" : "使用備用認證碼",
"Cancel log in" : "取消登入",
diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html
index 215311348cb..4c66dfc707b 100644
--- a/core/templates/filepicker.html
+++ b/core/templates/filepicker.html
@@ -1,11 +1,13 @@
<div id="{dialog_name}" title="{title}">
<span class="dirtree breadcrumb"></span>
+ <input type="checkbox" class="hidden-visually" id="picker-showgridview" checked="checked" />
+ <label id="picker-view-toggle" for="picker-showgridview" class="button icon-toggle-filelist"></label>
<div class="filelist-container">
<div class="emptycontent">
<div class="icon-folder"></div>
<h2>{emptytext}</h2>
</div>
- <table id="filestable" class="filelist">
+ <table id="filestable" class="filelist list-container view-grid">
<tbody>
<tr data-entryname="{filename}" data-type="{type}">
<td class="filename"
diff --git a/lib/l10n/bg.js b/lib/l10n/bg.js
index 11b86a3e086..0ea8ca28604 100644
--- a/lib/l10n/bg.js
+++ b/lib/l10n/bg.js
@@ -38,6 +38,7 @@ OC.L10N.register(
"Log out" : "Отписване",
"Users" : "Потребители",
"Unknown user" : "Непознат потребител",
+ "Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Security" : "Сигурност",
"Additional settings" : "Допълнителни настройки",
diff --git a/lib/l10n/bg.json b/lib/l10n/bg.json
index 7260e20da54..1ba1f3740df 100644
--- a/lib/l10n/bg.json
+++ b/lib/l10n/bg.json
@@ -36,6 +36,7 @@
"Log out" : "Отписване",
"Users" : "Потребители",
"Unknown user" : "Непознат потребител",
+ "Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Security" : "Сигурност",
"Additional settings" : "Допълнителни настройки",
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 6d7f52fdfa1..66dba45d6c6 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
"The command line tool %s could not be found" : "Nástroj příkazového řádku %s nebyl nalezen",
"The library %s is not available." : "Knihovna %s není dostupná.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s novější verze než %2$s – verze k dispozici je %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s verzi nižší než %2$s – dostupná verze %3$s.",
"Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
"Server version %s or higher is required." : "Je potřeba verze serveru %s nebo vyšší.",
"Server version %s or lower is required." : "Je potřeba verze serveru %s nebo nižší.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Sdílení %s se nezdařilo, protože soubor neexistuje",
"You are not allowed to share %s" : "Nemáte povoleno sdílet %s",
"Sharing %s failed, because you can not share with yourself" : "Sdílení %s se nezdařilo, protože nemůžete sdílet sami se sebou",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože uživatel %2$s neexistuje",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sdílení položky %1$s se nezdařilo, protože uživatel %2$s není členem žádné skupiny společné s uživatelem %3$s",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sdílení položky %1$s se nezdařilo, protože ta je už s uživatelem %2$s sdílena",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože skupina %2$s neexistuje",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sdílení %1$s se nezdařilo, protože %2$s není členem skupiny %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
"Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
"Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sdílení %1$s se nezdařilo, %2$s se nedaří nalézt, možná je server v tuto chvíli nedostupný.",
+ "Share type %1$s is not valid for %2$s" : "Typ sdílení %1$s není platné pro %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
"Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Úložiště pro sdílení %s musí implementovat rozhraní OCP\\Share_Backend",
"Sharing backend %s not found" : "Úložiště sdílení %s nenalezeno",
"Sharing backend for %s not found" : "Úložiště sdílení pro %s nenalezeno",
"Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sdílení položky %1$s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %2$s povolena.",
"Sharing %s failed, because resharing is not allowed" : "Sdílení položky %s se nezdařilo, protože znovu-sdílení není povoleno",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj",
"Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření",
"Expiration date is in the past" : "Datum skončení platnosti je v minulosti",
"Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu",
+ "%1$s shared »%2$s« with you" : "%1$s s vámi sdílí „%2$s“",
+ "%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Nepodařilo se vytvořit uživatele",
"User disabled" : "Uživatel zakázán",
"Login canceled by app" : "Přihlášení zrušeno aplikací",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Aplikaci „%1$s“ nelze nainstalovat, protože nejsou splněny následující závislosti: %2$s",
"a safe home for all your data" : "bezpečný domov pro všechna vaše data",
"File is currently busy, please try again later" : "Soubor je používán, zkuste to později",
"Can't read file" : "Nelze přečíst soubor",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Akce „%s“ není podporována nebo implementována.",
"Authentication failed, wrong token or provider ID given" : "Ověření se nezdařilo, předán chybný token nebo identifikátor poskytovatele",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Pro dokončení požadavku chybí parametry. Konkrétně: „%s“",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "Identifikátor „%1$s“ už je používán poskytovatelem federování cloudu „%2$s“",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Poskytovatel sdružování cloudů s identifikátorem: „%s“ neexistuje",
"Could not obtain lock type %d on \"%s\"." : "Nedaří získat zámek typu %d na „%s“.",
"Storage unauthorized. %s" : "Úložiště neověřeno. %s",
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index cb1975ddcbb..2315a95ac6f 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
"The command line tool %s could not be found" : "Nástroj příkazového řádku %s nebyl nalezen",
"The library %s is not available." : "Knihovna %s není dostupná.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s novější verze než %2$s – verze k dispozici je %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s verzi nižší než %2$s – dostupná verze %3$s.",
"Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
"Server version %s or higher is required." : "Je potřeba verze serveru %s nebo vyšší.",
"Server version %s or lower is required." : "Je potřeba verze serveru %s nebo nižší.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Sdílení %s se nezdařilo, protože soubor neexistuje",
"You are not allowed to share %s" : "Nemáte povoleno sdílet %s",
"Sharing %s failed, because you can not share with yourself" : "Sdílení %s se nezdařilo, protože nemůžete sdílet sami se sebou",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože uživatel %2$s neexistuje",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sdílení položky %1$s se nezdařilo, protože uživatel %2$s není členem žádné skupiny společné s uživatelem %3$s",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sdílení položky %1$s se nezdařilo, protože ta je už s uživatelem %2$s sdílena",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože skupina %2$s neexistuje",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sdílení %1$s se nezdařilo, protože %2$s není členem skupiny %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
"Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
"Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sdílení %1$s se nezdařilo, %2$s se nedaří nalézt, možná je server v tuto chvíli nedostupný.",
+ "Share type %1$s is not valid for %2$s" : "Typ sdílení %1$s není platné pro %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
"Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Úložiště pro sdílení %s musí implementovat rozhraní OCP\\Share_Backend",
"Sharing backend %s not found" : "Úložiště sdílení %s nenalezeno",
"Sharing backend for %s not found" : "Úložiště sdílení pro %s nenalezeno",
"Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sdílení položky %1$s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %2$s povolena.",
"Sharing %s failed, because resharing is not allowed" : "Sdílení položky %s se nezdařilo, protože znovu-sdílení není povoleno",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj",
"Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s vám nasdílel(a) „%2$s“ a chce přidat",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Soubory nelze sdílet s oprávněními k vytváření",
"Expiration date is in the past" : "Datum skončení platnosti je v minulosti",
"Can’t set expiration date more than %s days in the future" : "Nelze nastavit datum vypršení platnosti více než %s dní v budoucnu",
+ "%1$s shared »%2$s« with you" : "%1$s s vámi sdílí „%2$s“",
+ "%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
@@ -178,6 +192,7 @@
"Could not create user" : "Nepodařilo se vytvořit uživatele",
"User disabled" : "Uživatel zakázán",
"Login canceled by app" : "Přihlášení zrušeno aplikací",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Aplikaci „%1$s“ nelze nainstalovat, protože nejsou splněny následující závislosti: %2$s",
"a safe home for all your data" : "bezpečný domov pro všechna vaše data",
"File is currently busy, please try again later" : "Soubor je používán, zkuste to později",
"Can't read file" : "Nelze přečíst soubor",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Akce „%s“ není podporována nebo implementována.",
"Authentication failed, wrong token or provider ID given" : "Ověření se nezdařilo, předán chybný token nebo identifikátor poskytovatele",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Pro dokončení požadavku chybí parametry. Konkrétně: „%s“",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "Identifikátor „%1$s“ už je používán poskytovatelem federování cloudu „%2$s“",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Poskytovatel sdružování cloudů s identifikátorem: „%s“ neexistuje",
"Could not obtain lock type %d on \"%s\"." : "Nedaří získat zámek typu %d na „%s“.",
"Storage unauthorized. %s" : "Úložiště neověřeno. %s",
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index efbdc6d2284..6e8acb590d4 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"You are not allowed to share %s" : "Die Freigabe von %s ist Dir nicht erlaubt",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da du nichts mit dir selbst teilen kannst",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
+ "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
"Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Freigabe-Backend %s muss in der OCP\\Share_Backend - Schnittstelle implementiert werden",
"Sharing backend %s not found" : "Freigabe-Backend %s nicht gefunden",
"Sharing backend for %s not found" : "Freigabe-Backend für %s nicht gefunden",
"Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %2$s überschreiten",
"Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
"Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
"%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s«  mit Dir geteilt und möchte folgendes hinzufügen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Benutzer konnte nicht erstellt werden",
"User disabled" : "Nutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Deine Daten",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte versuche es später noch einmal",
"Can't read file" : "Datei kann nicht gelesen werden",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Aktion \"%s\" wird nicht unterstützt oder ist nicht implementiert.",
"Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder Provider-ID wurde übertragen.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
"Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index ec4bbd0f053..f0390dcebdb 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"You are not allowed to share %s" : "Die Freigabe von %s ist Dir nicht erlaubt",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da du nichts mit dir selbst teilen kannst",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
+ "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
"Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Freigabe-Backend %s muss in der OCP\\Share_Backend - Schnittstelle implementiert werden",
"Sharing backend %s not found" : "Freigabe-Backend %s nicht gefunden",
"Sharing backend for %s not found" : "Freigabe-Backend für %s nicht gefunden",
"Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %2$s überschreiten",
"Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
"Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
"%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s«  mit Dir geteilt und möchte folgendes hinzufügen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
@@ -178,6 +192,7 @@
"Could not create user" : "Benutzer konnte nicht erstellt werden",
"User disabled" : "Nutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Deine Daten",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte versuche es später noch einmal",
"Can't read file" : "Datei kann nicht gelesen werden",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Aktion \"%s\" wird nicht unterstützt oder ist nicht implementiert.",
"Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder Provider-ID wurde übertragen.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
"Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index 667723d6c2a..5099b69a4a6 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
@@ -102,19 +104,29 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"You are not allowed to share %s" : "Die Freigabe von %s ist Ihnen nicht erlaubt",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da das Teilen mit sich selbst nicht möglich ist",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
+ "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
"Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Freigabe-Backend %s muss in der OCP\\Share_Backend - Schnittstelle implementiert werden",
"Sharing backend %s not found" : "Freigabe-Backend %s nicht gefunden",
"Sharing backend for %s not found" : "Freigabe-Backend für %s nicht gefunden",
"Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen von %2$s überschreiten",
"Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
"Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
- "%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
"»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Ihnen geteilten Datei hinzugefügt",
"Open »%s«" : "»%s« öffnen",
"%1$s via %2$s" : "%1$s über%2$s",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Ihnen geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Benutzer konnte nicht erstellt werden",
"User disabled" : "Nutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Ihre Daten",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte versuchen Sie es später noch einmal",
"Can't read file" : "Datei kann nicht gelesen werden",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Aktion \"%s\" wird nicht unterstützt oder ist nicht implementiert.",
"Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder Provider-ID wurde übertragen.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet.",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
"Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 1f1ab3f062e..06445e592d0 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
@@ -100,19 +102,29 @@
"Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
"You are not allowed to share %s" : "Die Freigabe von %s ist Ihnen nicht erlaubt",
"Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da das Teilen mit sich selbst nicht möglich ist",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
"Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
+ "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
"Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Freigabe-Backend %s muss in der OCP\\Share_Backend - Schnittstelle implementiert werden",
"Sharing backend %s not found" : "Freigabe-Backend %s nicht gefunden",
"Sharing backend for %s not found" : "Freigabe-Backend für %s nicht gefunden",
"Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen von %2$s überschreiten",
"Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
"Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte",
- "%1$s shared »%2$s« with you and wants to add:" : "%1$shat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
- "%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat » %2$s« mit Ihnen geteilt und möchte folgendes hinzufügen:",
+ "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen",
"»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Ihnen geteilten Datei hinzugefügt",
"Open »%s«" : "»%s« öffnen",
"%1$s via %2$s" : "%1$s über%2$s",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Dateien mit Erstell-Berechtigungen können nicht geteilt werden",
"Expiration date is in the past" : "Das Ablaufdatum liegt in der Vergangenheit.",
"Can’t set expiration date more than %s days in the future" : "Das Ablaufdatum kann nicht mehr als %s Tage in die Zukunft liegen",
+ "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Ihnen geteilt",
+ "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
@@ -178,6 +192,7 @@
"Could not create user" : "Benutzer konnte nicht erstellt werden",
"User disabled" : "Nutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Ihre Daten",
"File is currently busy, please try again later" : "Die Datei ist in Benutzung, bitte versuchen Sie es später noch einmal",
"Can't read file" : "Datei kann nicht gelesen werden",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Aktion \"%s\" wird nicht unterstützt oder ist nicht implementiert.",
"Authentication failed, wrong token or provider ID given" : "Authentifizierung ist fehlgeschlagen. Falsches Token oder Provider-ID wurde übertragen.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Es fehlen Parameter um die Anfrage zu bearbeiten. Fehlende Parameter: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet.",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
"Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 65b2c4f1a31..a802139ea1f 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No se encontró la herramienta %s de línea de comandos",
"The library %s is not available." : "La biblioteca %s no está disponible",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Se requiere la biblioteca %1$s con una versión mayor que %2$s. Está disponible la versión %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Se requiera la biblioteca %1$s con una versión menor que %2$s. Está disponible la versión %3$s.",
"Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se necesita la versión %s o superior del servidor.",
"Server version %s or lower is required." : "Se necesita la versión %s o inferior del servidor. ",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe",
"You are not allowed to share %s" : "Usted no está autorizado para compartir %s",
"Sharing %s failed, because you can not share with yourself" : "Fallo al compartir %s, porque no puedes compartir contigo mismo",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Fallo al compartir %1$s porque el usuario %2$s no existe.",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallo al compartir %1$s porque el usuario %2$s no es miembro de ninguno de los grupos de los que %3$s es miembro",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con el usuario %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Fallo al compartir %1$s porque el grupo %2$s no existe",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallo al compartir %1$s porque %2$s no es miembro del grupo %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
"Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
"Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallo al compartir %1$s, no se ha podido encontrar %2$s, quizás no se puede alcanzar ahora el servidor.",
+ "Share type %1$s is not valid for %2$s" : "El tipo de recurso compartido %1$s no es válido para %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend",
"Sharing backend %s not found" : "El motor compartido %s no se ha encontrado",
"Sharing backend for %s not found" : "Motor compartido para %s no encontrado",
"Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallo al compartir %1$s porque los permisos exceden los permisos concedidos a %2$s",
"Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen",
"Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha compartido «%2$s» contigo y quiere añadir:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha compartido «%2$s» contigo y quiere añadir",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
"Expiration date is in the past" : "Ha pasado la fecha de caducidad",
"Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro",
+ "%1$s shared »%2$s« with you" : "%1$s ha compartido «%2$s» contigo",
+ "%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "No se ha podido crear el usuario",
"User disabled" : "Usuario deshabilitado",
"Login canceled by app" : "Login cancelado por la app",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "No se ha podido instlaar la app «%1$s» porque no se cumplen las siguientes dependencias: %2$s",
"a safe home for all your data" : "un hogar seguro para todos tus datos",
"File is currently busy, please try again later" : "El archivo se encuentra actualmente ocupado, por favor inténtelo de nuevo más tarde",
"Can't read file" : "No se puede leer archivo",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "La acción \"%s\" no está soportada o implementada.",
"Authentication failed, wrong token or provider ID given" : "La autenticación ha fallado. Se ha dado un token o una ID de proveedor erróneos.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Faltan parámetros para completar la petición. Parámetros que faltan: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "La ID «%1$s» ya está siendo usada por el proveedor de federación en la nube «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "El proveedor de nube federada con ID \"%s\" no existe.",
"Could not obtain lock type %d on \"%s\"." : "No se pudo realizar el bloqueo %d en \"%s\".",
"Storage unauthorized. %s" : "Almacenamiento no autorizado. %s",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index 00bb181cd12..c648953f40a 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No se encontró la herramienta %s de línea de comandos",
"The library %s is not available." : "La biblioteca %s no está disponible",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Se requiere la biblioteca %1$s con una versión mayor que %2$s. Está disponible la versión %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Se requiera la biblioteca %1$s con una versión menor que %2$s. Está disponible la versión %3$s.",
"Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se necesita la versión %s o superior del servidor.",
"Server version %s or lower is required." : "Se necesita la versión %s o inferior del servidor. ",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe",
"You are not allowed to share %s" : "Usted no está autorizado para compartir %s",
"Sharing %s failed, because you can not share with yourself" : "Fallo al compartir %s, porque no puedes compartir contigo mismo",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Fallo al compartir %1$s porque el usuario %2$s no existe.",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallo al compartir %1$s porque el usuario %2$s no es miembro de ninguno de los grupos de los que %3$s es miembro",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con el usuario %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Fallo al compartir %1$s porque el grupo %2$s no existe",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallo al compartir %1$s porque %2$s no es miembro del grupo %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
"Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
"Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallo al compartir %1$s, no se ha podido encontrar %2$s, quizás no se puede alcanzar ahora el servidor.",
+ "Share type %1$s is not valid for %2$s" : "El tipo de recurso compartido %1$s no es válido para %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
"Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend",
"Sharing backend %s not found" : "El motor compartido %s no se ha encontrado",
"Sharing backend for %s not found" : "Motor compartido para %s no encontrado",
"Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallo al compartir %1$s porque los permisos exceden los permisos concedidos a %2$s",
"Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen",
"Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha compartido «%2$s» contigo y quiere añadir:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha compartido «%2$s» contigo y quiere añadir",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
"Expiration date is in the past" : "Ha pasado la fecha de caducidad",
"Can’t set expiration date more than %s days in the future" : "No se puede establecer la fecha de expiración a más de %s días en el futuro",
+ "%1$s shared »%2$s« with you" : "%1$s ha compartido «%2$s» contigo",
+ "%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
@@ -178,6 +192,7 @@
"Could not create user" : "No se ha podido crear el usuario",
"User disabled" : "Usuario deshabilitado",
"Login canceled by app" : "Login cancelado por la app",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "No se ha podido instlaar la app «%1$s» porque no se cumplen las siguientes dependencias: %2$s",
"a safe home for all your data" : "un hogar seguro para todos tus datos",
"File is currently busy, please try again later" : "El archivo se encuentra actualmente ocupado, por favor inténtelo de nuevo más tarde",
"Can't read file" : "No se puede leer archivo",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "La acción \"%s\" no está soportada o implementada.",
"Authentication failed, wrong token or provider ID given" : "La autenticación ha fallado. Se ha dado un token o una ID de proveedor erróneos.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Faltan parámetros para completar la petición. Parámetros que faltan: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "La ID «%1$s» ya está siendo usada por el proveedor de federación en la nube «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "El proveedor de nube federada con ID \"%s\" no existe.",
"Could not obtain lock type %d on \"%s\"." : "No se pudo realizar el bloqueo %d en \"%s\".",
"Storage unauthorized. %s" : "Almacenamiento no autorizado. %s",
diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js
index 3d898b29663..01007363ac2 100644
--- a/lib/l10n/fi.js
+++ b/lib/l10n/fi.js
@@ -104,7 +104,10 @@ OC.L10N.register(
"Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista",
"Open »%s«" : "Avaa »%s«",
"Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä",
+ "%1$s shared »%2$s« with you" : "%1$s jakoi kohteen »%2$s« kanssasi",
+ "%1$s shared »%2$s« with you." : "%1$s jakoi kohteen »%2$s« kanssasi.",
"Click the button below to open it." : "Napsauta alla olevaa painiketta avataksesi sen.",
+ "The requested share does not exist anymore" : "Pyydettyä jakoa ei ole enää olemassa",
"Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt",
"Sunday" : "sunnuntai",
"Monday" : "maanantai",
@@ -160,6 +163,7 @@ OC.L10N.register(
"Could not create user" : "Ei voitu luoda käyttäjää",
"User disabled" : "Käyttäjä poistettu käytöstä",
"Login canceled by app" : "Kirjautuminen peruttiin sovelluksen toimesta",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Sovellusta \"%1$s\" ei voi asentaa, koska seuraavat riippuvuudet eivät täyty: %2$s",
"a safe home for all your data" : "turvallinen koti kaikille tiedostoillesi",
"File is currently busy, please try again later" : "Tiedosto on parhaillaan käytössä, yritä myöhemmin uudelleen",
"Can't read file" : "Tiedostoa ei voi lukea",
diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json
index 709ef1182da..5e6b85a8c38 100644
--- a/lib/l10n/fi.json
+++ b/lib/l10n/fi.json
@@ -102,7 +102,10 @@
"Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista",
"Open »%s«" : "Avaa »%s«",
"Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä",
+ "%1$s shared »%2$s« with you" : "%1$s jakoi kohteen »%2$s« kanssasi",
+ "%1$s shared »%2$s« with you." : "%1$s jakoi kohteen »%2$s« kanssasi.",
"Click the button below to open it." : "Napsauta alla olevaa painiketta avataksesi sen.",
+ "The requested share does not exist anymore" : "Pyydettyä jakoa ei ole enää olemassa",
"Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt",
"Sunday" : "sunnuntai",
"Monday" : "maanantai",
@@ -158,6 +161,7 @@
"Could not create user" : "Ei voitu luoda käyttäjää",
"User disabled" : "Käyttäjä poistettu käytöstä",
"Login canceled by app" : "Kirjautuminen peruttiin sovelluksen toimesta",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Sovellusta \"%1$s\" ei voi asentaa, koska seuraavat riippuvuudet eivät täyty: %2$s",
"a safe home for all your data" : "turvallinen koti kaikille tiedostoillesi",
"File is currently busy, please try again later" : "Tiedosto on parhaillaan käytössä, yritä myöhemmin uudelleen",
"Can't read file" : "Tiedostoa ei voi lukea",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index bf5cd42f3d2..c63abd9ebc6 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Les bases de données suivantes sont supportées : %s",
"The command line tool %s could not be found" : "La commande %s est introuvable",
"The library %s is not available." : "La librairie %s n'est pas disponible.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "La librairie %1$s doit être au moins à la version %2$s. Version disponible : %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "La librairie %1$s doit avoir une version antérieure à %2$s. Version disponible : %3$s.",
"Following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
"Server version %s or higher is required." : "Un serveur de version %s ou supérieure est requis.",
"Server version %s or lower is required." : "Un serveur de version %s ou inférieure est requis.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Le partage de %s a échoué car le fichier n'existe pas",
"You are not allowed to share %s" : "Vous n'êtes pas autorisé à partager %s",
"Sharing %s failed, because you can not share with yourself" : "Le partage de %s a échoué car vous ne pouvez pas partager avec vous-même",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'existe pas",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'est membre d'aucun groupe auquel %3$s appartient",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec l'utilisateur %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Le partage de %1$s a échoué car le groupe %2$s n'existe pas",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Le partage de %1$s a échoué car %2$s n'est pas membre du groupe %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
"Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Le partage de %1$s a échoué : impossible de trouver %2$s. Le serveur est peut-être momentanément injoignable.",
+ "Share type %1$s is not valid for %2$s" : "Le type de partage %1$s n'est pas valide pour %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
"Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Le service de partage %s doit implémenter l'interface OCP\\Share_Backend",
"Sharing backend %s not found" : "Service de partage %s non trouvé",
"Sharing backend for %s not found" : "Le service de partage pour %s est introuvable",
"Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Le partage de %1$s a échoué car les permissions dépassent celles accordées à %2$s",
"Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source..",
"Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache.",
"%1$s shared »%2$s« with you and wants to add:" : "%1$sa partagé \"%2$s\" avec vous et veut ajouter :",
"%1$s shared »%2$s« with you and wants to add" : "%1$sa partagé \"%2$s\" avec vous et veut ajouter",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création",
"Expiration date is in the past" : "La date d'expiration est dans le passé",
"Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur",
+ "%1$s shared »%2$s« with you" : "%1$s a partagé «%2$s» avec vous",
+ "%1$s shared »%2$s« with you." : "%1$s a partagé «%2$s» avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Impossible de créer l'utilisateur",
"User disabled" : "Utilisateur désactivé",
"Login canceled by app" : "L'authentification a été annulé par l'application",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "L'application \"%1$s\" ne peut pas être installée à cause des dépendances suivantes non satisfaites : %2$s",
"a safe home for all your data" : "un endroit sûr pour toutes vos données",
"File is currently busy, please try again later" : "Le fichier est actuellement utilisé, veuillez réessayer plus tard",
"Can't read file" : "Impossible de lire le fichier",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Action \"%s\" non supportée ou implémentée.",
"Authentication failed, wrong token or provider ID given" : "Échec de l'authentification, jeton erroné ou identification du fournisseur donnée",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Paramètres manquants pour compléter la requête. Paramètres manquants : \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "L'identifiant \"%1$s\" est déjà utilisé par le fournisseur de cloud \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Le fournisseur de cloud avec l'identifiant \"%s\" n'existe pas.",
"Could not obtain lock type %d on \"%s\"." : "Impossible d'obtenir le verrouillage de type %d sur \"%s\".",
"Storage unauthorized. %s" : "Espace de stockage non autorisé. %s",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 2279de44a30..0e5d53c4a66 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Les bases de données suivantes sont supportées : %s",
"The command line tool %s could not be found" : "La commande %s est introuvable",
"The library %s is not available." : "La librairie %s n'est pas disponible.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "La librairie %1$s doit être au moins à la version %2$s. Version disponible : %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "La librairie %1$s doit avoir une version antérieure à %2$s. Version disponible : %3$s.",
"Following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
"Server version %s or higher is required." : "Un serveur de version %s ou supérieure est requis.",
"Server version %s or lower is required." : "Un serveur de version %s ou inférieure est requis.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Le partage de %s a échoué car le fichier n'existe pas",
"You are not allowed to share %s" : "Vous n'êtes pas autorisé à partager %s",
"Sharing %s failed, because you can not share with yourself" : "Le partage de %s a échoué car vous ne pouvez pas partager avec vous-même",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'existe pas",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'est membre d'aucun groupe auquel %3$s appartient",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec l'utilisateur %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Le partage de %1$s a échoué car le groupe %2$s n'existe pas",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Le partage de %1$s a échoué car %2$s n'est pas membre du groupe %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
"Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Le partage de %1$s a échoué : impossible de trouver %2$s. Le serveur est peut-être momentanément injoignable.",
+ "Share type %1$s is not valid for %2$s" : "Le type de partage %1$s n'est pas valide pour %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
"Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Le service de partage %s doit implémenter l'interface OCP\\Share_Backend",
"Sharing backend %s not found" : "Service de partage %s non trouvé",
"Sharing backend for %s not found" : "Le service de partage pour %s est introuvable",
"Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Le partage de %1$s a échoué car les permissions dépassent celles accordées à %2$s",
"Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source..",
"Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache.",
"%1$s shared »%2$s« with you and wants to add:" : "%1$sa partagé \"%2$s\" avec vous et veut ajouter :",
"%1$s shared »%2$s« with you and wants to add" : "%1$sa partagé \"%2$s\" avec vous et veut ajouter",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Les fichiers ne peuvent pas être partagés avec les autorisations de création",
"Expiration date is in the past" : "La date d'expiration est dans le passé",
"Can’t set expiration date more than %s days in the future" : "Impossible de définir la date d'expiration à plus de %s jours dans le futur",
+ "%1$s shared »%2$s« with you" : "%1$s a partagé «%2$s» avec vous",
+ "%1$s shared »%2$s« with you." : "%1$s a partagé «%2$s» avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
@@ -178,6 +192,7 @@
"Could not create user" : "Impossible de créer l'utilisateur",
"User disabled" : "Utilisateur désactivé",
"Login canceled by app" : "L'authentification a été annulé par l'application",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "L'application \"%1$s\" ne peut pas être installée à cause des dépendances suivantes non satisfaites : %2$s",
"a safe home for all your data" : "un endroit sûr pour toutes vos données",
"File is currently busy, please try again later" : "Le fichier est actuellement utilisé, veuillez réessayer plus tard",
"Can't read file" : "Impossible de lire le fichier",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Action \"%s\" non supportée ou implémentée.",
"Authentication failed, wrong token or provider ID given" : "Échec de l'authentification, jeton erroné ou identification du fournisseur donnée",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Paramètres manquants pour compléter la requête. Paramètres manquants : \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "L'identifiant \"%1$s\" est déjà utilisé par le fournisseur de cloud \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Le fournisseur de cloud avec l'identifiant \"%s\" n'existe pas.",
"Could not obtain lock type %d on \"%s\"." : "Impossible d'obtenir le verrouillage de type %d sur \"%s\".",
"Storage unauthorized. %s" : "Espace de stockage non autorisé. %s",
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 5ec42981b7e..03cec3a5915 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -25,7 +25,7 @@ OC.L10N.register(
"Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"Server version %s or higher is required." : "%s vagy újabb szerver verzió szükséges.",
"Server version %s or lower is required." : "%s vagy régebbi szerver verzió szükséges.",
- "Logged in user must be an admin" : "Adminnak kell bejelentkeznie",
+ "Logged in user must be an admin" : "A bejelentkezett felhasználónak rendszergazdának kell lennie",
"Unknown filetype" : "Ismeretlen fájl típus",
"Invalid image" : "Hibás kép",
"Avatar image is not square" : "Az avatár kép nem négyzetes.",
@@ -89,8 +89,8 @@ OC.L10N.register(
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú szervert használni.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir konfigurálva van a php.ini fájlban. Ez 4 GB-nál nagyobb fájlok esetén problémákat okozhat így erősen ellenjavallt.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.",
- "Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.",
- "Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.",
+ "Set an admin username." : "Állítson be egy rendszergazdai felhasználónevet!",
+ "Set an admin password." : "Állítson be egy rendszergazdai jelszót!",
"Can't create or write into the data directory %s" : "Nem sikerült létrehozni vagy irni a \"data\" könyvtárba %s",
"Invalid Federated Cloud ID" : "Érvénytelen Egyesített Felhő Azonosító",
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
@@ -215,7 +215,7 @@ OC.L10N.register(
"Library %s with a version higher than %s is required - available version %s." : "%s könyvtár %s vagy újabb verziója szükséges - elérhető verzió: %s.",
"Library %s with a version lower than %s is required - available version %s." : "%s könyvtár %s vagy régebbi verziója szükséges - elérhető verzió: %s.",
"Personal" : "Személyes",
- "Admin" : "Adminisztrátor",
+ "Admin" : "Rendszergazda",
"APCu" : "APCu",
"Redis" : "Redis",
"Encryption" : "Titkosítás",
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index 022224f9ad7..7e7dcf89a48 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -23,7 +23,7 @@
"Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"Server version %s or higher is required." : "%s vagy újabb szerver verzió szükséges.",
"Server version %s or lower is required." : "%s vagy régebbi szerver verzió szükséges.",
- "Logged in user must be an admin" : "Adminnak kell bejelentkeznie",
+ "Logged in user must be an admin" : "A bejelentkezett felhasználónak rendszergazdának kell lennie",
"Unknown filetype" : "Ismeretlen fájl típus",
"Invalid image" : "Hibás kép",
"Avatar image is not square" : "Az avatár kép nem négyzetes.",
@@ -87,8 +87,8 @@
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú szervert használni.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir konfigurálva van a php.ini fájlban. Ez 4 GB-nál nagyobb fájlok esetén problémákat okozhat így erősen ellenjavallt.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.",
- "Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.",
- "Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.",
+ "Set an admin username." : "Állítson be egy rendszergazdai felhasználónevet!",
+ "Set an admin password." : "Állítson be egy rendszergazdai jelszót!",
"Can't create or write into the data directory %s" : "Nem sikerült létrehozni vagy irni a \"data\" könyvtárba %s",
"Invalid Federated Cloud ID" : "Érvénytelen Egyesített Felhő Azonosító",
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
@@ -213,7 +213,7 @@
"Library %s with a version higher than %s is required - available version %s." : "%s könyvtár %s vagy újabb verziója szükséges - elérhető verzió: %s.",
"Library %s with a version lower than %s is required - available version %s." : "%s könyvtár %s vagy régebbi verziója szükséges - elérhető verzió: %s.",
"Personal" : "Személyes",
- "Admin" : "Adminisztrátor",
+ "Admin" : "Rendszergazda",
"APCu" : "APCu",
"Redis" : "Redis",
"Encryption" : "Titkosítás",
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index dc976b6bcda..c0eb363d398 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "I seguenti database sono supportati: %s",
"The command line tool %s could not be found" : "Lo strumento da riga di comando %s non è stato trovato",
"The library %s is not available." : "La libreria %s non è disponibile.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s maggiore di %2$s - versione disponibile %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s minore di %2$s - versione disponibile %3$s.",
"Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
"Server version %s or higher is required." : "È richiesta la versione %s o successiva.",
"Server version %s or lower is required." : "È richiesta la versione %s o precedente.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
"You are not allowed to share %s" : "Non ti è consentito condividere %s",
"Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non esiste",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non appartiene ad alcun gruppo di cui %3$s è membro",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con l'utente %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché il gruppo %2$s non esiste",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Condivisione di %1$s non riuscita, poiché %2$s non appartiene al gruppo %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
"Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
"Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile.",
+ "Share type %1$s is not valid for %2$s" : "Il tipo di condivisione %1$s non è valido per %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
"Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Il motore di condivisione %s deve implementare l'interfaccia OCP\\Share_Backend",
"Sharing backend %s not found" : "Motore di condivisione %s non trovato",
"Sharing backend for %s not found" : "Motore di condivisione di %s non trovato",
"Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Condivisione di %1$s non riuscita, poiché i permessi superano quelli accordati a %2$s",
"Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$s non riesce a trovare la sua fonte",
"Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione",
"Expiration date is in the past" : "La data di scadenza è nel passato",
"Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro",
+ "%1$s shared »%2$s« with you" : "%1$s ha condiviso «%2$s» con te",
+ "%1$s shared »%2$s« with you." : "%1$s ha condiviso «%2$s» con te.",
"Click the button below to open it." : "Fai clic sul pulsante sotto per aprirlo.",
"The requested share does not exist anymore" : "La condivisione richiesta non esiste più",
"Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Impossibile creare l'utente",
"User disabled" : "Utente disabilitato",
"Login canceled by app" : "Accesso annullato dall'applicazione",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "L'applicazione \"%1$s\" non può essere installata poiché le seguenti dipendenze non sono soddisfatte: %2$s",
"a safe home for all your data" : "un posto sicuro per tutti i tuoi dati",
"File is currently busy, please try again later" : "Il file è attualmente occupato, riprova più tardi",
"Can't read file" : "Impossibile leggere il file",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Azione \"%s\" non supportata o implementata.",
"Authentication failed, wrong token or provider ID given" : "Autenticazione non riuscita, token o ID fornitore errato ",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Parametri mancanti per completare la richiesta. Parametri mancanti: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" già utilizzato dal fornitore della federazione cloud \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Il fornitore della federazione cloud con ID: \"%s\" non esiste.",
"Could not obtain lock type %d on \"%s\"." : "Impossibile ottenere il blocco di tipo %d su \"%s\".",
"Storage unauthorized. %s" : "Archiviazione non autorizzata. %s",
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 371e1cdbecf..23b581bfac0 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "I seguenti database sono supportati: %s",
"The command line tool %s could not be found" : "Lo strumento da riga di comando %s non è stato trovato",
"The library %s is not available." : "La libreria %s non è disponibile.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s maggiore di %2$s - versione disponibile %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s minore di %2$s - versione disponibile %3$s.",
"Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
"Server version %s or higher is required." : "È richiesta la versione %s o successiva.",
"Server version %s or lower is required." : "È richiesta la versione %s o precedente.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
"You are not allowed to share %s" : "Non ti è consentito condividere %s",
"Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non esiste",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non appartiene ad alcun gruppo di cui %3$s è membro",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con l'utente %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché il gruppo %2$s non esiste",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Condivisione di %1$s non riuscita, poiché %2$s non appartiene al gruppo %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
"Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
"Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile.",
+ "Share type %1$s is not valid for %2$s" : "Il tipo di condivisione %1$s non è valido per %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
"Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Il motore di condivisione %s deve implementare l'interfaccia OCP\\Share_Backend",
"Sharing backend %s not found" : "Motore di condivisione %s non trovato",
"Sharing backend for %s not found" : "Motore di condivisione di %s non trovato",
"Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Condivisione di %1$s non riuscita, poiché i permessi superano quelli accordati a %2$s",
"Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$s non riesce a trovare la sua fonte",
"Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s ha condiviso «%2$s» con te e vuole aggiungere",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "I file non possono essere condivisi con permessi di creazione",
"Expiration date is in the past" : "La data di scadenza è nel passato",
"Can’t set expiration date more than %s days in the future" : "Impossibile impostare la data di scadenza a più di %s giorni nel futuro",
+ "%1$s shared »%2$s« with you" : "%1$s ha condiviso «%2$s» con te",
+ "%1$s shared »%2$s« with you." : "%1$s ha condiviso «%2$s» con te.",
"Click the button below to open it." : "Fai clic sul pulsante sotto per aprirlo.",
"The requested share does not exist anymore" : "La condivisione richiesta non esiste più",
"Could not find category \"%s\"" : "Impossibile trovare la categoria \"%s\"",
@@ -178,6 +192,7 @@
"Could not create user" : "Impossibile creare l'utente",
"User disabled" : "Utente disabilitato",
"Login canceled by app" : "Accesso annullato dall'applicazione",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "L'applicazione \"%1$s\" non può essere installata poiché le seguenti dipendenze non sono soddisfatte: %2$s",
"a safe home for all your data" : "un posto sicuro per tutti i tuoi dati",
"File is currently busy, please try again later" : "Il file è attualmente occupato, riprova più tardi",
"Can't read file" : "Impossibile leggere il file",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Azione \"%s\" non supportata o implementata.",
"Authentication failed, wrong token or provider ID given" : "Autenticazione non riuscita, token o ID fornitore errato ",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Parametri mancanti per completare la richiesta. Parametri mancanti: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" già utilizzato dal fornitore della federazione cloud \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Il fornitore della federazione cloud con ID: \"%s\" non esiste.",
"Could not obtain lock type %d on \"%s\"." : "Impossibile ottenere il blocco di tipo %d su \"%s\".",
"Storage unauthorized. %s" : "Archiviazione non autorizzata. %s",
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index 758c7d66607..a94d90462ad 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
"The command line tool %s could not be found" : "Commandoregel tool %s is niet gevonden",
"The library %s is not available." : "Library %s is niet beschikbaar.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Library %1$s met een versienummer hoger dan %2$s is vereist - beschikbare versie %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Library %1$s met een versienummer lager dan %2$s is vereist - beschikbare versie %3$s.",
"Following platforms are supported: %s" : "De volgende platformen worden ondersteund: %s",
"Server version %s or higher is required." : "Serverversie %s of hoger vereist.",
"Server version %s or lower is required." : "Serverversie %s of lager vereist.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Delen van %s is mislukt, omdat het bestand niet bestaat",
"You are not allowed to share %s" : "Je bent niet bevoegd om %s te delen",
"Sharing %s failed, because you can not share with yourself" : "Delen van %s is mislukt, omdat je niet met jezelf kan delen",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Delen van %1$s is mislukt, omdat gebruiker %2$s niet bestaat",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delen van %1$s is mislukt, omdat gebruiker %2$s geen lid is van een groep waar %3$s lid van is",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met gebruiker %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Delen van %1$s is mislukt, omdat groep %2$s niet bestaat",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delen van %1$s is mislukt, omdat %2$s geen lid is van groep %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
"Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar.",
+ "Share type %1$s is not valid for %2$s" : "Delen van type %1$s is niet geldig voor %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
"Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "De gedeelde achtergrond %s moet de OCP\\Share_Backend interface implementeren",
"Sharing backend %s not found" : "De gedeelde backend %s is niet gevonden",
"Sharing backend for %s not found" : "De gedeelde backend voor %s is niet gevonden",
"Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delen van %1$s is mislukt, omdat de rechten toegekend aan %2$s overschreden zijn.",
"Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden",
"Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s deelde »%2$s« met jou en wil toevoegen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s deelde »%2$s« met jou en wil toevoegen",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies",
"Expiration date is in the past" : "De vervaldatum ligt in het verleden",
"Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen",
+ "%1$s shared »%2$s« with you" : "%1$s deelde »%2$s« met jou",
+ "%1$s shared »%2$s« with you." : "%1$s deelde »%2$s« met jou.",
"Click the button below to open it." : "Klik de onderstaande button om te openen.",
"The requested share does not exist anymore" : "De toegang tot de gedeelde folder bestaat niet meer",
"Could not find category \"%s\"" : "Kan categorie \"%s\" niet vinden",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Kan gebruiker niet aanmaken.",
"User disabled" : "Gebruiker geblokkeerd",
"Login canceled by app" : "Inloggen geannuleerd door app",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "App \"%1$s\" kan niet worden geïnstalleerd, omdat de volgende afhankelijkheden niet zijn ingevuld: %2$s",
"a safe home for all your data" : "een veilige plek voor al je gegevens",
"File is currently busy, please try again later" : "Bestandsverwerking bezig, probeer het later opnieuw",
"Can't read file" : "Kan bestand niet lezen",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Actie \"%s\" niet ondersteund of geïmplementeerd.",
"Authentication failed, wrong token or provider ID given" : "Authenticatie mislukt, ongeldig token of provider ID opgegeven",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Er ontbreken parameters om de aanvraag uit te voeren. Ontbrekende parameters: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wordt al gebruikt door cloud federatieprovider \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud Federationprovider met ID: \"%s\" bestaat niet.",
"Could not obtain lock type %d on \"%s\"." : "Kon geen lock type %d krijgen op \"%s\".",
"Storage unauthorized. %s" : "Opslag niet toegestaan. %s",
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index c410443590f..9adf46dab3a 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
"The command line tool %s could not be found" : "Commandoregel tool %s is niet gevonden",
"The library %s is not available." : "Library %s is niet beschikbaar.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Library %1$s met een versienummer hoger dan %2$s is vereist - beschikbare versie %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Library %1$s met een versienummer lager dan %2$s is vereist - beschikbare versie %3$s.",
"Following platforms are supported: %s" : "De volgende platformen worden ondersteund: %s",
"Server version %s or higher is required." : "Serverversie %s of hoger vereist.",
"Server version %s or lower is required." : "Serverversie %s of lager vereist.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Delen van %s is mislukt, omdat het bestand niet bestaat",
"You are not allowed to share %s" : "Je bent niet bevoegd om %s te delen",
"Sharing %s failed, because you can not share with yourself" : "Delen van %s is mislukt, omdat je niet met jezelf kan delen",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Delen van %1$s is mislukt, omdat gebruiker %2$s niet bestaat",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delen van %1$s is mislukt, omdat gebruiker %2$s geen lid is van een groep waar %3$s lid van is",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met gebruiker %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Delen van %1$s is mislukt, omdat groep %2$s niet bestaat",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delen van %1$s is mislukt, omdat %2$s geen lid is van groep %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
"Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar.",
+ "Share type %1$s is not valid for %2$s" : "Delen van type %1$s is niet geldig voor %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
"Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "De gedeelde achtergrond %s moet de OCP\\Share_Backend interface implementeren",
"Sharing backend %s not found" : "De gedeelde backend %s is niet gevonden",
"Sharing backend for %s not found" : "De gedeelde backend voor %s is niet gevonden",
"Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delen van %1$s is mislukt, omdat de rechten toegekend aan %2$s overschreden zijn.",
"Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden",
"Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s deelde »%2$s« met jou en wil toevoegen:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s deelde »%2$s« met jou en wil toevoegen",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Bestanden kunnen niet worden gedeeld met 'creëer' permissies",
"Expiration date is in the past" : "De vervaldatum ligt in het verleden",
"Can’t set expiration date more than %s days in the future" : "Kan de vervaldatum niet meer dan %s dagen in de toekomst instellen",
+ "%1$s shared »%2$s« with you" : "%1$s deelde »%2$s« met jou",
+ "%1$s shared »%2$s« with you." : "%1$s deelde »%2$s« met jou.",
"Click the button below to open it." : "Klik de onderstaande button om te openen.",
"The requested share does not exist anymore" : "De toegang tot de gedeelde folder bestaat niet meer",
"Could not find category \"%s\"" : "Kan categorie \"%s\" niet vinden",
@@ -178,6 +192,7 @@
"Could not create user" : "Kan gebruiker niet aanmaken.",
"User disabled" : "Gebruiker geblokkeerd",
"Login canceled by app" : "Inloggen geannuleerd door app",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "App \"%1$s\" kan niet worden geïnstalleerd, omdat de volgende afhankelijkheden niet zijn ingevuld: %2$s",
"a safe home for all your data" : "een veilige plek voor al je gegevens",
"File is currently busy, please try again later" : "Bestandsverwerking bezig, probeer het later opnieuw",
"Can't read file" : "Kan bestand niet lezen",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Actie \"%s\" niet ondersteund of geïmplementeerd.",
"Authentication failed, wrong token or provider ID given" : "Authenticatie mislukt, ongeldig token of provider ID opgegeven",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Er ontbreken parameters om de aanvraag uit te voeren. Ontbrekende parameters: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wordt al gebruikt door cloud federatieprovider \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud Federationprovider met ID: \"%s\" bestaat niet.",
"Could not obtain lock type %d on \"%s\"." : "Kon geen lock type %d krijgen op \"%s\".",
"Storage unauthorized. %s" : "Opslag niet toegestaan. %s",
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 7491fff719e..df3463b9416 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
"The command line tool %s could not be found" : "A ferramenta de linha de comando %s não pôde ser encontrada",
"The library %s is not available." : "A biblioteca %s não está disponível.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão maior que %2$s é requerida - versão disponível %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão abaixo de%2$s é requerida - versão disponível %3$s.",
"Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
"Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.",
"Server version %s or lower is required." : "É requerido um servidor da versão %s ou abaixo.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Compartilhamento %s falhou pois o arquivo não existe",
"You are not allowed to share %s" : "Você não tem permissão para compartilhar %s",
"Sharing %s failed, because you can not share with yourself" : "O compartilhamento %s falhou pois você não pode compartilhar com você mesmo",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "O compartilhamento %1$s falhou, porque o usuário %2$s não existe",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "O compartilhamento %1$s falhou, porque o usuário %2$s não é membro de nenhum grupo que %3$s é",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento %1$s falhou, porque o item já está compartilhado com %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "O compartilhamento %1$s falhou, porque este item já está compartilhando com o usuário %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "O compartilhamento %1$s falhou, porque o grupo %2$s não existe",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "O compartilhamento %1$s falhou, porque %2$s não é membro do grupo %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
"Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
"Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível.",
+ "Share type %1$s is not valid for %2$s" : "O tipo de compartilhamento %1$s é inválido para %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
"Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "A plataforma de compartilhamento %s deve implementar a interface OCP\\Share_Backend",
"Sharing backend %s not found" : "Plataforma de serviço de compartilhamento %s não encontrada",
"Sharing backend for %s not found" : "Plataforma de compartilhamento para %s não foi encontrada",
"Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "O compartilhamento %1$s falhou, porque as permissões excedem aquelas concedidas à %2$s",
"Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte",
"Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s compartilhou »%2$s« com você e quer adicionar:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s compartilhou »%2$s« com você e quer adicionar",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação",
"Expiration date is in the past" : "Data de expiração está no passado",
"Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro",
+ "%1$s shared »%2$s« with you" : "%1$s compartilhou »%2$s« com você",
+ "%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Não foi possível criar o usuário",
"User disabled" : "Usuário desativado",
"Login canceled by app" : "Login cancelado pelo aplicativo",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "O aplicativo \"%1$s\" não pode ser instalado devido à estas dependências: %2$s",
"a safe home for all your data" : "Um lar seguro para todos os seus dados",
"File is currently busy, please try again later" : "O arquivo está ocupado, tente novamente mais tarde",
"Can't read file" : "Não foi possível ler arquivo",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Ação \"%s\" não suportada ou implementada.",
"Authentication failed, wrong token or provider ID given" : "Falha na autenticação, token ou ID do provedor errados",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Parâmetros ausentes para concluir a solicitação: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "A ID \"%1$s\" já é usada pelo provedor de nuvem federada \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Provedor da Federação de Nuvem com ID: \"%s\" não existe.",
"Could not obtain lock type %d on \"%s\"." : "Não foi possível obter tipo de bloqueio %d em \"%s\".",
"Storage unauthorized. %s" : "Armazenamento não autorizado. %s",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 4d025857f3e..dfb579783bf 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
"The command line tool %s could not be found" : "A ferramenta de linha de comando %s não pôde ser encontrada",
"The library %s is not available." : "A biblioteca %s não está disponível.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão maior que %2$s é requerida - versão disponível %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão abaixo de%2$s é requerida - versão disponível %3$s.",
"Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
"Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.",
"Server version %s or lower is required." : "É requerido um servidor da versão %s ou abaixo.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Compartilhamento %s falhou pois o arquivo não existe",
"You are not allowed to share %s" : "Você não tem permissão para compartilhar %s",
"Sharing %s failed, because you can not share with yourself" : "O compartilhamento %s falhou pois você não pode compartilhar com você mesmo",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "O compartilhamento %1$s falhou, porque o usuário %2$s não existe",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "O compartilhamento %1$s falhou, porque o usuário %2$s não é membro de nenhum grupo que %3$s é",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento %1$s falhou, porque o item já está compartilhado com %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "O compartilhamento %1$s falhou, porque este item já está compartilhando com o usuário %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "O compartilhamento %1$s falhou, porque o grupo %2$s não existe",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "O compartilhamento %1$s falhou, porque %2$s não é membro do grupo %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
"Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
"Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível.",
+ "Share type %1$s is not valid for %2$s" : "O tipo de compartilhamento %1$s é inválido para %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
"Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "A plataforma de compartilhamento %s deve implementar a interface OCP\\Share_Backend",
"Sharing backend %s not found" : "Plataforma de serviço de compartilhamento %s não encontrada",
"Sharing backend for %s not found" : "Plataforma de compartilhamento para %s não foi encontrada",
"Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "O compartilhamento %1$s falhou, porque as permissões excedem aquelas concedidas à %2$s",
"Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte",
"Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s compartilhou »%2$s« com você e quer adicionar:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s compartilhou »%2$s« com você e quer adicionar",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação",
"Expiration date is in the past" : "Data de expiração está no passado",
"Can’t set expiration date more than %s days in the future" : "Não é possível definir a expiração mais do que %s dias no futuro",
+ "%1$s shared »%2$s« with you" : "%1$s compartilhou »%2$s« com você",
+ "%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
@@ -178,6 +192,7 @@
"Could not create user" : "Não foi possível criar o usuário",
"User disabled" : "Usuário desativado",
"Login canceled by app" : "Login cancelado pelo aplicativo",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "O aplicativo \"%1$s\" não pode ser instalado devido à estas dependências: %2$s",
"a safe home for all your data" : "Um lar seguro para todos os seus dados",
"File is currently busy, please try again later" : "O arquivo está ocupado, tente novamente mais tarde",
"Can't read file" : "Não foi possível ler arquivo",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Ação \"%s\" não suportada ou implementada.",
"Authentication failed, wrong token or provider ID given" : "Falha na autenticação, token ou ID do provedor errados",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Parâmetros ausentes para concluir a solicitação: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "A ID \"%1$s\" já é usada pelo provedor de nuvem federada \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Provedor da Federação de Nuvem com ID: \"%s\" não existe.",
"Could not obtain lock type %d on \"%s\"." : "Não foi possível obter tipo de bloqueio %d em \"%s\".",
"Storage unauthorized. %s" : "Armazenamento não autorizado. %s",
diff --git a/lib/l10n/ro.js b/lib/l10n/ro.js
index 1261b5afd4f..16725df1838 100644
--- a/lib/l10n/ro.js
+++ b/lib/l10n/ro.js
@@ -124,6 +124,7 @@ OC.L10N.register(
"Cannot write into \"config\" directory" : "Nu se poate scrie în folderul \"config\"",
"Cannot write into \"apps\" directory" : "Nu se poate scrie în folderul \"apps\"",
"PHP module %s not installed." : "Modulul PHP %s nu este instalat.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Setarea PHP \"%s\" nu este setată la \"%s\".",
"PHP modules have been installed, but they are still listed as missing?" : "Modulele PHP au fost instalate, dar apar ca lipsind?",
"PostgreSQL >= 9 required" : "Este necesară versiunea 9 sau mai mare a PostgreSQL",
"Please upgrade your database version" : "Actualizați baza de date la o versiune mai nouă",
diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json
index 471d37a1a84..1ad95690ca9 100644
--- a/lib/l10n/ro.json
+++ b/lib/l10n/ro.json
@@ -122,6 +122,7 @@
"Cannot write into \"config\" directory" : "Nu se poate scrie în folderul \"config\"",
"Cannot write into \"apps\" directory" : "Nu se poate scrie în folderul \"apps\"",
"PHP module %s not installed." : "Modulul PHP %s nu este instalat.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Setarea PHP \"%s\" nu este setată la \"%s\".",
"PHP modules have been installed, but they are still listed as missing?" : "Modulele PHP au fost instalate, dar apar ca lipsind?",
"PostgreSQL >= 9 required" : "Este necesară versiunea 9 sau mai mare a PostgreSQL",
"Please upgrade your database version" : "Actualizați baza de date la o versiune mai nouă",
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index ca82447329a..bcd9684547b 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -1,7 +1,7 @@
OC.L10N.register(
"lib",
{
- "Cannot write into \"config\" directory!" : "Запись в каталог «config» невозможна!",
+ "Cannot write into \"config\" directory!" : "Невозможно выполнить запись к каталог «config».",
"This can usually be fixed by giving the webserver write access to the config directory" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации",
"See %s" : "Смотрите %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Или, если вы предпочитаете хранить файл config.php только для чтения, установите для него параметр «config_is_read_only» в true.",
@@ -23,7 +23,9 @@ OC.L10N.register(
"%sbit or higher PHP required." : "Требуется PHP с разрядностью %s бит или более.",
"Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
"The command line tool %s could not be found" : "Утилита командной строки %s не найдена",
- "The library %s is not available." : "Библиотека %s недоступна.",
+ "The library %s is not available." : "Библиотека «%s» недоступна.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не меньше %2$s, установлена версия %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не выше %2$s, установлена версия %3$s.",
"Following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
"Server version %s or higher is required." : "Требуется сервер версии %s или выше.",
"Server version %s or lower is required." : "Требуется сервер версии %s или ниже.",
@@ -102,9 +104,12 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
"You are not allowed to share %s" : "Вам не разрешено делиться %s",
"Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Не удалось предоставить общий доступ к «%1$s», пользователь %2$s не существует.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Не удалось предоставить общий доступ к «%1$s» , пользователю %2$s такой доступ уже предоставлен.",
"You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки",
"Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено",
"Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
+ "Share type %1$s is not valid for %2$s" : "Тип общего доступа «%1$s» недопустим для «%2$s»",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
"Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Бэкенд общего доступа %s должен реализовывать интерфейс OCP\\Share_Backend",
@@ -123,6 +128,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание",
"Expiration date is in the past" : "Дата окончания срока действия уже прошла",
"Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней",
+ "%1$s shared »%2$s« with you" : "%1$s предоставил(а) вам доступ к «%2$s»",
+ "%1$s shared »%2$s« with you." : "%1$s предоставил(а) вам доступ к «%2$s».",
"Click the button below to open it." : "Нажмите расположенную ниже кнопку для перехода к полученному общему ресурсу.",
"The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.",
"Could not find category \"%s\"" : "Категория «%s» не найдена",
@@ -180,6 +187,7 @@ OC.L10N.register(
"Could not create user" : "Не удалось создать пользователя",
"User disabled" : "Пользователь отключен",
"Login canceled by app" : "Вход отменен приложением",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Приложение «%1$s» не может быть установлено, так как не удовлетворены следующие зависимости: %2$s",
"a safe home for all your data" : "надёжный дом для всех ваших данных",
"File is currently busy, please try again later" : "Файл в данный момент используется, повторите попытку позже.",
"Can't read file" : "Не удается прочитать файл",
@@ -215,9 +223,10 @@ OC.L10N.register(
"Check the value of \"datadirectory\" in your configuration" : "Проверьте в значение параметра «datadirectory» в файле конфигурации.",
"Your data directory is invalid" : "Каталог данных не верен",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Убедитесь, что в корне каталога данных присутствует файл «.ocdata».",
- "Action \"%s\" not supported or implemented." : "Действие \"%s\" не поддерживается или не реализовано.",
+ "Action \"%s\" not supported or implemented." : "Действие «%s» не поддерживается или не реализовано.",
"Authentication failed, wrong token or provider ID given" : "Ошибка аутентификации, неверный токен или идентификатор провайдера",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Отсутствуют параметры для завершения запроса. Отсутствующие параметры: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "Идентификатор «%1$s» уже поставщиком услуг межсерверного обмена «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Провайдер облачной федерации с идентификатором: \"%s\" не существует.",
"Could not obtain lock type %d on \"%s\"." : "Не удалось получить блокировку типа %d для «%s»",
"Storage unauthorized. %s" : "Хранилище неавторизовано. %s",
@@ -258,8 +267,8 @@ OC.L10N.register(
"%s via %s" : "%s через %s",
"No app name specified" : "Не указано имя приложения",
"App '%s' could not be installed!" : "Приложение «%s» не может быть установлено!",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение «%s» не может быть установлено, так как следующие зависимости не выполнены: %s",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение «%s» не может быть установлено, так как не удовлетворены следующие зависимости: %s",
"Sync clients" : "Клиенты синхронизации",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" уже используется федеративным облачным провайдером \"%s\""
+ "ID \"%s\" already used by cloud federation provider \"%s\"" : "Идентификатор «%s» уже используется поставщиком услуг межсерверного обмена «%s»"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index a9ede6da205..99a02f4d80b 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -1,5 +1,5 @@
{ "translations": {
- "Cannot write into \"config\" directory!" : "Запись в каталог «config» невозможна!",
+ "Cannot write into \"config\" directory!" : "Невозможно выполнить запись к каталог «config».",
"This can usually be fixed by giving the webserver write access to the config directory" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации",
"See %s" : "Смотрите %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Или, если вы предпочитаете хранить файл config.php только для чтения, установите для него параметр «config_is_read_only» в true.",
@@ -21,7 +21,9 @@
"%sbit or higher PHP required." : "Требуется PHP с разрядностью %s бит или более.",
"Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
"The command line tool %s could not be found" : "Утилита командной строки %s не найдена",
- "The library %s is not available." : "Библиотека %s недоступна.",
+ "The library %s is not available." : "Библиотека «%s» недоступна.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не меньше %2$s, установлена версия %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не выше %2$s, установлена версия %3$s.",
"Following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
"Server version %s or higher is required." : "Требуется сервер версии %s или выше.",
"Server version %s or lower is required." : "Требуется сервер версии %s или ниже.",
@@ -100,9 +102,12 @@
"Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
"You are not allowed to share %s" : "Вам не разрешено делиться %s",
"Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Не удалось предоставить общий доступ к «%1$s», пользователь %2$s не существует.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Не удалось предоставить общий доступ к «%1$s» , пользователю %2$s такой доступ уже предоставлен.",
"You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки",
"Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено",
"Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
+ "Share type %1$s is not valid for %2$s" : "Тип общего доступа «%1$s» недопустим для «%2$s»",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
"Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Бэкенд общего доступа %s должен реализовывать интерфейс OCP\\Share_Backend",
@@ -121,6 +126,8 @@
"Files can’t be shared with create permissions" : "Файлы не могут иметь общий доступ с правами на создание",
"Expiration date is in the past" : "Дата окончания срока действия уже прошла",
"Can’t set expiration date more than %s days in the future" : "Невозможно установить дату окончания срока действия более %s дней",
+ "%1$s shared »%2$s« with you" : "%1$s предоставил(а) вам доступ к «%2$s»",
+ "%1$s shared »%2$s« with you." : "%1$s предоставил(а) вам доступ к «%2$s».",
"Click the button below to open it." : "Нажмите расположенную ниже кнопку для перехода к полученному общему ресурсу.",
"The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.",
"Could not find category \"%s\"" : "Категория «%s» не найдена",
@@ -178,6 +185,7 @@
"Could not create user" : "Не удалось создать пользователя",
"User disabled" : "Пользователь отключен",
"Login canceled by app" : "Вход отменен приложением",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Приложение «%1$s» не может быть установлено, так как не удовлетворены следующие зависимости: %2$s",
"a safe home for all your data" : "надёжный дом для всех ваших данных",
"File is currently busy, please try again later" : "Файл в данный момент используется, повторите попытку позже.",
"Can't read file" : "Не удается прочитать файл",
@@ -213,9 +221,10 @@
"Check the value of \"datadirectory\" in your configuration" : "Проверьте в значение параметра «datadirectory» в файле конфигурации.",
"Your data directory is invalid" : "Каталог данных не верен",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Убедитесь, что в корне каталога данных присутствует файл «.ocdata».",
- "Action \"%s\" not supported or implemented." : "Действие \"%s\" не поддерживается или не реализовано.",
+ "Action \"%s\" not supported or implemented." : "Действие «%s» не поддерживается или не реализовано.",
"Authentication failed, wrong token or provider ID given" : "Ошибка аутентификации, неверный токен или идентификатор провайдера",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Отсутствуют параметры для завершения запроса. Отсутствующие параметры: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "Идентификатор «%1$s» уже поставщиком услуг межсерверного обмена «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Провайдер облачной федерации с идентификатором: \"%s\" не существует.",
"Could not obtain lock type %d on \"%s\"." : "Не удалось получить блокировку типа %d для «%s»",
"Storage unauthorized. %s" : "Хранилище неавторизовано. %s",
@@ -256,8 +265,8 @@
"%s via %s" : "%s через %s",
"No app name specified" : "Не указано имя приложения",
"App '%s' could not be installed!" : "Приложение «%s» не может быть установлено!",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение «%s» не может быть установлено, так как следующие зависимости не выполнены: %s",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение «%s» не может быть установлено, так как не удовлетворены следующие зависимости: %s",
"Sync clients" : "Клиенты синхронизации",
- "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" уже используется федеративным облачным провайдером \"%s\""
+ "ID \"%s\" already used by cloud federation provider \"%s\"" : "Идентификатор «%s» уже используется поставщиком услуг межсерверного обмена «%s»"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js
index ad8500b5db0..f166bd62aad 100644
--- a/lib/l10n/sr.js
+++ b/lib/l10n/sr.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Подржане су следеће базе података: %s",
"The command line tool %s could not be found" : "Алатку командне линије „%s“ није могуће пронаћи",
"The library %s is not available." : "Библиотека „%s“ није доступна.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије веће од %2$s - доступна верзија је %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије ниже од %2$s - доступна верзија је %3$s.",
"Following platforms are supported: %s" : "Подржане су следеће платформе: %s",
"Server version %s or higher is required." : "Потребна је верзија сервера %s или виша.",
"Server version %s or lower is required." : "Потребна је верзија сервера %s или нижа.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Дељење %s није успело зато што фајл не постоји",
"You are not allowed to share %s" : "Није вам дозвољено да делите %s",
"Sharing %s failed, because you can not share with yourself" : "Дељење %s није успело зато што не можете да делите са самим собом",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Дељење %1$s није успело зато што не постоји корисник %2$s",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Дељење %1$s није успело зато што корисник %2$s није члан ниједне групе чији је %3$s члан",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са корисником %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Дељење %1$s није успело зато што не постоји група %2$s",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Дељење %1$s није успело зато што %2$s није члан групе %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Морате да обезбедите лозинку за креирање јавне везе, дозвољене су само заштићене везе",
"Sharing %s failed, because sharing with links is not allowed" : "Дељење %s није успело зато што дељење са везама није дозвољено",
"Not allowed to create a federated share with the same user" : "Није дозвољено да направите здружено дељење са истим корисником",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Дељење %1$s није успело, није могуће пронаћи %2$s, можда сервер тренутно није доступан.",
+ "Share type %1$s is not valid for %2$s" : "Тип фајла за дељење %1$s није исправан за %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
"Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Позадина дељења %s мора користити корисничко окружење OCP\\Share_Backend",
"Sharing backend %s not found" : "Позадина за дељење %s није пронађена",
"Sharing backend for %s not found" : "Позадина за дељење за %s није пронађена",
"Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Дељење %1$s није успело зато што дозволе превазилазе дозволе гарантоване за %2$s",
"Sharing %s failed, because resharing is not allowed" : "Дељење %s није успело зато што даље дељење није дозвољено",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор",
"Sharing %s failed, because the file could not be found in the file cache" : "Дељење %s није успело зато што фајл није нађен у кешу фајлова",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s је поделио \"%2$s\" са Вама и жели да дода:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s је поделио \"%2$s\" са Вама и жели да дода",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Фајлови не могу бити дељени са дозволама за креирање",
"Expiration date is in the past" : "Датум истека је у прошлости",
"Can’t set expiration date more than %s days in the future" : "Не могу да поставим датум истека више од %s дана у будућност",
+ "%1$s shared »%2$s« with you" : "%1$s је поделио „%2$s“ са Вама",
+ "%1$s shared »%2$s« with you." : "%1$s је поделио „%2$s“ са Вама.",
"Click the button below to open it." : "Кликните дугме испод да га отворите.",
"The requested share does not exist anymore" : "Захтевано дељење више не постоји",
"Could not find category \"%s\"" : "Не могу да пронађем категорију „%s“.",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Не могу да направим корисника",
"User disabled" : "Корисник онемогућен",
"Login canceled by app" : "Пријава отказана од стране апликације",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Апликација „%1$s“ не може бити инсталирана јер следеће зависности нису испуњене: %2$s",
"a safe home for all your data" : "сигурно место за све Ваше податке",
"File is currently busy, please try again later" : "Фајл је тренутно заузет, покушајте поново касније",
"Can't read file" : "Не могу да читам фајл",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Радња \"%s\" није подржана или имплементирана.",
"Authentication failed, wrong token or provider ID given" : "Неуспела провера идентитета, добијен погрешан токен или ID провајдера",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Недостају параметри да би се довршио захтев. Недостајући параметри: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "Идентификацију \"%1$s\" већ користи провајдер здруживања \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Провајдер клауд здруживања са ID-ом \"%s\" не постоји",
"Could not obtain lock type %d on \"%s\"." : "Не могу да остварим закључаност %d за „%s“.",
"Storage unauthorized. %s" : "Складиште није овлашћено. %s",
diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json
index 411ab80e4eb..998ae67fa6a 100644
--- a/lib/l10n/sr.json
+++ b/lib/l10n/sr.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Подржане су следеће базе података: %s",
"The command line tool %s could not be found" : "Алатку командне линије „%s“ није могуће пронаћи",
"The library %s is not available." : "Библиотека „%s“ није доступна.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије веће од %2$s - доступна верзија је %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије ниже од %2$s - доступна верзија је %3$s.",
"Following platforms are supported: %s" : "Подржане су следеће платформе: %s",
"Server version %s or higher is required." : "Потребна је верзија сервера %s или виша.",
"Server version %s or lower is required." : "Потребна је верзија сервера %s или нижа.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Дељење %s није успело зато што фајл не постоји",
"You are not allowed to share %s" : "Није вам дозвољено да делите %s",
"Sharing %s failed, because you can not share with yourself" : "Дељење %s није успело зато што не можете да делите са самим собом",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Дељење %1$s није успело зато што не постоји корисник %2$s",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Дељење %1$s није успело зато што корисник %2$s није члан ниједне групе чији је %3$s члан",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са корисником %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Дељење %1$s није успело зато што не постоји група %2$s",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Дељење %1$s није успело зато што %2$s није члан групе %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Морате да обезбедите лозинку за креирање јавне везе, дозвољене су само заштићене везе",
"Sharing %s failed, because sharing with links is not allowed" : "Дељење %s није успело зато што дељење са везама није дозвољено",
"Not allowed to create a federated share with the same user" : "Није дозвољено да направите здружено дељење са истим корисником",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Дељење %1$s није успело, није могуће пронаћи %2$s, можда сервер тренутно није доступан.",
+ "Share type %1$s is not valid for %2$s" : "Тип фајла за дељење %1$s није исправан за %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
"Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Позадина дељења %s мора користити корисничко окружење OCP\\Share_Backend",
"Sharing backend %s not found" : "Позадина за дељење %s није пронађена",
"Sharing backend for %s not found" : "Позадина за дељење за %s није пронађена",
"Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Дељење %1$s није успело зато што дозволе превазилазе дозволе гарантоване за %2$s",
"Sharing %s failed, because resharing is not allowed" : "Дељење %s није успело зато што даље дељење није дозвољено",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор",
"Sharing %s failed, because the file could not be found in the file cache" : "Дељење %s није успело зато што фајл није нађен у кешу фајлова",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s је поделио \"%2$s\" са Вама и жели да дода:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s је поделио \"%2$s\" са Вама и жели да дода",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Фајлови не могу бити дељени са дозволама за креирање",
"Expiration date is in the past" : "Датум истека је у прошлости",
"Can’t set expiration date more than %s days in the future" : "Не могу да поставим датум истека више од %s дана у будућност",
+ "%1$s shared »%2$s« with you" : "%1$s је поделио „%2$s“ са Вама",
+ "%1$s shared »%2$s« with you." : "%1$s је поделио „%2$s“ са Вама.",
"Click the button below to open it." : "Кликните дугме испод да га отворите.",
"The requested share does not exist anymore" : "Захтевано дељење више не постоји",
"Could not find category \"%s\"" : "Не могу да пронађем категорију „%s“.",
@@ -178,6 +192,7 @@
"Could not create user" : "Не могу да направим корисника",
"User disabled" : "Корисник онемогућен",
"Login canceled by app" : "Пријава отказана од стране апликације",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Апликација „%1$s“ не може бити инсталирана јер следеће зависности нису испуњене: %2$s",
"a safe home for all your data" : "сигурно место за све Ваше податке",
"File is currently busy, please try again later" : "Фајл је тренутно заузет, покушајте поново касније",
"Can't read file" : "Не могу да читам фајл",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "Радња \"%s\" није подржана или имплементирана.",
"Authentication failed, wrong token or provider ID given" : "Неуспела провера идентитета, добијен погрешан токен или ID провајдера",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Недостају параметри да би се довршио захтев. Недостајући параметри: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "Идентификацију \"%1$s\" већ користи провајдер здруживања \"%2$s\"",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Провајдер клауд здруживања са ID-ом \"%s\" не постоји",
"Could not obtain lock type %d on \"%s\"." : "Не могу да остварим закључаност %d за „%s“.",
"Storage unauthorized. %s" : "Складиште није овлашћено. %s",
diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js
index 7e5f4d22822..8dff4b4c689 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -100,26 +100,39 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Delning av %s misslyckades på grund av att filen inte existerar",
"You are not allowed to share %s" : "Du har inte rätt att dela %s",
"Sharing %s failed, because you can not share with yourself" : "Delning %s misslyckades därför att du inte kan dela med dig själv.",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Delning %1$s misslyckades för att användaren %2$s inte finns",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delning %1$s misslyckades för att användaren %2$s inte är medlem i några grupper som %3$s är medlem i",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning %1$s misslyckades, är redan delad med användare %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Delning %1$s misslyckades för att gruppen %2$s finns inte",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delning %1$s misslyckades för att %2$s är inte medlem i gruppen %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
"Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning utav länkar inte är tillåtet",
"Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delning %1$s misslyckades, kan inte hitta %2$s, servern är kanske inte åtkomlig för närvarande.",
+ "Share type %1$s is not valid for %2$s" : "Delningstyp %1$s är inte giltig för %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
"Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delningsgränssnittet %s måste implementera gränssnittet OCP\\Share_Backend",
"Sharing backend %s not found" : "Delningsgränssnittet %s hittades inte",
"Sharing backend for %s not found" : "Delningsgränssnittet för %s hittades inte",
"Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delning %1$s misslyckades därför att rättigheterna överskrider de rättigheter som tilldelats %2$s",
"Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$s inte kunde hitta sin källa",
"Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s delade »%2$s« med dig och vill lägga till:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s delade »%2$s« med dig och vill lägga till",
"»%s« added a note to a file shared with you" : "»%s« la till en kommentar till en fil delad med dig",
"Open »%s«" : "Öppna »%s«",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Can’t increase permissions of %s" : "Kan inte öka rättigheterna för %s",
"Files can’t be shared with delete permissions" : "Filer kan inte delas med borttagningsrättigheter",
"Files can’t be shared with create permissions" : "Filer kan inte delas med rättigheter att skapa",
"Expiration date is in the past" : "Utgångsdatum är i det förflutna",
"Can’t set expiration date more than %s days in the future" : "Kan inte sätta utgångsdatum mer än %s dagar framåt",
+ "%1$s shared »%2$s« with you" : "%1$s delade »%2$s« med dig",
+ "%1$s shared »%2$s« with you." : "%1$s delade »%2$s« med dig.",
"Click the button below to open it." : "Klicka knappen nedan för att öppna det.",
"The requested share does not exist anymore" : "Den begärda delningen finns inte mer",
"Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"",
@@ -177,6 +190,7 @@ OC.L10N.register(
"Could not create user" : "Kunde inte skapa användare",
"User disabled" : "Användare inaktiverad",
"Login canceled by app" : "Inloggningen avbruten av appen",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Appen \"%1$s\" kan inte installeras eftersom följande beroenden inte är uppfyllda: %2$s",
"a safe home for all your data" : "En säker lagringsplats för all din data",
"File is currently busy, please try again later" : "Filen är för tillfället upptagen, vänligen försök igen senare",
"Can't read file" : "Kan ej läsa filen",
@@ -215,6 +229,8 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "Åtgärd \"%s\" stöds ej eller är inte implementerad.",
"Authentication failed, wrong token or provider ID given" : "Autentisering misslyckades, felaktig token eller leverantörs-ID",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Parametrar saknas för att slutföra förfrågan. Saknade parametrar: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" används redan av moln - federationsleverantör \"%2$s\"",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "Moln - federationsleverantör med ID: \"%s\" finns inte.",
"Could not obtain lock type %d on \"%s\"." : "Kunde inte hämta låstyp %d på \"%s\".",
"Storage unauthorized. %s" : "Lagringsutrymme ej tillåtet. %s",
"Storage incomplete configuration. %s" : "Lagringsutrymme felaktigt inställt. %s",
@@ -229,6 +245,7 @@ OC.L10N.register(
"Redis" : "Redis",
"Encryption" : "Kryptering",
"Tips & tricks" : "Tips & tricks",
+ "DB Error: \"%s\"" : "DB Error: \"%s\"",
"Offending command was: \"%s\"" : "Felaktigt kommando var: \"%s\"",
"Offending command was: \"%s\", name: %s, password: %s" : "Felaktigt kommando var: \"%s\", namn: %s, lösenord: %s",
"Sharing %s failed, because the user %s does not exist" : "Delning %s misslyckades därför att användaren %s inte existerar",
@@ -254,6 +271,7 @@ OC.L10N.register(
"No app name specified" : "Inget appnamn angivet",
"App '%s' could not be installed!" : "Appen '%s' kunde inte installeras!",
"App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Applikationen \"%s\" kan ej installeras eftersom följande kriterier inte är uppfyllda: %s",
- "Sync clients" : "Synkklienter"
+ "Sync clients" : "Synkklienter",
+ "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" används redan av moln - federationsleverantör \"%s\""
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index 4ed7a8d1c54..ea7b90736b1 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -98,26 +98,39 @@
"Sharing %s failed, because the file does not exist" : "Delning av %s misslyckades på grund av att filen inte existerar",
"You are not allowed to share %s" : "Du har inte rätt att dela %s",
"Sharing %s failed, because you can not share with yourself" : "Delning %s misslyckades därför att du inte kan dela med dig själv.",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "Delning %1$s misslyckades för att användaren %2$s inte finns",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delning %1$s misslyckades för att användaren %2$s inte är medlem i några grupper som %3$s är medlem i",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning %1$s misslyckades, är redan delad med användare %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "Delning %1$s misslyckades för att gruppen %2$s finns inte",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delning %1$s misslyckades för att %2$s är inte medlem i gruppen %3$s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
"Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning utav länkar inte är tillåtet",
"Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delning %1$s misslyckades, kan inte hitta %2$s, servern är kanske inte åtkomlig för närvarande.",
+ "Share type %1$s is not valid for %2$s" : "Delningstyp %1$s är inte giltig för %2$s",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
"Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delningsgränssnittet %s måste implementera gränssnittet OCP\\Share_Backend",
"Sharing backend %s not found" : "Delningsgränssnittet %s hittades inte",
"Sharing backend for %s not found" : "Delningsgränssnittet för %s hittades inte",
"Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delning %1$s misslyckades därför att rättigheterna överskrider de rättigheter som tilldelats %2$s",
"Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$s inte kunde hitta sin källa",
"Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s delade »%2$s« med dig och vill lägga till:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s delade »%2$s« med dig och vill lägga till",
"»%s« added a note to a file shared with you" : "»%s« la till en kommentar till en fil delad med dig",
"Open »%s«" : "Öppna »%s«",
+ "%1$s via %2$s" : "%1$s via %2$s",
"Can’t increase permissions of %s" : "Kan inte öka rättigheterna för %s",
"Files can’t be shared with delete permissions" : "Filer kan inte delas med borttagningsrättigheter",
"Files can’t be shared with create permissions" : "Filer kan inte delas med rättigheter att skapa",
"Expiration date is in the past" : "Utgångsdatum är i det förflutna",
"Can’t set expiration date more than %s days in the future" : "Kan inte sätta utgångsdatum mer än %s dagar framåt",
+ "%1$s shared »%2$s« with you" : "%1$s delade »%2$s« med dig",
+ "%1$s shared »%2$s« with you." : "%1$s delade »%2$s« med dig.",
"Click the button below to open it." : "Klicka knappen nedan för att öppna det.",
"The requested share does not exist anymore" : "Den begärda delningen finns inte mer",
"Could not find category \"%s\"" : "Kunde inte hitta kategorin \"%s\"",
@@ -175,6 +188,7 @@
"Could not create user" : "Kunde inte skapa användare",
"User disabled" : "Användare inaktiverad",
"Login canceled by app" : "Inloggningen avbruten av appen",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Appen \"%1$s\" kan inte installeras eftersom följande beroenden inte är uppfyllda: %2$s",
"a safe home for all your data" : "En säker lagringsplats för all din data",
"File is currently busy, please try again later" : "Filen är för tillfället upptagen, vänligen försök igen senare",
"Can't read file" : "Kan ej läsa filen",
@@ -213,6 +227,8 @@
"Action \"%s\" not supported or implemented." : "Åtgärd \"%s\" stöds ej eller är inte implementerad.",
"Authentication failed, wrong token or provider ID given" : "Autentisering misslyckades, felaktig token eller leverantörs-ID",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Parametrar saknas för att slutföra förfrågan. Saknade parametrar: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" används redan av moln - federationsleverantör \"%2$s\"",
+ "Cloud Federation Provider with ID: \"%s\" does not exist." : "Moln - federationsleverantör med ID: \"%s\" finns inte.",
"Could not obtain lock type %d on \"%s\"." : "Kunde inte hämta låstyp %d på \"%s\".",
"Storage unauthorized. %s" : "Lagringsutrymme ej tillåtet. %s",
"Storage incomplete configuration. %s" : "Lagringsutrymme felaktigt inställt. %s",
@@ -227,6 +243,7 @@
"Redis" : "Redis",
"Encryption" : "Kryptering",
"Tips & tricks" : "Tips & tricks",
+ "DB Error: \"%s\"" : "DB Error: \"%s\"",
"Offending command was: \"%s\"" : "Felaktigt kommando var: \"%s\"",
"Offending command was: \"%s\", name: %s, password: %s" : "Felaktigt kommando var: \"%s\", namn: %s, lösenord: %s",
"Sharing %s failed, because the user %s does not exist" : "Delning %s misslyckades därför att användaren %s inte existerar",
@@ -252,6 +269,7 @@
"No app name specified" : "Inget appnamn angivet",
"App '%s' could not be installed!" : "Appen '%s' kunde inte installeras!",
"App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Applikationen \"%s\" kan ej installeras eftersom följande kriterier inte är uppfyllda: %s",
- "Sync clients" : "Synkklienter"
+ "Sync clients" : "Synkklienter",
+ "ID \"%s\" already used by cloud federation provider \"%s\"" : "ID \"%s\" används redan av moln - federationsleverantör \"%s\""
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 762b575f163..6933f45b689 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -24,6 +24,8 @@ OC.L10N.register(
"Following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
"The command line tool %s could not be found" : "%s komut satırı aracı bulunamadı",
"The library %s is not available." : "%s kitaplığı bulunamadı.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s sonrası bir sürümü gerekli. Geçerli sürüm: %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s öncesi bir sürümü gerekli. Geçerli sürüm: %3$s.",
"Following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
"Server version %s or higher is required." : "Sunucu %s ya da daha sonraki bir sürüm olmalıdır.",
"Server version %s or lower is required." : "Sunucu %s ya da daha önceki bir sürüm olmalıdır.",
@@ -102,16 +104,26 @@ OC.L10N.register(
"Sharing %s failed, because the file does not exist" : "Dosya bulunamadığından %s paylaşılamadı",
"You are not allowed to share %s" : "%s ögesini paylaşma izniniz yok",
"Sharing %s failed, because you can not share with yourself" : "%s paylaşılamadı. Ögeyi kendiniz ile paylaşamazsınız",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "%1$s paylaşılamadı. %2$s kullanıcısı bulunamadı",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s paylaşılamadı. %2$s kullanıcısı %3$s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s ögesi %2$s kullanıcısı ile zaten paylaşılmış olduğundan paylaşılamadı",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "%1$s ögesi %2$s grubu bulunamadığından paylaşılamadı",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s ögesi %2$s kullanıcısı %3$s grubunun üyesi olmadığından paylaşılamadı",
"You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
"Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
"Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s ögesi %2$sbulunamadığından paylaşılamadı. Sunucuya şu anda erişilemiyor olabilir.",
+ "Share type %1$s is not valid for %2$s" : "%1$s paylaşım türü %2$s için kullanılamaz",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
"Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Paylaşım arka ucu %s OCP\\Share_Backend arayüzünü desteklemeli",
"Sharing backend %s not found" : "%s paylaşım arka ucu bulunamadı",
"Sharing backend for %s not found" : "%s için paylaşım arka ucu bulunamadı",
"Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s ögesi %2$s için verilen izin düzeyini aştığından paylaşılamadı",
"Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı",
"Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor",
@@ -123,6 +135,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz",
"Expiration date is in the past" : "Son kullanma tarihi geçmişte",
"Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz",
+ "%1$s shared »%2$s« with you" : "%1$s, sizinle »%2$s« ögesini paylaştı",
+ "%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
@@ -180,6 +194,7 @@ OC.L10N.register(
"Could not create user" : "Kullanıcı oluşturulamadı",
"User disabled" : "Kullanıcı devre dışı",
"Login canceled by app" : "Oturum açma uygulama tarafından iptal edildi",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "\"%1$s\" uygulaması, şu gereklilikler sağlanmadığı için kurulamıyor: %2$s",
"a safe home for all your data" : "verileriniz için güvenli bir barınak",
"File is currently busy, please try again later" : "Dosya şu anda meşgul, lütfen daha sonra deneyin",
"Can't read file" : "Dosya okunamadı",
@@ -218,6 +233,7 @@ OC.L10N.register(
"Action \"%s\" not supported or implemented." : "\"%s\" işlemi desteklenmiyor ya da henüz kullanılamıyor.",
"Authentication failed, wrong token or provider ID given" : "Kimlik doğrulanamadı. Belirtilen kod ya da hizmet sağlayıcı kodu hatalı",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "İsteğin tamamlanması için gerekli parametreler eksik: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "\"%1$s\" kodu zaten \"%2$s\" birleşmiş hizmet sağlayıcısı tarafından kullanılıyor",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "\"%s\" kodlu Birleşmiş Bulut Hizmeti Sağlayıcısı bulunamadı.",
"Could not obtain lock type %d on \"%s\"." : "\"%s\" için %d kilit türü alınamadı.",
"Storage unauthorized. %s" : "Depolamaya erişim izni yok. %s",
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 6267ed6f0ef..4b4c2def28c 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -22,6 +22,8 @@
"Following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
"The command line tool %s could not be found" : "%s komut satırı aracı bulunamadı",
"The library %s is not available." : "%s kitaplığı bulunamadı.",
+ "Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s sonrası bir sürümü gerekli. Geçerli sürüm: %3$s.",
+ "Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s öncesi bir sürümü gerekli. Geçerli sürüm: %3$s.",
"Following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
"Server version %s or higher is required." : "Sunucu %s ya da daha sonraki bir sürüm olmalıdır.",
"Server version %s or lower is required." : "Sunucu %s ya da daha önceki bir sürüm olmalıdır.",
@@ -100,16 +102,26 @@
"Sharing %s failed, because the file does not exist" : "Dosya bulunamadığından %s paylaşılamadı",
"You are not allowed to share %s" : "%s ögesini paylaşma izniniz yok",
"Sharing %s failed, because you can not share with yourself" : "%s paylaşılamadı. Ögeyi kendiniz ile paylaşamazsınız",
+ "Sharing %1$s failed, because the user %2$s does not exist" : "%1$s paylaşılamadı. %2$s kullanıcısı bulunamadı",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s paylaşılamadı. %2$s kullanıcısı %3$s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s ögesi %2$s kullanıcısı ile zaten paylaşılmış olduğundan paylaşılamadı",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "%1$s ögesi %2$s grubu bulunamadığından paylaşılamadı",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s ögesi %2$s kullanıcısı %3$s grubunun üyesi olmadığından paylaşılamadı",
"You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
"Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
"Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s ögesi %2$sbulunamadığından paylaşılamadı. Sunucuya şu anda erişilemiyor olabilir.",
+ "Share type %1$s is not valid for %2$s" : "%1$s paylaşım türü %2$s için kullanılamaz",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
"Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Paylaşım arka ucu %s OCP\\Share_Backend arayüzünü desteklemeli",
"Sharing backend %s not found" : "%s paylaşım arka ucu bulunamadı",
"Sharing backend for %s not found" : "%s için paylaşım arka ucu bulunamadı",
"Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s ögesi %2$s için verilen izin düzeyini aştığından paylaşılamadı",
"Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı",
"Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı",
"%1$s shared »%2$s« with you and wants to add:" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor",
@@ -121,6 +133,8 @@
"Files can’t be shared with create permissions" : "Ekleme izni ile dosya paylaşılamaz",
"Expiration date is in the past" : "Son kullanma tarihi geçmişte",
"Can’t set expiration date more than %s days in the future" : "Son kullanma tarihi %sgünden sonrası olarak ayarlanamaz",
+ "%1$s shared »%2$s« with you" : "%1$s, sizinle »%2$s« ögesini paylaştı",
+ "%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
@@ -178,6 +192,7 @@
"Could not create user" : "Kullanıcı oluşturulamadı",
"User disabled" : "Kullanıcı devre dışı",
"Login canceled by app" : "Oturum açma uygulama tarafından iptal edildi",
+ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "\"%1$s\" uygulaması, şu gereklilikler sağlanmadığı için kurulamıyor: %2$s",
"a safe home for all your data" : "verileriniz için güvenli bir barınak",
"File is currently busy, please try again later" : "Dosya şu anda meşgul, lütfen daha sonra deneyin",
"Can't read file" : "Dosya okunamadı",
@@ -216,6 +231,7 @@
"Action \"%s\" not supported or implemented." : "\"%s\" işlemi desteklenmiyor ya da henüz kullanılamıyor.",
"Authentication failed, wrong token or provider ID given" : "Kimlik doğrulanamadı. Belirtilen kod ya da hizmet sağlayıcı kodu hatalı",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "İsteğin tamamlanması için gerekli parametreler eksik: \"%s\"",
+ "ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "\"%1$s\" kodu zaten \"%2$s\" birleşmiş hizmet sağlayıcısı tarafından kullanılıyor",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "\"%s\" kodlu Birleşmiş Bulut Hizmeti Sağlayıcısı bulunamadı.",
"Could not obtain lock type %d on \"%s\"." : "\"%s\" için %d kilit türü alınamadı.",
"Storage unauthorized. %s" : "Depolamaya erişim izni yok. %s",
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index 9a6f0486a21..92ac030c83c 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -15,7 +15,7 @@ OC.L10N.register(
"Education Edition" : "教育版",
"Enterprise bundle" : "企业捆绑包",
"Groupware bundle" : "群组捆绑包",
- "Social sharing bundle" : "社交分享捆绑包",
+ "Social sharing bundle" : "社交共享捆绑包",
"PHP %s or higher is required." : "要求 PHP 版本 %s 或者更高。",
"PHP with a version lower than %s is required." : "需要版本低于 %s 的PHP.",
"%sbit or higher PHP required." : "需要 %s 或更高版本的 PHP",
@@ -70,7 +70,7 @@ OC.L10N.register(
"Share" : "共享",
"Overview" : "概览",
"Basic settings" : "基本设置",
- "Sharing" : "分享",
+ "Sharing" : "共享",
"Security" : "安全",
"Additional settings" : "其他设置",
"Personal info" : "个人信息",
@@ -95,25 +95,25 @@ OC.L10N.register(
"Set an admin password." : "请设置一个管理员密码。",
"Can't create or write into the data directory %s" : "无法创建或写入数据目录 %s",
"Invalid Federated Cloud ID" : "无效的联合云ID",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s 失败, 因为后端不允许分享 %i 类型",
- "Sharing %s failed, because the file does not exist" : "分享 %s 失败, 因为文件不存在.",
- "You are not allowed to share %s" : "您无权分享 %s",
- "Sharing %s failed, because you can not share with yourself" : "分享 %s 失败, 因为您不能分享给自己",
- "You need to provide a password to create a public link, only protected links are allowed" : "链接分享需要密码, 您需要提供一个密码以创建公开连接",
- "Sharing %s failed, because sharing with links is not allowed" : "分享 %s 失败, 因为不允许使用链接分享",
- "Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间. 过期时间不能晚于其分享时间 %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "共享 %s 失败, 因为后端不允许共享 %i 类型",
+ "Sharing %s failed, because the file does not exist" : "共享 %s 失败, 因为文件不存在.",
+ "You are not allowed to share %s" : "您无权共享 %s",
+ "Sharing %s failed, because you can not share with yourself" : "共享 %s 失败, 因为您不能共享给自己",
+ "You need to provide a password to create a public link, only protected links are allowed" : "您需要提供密码以创建公开链接,因为只允许创建受保护的链接。",
+ "Sharing %s failed, because sharing with links is not allowed" : "共享 %s 失败, 因为不允许使用链接共享",
+ "Not allowed to create a federated share with the same user" : "不允许创建对相同用户的联合共享",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间. 过期时间不能晚于其共享时间 %s",
"Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间. 过期时间不能为过去",
- "Sharing backend %s must implement the interface OCP\\Share_Backend" : "分享后端 %s 必须实现 OCP\\Share_Backend 接口",
- "Sharing backend %s not found" : "%s 的分享后端未找到",
- "Sharing backend for %s not found" : "%s 的分享后端未找到",
- "Sharing failed, because the user %s is the original sharer" : "分享失败, 因为用户 %s 是原始的分享者.",
- "Sharing %s failed, because resharing is not allowed" : "分享 %s 失败, 因为不允许二次共享",
- "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失败, 因为文件缓存中找不到该文件",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "共享后端 %s 必须实现 OCP\\Share_Backend 接口",
+ "Sharing backend %s not found" : "%s 的共享后端未找到",
+ "Sharing backend for %s not found" : "%s 的共享后端未找到",
+ "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者。",
+ "Sharing %s failed, because resharing is not allowed" : "共享 %s 失败, 因为不允许二次共享",
+ "Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败, 因为文件缓存中找不到该文件",
"Open »%s«" : "打开 %s",
"Can’t increase permissions of %s" : "无法增加%s的权限。",
- "Files can’t be shared with delete permissions" : "无法分享有删除权限的文件",
- "Files can’t be shared with create permissions" : "无法分享有创建权限的文件",
+ "Files can’t be shared with delete permissions" : "无法共享有删除权限的文件",
+ "Files can’t be shared with create permissions" : "无法共享有创建权限的文件",
"Expiration date is in the past" : "到期日期已过.",
"Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.",
"Click the button below to open it." : "点击下方按钮可打开它.",
@@ -224,18 +224,18 @@ OC.L10N.register(
"Encryption" : "加密",
"Tips & tricks" : "小提示",
"DB Error: \"%s\"" : "数据库错误:\"%s\"",
- "Sharing %s failed, because the user %s does not exist" : "分享 %s 失败, 因为用户 %s 不存在",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "分享 %s 失败, 因为用户 %s 不是 %s 所属的任何组的用户",
- "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
- "Sharing %s failed, because this item is already shared with user %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
- "Sharing %s failed, because the group %s does not exist" : "分享 %s 失败, 因为 %s 分组不存在",
- "Sharing %s failed, because %s is not a member of the group %s" : "分享 %s 失败, 因为 %s 不是 %s 分组的成员",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享 %s 失败, 无法找到 %s, 该服务当前无法连接.",
+ "Sharing %s failed, because the user %s does not exist" : "共享 %s 失败, 因为用户 %s 不存在",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "共享 %s 失败, 因为用户 %s 不是 %s 所属的任何组的用户",
+ "Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败, 因为该项已经共享给用户 %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "共享 %s 失败, 因为该项已经共享给用户 %s",
+ "Sharing %s failed, because the group %s does not exist" : "共享 %s 失败, 因为 %s 分组不存在",
+ "Sharing %s failed, because %s is not a member of the group %s" : "共享 %s 失败, 因为 %s 不是 %s 分组的成员",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "共享 %s 失败,无法找到 %s, 该服务当前无法连接。",
"Share type %s is not valid for %s" : "%s 不是 %s 的合法共享类型",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "分享 %s 失败, 因为权限超过了 %s 的已有权限",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失败, 因为无法找到 %s 分享后端的来源",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "共享 %s 失败, 因为权限超过了 %s 的已有权限",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "共享 %s 失败, 因为无法找到 %s 共享后端的来源",
"Cannot increase permissions of %s" : "无法增加 %s 的权限",
- "%s shared »%s« with you" : "%s 向您分享了 »%s«",
+ "%s shared »%s« with you" : "%s 向您共享了 »%s«",
"%s shared »%s« with you." : "%s 已与您共享了 %s .",
"%s via %s" : "%s 通过 %s",
"No app name specified" : "没有指定的 App 名称",
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index c029bd32c95..ade0d2f5823 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -13,7 +13,7 @@
"Education Edition" : "教育版",
"Enterprise bundle" : "企业捆绑包",
"Groupware bundle" : "群组捆绑包",
- "Social sharing bundle" : "社交分享捆绑包",
+ "Social sharing bundle" : "社交共享捆绑包",
"PHP %s or higher is required." : "要求 PHP 版本 %s 或者更高。",
"PHP with a version lower than %s is required." : "需要版本低于 %s 的PHP.",
"%sbit or higher PHP required." : "需要 %s 或更高版本的 PHP",
@@ -68,7 +68,7 @@
"Share" : "共享",
"Overview" : "概览",
"Basic settings" : "基本设置",
- "Sharing" : "分享",
+ "Sharing" : "共享",
"Security" : "安全",
"Additional settings" : "其他设置",
"Personal info" : "个人信息",
@@ -93,25 +93,25 @@
"Set an admin password." : "请设置一个管理员密码。",
"Can't create or write into the data directory %s" : "无法创建或写入数据目录 %s",
"Invalid Federated Cloud ID" : "无效的联合云ID",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s 失败, 因为后端不允许分享 %i 类型",
- "Sharing %s failed, because the file does not exist" : "分享 %s 失败, 因为文件不存在.",
- "You are not allowed to share %s" : "您无权分享 %s",
- "Sharing %s failed, because you can not share with yourself" : "分享 %s 失败, 因为您不能分享给自己",
- "You need to provide a password to create a public link, only protected links are allowed" : "链接分享需要密码, 您需要提供一个密码以创建公开连接",
- "Sharing %s failed, because sharing with links is not allowed" : "分享 %s 失败, 因为不允许使用链接分享",
- "Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间. 过期时间不能晚于其分享时间 %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "共享 %s 失败, 因为后端不允许共享 %i 类型",
+ "Sharing %s failed, because the file does not exist" : "共享 %s 失败, 因为文件不存在.",
+ "You are not allowed to share %s" : "您无权共享 %s",
+ "Sharing %s failed, because you can not share with yourself" : "共享 %s 失败, 因为您不能共享给自己",
+ "You need to provide a password to create a public link, only protected links are allowed" : "您需要提供密码以创建公开链接,因为只允许创建受保护的链接。",
+ "Sharing %s failed, because sharing with links is not allowed" : "共享 %s 失败, 因为不允许使用链接共享",
+ "Not allowed to create a federated share with the same user" : "不允许创建对相同用户的联合共享",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间. 过期时间不能晚于其共享时间 %s",
"Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间. 过期时间不能为过去",
- "Sharing backend %s must implement the interface OCP\\Share_Backend" : "分享后端 %s 必须实现 OCP\\Share_Backend 接口",
- "Sharing backend %s not found" : "%s 的分享后端未找到",
- "Sharing backend for %s not found" : "%s 的分享后端未找到",
- "Sharing failed, because the user %s is the original sharer" : "分享失败, 因为用户 %s 是原始的分享者.",
- "Sharing %s failed, because resharing is not allowed" : "分享 %s 失败, 因为不允许二次共享",
- "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失败, 因为文件缓存中找不到该文件",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "共享后端 %s 必须实现 OCP\\Share_Backend 接口",
+ "Sharing backend %s not found" : "%s 的共享后端未找到",
+ "Sharing backend for %s not found" : "%s 的共享后端未找到",
+ "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者。",
+ "Sharing %s failed, because resharing is not allowed" : "共享 %s 失败, 因为不允许二次共享",
+ "Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败, 因为文件缓存中找不到该文件",
"Open »%s«" : "打开 %s",
"Can’t increase permissions of %s" : "无法增加%s的权限。",
- "Files can’t be shared with delete permissions" : "无法分享有删除权限的文件",
- "Files can’t be shared with create permissions" : "无法分享有创建权限的文件",
+ "Files can’t be shared with delete permissions" : "无法共享有删除权限的文件",
+ "Files can’t be shared with create permissions" : "无法共享有创建权限的文件",
"Expiration date is in the past" : "到期日期已过.",
"Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.",
"Click the button below to open it." : "点击下方按钮可打开它.",
@@ -222,18 +222,18 @@
"Encryption" : "加密",
"Tips & tricks" : "小提示",
"DB Error: \"%s\"" : "数据库错误:\"%s\"",
- "Sharing %s failed, because the user %s does not exist" : "分享 %s 失败, 因为用户 %s 不存在",
- "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "分享 %s 失败, 因为用户 %s 不是 %s 所属的任何组的用户",
- "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
- "Sharing %s failed, because this item is already shared with user %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
- "Sharing %s failed, because the group %s does not exist" : "分享 %s 失败, 因为 %s 分组不存在",
- "Sharing %s failed, because %s is not a member of the group %s" : "分享 %s 失败, 因为 %s 不是 %s 分组的成员",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享 %s 失败, 无法找到 %s, 该服务当前无法连接.",
+ "Sharing %s failed, because the user %s does not exist" : "共享 %s 失败, 因为用户 %s 不存在",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "共享 %s 失败, 因为用户 %s 不是 %s 所属的任何组的用户",
+ "Sharing %s failed, because this item is already shared with %s" : "共享 %s 失败, 因为该项已经共享给用户 %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "共享 %s 失败, 因为该项已经共享给用户 %s",
+ "Sharing %s failed, because the group %s does not exist" : "共享 %s 失败, 因为 %s 分组不存在",
+ "Sharing %s failed, because %s is not a member of the group %s" : "共享 %s 失败, 因为 %s 不是 %s 分组的成员",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "共享 %s 失败,无法找到 %s, 该服务当前无法连接。",
"Share type %s is not valid for %s" : "%s 不是 %s 的合法共享类型",
- "Sharing %s failed, because the permissions exceed permissions granted to %s" : "分享 %s 失败, 因为权限超过了 %s 的已有权限",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失败, 因为无法找到 %s 分享后端的来源",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "共享 %s 失败, 因为权限超过了 %s 的已有权限",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "共享 %s 失败, 因为无法找到 %s 共享后端的来源",
"Cannot increase permissions of %s" : "无法增加 %s 的权限",
- "%s shared »%s« with you" : "%s 向您分享了 »%s«",
+ "%s shared »%s« with you" : "%s 向您共享了 »%s«",
"%s shared »%s« with you." : "%s 已与您共享了 %s .",
"%s via %s" : "%s 通过 %s",
"No app name specified" : "没有指定的 App 名称",
diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php
index 7f177e9c658..a057cb4fc27 100644
--- a/lib/private/Accounts/AccountManager.php
+++ b/lib/private/Accounts/AccountManager.php
@@ -330,7 +330,7 @@ class AccountManager implements IAccountManager {
private function parseAccountData(IUser $user, $data): Account {
$account = new Account($user);
foreach($data as $property => $accountData) {
- $account->setProperty($property, $accountData['value'], $accountData['scope'], $accountData['verified']);
+ $account->setProperty($property, $accountData['value'] ?? '', $accountData['scope'], $accountData['verified']);
}
return $account;
}
diff --git a/lib/private/Authentication/Token/Manager.php b/lib/private/Authentication/Token/Manager.php
index 7c991eadea9..98a48f41523 100644
--- a/lib/private/Authentication/Token/Manager.php
+++ b/lib/private/Authentication/Token/Manager.php
@@ -112,7 +112,9 @@ class Manager implements IProvider {
public function getToken(string $tokenId): IToken {
try {
return $this->publicKeyTokenProvider->getToken($tokenId);
- } catch (InvalidTokenException $e) {
+ } catch (ExpiredTokenException $e) {
+ throw $e;
+ } catch(InvalidTokenException $e) {
// No worries we try to convert it to a PublicKey Token
}
@@ -138,6 +140,8 @@ class Manager implements IProvider {
public function getTokenById(int $tokenId): IToken {
try {
return $this->publicKeyTokenProvider->getTokenById($tokenId);
+ } catch (ExpiredTokenException $e) {
+ throw $e;
} catch (InvalidTokenException $e) {
return $this->defaultTokenProvider->getTokenById($tokenId);
}
@@ -151,6 +155,8 @@ class Manager implements IProvider {
public function renewSessionToken(string $oldSessionId, string $sessionId) {
try {
$this->publicKeyTokenProvider->renewSessionToken($oldSessionId, $sessionId);
+ } catch (ExpiredTokenException $e) {
+ throw $e;
} catch (InvalidTokenException $e) {
$this->defaultTokenProvider->renewSessionToken($oldSessionId, $sessionId);
}
diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php
index d107bb47c52..97e1c0535a4 100644
--- a/lib/private/Avatar.php
+++ b/lib/private/Avatar.php
@@ -62,15 +62,18 @@ class Avatar implements IAvatar {
/**
* https://github.com/sebdesign/cap-height -- for 500px height
- * Open Sans cap-height is 0.72 and we want a 200px caps height size (0.4 letter-to-total-height ratio, 500*0.4=200). 200/0.72 = 278px.
- * Since we start from the baseline (text-anchor) we need to shift the y axis by 100px (half the caps height): 500/2+100=350
- *
- * @var string
+ * Automated check: https://codepen.io/skjnldsv/pen/PydLBK/
+ * Nunito cap-height is 0.716 and we want a 200px caps height size
+ * (0.4 letter-to-total-height ratio, 500*0.4=200), so: 200/0.716 = 279px.
+ * Since we start from the baseline (text-anchor) we need to
+ * shift the y axis by 100px (half the caps height): 500/2+100=350
+ *
+ * @var string
*/
private $svgTemplate = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="{size}" height="{size}" version="1.1" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" fill="#{fill}"></rect>
- <text x="50%" y="350" style="font-weight:600;font-size:278px;font-family:\'Open Sans\';text-anchor:middle;fill:#fff">{letter}</text>
+ <text x="50%" y="350" style="font-weight:normal;font-size:279px;font-family:\'Nunito\';text-anchor:middle;fill:#fff">{letter}</text>
</svg>';
/**
@@ -189,7 +192,7 @@ class Avatar implements IAvatar {
//
}
$this->user->triggerChange('avatar', $file);
- }
+ }
/**
* remove the users avatar
@@ -285,15 +288,15 @@ class Avatar implements IAvatar {
}
throw new NotFoundException;
}
-
+
/**
* {size} = 500
* {fill} = hex color to fill
* {letter} = Letter to display
- *
+ *
* Generate SVG avatar
* @return string
- *
+ *
*/
private function getAvatarVector(int $size): string {
$userDisplayName = $this->user->getDisplayName();
@@ -301,14 +304,14 @@ class Avatar implements IAvatar {
$bgRGB = $this->avatarBackgroundColor($userDisplayName);
$bgHEX = sprintf("%02x%02x%02x", $bgRGB->r, $bgRGB->g, $bgRGB->b);
$letter = mb_strtoupper(mb_substr($userDisplayName, 0, 1), 'UTF-8');
-
+
$toReplace = ['{size}', '{fill}', '{letter}'];
return str_replace($toReplace, [$size, $bgHEX, $letter], $this->svgTemplate);
}
/**
* Generate png avatar from svg with Imagick
- *
+ *
* @param int $size
* @return string|boolean
*/
@@ -317,7 +320,7 @@ class Avatar implements IAvatar {
return false;
}
try {
- $font = __DIR__ . '/../../core/fonts/OpenSans-Semibold.ttf';
+ $font = __DIR__ . '/../../core/fonts/Nunito-Regular.ttf';
$svg = $this->getAvatarVector($size);
$avatar = new Imagick();
$avatar->setFont($font);
@@ -333,7 +336,7 @@ class Avatar implements IAvatar {
/**
* Generate png avatar with GD
- *
+ *
* @param string $userDisplayName
* @param int $size
* @return string
@@ -347,7 +350,7 @@ class Avatar implements IAvatar {
$white = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, $size, $size, $background);
- $font = __DIR__ . '/../../core/fonts/OpenSans-Semibold.ttf';
+ $font = __DIR__ . '/../../core/fonts/Nunito-Regular.ttf';
$fontSize = $size * 0.4;
@@ -455,7 +458,7 @@ class Avatar implements IAvatar {
public function avatarBackgroundColor(string $hash) {
// Normalize hash
$hash = strtolower($hash);
-
+
// Already a md5 hash?
if( preg_match('/^([0-9a-f]{4}-?){8}$/', $hash, $matches) !== 1 ) {
$hash = md5($hash);
diff --git a/lib/private/Encryption/DecryptAll.php b/lib/private/Encryption/DecryptAll.php
index 12bda54a52e..16eee347334 100644
--- a/lib/private/Encryption/DecryptAll.php
+++ b/lib/private/Encryption/DecryptAll.php
@@ -252,6 +252,12 @@ class DecryptAll {
*/
protected function decryptFile($path) {
+ // skip already decrypted files
+ $fileInfo = $this->rootView->getFileInfo($path);
+ if ($fileInfo !== false && !$fileInfo->isEncrypted()) {
+ return true;
+ }
+
$source = $path;
$target = $path . '.decrypted.' . $this->getTimestamp();
diff --git a/lib/private/Files/Cache/Wrapper/CacheWrapper.php b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
index bf0d12ba2ea..da0a1b54e7f 100644
--- a/lib/private/Files/Cache/Wrapper/CacheWrapper.php
+++ b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
@@ -187,6 +187,12 @@ class CacheWrapper extends Cache {
$this->getCache()->move($source, $target);
}
+ protected function getMoveInfo($path) {
+ /** @var Cache $cache */
+ $cache = $this->getCache();
+ return $cache->getMoveInfo($path);
+ }
+
public function moveFromCache(ICache $sourceCache, $sourcePath, $targetPath) {
$this->getCache()->moveFromCache($sourceCache, $sourcePath, $targetPath);
}
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index 4c38ba769d3..53f73f0f95d 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -175,7 +175,7 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
* @return string
*/
public function getName() {
- return basename($this->getPath());
+ return isset($this->data['name']) ? $this->data['name'] : basename($this->getPath());
}
/**
diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php
index ba9c85deeee..404ea4ed804 100644
--- a/lib/private/Files/Filesystem.php
+++ b/lib/private/Files/Filesystem.php
@@ -65,6 +65,7 @@ use OC\Files\Storage\StorageFactory;
use OC\Lockdown\Filesystem\NullStorage;
use OCP\Files\Config\IMountProvider;
use OCP\Files\NotFoundException;
+use OCP\Files\Storage\IStorageFactory;
use OCP\ILogger;
use OCP\IUserManager;
@@ -246,11 +247,11 @@ class Filesystem {
/**
* Returns the storage factory
*
- * @return \OCP\Files\Storage\IStorageFactory
+ * @return IStorageFactory
*/
public static function getLoader() {
if (!self::$loader) {
- self::$loader = new StorageFactory();
+ self::$loader = \OC::$server->query(IStorageFactory::class);
}
return self::$loader;
}
diff --git a/lib/private/Files/Storage/Wrapper/Quota.php b/lib/private/Files/Storage/Wrapper/Quota.php
index 860fce57277..4cbe9189593 100644
--- a/lib/private/Files/Storage/Wrapper/Quota.php
+++ b/lib/private/Files/Storage/Wrapper/Quota.php
@@ -83,7 +83,7 @@ class Quota extends Wrapper {
* @return int
*/
public function free_space($path) {
- if ($this->quota < 0 || strpos($path, 'cache') === 0) {
+ if ($this->quota < 0 || strpos($path, 'cache') === 0 || strpos($path, 'uploads') === 0) {
return $this->storage->free_space($path);
} else {
$used = $this->getSize($this->sizeRoot);
diff --git a/lib/private/Preview/TXT.php b/lib/private/Preview/TXT.php
index 2925e5bd537..a5efb73010c 100644
--- a/lib/private/Preview/TXT.php
+++ b/lib/private/Preview/TXT.php
@@ -69,7 +69,7 @@ class TXT extends Provider {
$fontFile = __DIR__;
$fontFile .= '/../../../core';
- $fontFile .= '/fonts/OpenSans-Regular.ttf';
+ $fontFile .= '/fonts/Nunito-Regular.ttf';
$canUseTTF = function_exists('imagettftext');
diff --git a/lib/private/Security/CSP/ContentSecurityPolicy.php b/lib/private/Security/CSP/ContentSecurityPolicy.php
index cae247f9f4f..8fd4df05c31 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicy.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicy.php
@@ -223,4 +223,12 @@ class ContentSecurityPolicy extends \OCP\AppFramework\Http\ContentSecurityPolicy
$this->allowedWorkerSrcDomains = $allowedWorkerSrcDomains;
}
+ public function getReportTo(): array {
+ return $this->reportTo;
+ }
+
+ public function setReportTo(array $reportTo) {
+ $this->reportTo = $reportTo;
+ }
+
}
diff --git a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
index 088fb2d859d..795d8cc8642 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
@@ -74,6 +74,8 @@ class ContentSecurityPolicyNonceManager {
Request::USER_AGENT_CHROME,
// Firefox 45+
'/^Mozilla\/5\.0 \([^)]+\) Gecko\/[0-9.]+ Firefox\/(4[5-9]|[5-9][0-9])\.[0-9.]+$/',
+ // Safari 12+
+ '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Version\/(1[2-9]|[2-9][0-9])\.[0-9]+ Safari\/[0-9.A-Z]+$/',
];
if($this->request->isUserAgent($browserWhitelist)) {
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 5ea1b697391..32d7705919c 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -80,6 +80,7 @@ use OC\Files\Mount\ObjectHomeMountProvider;
use OC\Files\Node\HookConnector;
use OC\Files\Node\LazyRoot;
use OC\Files\Node\Root;
+use OC\Files\Storage\StorageFactory;
use OC\Files\View;
use OC\Http\Client\ClientService;
use OC\IntegrityCheck\Checker;
@@ -123,6 +124,7 @@ use OC\Dashboard\DashboardManager;
use OCA\Theming\ImageManager;
use OCA\Theming\ThemingDefaults;
+use OCP\Accounts\IAccountManager;
use OCP\App\IAppManager;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Collaboration\AutoComplete\IManager;
@@ -135,6 +137,7 @@ use OCP\Federation\ICloudFederationProviderManager;
use OCP\Federation\ICloudIdManager;
use OCP\Authentication\LoginCredentials\IStore;
use OCP\Files\NotFoundException;
+use OCP\Files\Storage\IStorageFactory;
use OCP\GlobalScale\IConfig;
use OCP\ICacheFactory;
use OCP\IDBConnection;
@@ -1173,6 +1176,11 @@ class Server extends ServerContainer implements IServerContainer {
);
});
$this->registerAlias(IContactsStore::class, ContactsStore::class);
+ $this->registerAlias(IAccountManager::class, AccountManager::class);
+
+ $this->registerService(IStorageFactory::class, function() {
+ return new StorageFactory();
+ });
$this->registerAlias(IDashboardManager::class, Dashboard\DashboardManager::class);
@@ -2024,4 +2032,11 @@ class Server extends ServerContainer implements IServerContainer {
public function getRemoteInstanceFactory() {
return $this->query(IInstanceFactory::class);
}
+
+ /**
+ * @return IStorageFactory
+ */
+ public function getStorageFactory() {
+ return $this->query(IStorageFactory::class);
+ }
}
diff --git a/lib/public/Accounts/IAccount.php b/lib/public/Accounts/IAccount.php
index 0fa8f6e53e4..6bf4988a9f1 100644
--- a/lib/public/Accounts/IAccount.php
+++ b/lib/public/Accounts/IAccount.php
@@ -78,7 +78,7 @@ interface IAccount extends \JsonSerializable {
* @param string $verified \OCP\Accounts\IAccountManager::NOT_VERIFIED | \OCP\Accounts\IAccountManager::VERIFICATION_IN_PROGRESS | \OCP\Accounts\IAccountManager::VERIFIED
* @return IAccountProperty[]
*/
- public function getFilteredProperties(string $scope, string $verified): array;
+ public function getFilteredProperties(string $scope = null, string $verified = null): array;
/**
* Get the related user for the account data
diff --git a/lib/public/AppFramework/Http/ContentSecurityPolicy.php b/lib/public/AppFramework/Http/ContentSecurityPolicy.php
index 02a52c6c49d..597069fdaaf 100644
--- a/lib/public/AppFramework/Http/ContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/ContentSecurityPolicy.php
@@ -90,4 +90,7 @@ class ContentSecurityPolicy extends EmptyContentSecurityPolicy {
/** @var array Domains from which web-workers can be loaded */
protected $allowedWorkerSrcDomains = [];
+
+ /** @var array Locations to report violations to */
+ protected $reportTo = [];
}
diff --git a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
index ddc7918d094..3fcef1d0efd 100644
--- a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
@@ -76,6 +76,9 @@ class EmptyContentSecurityPolicy {
/** @var array Domains from which web-workers can be loaded */
protected $allowedWorkerSrcDomains = null;
+ /** @var array Locations to report violations to */
+ protected $reportTo = null;
+
/**
* Whether inline JavaScript snippets are allowed or forbidden
* @param bool $state
@@ -384,6 +387,18 @@ class EmptyContentSecurityPolicy {
}
/**
+ * Add location to report CSP violations to
+ *
+ * @param string $location
+ * @return $this
+ * @since 15.0.0
+ */
+ public function addReportTo(string $location) {
+ $this->reportTo[] = $location;
+ return $this;
+ }
+
+ /**
* Get the generated Content-Security-Policy as a string
* @return string
* @since 8.1.0
@@ -472,6 +487,11 @@ class EmptyContentSecurityPolicy {
$policy .= ';';
}
+ if (!empty($this->reportTo)) {
+ $policy .= 'report-uri ' . implode(' ', $this->reportTo);
+ $policy .= ';';
+ }
+
return rtrim($policy, ';');
}
}
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 639487660b6..a3e494479b7 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -584,4 +584,10 @@ interface IServerContainer extends IContainer {
* @since 13.0.0
*/
public function getRemoteInstanceFactory();
+
+ /**
+ * @return \OCP\Files\Storage\IStorageFactory
+ * @since 15.0.0
+ */
+ public function getStorageFactory();
}
diff --git a/public.php b/public.php
index d50f49e2536..f033e1897c8 100644
--- a/public.php
+++ b/public.php
@@ -54,7 +54,7 @@ try {
list($service) = explode('/', $pathInfo);
}
$file = \OC::$server->getConfig()->getAppValue('core', 'public_' . strip_tags($service));
- if ($file === null) {
+ if ($file === '') {
http_response_code(404);
exit;
}
diff --git a/resources/app-info.xsd b/resources/app-info.xsd
index 5c2ab89e213..fa06752c01d 100644
--- a/resources/app-info.xsd
+++ b/resources/app-info.xsd
@@ -61,6 +61,8 @@
maxOccurs="1" />
<xs:element name="sabre" type="sabre" minOccurs="0"
maxOccurs="1" />
+ <xs:element name="trash" type="trash" minOccurs="0"
+ maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueNameL10n">
@@ -653,11 +655,25 @@
</xs:sequence>
</xs:complexType>
+ <xs:complexType name="trash">
+ <xs:sequence>
+ <xs:element name="backend" type="trash-backend" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="trash-backend">
+ <xs:simpleContent>
+ <xs:extension base="php-class">
+ <xs:attribute name="for" type="php-class" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
<xs:simpleType name="php-class">
<xs:restriction base="xs:string">
<xs:pattern
value="[a-zA-Z_][0-9a-zA-Z_]*(\\[a-zA-Z_][0-9a-zA-Z_]*)*"/>
</xs:restriction>
</xs:simpleType>
-
</xs:schema>
diff --git a/settings/Application.php b/settings/Application.php
index 4ad59a64d40..4a144082427 100644
--- a/settings/Application.php
+++ b/settings/Application.php
@@ -121,6 +121,8 @@ class Application extends App {
Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword');
Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo');
+
+ Util::connectHook('\OCP\Config', 'js', $this, 'extendJsConfig');
}
/**
@@ -152,4 +154,18 @@ class Application extends App {
$hooks = $this->getContainer()->query(Hooks::class);
$hooks->onChangeEmail($parameters['user'], $parameters['old_value']);
}
+
+ /**
+ * @param array $settings
+ */
+ public function extendJsConfig(array $settings) {
+ $appConfig = json_decode($settings['array']['oc_appconfig'], true);
+
+ $publicWebFinger = \OC::$server->getConfig()->getAppValue('core', 'public_webfinger', '');
+ if (!empty($publicWebFinger)) {
+ $appConfig['core']['public_webfinger'] = $publicWebFinger;
+ }
+
+ $settings['array']['oc_appconfig'] = json_encode($appConfig);
+ }
}
diff --git a/settings/css/settings.scss b/settings/css/settings.scss
index 66361922d0c..8500d6a8353 100644
--- a/settings/css/settings.scss
+++ b/settings/css/settings.scss
@@ -328,7 +328,7 @@ select {
&.active {
box-shadow: inset 2px 0 var(--color-primary);
.menuitem-text {
- font-weight: 600;
+ font-weight: bold;
}
}
}
@@ -566,7 +566,7 @@ li.active {
width: 150px;
}
label {
- font-weight: 700;
+ font-weight: bold;
}
}
diff --git a/settings/js/admin.js b/settings/js/admin.js
index de5bc2b9537..35f3d949ab6 100644
--- a/settings/js/admin.js
+++ b/settings/js/admin.js
@@ -248,13 +248,14 @@ $(document).ready(function(){
// run setup checks then gather error messages
$.when(
OC.SetupChecks.checkWebDAV(),
+ OC.SetupChecks.checkWellKnownUrl('/.well-known/webfinger', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true && !!oc_appconfig.core.public_webfinger, 200),
OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
OC.SetupChecks.checkWellKnownUrl('/.well-known/carddav', oc_defaults.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true),
OC.SetupChecks.checkSetup(),
OC.SetupChecks.checkGeneric(),
OC.SetupChecks.checkDataProtected()
- ).then(function(check1, check2, check3, check4, check5, check6) {
- var messages = [].concat(check1, check2, check3, check4, check5, check6);
+ ).then(function(check1, check2, check3, check4, check5, check6, check7) {
+ var messages = [].concat(check1, check2, check3, check4, check5, check6, check7);
var $el = $('#postsetupchecks');
$('#security-warning-state-loading').addClass('hidden');
diff --git a/settings/l10n/ast.js b/settings/l10n/ast.js
index 24f7afd9fa7..c5d8fa11907 100644
--- a/settings/l10n/ast.js
+++ b/settings/l10n/ast.js
@@ -96,6 +96,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Asocedió un fallu entrín se camudaba la to llingüa. Recarga la páxina y volvi tentalo, por favor.",
"Select a profile picture" : "Esbillar una imaxe de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Llendar a grupos",
"Official" : "Oficial",
"Visit website" : "Visitar sitiu web",
"User documentation" : "Documentación d'usuariu",
@@ -284,7 +285,6 @@ OC.L10N.register(
"Theming" : "Aspeutu",
"Hardening and security guidance" : "Guía de fortalecimientu y seguranza",
"View in store" : "Ver na tienda",
- "Limit to groups" : "Llendar a grupos",
"This app has an update available." : "Esta apllicación tien un anovamientu disponible.",
"by %s" : "por %s",
"%s-licensed" : "Llicencia %s",
diff --git a/settings/l10n/ast.json b/settings/l10n/ast.json
index ddd224f3f9d..1914dd65cef 100644
--- a/settings/l10n/ast.json
+++ b/settings/l10n/ast.json
@@ -94,6 +94,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Asocedió un fallu entrín se camudaba la to llingüa. Recarga la páxina y volvi tentalo, por favor.",
"Select a profile picture" : "Esbillar una imaxe de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Llendar a grupos",
"Official" : "Oficial",
"Visit website" : "Visitar sitiu web",
"User documentation" : "Documentación d'usuariu",
@@ -282,7 +283,6 @@
"Theming" : "Aspeutu",
"Hardening and security guidance" : "Guía de fortalecimientu y seguranza",
"View in store" : "Ver na tienda",
- "Limit to groups" : "Llendar a grupos",
"This app has an update available." : "Esta apllicación tien un anovamientu disponible.",
"by %s" : "por %s",
"%s-licensed" : "Llicencia %s",
diff --git a/settings/l10n/bg.js b/settings/l10n/bg.js
index 420feb54fe1..72bd8542ca7 100644
--- a/settings/l10n/bg.js
+++ b/settings/l10n/bg.js
@@ -10,7 +10,7 @@ OC.L10N.register(
"Security" : "Сигурност",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>парола</strong> или <strong>имейл адрес</strong> е променен",
"Couldn't remove app." : "Приложението не бе премахнато.",
- "Couldn't update app." : "Приложението не бе обновено.",
+ "Couldn't update app." : "Приложението не бе актуализирано.",
"Wrong password" : "Грешна парола",
"Saved" : "Запаметяване",
"No user supplied" : "Липсва потребител",
@@ -63,10 +63,16 @@ OC.L10N.register(
"Select a profile picture" : "Избор на снимка за профила",
"Week starts on {fdow}" : "Първи ден от седмицата е {fdow}",
"Groups" : "Групи",
+ "Limit to groups" : "Ограничен достъп",
+ "Official" : "Официално",
"Visit website" : "Уеб страницата",
+ "User documentation" : "Документация за потребители",
"Developer documentation" : "Документация за разработчици",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Приложението не може да бъде инсталирано, защото следните зависимости не са удовлетворени:",
+ "Download and enable" : "Сваляне и включване",
"Enable" : "Включване",
+ "The app will be downloaded from the app store" : "Приложението ще бъде свалено от магазина за приложения",
+ "{size} used" : "{size} използвани",
"Email" : "Имейл",
"Group admin for" : "Групов администратор за",
"Language" : "Език",
@@ -84,7 +90,8 @@ OC.L10N.register(
"Valid until" : "Валиден до",
"Issued By" : "Издаден от",
"Valid until %s" : "Валиден до %s",
- "Import root certificate" : "Импортиране на основен сертификат",
+ "Import root certificate" : "Внасяне на основен сертификат",
+ "Administrator documentation" : "Документация за администратори",
"Documentation" : "Документация",
"Forum" : "Форум",
"None" : "Няма",
@@ -183,14 +190,14 @@ OC.L10N.register(
"Are you really sure you want add {domain} as trusted domain?" : "Наистина ли желаете да добавите {domain} в списъка със сигурни домейни?",
"Add trusted domain" : "Добавяне на сигурен домейн",
"All" : "Всички",
- "Update to %s" : "Обнови до %s",
+ "Update to %s" : "Актуализирай до %s",
"No apps found for your version" : "Няма намерени приложения за версията, която ползвате",
"Disabling app …" : "Забраняване на приложение ...",
"Error while disabling app" : "Грешка при изключване на приложението",
"Disable" : "Изключване",
"Enabling app …" : "Разрешаване на приложение ...",
"Error while enabling app" : "Грешка при включване на приложението",
- "Updated" : "Обновено",
+ "Updated" : "Актуализирано",
"Approved" : "Одобрен",
"Experimental" : "Ексериментален",
"Unable to delete {objName}" : "Неуспешно изтриване на {objName}.",
@@ -215,7 +222,7 @@ OC.L10N.register(
"Theming" : "Промяна на облика",
"Check the security of your Nextcloud over our security scan" : "Проверете сигурността на текущата инсталация на Nextcloud",
"View in store" : "Страница в магазина",
- "This app has an update available." : "Това приложение има налично обновление.",
+ "This app has an update available." : "Налична е актуализация за приложението.",
"by %s" : "от %s",
"Documentation:" : "Документация:",
"Admin documentation" : "Документация за администратори",
diff --git a/settings/l10n/bg.json b/settings/l10n/bg.json
index 9ce33dad308..2156ee4eae4 100644
--- a/settings/l10n/bg.json
+++ b/settings/l10n/bg.json
@@ -8,7 +8,7 @@
"Security" : "Сигурност",
"Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>парола</strong> или <strong>имейл адрес</strong> е променен",
"Couldn't remove app." : "Приложението не бе премахнато.",
- "Couldn't update app." : "Приложението не бе обновено.",
+ "Couldn't update app." : "Приложението не бе актуализирано.",
"Wrong password" : "Грешна парола",
"Saved" : "Запаметяване",
"No user supplied" : "Липсва потребител",
@@ -61,10 +61,16 @@
"Select a profile picture" : "Избор на снимка за профила",
"Week starts on {fdow}" : "Първи ден от седмицата е {fdow}",
"Groups" : "Групи",
+ "Limit to groups" : "Ограничен достъп",
+ "Official" : "Официално",
"Visit website" : "Уеб страницата",
+ "User documentation" : "Документация за потребители",
"Developer documentation" : "Документация за разработчици",
"This app cannot be installed because the following dependencies are not fulfilled:" : "Приложението не може да бъде инсталирано, защото следните зависимости не са удовлетворени:",
+ "Download and enable" : "Сваляне и включване",
"Enable" : "Включване",
+ "The app will be downloaded from the app store" : "Приложението ще бъде свалено от магазина за приложения",
+ "{size} used" : "{size} използвани",
"Email" : "Имейл",
"Group admin for" : "Групов администратор за",
"Language" : "Език",
@@ -82,7 +88,8 @@
"Valid until" : "Валиден до",
"Issued By" : "Издаден от",
"Valid until %s" : "Валиден до %s",
- "Import root certificate" : "Импортиране на основен сертификат",
+ "Import root certificate" : "Внасяне на основен сертификат",
+ "Administrator documentation" : "Документация за администратори",
"Documentation" : "Документация",
"Forum" : "Форум",
"None" : "Няма",
@@ -181,14 +188,14 @@
"Are you really sure you want add {domain} as trusted domain?" : "Наистина ли желаете да добавите {domain} в списъка със сигурни домейни?",
"Add trusted domain" : "Добавяне на сигурен домейн",
"All" : "Всички",
- "Update to %s" : "Обнови до %s",
+ "Update to %s" : "Актуализирай до %s",
"No apps found for your version" : "Няма намерени приложения за версията, която ползвате",
"Disabling app …" : "Забраняване на приложение ...",
"Error while disabling app" : "Грешка при изключване на приложението",
"Disable" : "Изключване",
"Enabling app …" : "Разрешаване на приложение ...",
"Error while enabling app" : "Грешка при включване на приложението",
- "Updated" : "Обновено",
+ "Updated" : "Актуализирано",
"Approved" : "Одобрен",
"Experimental" : "Ексериментален",
"Unable to delete {objName}" : "Неуспешно изтриване на {objName}.",
@@ -213,7 +220,7 @@
"Theming" : "Промяна на облика",
"Check the security of your Nextcloud over our security scan" : "Проверете сигурността на текущата инсталация на Nextcloud",
"View in store" : "Страница в магазина",
- "This app has an update available." : "Това приложение има налично обновление.",
+ "This app has an update available." : "Налична е актуализация за приложението.",
"by %s" : "от %s",
"Documentation:" : "Документация:",
"Admin documentation" : "Документация за администратори",
diff --git a/settings/l10n/ca.js b/settings/l10n/ca.js
index 381c361fce1..17225915356 100644
--- a/settings/l10n/ca.js
+++ b/settings/l10n/ca.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "S'ha produït un error en canviar el vostre idioma. Torna a carregar la pàgina i torna-ho a provar.",
"Select a profile picture" : "Seleccioneu una imatge de perfil",
"Groups" : "Grups",
+ "Limit to groups" : "Limitar per grups",
"Official" : "Oficial",
"Visit website" : "Visita el lloc web",
"User documentation" : "Documentació d'usuari",
@@ -302,7 +303,6 @@ OC.L10N.register(
"Theming" : "Aparença",
"Hardening and security guidance" : "Guia de protecció i seguretat",
"View in store" : "Veure al repositori",
- "Limit to groups" : "Limitar per grups",
"This app has an update available." : "Aquesta aplicació té una actualització disponible.",
"by %s" : "per %s",
"Documentation:" : "Documentació:",
diff --git a/settings/l10n/ca.json b/settings/l10n/ca.json
index 0eac4ebcdb0..e86ba669ea0 100644
--- a/settings/l10n/ca.json
+++ b/settings/l10n/ca.json
@@ -100,6 +100,7 @@
"An error occured while changing your language. Please reload the page and try again." : "S'ha produït un error en canviar el vostre idioma. Torna a carregar la pàgina i torna-ho a provar.",
"Select a profile picture" : "Seleccioneu una imatge de perfil",
"Groups" : "Grups",
+ "Limit to groups" : "Limitar per grups",
"Official" : "Oficial",
"Visit website" : "Visita el lloc web",
"User documentation" : "Documentació d'usuari",
@@ -300,7 +301,6 @@
"Theming" : "Aparença",
"Hardening and security guidance" : "Guia de protecció i seguretat",
"View in store" : "Veure al repositori",
- "Limit to groups" : "Limitar per grups",
"This app has an update available." : "Aquesta aplicació té una actualització disponible.",
"by %s" : "per %s",
"Documentation:" : "Documentació:",
diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js
index 123684acece..d1de6c1ec0d 100644
--- a/settings/l10n/cs.js
+++ b/settings/l10n/cs.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Podpůrná vrstva nepodporuje změnu hesla, ale uživatelův šifrovací klíč byl aktualizován.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Instalovat a aktualizovat aplikace pomocí obchodu nebo Sdíleného Cloudového Úložiště",
"Federated Cloud Sharing" : "Propojené cloudové sdílení",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používá zastaralou verzi %1$s (%2$s). Aktualizujte operační systém jinak funkce jako například %3$s nebudou fungovat spolehlivě.",
"Invalid SMTP password." : "Neplatné heslo SMTP.",
"Email setting test" : "Zkouška nastavení e-mailu",
"Well done, %s!" : "Úspěšně nastaveno, %s!",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Skupiny",
"Group list is empty" : "Seznam skupin je prázdný.",
"Unable to retrieve the group list" : "Nedaří se získat seznam skupiny",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvoufázové ověřování je možné vynutit pro všechny\tuživatele a konkrétní skupiny. Pokud nemají nastaveného poskytovatele dvoufázového ověřování, nebudou se moci přihlásit do systému.",
+ "Enforce two-factor authentication" : "Vynutit dvoufázové ověřování",
+ "Limit to groups" : "Omezit na skupiny",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvoufázové ověřování není vynucováno pro\tčleny následujících skupin.",
"Official" : "Oficiální",
"No results" : "Žádné výsledky",
"Visit website" : "Navštívit webovou stránku",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Jsou zde nějaké chyby ohledně vašeho nastavení.",
"There are some warnings regarding your setup." : "Jsou zde nějaká varování ohledně vašeho nastavení.",
"Checking for system and security issues." : "Kontrola systému a problémů se zabezpečením.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Důkladně si přečtěte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">průvodce instalací ↗</a> a zkontrolujte, že v <a href=\"%2$s\">záznamu událostí</a> nejsou žádné chyby ani varování.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Zkontrolujte zabezpečení svého Nextcloud přes <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">náš skener zabezpečení ↗</a>.",
"Version" : "Verze",
+ "Two-Factor Authentication" : "Dvoufázové ověření",
"Server-side encryption" : "Šifrování na straně serveru",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrování na straně serveru umožňuje zašifrovat soubory, které jsou na tento server nahrávány. To přináší omezení jako třeba výkonnostní omezení, takže to povolte jen pokud je třeba.",
"Enable server-side encryption" : "Povolit šifrování na straně serveru",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Podrobnosti",
"You are a member of the following groups:" : "Jste členem následujících skupin:",
"You are using <strong>%s</strong>" : "Používáte <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Používáte <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Celé jméno",
"No display name set" : "Jméno pro zobrazení nenastaveno",
"Your email address" : "Vaše e-mailová adresa",
@@ -394,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Zkontrolujte bezpečnost vašeho Nextcloudu pomocí našeho bezpečnostního skenu",
"Hardening and security guidance" : "Průvodce vylepšením bezpečnosti",
"View in store" : "Zobrazit v obchodě",
- "Limit to groups" : "Omezit na skupiny",
"This app has an update available." : "Pro tuto aplikaci je dostupná aktualizace.",
"by %s" : "%s",
"%s-licensed" : "%s-licencováno",
@@ -463,6 +470,7 @@ OC.L10N.register(
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Instalace mimo kořenový adresář domény a používání systémového příkazu cron může způsobit problémy s vytvářením správné URL. Pro zabránění těmto chybám nastavte správný popis umístění ve svém souboru config.php v hodnotě „overwrite.cli.url“ (Je doporučena tato: „%s“)",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nebylo možné spustit službu plánovače cron v CLI. Došlo k následujícím technickým chybám:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Důkladně si přečtěte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">průvodce instalací ↗</a>a zkontrolujte, že v <a href=\"%s\">záznamu událostí</a> nejsou žádné chyby ani varování.",
- "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Pokud chcete-li převést do jiné databáze, použijte nástroj pro příkazový řádek: „occ db:convert-type“, nebo si projděte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaci ↗</a>."
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Pokud chcete-li převést do jiné databáze, použijte nástroj pro příkazový řádek: „occ db:convert-type“, nebo si projděte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaci ↗</a>.",
+ "Default quota :" : "Výchozí kvóta:"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json
index 31b3721ba26..d89e50fc037 100644
--- a/settings/l10n/cs.json
+++ b/settings/l10n/cs.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Podpůrná vrstva nepodporuje změnu hesla, ale uživatelův šifrovací klíč byl aktualizován.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Instalovat a aktualizovat aplikace pomocí obchodu nebo Sdíleného Cloudového Úložiště",
"Federated Cloud Sharing" : "Propojené cloudové sdílení",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používá zastaralou verzi %1$s (%2$s). Aktualizujte operační systém jinak funkce jako například %3$s nebudou fungovat spolehlivě.",
"Invalid SMTP password." : "Neplatné heslo SMTP.",
"Email setting test" : "Zkouška nastavení e-mailu",
"Well done, %s!" : "Úspěšně nastaveno, %s!",
@@ -107,6 +108,10 @@
"Groups" : "Skupiny",
"Group list is empty" : "Seznam skupin je prázdný.",
"Unable to retrieve the group list" : "Nedaří se získat seznam skupiny",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvoufázové ověřování je možné vynutit pro všechny\tuživatele a konkrétní skupiny. Pokud nemají nastaveného poskytovatele dvoufázového ověřování, nebudou se moci přihlásit do systému.",
+ "Enforce two-factor authentication" : "Vynutit dvoufázové ověřování",
+ "Limit to groups" : "Omezit na skupiny",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvoufázové ověřování není vynucováno pro\tčleny následujících skupin.",
"Official" : "Oficiální",
"No results" : "Žádné výsledky",
"Visit website" : "Navštívit webovou stránku",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Jsou zde nějaké chyby ohledně vašeho nastavení.",
"There are some warnings regarding your setup." : "Jsou zde nějaká varování ohledně vašeho nastavení.",
"Checking for system and security issues." : "Kontrola systému a problémů se zabezpečením.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Důkladně si přečtěte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">průvodce instalací ↗</a> a zkontrolujte, že v <a href=\"%2$s\">záznamu událostí</a> nejsou žádné chyby ani varování.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Zkontrolujte zabezpečení svého Nextcloud přes <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">náš skener zabezpečení ↗</a>.",
"Version" : "Verze",
+ "Two-Factor Authentication" : "Dvoufázové ověření",
"Server-side encryption" : "Šifrování na straně serveru",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrování na straně serveru umožňuje zašifrovat soubory, které jsou na tento server nahrávány. To přináší omezení jako třeba výkonnostní omezení, takže to povolte jen pokud je třeba.",
"Enable server-side encryption" : "Povolit šifrování na straně serveru",
@@ -262,6 +269,7 @@
"Details" : "Podrobnosti",
"You are a member of the following groups:" : "Jste členem následujících skupin:",
"You are using <strong>%s</strong>" : "Používáte <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Používáte <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Celé jméno",
"No display name set" : "Jméno pro zobrazení nenastaveno",
"Your email address" : "Vaše e-mailová adresa",
@@ -392,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Zkontrolujte bezpečnost vašeho Nextcloudu pomocí našeho bezpečnostního skenu",
"Hardening and security guidance" : "Průvodce vylepšením bezpečnosti",
"View in store" : "Zobrazit v obchodě",
- "Limit to groups" : "Omezit na skupiny",
"This app has an update available." : "Pro tuto aplikaci je dostupná aktualizace.",
"by %s" : "%s",
"%s-licensed" : "%s-licencováno",
@@ -461,6 +468,7 @@
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Instalace mimo kořenový adresář domény a používání systémového příkazu cron může způsobit problémy s vytvářením správné URL. Pro zabránění těmto chybám nastavte správný popis umístění ve svém souboru config.php v hodnotě „overwrite.cli.url“ (Je doporučena tato: „%s“)",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nebylo možné spustit službu plánovače cron v CLI. Došlo k následujícím technickým chybám:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Důkladně si přečtěte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">průvodce instalací ↗</a>a zkontrolujte, že v <a href=\"%s\">záznamu událostí</a> nejsou žádné chyby ani varování.",
- "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Pokud chcete-li převést do jiné databáze, použijte nástroj pro příkazový řádek: „occ db:convert-type“, nebo si projděte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaci ↗</a>."
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Pokud chcete-li převést do jiné databáze, použijte nástroj pro příkazový řádek: „occ db:convert-type“, nebo si projděte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">dokumentaci ↗</a>.",
+ "Default quota :" : "Výchozí kvóta:"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index 8a45579de9d..610c0fe6a3f 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"Federated Cloud Sharing" : "Federated-Cloud-Sharing",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.",
"Invalid SMTP password." : "Ungültiges SMTP-Passwort",
"Email setting test" : "Test der E-Mail-Einstellungen",
"Well done, %s!" : "Gut gemacht, %s!",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Gruppen",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle \nBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für sie eingerichtet ist, so können sie sich nicht am System anmelden.",
+ "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen",
+ "Limit to groups" : "Auf Gruppen beschränken",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht erzwungen\nfür Mitglieder der folgenden Gruppen.",
"Official" : "Offiziell",
"No results" : "Keine Ergebnisse",
"Visit website" : "Webseite besuchen",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Es gibt einige Fehler bei Deiner Systemkonfiguration.",
"There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Deiner Systemkonfiguration.",
"Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfe noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrolliere das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit Deiner Nextcloud über <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">unseren Sicherheitsscanner ↗</a>.",
"Version" : "Version",
+ "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
"Server-side encryption" : "Serverseitige Verschlüsselung",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.",
"Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Details",
"You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:",
"You are using <strong>%s</strong>" : "Du benutzt <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du verwendest <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Vollständiger Name",
"No display name set" : "Kein Anzeigename angegeben",
"Your email address" : "Deine E-Mail-Adresse",
@@ -294,9 +302,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.",
"Username" : "Benutzername",
"Done" : "Erledigt",
- "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
- "Two-factor authentication is enabled on your account." : "Zwei-Faktor-Authentifizierung ist für Dein Konto aktiviert.",
- "Two-factor authentication is disabled on your account." : "Zwei-Faktor-Authentifizierung ist für Dein Konto deaktiviert.",
"Enabled apps" : "Aktivierte Apps",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.",
"A problem occurred, please check your log files (Error: %s)" : "Es ist ein Problem aufgetreten, bitte überprüfe Deine Logdateien (Fehler: %s)",
@@ -397,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Überprüfe die Sicherheit Deiner Nextcloud mit unserem Sicherheits-Scan",
"Hardening and security guidance" : "Systemhärtung und Sicherheitsempfehlungen",
"View in store" : "Im Store anzeigen",
- "Limit to groups" : "Auf Gruppen beschränken",
"This app has an update available." : "Für diese App ist eine Aktualisierung verfügbar.",
"by %s" : "von %s",
"%s-licensed" : "%s-Lizensiert",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index 9faac6399eb..9545e4784da 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"Federated Cloud Sharing" : "Federated-Cloud-Sharing",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.",
"Invalid SMTP password." : "Ungültiges SMTP-Passwort",
"Email setting test" : "Test der E-Mail-Einstellungen",
"Well done, %s!" : "Gut gemacht, %s!",
@@ -107,6 +108,10 @@
"Groups" : "Gruppen",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle \nBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für sie eingerichtet ist, so können sie sich nicht am System anmelden.",
+ "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen",
+ "Limit to groups" : "Auf Gruppen beschränken",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht erzwungen\nfür Mitglieder der folgenden Gruppen.",
"Official" : "Offiziell",
"No results" : "Keine Ergebnisse",
"Visit website" : "Webseite besuchen",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Es gibt einige Fehler bei Deiner Systemkonfiguration.",
"There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Deiner Systemkonfiguration.",
"Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfe noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrolliere das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit Deiner Nextcloud über <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">unseren Sicherheitsscanner ↗</a>.",
"Version" : "Version",
+ "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
"Server-side encryption" : "Serverseitige Verschlüsselung",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.",
"Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren",
@@ -262,6 +269,7 @@
"Details" : "Details",
"You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:",
"You are using <strong>%s</strong>" : "Du benutzt <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du verwendest <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Vollständiger Name",
"No display name set" : "Kein Anzeigename angegeben",
"Your email address" : "Deine E-Mail-Adresse",
@@ -292,9 +300,6 @@
"For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.",
"Username" : "Benutzername",
"Done" : "Erledigt",
- "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
- "Two-factor authentication is enabled on your account." : "Zwei-Faktor-Authentifizierung ist für Dein Konto aktiviert.",
- "Two-factor authentication is disabled on your account." : "Zwei-Faktor-Authentifizierung ist für Dein Konto deaktiviert.",
"Enabled apps" : "Aktivierte Apps",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.",
"A problem occurred, please check your log files (Error: %s)" : "Es ist ein Problem aufgetreten, bitte überprüfe Deine Logdateien (Fehler: %s)",
@@ -395,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Überprüfe die Sicherheit Deiner Nextcloud mit unserem Sicherheits-Scan",
"Hardening and security guidance" : "Systemhärtung und Sicherheitsempfehlungen",
"View in store" : "Im Store anzeigen",
- "Limit to groups" : "Auf Gruppen beschränken",
"This app has an update available." : "Für diese App ist eine Aktualisierung verfügbar.",
"by %s" : "von %s",
"%s-licensed" : "%s-Lizensiert",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index 31e9537a23f..de52efcfb58 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"Federated Cloud Sharing" : "Federated-Cloud-Sharing",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.",
"Invalid SMTP password." : "Ungültiges SMTP Passwort.",
"Email setting test" : "Test der E-Mail-Einstellungen",
"Well done, %s!" : "Gut gemacht, %s!",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Gruppen",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle\nBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für sie eingerichtet ist, so können sie sich nicht am System anmelden.",
+ "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen",
+ "Limit to groups" : "Auf Gruppen beschränken",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht erzwungen\nfür Mitglieder der folgenden Gruppen.",
"Official" : "Offiziell",
"No results" : "Keine Ergebnisse",
"Visit website" : "Webseite besuchen",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Es gibt einige Fehler bei Ihrer Systemkonfiguration.",
"There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Ihrer Systemkonfiguration.",
"Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfen Sie noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrollieren Sie das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfen Sie die Sicherheit Ihrer Nextcloud mit unserem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheits-Scan ↗</a>.",
"Version" : "Version",
+ "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
"Server-side encryption" : "Serverseitige Verschlüsselung",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.",
"Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Details",
"You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:",
"You are using <strong>%s</strong>" : "Sie benutzen <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Sie verwenden <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Vollständiger Name",
"No display name set" : "Kein Anzeigename angegeben",
"Your email address" : "Ihre E-Mail-Adresse",
@@ -294,9 +302,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.",
"Username" : "Benutzername",
"Done" : "Erledigt",
- "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
- "Two-factor authentication is enabled on your account." : "Zwei-Faktor-Authentifizierung ist für Ihr Konto aktiviert.",
- "Two-factor authentication is disabled on your account." : "Zwei-Faktor-Authentifizierung ist für Ihr Konto deaktiviert.",
"Enabled apps" : "Aktivierte Apps",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.",
"A problem occurred, please check your log files (Error: %s)" : "Es ist ein Problem aufgetreten, bitte überprüfen Sie Ihre Logdateien (Fehler: %s)",
@@ -397,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Überprüfen Sie die Sicherheit Ihrer Nextcloud mit unserem Sicherheits-Scan",
"Hardening and security guidance" : "Systemhärtung und Sicherheitsempfehlungen",
"View in store" : "Im Store anzeigen",
- "Limit to groups" : "Auf Gruppen beschränken",
"This app has an update available." : "Für diese App ist eine Aktualisierung verfügbar.",
"by %s" : "von %s",
"%s-licensed" : "%s-Lizensiert",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 31687aaf00e..35c0b5870f7 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing",
"Federated Cloud Sharing" : "Federated-Cloud-Sharing",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.",
"Invalid SMTP password." : "Ungültiges SMTP Passwort.",
"Email setting test" : "Test der E-Mail-Einstellungen",
"Well done, %s!" : "Gut gemacht, %s!",
@@ -107,6 +108,10 @@
"Groups" : "Gruppen",
"Group list is empty" : "Gruppenliste ist leer",
"Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle\nBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für sie eingerichtet ist, so können sie sich nicht am System anmelden.",
+ "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen",
+ "Limit to groups" : "Auf Gruppen beschränken",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht erzwungen\nfür Mitglieder der folgenden Gruppen.",
"Official" : "Offiziell",
"No results" : "Keine Ergebnisse",
"Visit website" : "Webseite besuchen",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Es gibt einige Fehler bei Ihrer Systemkonfiguration.",
"There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Ihrer Systemkonfiguration.",
"Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfen Sie noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrollieren Sie das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfen Sie die Sicherheit Ihrer Nextcloud mit unserem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheits-Scan ↗</a>.",
"Version" : "Version",
+ "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
"Server-side encryption" : "Serverseitige Verschlüsselung",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.",
"Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren",
@@ -262,6 +269,7 @@
"Details" : "Details",
"You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:",
"You are using <strong>%s</strong>" : "Sie benutzen <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Sie verwenden <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Vollständiger Name",
"No display name set" : "Kein Anzeigename angegeben",
"Your email address" : "Ihre E-Mail-Adresse",
@@ -292,9 +300,6 @@
"For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.",
"Username" : "Benutzername",
"Done" : "Erledigt",
- "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung",
- "Two-factor authentication is enabled on your account." : "Zwei-Faktor-Authentifizierung ist für Ihr Konto aktiviert.",
- "Two-factor authentication is disabled on your account." : "Zwei-Faktor-Authentifizierung ist für Ihr Konto deaktiviert.",
"Enabled apps" : "Aktivierte Apps",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.",
"A problem occurred, please check your log files (Error: %s)" : "Es ist ein Problem aufgetreten, bitte überprüfen Sie Ihre Logdateien (Fehler: %s)",
@@ -395,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Überprüfen Sie die Sicherheit Ihrer Nextcloud mit unserem Sicherheits-Scan",
"Hardening and security guidance" : "Systemhärtung und Sicherheitsempfehlungen",
"View in store" : "Im Store anzeigen",
- "Limit to groups" : "Auf Gruppen beschränken",
"This app has an update available." : "Für diese App ist eine Aktualisierung verfügbar.",
"by %s" : "von %s",
"%s-licensed" : "%s-Lizensiert",
diff --git a/settings/l10n/el.js b/settings/l10n/el.js
index 1b9ecc341d5..33e7d2626f9 100644
--- a/settings/l10n/el.js
+++ b/settings/l10n/el.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"Strong password" : "Δυνατό συνθηματικό",
"Select a profile picture" : "Επιλογή εικόνας προφίλ",
"Groups" : "Ομάδες",
+ "Limit to groups" : "Όριο στις ομάδες",
"Official" : "Επίσημο",
"Visit website" : "Επισκεφθείτε την ιστοσελίδα",
"User documentation" : "Τεκμηρίωση Χρήστη",
@@ -167,6 +168,7 @@ OC.L10N.register(
"Enable server-side encryption" : "Ενεργοποίηση κρυπτογράφησης από το διακομιστή",
"Please read carefully before activating server-side encryption: " : "Παρακαλούμε διαβάστε προσεκτικά πριν ενεργοποιήσετε την κρυπτογράφηση στο διακομιστή:",
"Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Μόλις ενεργοποιηθεί η κρυπτογράφηση, όλα τα αρχεία που θα μεταφορτωθούν από αυτό το σημείο και μετά θα κρυπτογραφηθούν στο διακομιστή. Η κρυπτογράφηση είναι δυνατόν να απενεργοποιηθεί αργότερα μόνο αν το ενεργό άρθρωμα κρυπτογράφησης υποστηρίζει αυτή τη λειτουργία και εκπληρούνται όλες οι προϋποθέσεις (πχ ορισμός κλειδιού ανάκτησης).",
+ "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Η κρυπτογράφηση από μόνη της δεν εγγυάται την ασφάλεια του συστήματος. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λειτουργίας της εφαρμογής κρυπτογράφησης και τις υποστηριζόμενες περιπτώσεις χρήσης, ανατρέξτε στην τεκμηρίωση.",
"Be aware that encryption always increases the file size." : "Έχετε στο νου σας πως η κρυπτογράφηση πάντα αυξάνει το μέγεθος του αρχείου",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Είναι πάντοτε καλό να δημιουργείτε τακτικά αντίγραφα ασφαλείας των δεδομένων σας, στην περίπτωση της κρυπτογράφησης βεβαιωθείτε ότι έχετε λάβει αντίγραφο ασφαλείας των κλειδιών κρυπτογράφησης παράλληλα με τα δεδομένα σας.",
"This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;",
@@ -319,7 +321,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Ελέγξτε την ασφάλεια του Nextcloud σας μέσω της σάρωσης ασφαλείας",
"Hardening and security guidance" : "Οδηγίες ασφάλειας και θωράκισης",
"View in store" : "Προβολή στο κέντρο εφαρμογών",
- "Limit to groups" : "Όριο στις ομάδες",
"This app has an update available." : "Αυτή η εφαρμογή έχει διαθέσιμη ενημέρωση.",
"by %s" : "από %s",
"%s-licensed" : "%s-αδειοδοτημένο",
diff --git a/settings/l10n/el.json b/settings/l10n/el.json
index 2755656d61b..8066b5a5a5e 100644
--- a/settings/l10n/el.json
+++ b/settings/l10n/el.json
@@ -98,6 +98,7 @@
"Strong password" : "Δυνατό συνθηματικό",
"Select a profile picture" : "Επιλογή εικόνας προφίλ",
"Groups" : "Ομάδες",
+ "Limit to groups" : "Όριο στις ομάδες",
"Official" : "Επίσημο",
"Visit website" : "Επισκεφθείτε την ιστοσελίδα",
"User documentation" : "Τεκμηρίωση Χρήστη",
@@ -165,6 +166,7 @@
"Enable server-side encryption" : "Ενεργοποίηση κρυπτογράφησης από το διακομιστή",
"Please read carefully before activating server-side encryption: " : "Παρακαλούμε διαβάστε προσεκτικά πριν ενεργοποιήσετε την κρυπτογράφηση στο διακομιστή:",
"Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Μόλις ενεργοποιηθεί η κρυπτογράφηση, όλα τα αρχεία που θα μεταφορτωθούν από αυτό το σημείο και μετά θα κρυπτογραφηθούν στο διακομιστή. Η κρυπτογράφηση είναι δυνατόν να απενεργοποιηθεί αργότερα μόνο αν το ενεργό άρθρωμα κρυπτογράφησης υποστηρίζει αυτή τη λειτουργία και εκπληρούνται όλες οι προϋποθέσεις (πχ ορισμός κλειδιού ανάκτησης).",
+ "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Η κρυπτογράφηση από μόνη της δεν εγγυάται την ασφάλεια του συστήματος. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λειτουργίας της εφαρμογής κρυπτογράφησης και τις υποστηριζόμενες περιπτώσεις χρήσης, ανατρέξτε στην τεκμηρίωση.",
"Be aware that encryption always increases the file size." : "Έχετε στο νου σας πως η κρυπτογράφηση πάντα αυξάνει το μέγεθος του αρχείου",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Είναι πάντοτε καλό να δημιουργείτε τακτικά αντίγραφα ασφαλείας των δεδομένων σας, στην περίπτωση της κρυπτογράφησης βεβαιωθείτε ότι έχετε λάβει αντίγραφο ασφαλείας των κλειδιών κρυπτογράφησης παράλληλα με τα δεδομένα σας.",
"This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;",
@@ -317,7 +319,6 @@
"Check the security of your Nextcloud over our security scan" : "Ελέγξτε την ασφάλεια του Nextcloud σας μέσω της σάρωσης ασφαλείας",
"Hardening and security guidance" : "Οδηγίες ασφάλειας και θωράκισης",
"View in store" : "Προβολή στο κέντρο εφαρμογών",
- "Limit to groups" : "Όριο στις ομάδες",
"This app has an update available." : "Αυτή η εφαρμογή έχει διαθέσιμη ενημέρωση.",
"by %s" : "από %s",
"%s-licensed" : "%s-αδειοδοτημένο",
diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js
index 5318849c2f5..d9be848a7bd 100644
--- a/settings/l10n/en_GB.js
+++ b/settings/l10n/en_GB.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "An error occurred while changing your language. Please reload the page and try again.",
"Select a profile picture" : "Select a profile picture",
"Groups" : "Groups",
+ "Limit to groups" : "Limit to groups",
"Official" : "Official",
"Visit website" : "Visit website",
"User documentation" : "User documentation",
@@ -361,7 +362,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Check the security of your Nextcloud over our security scan",
"Hardening and security guidance" : "Hardening and security guidance",
"View in store" : "View in store",
- "Limit to groups" : "Limit to groups",
"This app has an update available." : "This app has an update available.",
"by %s" : "by %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json
index 903aff2d9b5..298b80c93db 100644
--- a/settings/l10n/en_GB.json
+++ b/settings/l10n/en_GB.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "An error occurred while changing your language. Please reload the page and try again.",
"Select a profile picture" : "Select a profile picture",
"Groups" : "Groups",
+ "Limit to groups" : "Limit to groups",
"Official" : "Official",
"Visit website" : "Visit website",
"User documentation" : "User documentation",
@@ -359,7 +360,6 @@
"Check the security of your Nextcloud over our security scan" : "Check the security of your Nextcloud over our security scan",
"Hardening and security guidance" : "Hardening and security guidance",
"View in store" : "View in store",
- "Limit to groups" : "Limit to groups",
"This app has an update available." : "This app has an update available.",
"by %s" : "by %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es.js b/settings/l10n/es.js
index bf1559bf848..b0f109a40f5 100644
--- a/settings/l10n/es.js
+++ b/settings/l10n/es.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "El sistema no permite cambiar la contraseña, pero la clave de cifrado ha sido actualizada.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones a través de la tienda de aplicaciones o de la nube compartida federada",
"Federated Cloud Sharing" : "Compartido en Nube Federada",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando una versión desactualizada %1$s (%2$s). Por favor, actualiza tu sistema operativo o funciones como %3$s no funcionarán de forma fiable.",
"Invalid SMTP password." : "Contraseña SMTP inválida",
"Email setting test" : "Prueba de configuración de correo",
"Well done, %s!" : "¡Bien hecho, %s!",
@@ -109,6 +110,7 @@ OC.L10N.register(
"Groups" : "Grupos",
"Group list is empty" : "La lista de grupos está vacía",
"Unable to retrieve the group list" : "No se ha podido recuperar la lista de grupos.",
+ "Limit to groups" : "Límite para grupos",
"Official" : "Oficial",
"No results" : "No hay resultados",
"Visit website" : "Visite nuestro sitio web",
@@ -197,8 +199,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Hay varios errores relativos a tu configuración.",
"There are some warnings regarding your setup." : "Hay varios avisos relativos a tu configuración.",
"Checking for system and security issues." : "Comprobando problemas del sistema y de seguridad.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, vuelve a consultar las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, y comprueba posibles errores y advertencias en el <a href=\"%2$s\">registro</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Comprueba la seguridad de tu Nextcloud mediante <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nuestro escaneo de seguridad ↗</a>.",
"Version" : "Versión",
+ "Two-Factor Authentication" : "Autenticación en dos pasos",
"Server-side encryption" : "Cifrado en el servidor",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "El cifrado en el lado del servidor hace posible cifrar archivos que se suben a este servidor. Esto trae consigo limitaciones como una ralentización en su funcionamiento, así que activa esto solo si es necesario.",
"Enable server-side encryption" : "Habilitar cifrado en el servidor",
@@ -264,6 +268,7 @@ OC.L10N.register(
"Details" : "Detalles",
"You are a member of the following groups:" : "Eres miembro de los siguientes grupos:",
"You are using <strong>%s</strong>" : "Estás usando <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estás usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)",
"Full name" : "Nombre completo",
"No display name set" : "No se ha establecido ningún nombre para mostrar",
"Your email address" : "Su dirección de correo",
@@ -394,7 +399,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Comprueba la seguridad de tu Nextcloud mediante nuestro escaneo de seguridad",
"Hardening and security guidance" : "Guía de protección y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Límite para grupos",
"This app has an update available." : "Está app tiene una actualización pendiente.",
"by %s" : "por %s",
"%s-licensed" : "Licencia %s",
@@ -463,6 +467,7 @@ OC.L10N.register(
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si su instalación no está ubicada en la raíz del dominio y usa el cron del sistema, puede haber problemas al generarse los URL. Para evitarlos, configure la opción \"overwrite.cli.url\" en su archivo config.php para que use la ruta de la raíz del sitio web de su instalación (sugerencia: \"%s\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "No fue posible lanzar la tarea cron mediante CLI. Los siguientes errores técnicos has aparecido:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Por favor, vuelve a consultar la las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">guías de instalación ↗</a> y buscar posibles errores o advertencias en el <a href=\"%s\">registro</a>.",
- "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Para migrar a otra base de datos, usa la herramienta de línea de comandos: 'occ db:convert-type o comprueba la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación ↗</a>."
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Para migrar a otra base de datos, usa la herramienta de línea de comandos: 'occ db:convert-type o comprueba la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación ↗</a>.",
+ "Default quota :" : "Espacio por defecto:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/settings/l10n/es.json b/settings/l10n/es.json
index 2641caec0da..92f6e5b1a1d 100644
--- a/settings/l10n/es.json
+++ b/settings/l10n/es.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "El sistema no permite cambiar la contraseña, pero la clave de cifrado ha sido actualizada.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones a través de la tienda de aplicaciones o de la nube compartida federada",
"Federated Cloud Sharing" : "Compartido en Nube Federada",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando una versión desactualizada %1$s (%2$s). Por favor, actualiza tu sistema operativo o funciones como %3$s no funcionarán de forma fiable.",
"Invalid SMTP password." : "Contraseña SMTP inválida",
"Email setting test" : "Prueba de configuración de correo",
"Well done, %s!" : "¡Bien hecho, %s!",
@@ -107,6 +108,7 @@
"Groups" : "Grupos",
"Group list is empty" : "La lista de grupos está vacía",
"Unable to retrieve the group list" : "No se ha podido recuperar la lista de grupos.",
+ "Limit to groups" : "Límite para grupos",
"Official" : "Oficial",
"No results" : "No hay resultados",
"Visit website" : "Visite nuestro sitio web",
@@ -195,8 +197,10 @@
"There are some errors regarding your setup." : "Hay varios errores relativos a tu configuración.",
"There are some warnings regarding your setup." : "Hay varios avisos relativos a tu configuración.",
"Checking for system and security issues." : "Comprobando problemas del sistema y de seguridad.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, vuelve a consultar las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, y comprueba posibles errores y advertencias en el <a href=\"%2$s\">registro</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Comprueba la seguridad de tu Nextcloud mediante <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nuestro escaneo de seguridad ↗</a>.",
"Version" : "Versión",
+ "Two-Factor Authentication" : "Autenticación en dos pasos",
"Server-side encryption" : "Cifrado en el servidor",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "El cifrado en el lado del servidor hace posible cifrar archivos que se suben a este servidor. Esto trae consigo limitaciones como una ralentización en su funcionamiento, así que activa esto solo si es necesario.",
"Enable server-side encryption" : "Habilitar cifrado en el servidor",
@@ -262,6 +266,7 @@
"Details" : "Detalles",
"You are a member of the following groups:" : "Eres miembro de los siguientes grupos:",
"You are using <strong>%s</strong>" : "Estás usando <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estás usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)",
"Full name" : "Nombre completo",
"No display name set" : "No se ha establecido ningún nombre para mostrar",
"Your email address" : "Su dirección de correo",
@@ -392,7 +397,6 @@
"Check the security of your Nextcloud over our security scan" : "Comprueba la seguridad de tu Nextcloud mediante nuestro escaneo de seguridad",
"Hardening and security guidance" : "Guía de protección y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Límite para grupos",
"This app has an update available." : "Está app tiene una actualización pendiente.",
"by %s" : "por %s",
"%s-licensed" : "Licencia %s",
@@ -461,6 +465,7 @@
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si su instalación no está ubicada en la raíz del dominio y usa el cron del sistema, puede haber problemas al generarse los URL. Para evitarlos, configure la opción \"overwrite.cli.url\" en su archivo config.php para que use la ruta de la raíz del sitio web de su instalación (sugerencia: \"%s\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "No fue posible lanzar la tarea cron mediante CLI. Los siguientes errores técnicos has aparecido:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Por favor, vuelve a consultar la las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">guías de instalación ↗</a> y buscar posibles errores o advertencias en el <a href=\"%s\">registro</a>.",
- "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Para migrar a otra base de datos, usa la herramienta de línea de comandos: 'occ db:convert-type o comprueba la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación ↗</a>."
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Para migrar a otra base de datos, usa la herramienta de línea de comandos: 'occ db:convert-type o comprueba la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentación ↗</a>.",
+ "Default quota :" : "Espacio por defecto:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/settings/l10n/es_419.js b/settings/l10n/es_419.js
index 275a89f20f5..d31cfb2ee3a 100644
--- a/settings/l10n/es_419.js
+++ b/settings/l10n/es_419.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_419.json b/settings/l10n/es_419.json
index e81e70fcfeb..0d1fea59cdd 100644
--- a/settings/l10n/es_419.json
+++ b/settings/l10n/es_419.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_AR.js b/settings/l10n/es_AR.js
index 014c475de9d..a334e590bba 100644
--- a/settings/l10n/es_AR.js
+++ b/settings/l10n/es_AR.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"Strong password" : "Contraseña fuerte",
"Select a profile picture" : "Seleccionar una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visite el sitio web",
"User documentation" : "Documentación del usuario",
@@ -311,7 +312,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifique la seguridad de su Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_AR.json b/settings/l10n/es_AR.json
index 3aa71db3ef1..6fe0c0e7ebf 100644
--- a/settings/l10n/es_AR.json
+++ b/settings/l10n/es_AR.json
@@ -100,6 +100,7 @@
"Strong password" : "Contraseña fuerte",
"Select a profile picture" : "Seleccionar una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visite el sitio web",
"User documentation" : "Documentación del usuario",
@@ -309,7 +310,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifique la seguridad de su Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_CL.js b/settings/l10n/es_CL.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_CL.js
+++ b/settings/l10n/es_CL.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_CL.json b/settings/l10n/es_CL.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_CL.json
+++ b/settings/l10n/es_CL.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_CO.js b/settings/l10n/es_CO.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_CO.js
+++ b/settings/l10n/es_CO.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_CO.json b/settings/l10n/es_CO.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_CO.json
+++ b/settings/l10n/es_CO.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_CR.js b/settings/l10n/es_CR.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_CR.js
+++ b/settings/l10n/es_CR.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_CR.json b/settings/l10n/es_CR.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_CR.json
+++ b/settings/l10n/es_CR.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_DO.js b/settings/l10n/es_DO.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_DO.js
+++ b/settings/l10n/es_DO.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_DO.json b/settings/l10n/es_DO.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_DO.json
+++ b/settings/l10n/es_DO.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_EC.js b/settings/l10n/es_EC.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_EC.js
+++ b/settings/l10n/es_EC.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_EC.json b/settings/l10n/es_EC.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_EC.json
+++ b/settings/l10n/es_EC.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_GT.js b/settings/l10n/es_GT.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_GT.js
+++ b/settings/l10n/es_GT.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_GT.json b/settings/l10n/es_GT.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_GT.json
+++ b/settings/l10n/es_GT.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_HN.js b/settings/l10n/es_HN.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_HN.js
+++ b/settings/l10n/es_HN.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_HN.json b/settings/l10n/es_HN.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_HN.json
+++ b/settings/l10n/es_HN.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js
index 9fc62e5a444..5bd761507eb 100644
--- a/settings/l10n/es_MX.js
+++ b/settings/l10n/es_MX.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -358,7 +359,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json
index 3a23747eb34..e3212ff7ec1 100644
--- a/settings/l10n/es_MX.json
+++ b/settings/l10n/es_MX.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_NI.js b/settings/l10n/es_NI.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_NI.js
+++ b/settings/l10n/es_NI.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_NI.json b/settings/l10n/es_NI.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_NI.json
+++ b/settings/l10n/es_NI.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PA.js b/settings/l10n/es_PA.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_PA.js
+++ b/settings/l10n/es_PA.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PA.json b/settings/l10n/es_PA.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_PA.json
+++ b/settings/l10n/es_PA.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PE.js b/settings/l10n/es_PE.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_PE.js
+++ b/settings/l10n/es_PE.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PE.json b/settings/l10n/es_PE.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_PE.json
+++ b/settings/l10n/es_PE.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PR.js b/settings/l10n/es_PR.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_PR.js
+++ b/settings/l10n/es_PR.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PR.json b/settings/l10n/es_PR.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_PR.json
+++ b/settings/l10n/es_PR.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PY.js b/settings/l10n/es_PY.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_PY.js
+++ b/settings/l10n/es_PY.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_PY.json b/settings/l10n/es_PY.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_PY.json
+++ b/settings/l10n/es_PY.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_SV.js b/settings/l10n/es_SV.js
index aab74163743..da87df824e8 100644
--- a/settings/l10n/es_SV.js
+++ b/settings/l10n/es_SV.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -356,7 +357,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_SV.json b/settings/l10n/es_SV.json
index af20ce5b91d..a85e6166974 100644
--- a/settings/l10n/es_SV.json
+++ b/settings/l10n/es_SV.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -354,7 +355,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_UY.js b/settings/l10n/es_UY.js
index e41dd1cdcc8..0f2af9284b2 100644
--- a/settings/l10n/es_UY.js
+++ b/settings/l10n/es_UY.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -327,7 +328,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/es_UY.json b/settings/l10n/es_UY.json
index 2497db05917..138d0958eb9 100644
--- a/settings/l10n/es_UY.json
+++ b/settings/l10n/es_UY.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Se presentó un error al cambiar tu idioma. Por favor vuelve a cargar la página y vuelva a intentarlo. ",
"Select a profile picture" : "Selecciona una imagen de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitar a grupos",
"Official" : "Oficial",
"Visit website" : "Visita el sitio web",
"User documentation" : "Documentación del usuario",
@@ -325,7 +326,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifica la seguridad de tu Nextcloud con nuestro escaneo de seguridad",
"Hardening and security guidance" : "Consejos de reforzamiento y seguridad",
"View in store" : "Ver en la tienda",
- "Limit to groups" : "Limitar a grupos",
"This app has an update available." : "Esta aplicación tiene una actualización disponible.",
"by %s" : "por %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/et_EE.js b/settings/l10n/et_EE.js
index 91bba0e0380..715bbe54b68 100644
--- a/settings/l10n/et_EE.js
+++ b/settings/l10n/et_EE.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Select a profile picture" : "Vali profiili pilt",
"Week starts on {fdow}" : "Nädala esimene päev: {fdow}",
"Groups" : "Grupid",
+ "Limit to groups" : "Luba gruppidele",
"Official" : "Ametlik",
"No results" : "Vasteid ei leitud",
"Visit website" : "Külasta veebisaiti",
@@ -302,7 +303,6 @@ OC.L10N.register(
"Performance tuning" : "Kiiruse seadistamine",
"Improving the config.php" : "config.php faili täiendamine",
"Theming" : "Teemad",
- "Limit to groups" : "Luba gruppidele",
"This app has an update available." : "Sellel rakendusel on uuendus saadaval",
"Documentation:" : "Dokumentatsioon:",
"Admin documentation" : "Administraatori dokumentatsioon",
diff --git a/settings/l10n/et_EE.json b/settings/l10n/et_EE.json
index f9f8af23c49..7bbdf373539 100644
--- a/settings/l10n/et_EE.json
+++ b/settings/l10n/et_EE.json
@@ -97,6 +97,7 @@
"Select a profile picture" : "Vali profiili pilt",
"Week starts on {fdow}" : "Nädala esimene päev: {fdow}",
"Groups" : "Grupid",
+ "Limit to groups" : "Luba gruppidele",
"Official" : "Ametlik",
"No results" : "Vasteid ei leitud",
"Visit website" : "Külasta veebisaiti",
@@ -300,7 +301,6 @@
"Performance tuning" : "Kiiruse seadistamine",
"Improving the config.php" : "config.php faili täiendamine",
"Theming" : "Teemad",
- "Limit to groups" : "Luba gruppidele",
"This app has an update available." : "Sellel rakendusel on uuendus saadaval",
"Documentation:" : "Dokumentatsioon:",
"Admin documentation" : "Administraatori dokumentatsioon",
diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js
index 98d9bb469b9..e80f095eb15 100644
--- a/settings/l10n/eu.js
+++ b/settings/l10n/eu.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Errore bat gertatu da zure hizkuntza aldatzean. Birkargatu orria eta saiatu berriro.",
"Select a profile picture" : "Profilaren irudia aukeratu",
"Groups" : "Taldeak",
+ "Limit to groups" : "Taldeetara mugatu",
"Official" : "Ofiziala",
"Visit website" : "Web orria ikusi",
"User documentation" : "Erabiltzailearen dokumentazioa",
@@ -317,7 +318,6 @@ OC.L10N.register(
"Theming" : "Itxura",
"Hardening and security guidance" : "Gogortze eta segurtasun gida",
"View in store" : "Dendan ikusi",
- "Limit to groups" : "Taldeetara mugatu",
"This app has an update available." : "Aplikazio honek eguneraketa bat eskuragarri ditu.",
"by %s" : "by %s",
"%s-licensed" : "%s-lizentziapean",
diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json
index 7d66ee82618..6bf818481a2 100644
--- a/settings/l10n/eu.json
+++ b/settings/l10n/eu.json
@@ -101,6 +101,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Errore bat gertatu da zure hizkuntza aldatzean. Birkargatu orria eta saiatu berriro.",
"Select a profile picture" : "Profilaren irudia aukeratu",
"Groups" : "Taldeak",
+ "Limit to groups" : "Taldeetara mugatu",
"Official" : "Ofiziala",
"Visit website" : "Web orria ikusi",
"User documentation" : "Erabiltzailearen dokumentazioa",
@@ -315,7 +316,6 @@
"Theming" : "Itxura",
"Hardening and security guidance" : "Gogortze eta segurtasun gida",
"View in store" : "Dendan ikusi",
- "Limit to groups" : "Taldeetara mugatu",
"This app has an update available." : "Aplikazio honek eguneraketa bat eskuragarri ditu.",
"by %s" : "by %s",
"%s-licensed" : "%s-lizentziapean",
diff --git a/settings/l10n/fi.js b/settings/l10n/fi.js
index 4b4d239735a..541bb671482 100644
--- a/settings/l10n/fi.js
+++ b/settings/l10n/fi.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"Groups" : "Ryhmät",
"Group list is empty" : "Ryhmälista on tyhjä",
"Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa",
+ "Limit to groups" : "Rajoita ryhmiin",
"Official" : "Virallinen",
"No results" : "Ei tuloksia",
"Visit website" : "Käy verkkosivustolla",
@@ -191,6 +192,7 @@ OC.L10N.register(
"There are some warnings regarding your setup." : "Asetuksiin liittyen on muutamia varoituksia.",
"Checking for system and security issues." : "Tarkistetaan mahdollisia järjestelmä- ja tietoturvaongelmia.",
"Version" : "Versio",
+ "Two-Factor Authentication" : "Kaksivaiheinen tunnistautuminen",
"Server-side encryption" : "Palvelinpään salaus",
"Enable server-side encryption" : "Käytä palvelinpään salausta",
"Please read carefully before activating server-side encryption: " : "Lue tarkasti, ennen kuin otat palvelinpään salauksen käyttöön:",
@@ -238,6 +240,7 @@ OC.L10N.register(
"Follow us on Google+" : "Seuraa Google+:ssa",
"Like our Facebook page" : "Tykkää Facebook-sivustamme",
"Follow us on Twitter" : "Seuraa Twitteriä",
+ "Follow us on Mastodon" : "Seuraa meitä Mastodonissa",
"Check out our blog" : "Lue blogia",
"Subscribe to our newsletter" : "Tilaa uutiskirje",
"Profile picture" : "Profiilikuva",
@@ -251,6 +254,7 @@ OC.L10N.register(
"Details" : "Yksityiskohdat",
"You are a member of the following groups:" : "Olet seuraavien ryhmien jäsen:",
"You are using <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Käytössäsi on <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Koko nimi",
"No display name set" : "Näyttönimeä ei ole asetettu",
"Your email address" : "Sähköpostiosoitteesi",
@@ -364,7 +368,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Tarkista Nextcloudisi tietoturva käyttäen tietoturvatarkistustamme",
"Hardening and security guidance" : "Turvaamis- ja tietoturvaopas",
"View in store" : "Näytä kaupassa",
- "Limit to groups" : "Rajoita ryhmiin",
"This app has an update available." : "Tähän sovellukseen on päivitys saatavilla.",
"by %s" : "tekijä %s",
"%s-licensed" : "%s-lisensoitu",
@@ -424,6 +427,7 @@ OC.L10N.register(
"It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Tietoturvan ja suorituskyvyn vuoksi on tärkeää, että asennuksesi on määritetty oikein. Sen vuoksi teemme joitain automaattisia tarkistuksia. Lisätietoja on saatavilla dokumentaation \"Tips & Tricks\"-osiosta.",
"The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-moduuli 'fileinfo' puuttuu. Suosittelemme kyseisen moduulin ottamista käyttöön, jotta MIME-tyyppien havaitseminen toimii parhaalla mahdollisella tavalla.",
"This means that there might be problems with certain characters in filenames." : "Tämä tarkoittaa, että jotkin merkit saattavat aiheuttaa ongelmia tiedostojen nimissä.",
- "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Cron-työtä ei voitu suorittaa komentorivin kautta. Havaittiin seuraavat tekniset virheet:"
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Cron-työtä ei voitu suorittaa komentorivin kautta. Havaittiin seuraavat tekniset virheet:",
+ "Default quota :" : "Oletuskiintiö:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/settings/l10n/fi.json b/settings/l10n/fi.json
index eedabea1a02..726d5e982a1 100644
--- a/settings/l10n/fi.json
+++ b/settings/l10n/fi.json
@@ -102,6 +102,7 @@
"Groups" : "Ryhmät",
"Group list is empty" : "Ryhmälista on tyhjä",
"Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa",
+ "Limit to groups" : "Rajoita ryhmiin",
"Official" : "Virallinen",
"No results" : "Ei tuloksia",
"Visit website" : "Käy verkkosivustolla",
@@ -189,6 +190,7 @@
"There are some warnings regarding your setup." : "Asetuksiin liittyen on muutamia varoituksia.",
"Checking for system and security issues." : "Tarkistetaan mahdollisia järjestelmä- ja tietoturvaongelmia.",
"Version" : "Versio",
+ "Two-Factor Authentication" : "Kaksivaiheinen tunnistautuminen",
"Server-side encryption" : "Palvelinpään salaus",
"Enable server-side encryption" : "Käytä palvelinpään salausta",
"Please read carefully before activating server-side encryption: " : "Lue tarkasti, ennen kuin otat palvelinpään salauksen käyttöön:",
@@ -236,6 +238,7 @@
"Follow us on Google+" : "Seuraa Google+:ssa",
"Like our Facebook page" : "Tykkää Facebook-sivustamme",
"Follow us on Twitter" : "Seuraa Twitteriä",
+ "Follow us on Mastodon" : "Seuraa meitä Mastodonissa",
"Check out our blog" : "Lue blogia",
"Subscribe to our newsletter" : "Tilaa uutiskirje",
"Profile picture" : "Profiilikuva",
@@ -249,6 +252,7 @@
"Details" : "Yksityiskohdat",
"You are a member of the following groups:" : "Olet seuraavien ryhmien jäsen:",
"You are using <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Käytössäsi on <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Koko nimi",
"No display name set" : "Näyttönimeä ei ole asetettu",
"Your email address" : "Sähköpostiosoitteesi",
@@ -362,7 +366,6 @@
"Check the security of your Nextcloud over our security scan" : "Tarkista Nextcloudisi tietoturva käyttäen tietoturvatarkistustamme",
"Hardening and security guidance" : "Turvaamis- ja tietoturvaopas",
"View in store" : "Näytä kaupassa",
- "Limit to groups" : "Rajoita ryhmiin",
"This app has an update available." : "Tähän sovellukseen on päivitys saatavilla.",
"by %s" : "tekijä %s",
"%s-licensed" : "%s-lisensoitu",
@@ -422,6 +425,7 @@
"It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information." : "Tietoturvan ja suorituskyvyn vuoksi on tärkeää, että asennuksesi on määritetty oikein. Sen vuoksi teemme joitain automaattisia tarkistuksia. Lisätietoja on saatavilla dokumentaation \"Tips & Tricks\"-osiosta.",
"The PHP module 'fileinfo' is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "PHP-moduuli 'fileinfo' puuttuu. Suosittelemme kyseisen moduulin ottamista käyttöön, jotta MIME-tyyppien havaitseminen toimii parhaalla mahdollisella tavalla.",
"This means that there might be problems with certain characters in filenames." : "Tämä tarkoittaa, että jotkin merkit saattavat aiheuttaa ongelmia tiedostojen nimissä.",
- "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Cron-työtä ei voitu suorittaa komentorivin kautta. Havaittiin seuraavat tekniset virheet:"
+ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Cron-työtä ei voitu suorittaa komentorivin kautta. Havaittiin seuraavat tekniset virheet:",
+ "Default quota :" : "Oletuskiintiö:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index 30a625f5a5b..6921c66fb93 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "le partage Federated Cloud ou l'installation et la mise à jour d'applications par l'app store",
"Federated Cloud Sharing" : "Federated Cloud Sharing",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilise %1$s version (%2$s), qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %3$s ne fonctionneront pas correctement.",
"Invalid SMTP password." : "Mot de passe SMTP incorrect.",
"Email setting test" : "Test des paramètres e-mail",
"Well done, %s!" : "Bien joué, %s !",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Groupes",
"Group list is empty" : "La liste du groupe est vide",
"Unable to retrieve the group list" : "Impossible de récupérer la liste du groupe",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'authentification à deux facteurs peut être spécifiée pour tous les \tutilisateurs et groupes spécifiques. S'ils n'ont pas de fournisseur à deux facteurs configuré, ils seront dans l'incapacité de se connecter au système.",
+ "Enforce two-factor authentication" : "Imposer l'authentification à deux facteurs",
+ "Limit to groups" : "Limiter aux groupes",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'authentification à deux facteurs n'est pas appliquée aux \tutilisateurs des groupes suivants.",
"Official" : "Officielle",
"No results" : "Aucun résultat",
"Visit website" : "Visiter le site web",
@@ -140,7 +145,7 @@ OC.L10N.register(
"Password change is disabled because the master key is disabled" : "Le changement de mot de passe est désactivé car la clé principale est désactivée",
"Common languages" : "Langues communes",
"All languages" : "Toutes les langues",
- "You did not enter the password in time" : "Vous n'avez pas rentrer votre mot de passe dans le temps imparti",
+ "You did not enter the password in time" : "Vous n'avez pas entré votre mot de passe dans le temps imparti",
"An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.",
"App update" : "Mise à jour de l'application",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Il y a quelques erreurs concernant votre configuration.",
"There are some warnings regarding your setup." : "Il y a quelques avertissements concernant votre configuration.",
"Checking for system and security issues." : "Vérification des problèmes de système et de sécurité.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Merci de consulter les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guides d'installation ↗</a> et de vérifier les erreurs ou avertissements des <a href=\"%2$s\">logs</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Vérifier la sécurité de votre Nextcloud grâce à <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">notre scan de sécurité ↗</a>",
"Version" : "Version",
+ "Two-Factor Authentication" : "Authentification en deux étapes",
"Server-side encryption" : "Chiffrement côté serveur",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Le chiffrement côté serveur permet de chiffrer les fichiers qui sont téléversés sur ce serveur. Cela implique des limitations comme une performance moindre, donc activez-le seulement si nécessaire.",
"Enable server-side encryption" : "Activer le chiffrement côté serveur",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Détails",
"You are a member of the following groups:" : "Vous êtes un membre des groupes suivants :",
"You are using <strong>%s</strong>" : "Vous utilisez <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vous utilisez <strong>%1$s</strong> sur <strong>%2$s</strong> (<strong>%3$s%% </strong>)",
"Full name" : "Nom complet",
"No display name set" : "Aucun nom d'affichage configuré",
"Your email address" : "Votre adresse e-mail",
@@ -294,9 +302,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Pour des raisons de sécurité, ce mot de passe ne sera affiché qu'une seule fois.",
"Username" : "Nom d'utilisateur",
"Done" : "Terminé",
- "Two-Factor Authentication" : "Authentification en deux étapes",
- "Two-factor authentication is enabled on your account." : "L'authentification en deux étapes est activée sur votre compte.",
- "Two-factor authentication is disabled on your account." : "L'authentification en deux étapes est désactivée sur votre compte.",
"Enabled apps" : "Applications activées",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL utilise %s %s, qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %s ne fonctionneront pas correctement.",
"A problem occurred, please check your log files (Error: %s)" : "Une erreur est survenue, veuillez vérifier vos fichiers de log (Erreur: %s)",
@@ -397,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Vérifier la sécurité de votre Nextcloud grâce à notre scan de sécurité",
"Hardening and security guidance" : "Guide pour le renforcement et la sécurité",
"View in store" : "Afficher dans le magasin d'application",
- "Limit to groups" : "Limiter aux groupes",
"This app has an update available." : "Cette application a une mise à jour disponible.",
"by %s" : "par %s",
"%s-licensed" : "Sous licence %s",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index ff622f895c2..6d68dbf0521 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "le partage Federated Cloud ou l'installation et la mise à jour d'applications par l'app store",
"Federated Cloud Sharing" : "Federated Cloud Sharing",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilise %1$s version (%2$s), qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %3$s ne fonctionneront pas correctement.",
"Invalid SMTP password." : "Mot de passe SMTP incorrect.",
"Email setting test" : "Test des paramètres e-mail",
"Well done, %s!" : "Bien joué, %s !",
@@ -107,6 +108,10 @@
"Groups" : "Groupes",
"Group list is empty" : "La liste du groupe est vide",
"Unable to retrieve the group list" : "Impossible de récupérer la liste du groupe",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'authentification à deux facteurs peut être spécifiée pour tous les \tutilisateurs et groupes spécifiques. S'ils n'ont pas de fournisseur à deux facteurs configuré, ils seront dans l'incapacité de se connecter au système.",
+ "Enforce two-factor authentication" : "Imposer l'authentification à deux facteurs",
+ "Limit to groups" : "Limiter aux groupes",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'authentification à deux facteurs n'est pas appliquée aux \tutilisateurs des groupes suivants.",
"Official" : "Officielle",
"No results" : "Aucun résultat",
"Visit website" : "Visiter le site web",
@@ -138,7 +143,7 @@
"Password change is disabled because the master key is disabled" : "Le changement de mot de passe est désactivé car la clé principale est désactivée",
"Common languages" : "Langues communes",
"All languages" : "Toutes les langues",
- "You did not enter the password in time" : "Vous n'avez pas rentrer votre mot de passe dans le temps imparti",
+ "You did not enter the password in time" : "Vous n'avez pas entré votre mot de passe dans le temps imparti",
"An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.",
"App update" : "Mise à jour de l'application",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Il y a quelques erreurs concernant votre configuration.",
"There are some warnings regarding your setup." : "Il y a quelques avertissements concernant votre configuration.",
"Checking for system and security issues." : "Vérification des problèmes de système et de sécurité.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Merci de consulter les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guides d'installation ↗</a> et de vérifier les erreurs ou avertissements des <a href=\"%2$s\">logs</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Vérifier la sécurité de votre Nextcloud grâce à <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">notre scan de sécurité ↗</a>",
"Version" : "Version",
+ "Two-Factor Authentication" : "Authentification en deux étapes",
"Server-side encryption" : "Chiffrement côté serveur",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Le chiffrement côté serveur permet de chiffrer les fichiers qui sont téléversés sur ce serveur. Cela implique des limitations comme une performance moindre, donc activez-le seulement si nécessaire.",
"Enable server-side encryption" : "Activer le chiffrement côté serveur",
@@ -262,6 +269,7 @@
"Details" : "Détails",
"You are a member of the following groups:" : "Vous êtes un membre des groupes suivants :",
"You are using <strong>%s</strong>" : "Vous utilisez <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vous utilisez <strong>%1$s</strong> sur <strong>%2$s</strong> (<strong>%3$s%% </strong>)",
"Full name" : "Nom complet",
"No display name set" : "Aucun nom d'affichage configuré",
"Your email address" : "Votre adresse e-mail",
@@ -292,9 +300,6 @@
"For security reasons this password will only be shown once." : "Pour des raisons de sécurité, ce mot de passe ne sera affiché qu'une seule fois.",
"Username" : "Nom d'utilisateur",
"Done" : "Terminé",
- "Two-Factor Authentication" : "Authentification en deux étapes",
- "Two-factor authentication is enabled on your account." : "L'authentification en deux étapes est activée sur votre compte.",
- "Two-factor authentication is disabled on your account." : "L'authentification en deux étapes est désactivée sur votre compte.",
"Enabled apps" : "Applications activées",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL utilise %s %s, qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %s ne fonctionneront pas correctement.",
"A problem occurred, please check your log files (Error: %s)" : "Une erreur est survenue, veuillez vérifier vos fichiers de log (Erreur: %s)",
@@ -395,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Vérifier la sécurité de votre Nextcloud grâce à notre scan de sécurité",
"Hardening and security guidance" : "Guide pour le renforcement et la sécurité",
"View in store" : "Afficher dans le magasin d'application",
- "Limit to groups" : "Limiter aux groupes",
"This app has an update available." : "Cette application a une mise à jour disponible.",
"by %s" : "par %s",
"%s-licensed" : "Sous licence %s",
diff --git a/settings/l10n/he.js b/settings/l10n/he.js
index 848a1cc086e..a82868a1064 100644
--- a/settings/l10n/he.js
+++ b/settings/l10n/he.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "אירעה שגיאה בעת שינוי השפה שלך. נא לרענן את העמוד ולנסות שוב.",
"Select a profile picture" : "יש לבחור תמונת פרופיל",
"Groups" : "קבוצות",
+ "Limit to groups" : "הגבלה לקבוצות",
"Official" : "רישמי",
"Visit website" : "ביקור באתר האינטרנט",
"User documentation" : "תיעוד משתמש",
@@ -365,7 +366,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "בדיקת האבטחה של ה־Nextcloud שלך באמצעות סריקת האבטחה שלנו",
"Hardening and security guidance" : "הדרכת הקשחה ואבטחה",
"View in store" : "הצגה באחסון",
- "Limit to groups" : "הגבלה לקבוצות",
"This app has an update available." : "ליישום זה קיים עדכון זמין.",
"by %s" : "על ידי %s",
"%s-licensed" : "%s-בעל רישיון",
diff --git a/settings/l10n/he.json b/settings/l10n/he.json
index 9cdf7b9e7e4..c37edd2d85a 100644
--- a/settings/l10n/he.json
+++ b/settings/l10n/he.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "אירעה שגיאה בעת שינוי השפה שלך. נא לרענן את העמוד ולנסות שוב.",
"Select a profile picture" : "יש לבחור תמונת פרופיל",
"Groups" : "קבוצות",
+ "Limit to groups" : "הגבלה לקבוצות",
"Official" : "רישמי",
"Visit website" : "ביקור באתר האינטרנט",
"User documentation" : "תיעוד משתמש",
@@ -363,7 +364,6 @@
"Check the security of your Nextcloud over our security scan" : "בדיקת האבטחה של ה־Nextcloud שלך באמצעות סריקת האבטחה שלנו",
"Hardening and security guidance" : "הדרכת הקשחה ואבטחה",
"View in store" : "הצגה באחסון",
- "Limit to groups" : "הגבלה לקבוצות",
"This app has an update available." : "ליישום זה קיים עדכון זמין.",
"by %s" : "על ידי %s",
"%s-licensed" : "%s-בעל רישיון",
diff --git a/settings/l10n/hu.js b/settings/l10n/hu.js
index 8b6d98d6594..4b8ecb37da8 100644
--- a/settings/l10n/hu.js
+++ b/settings/l10n/hu.js
@@ -3,10 +3,10 @@ OC.L10N.register(
{
"{actor} changed your password" : "{actor} módosította a jelszavad",
"You changed your password" : "Módosítottad a jelszavad",
- "Your password was reset by an administrator" : "A jelszavadat visszaállította egy adminisztrátor",
+ "Your password was reset by an administrator" : "A jelszavadat visszaállította egy rendszergazda",
"{actor} changed your email address" : "{actor} megváltoztatta az e-mail címed",
"You changed your email address" : "Módosítottad az e-mail címed",
- "Your email address was changed by an administrator" : "Az e-mail címedet megváltoztatta egy adminisztrátor",
+ "Your email address was changed by an administrator" : "Az e-mail címedet megváltoztatta egy rendszergazda",
"Security" : "Biztonság",
"You successfully logged in using two-factor authentication (%1$s)" : "Sikeresen bejelentkeztél kétfaktoros azonosítással (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Egy kétfaktoros bejelentkezési kísérlet sikertelen volt (%1$s)",
@@ -18,8 +18,8 @@ OC.L10N.register(
"No user supplied" : "Nincs megadva felhasználó",
"Unable to change password" : "Nem sikerült megváltoztatni a jelszót",
"Authentication error" : "Azonosítási hiba",
- "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy adminisztrátori visszaállító jelszót; különben, az összes felhasználó adata eltűnik.",
- "Wrong admin recovery password. Please check the password and try again." : "Hibás admin helyreállítási jelszó. Ellenőrizze a jelszót és próbálja újra!",
+ "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy rendszergazdai visszaállító jelszót; különben, az összes felhasználó adata eltűnik.",
+ "Wrong admin recovery password. Please check the password and try again." : "Hibás rendszergazda helyreállítási jelszó. Ellenőrizze a jelszót és próbálja újra!",
"Backend doesn't support password change, but the user's encryption key was updated." : "A háttérszolgáltatás nem támogatja a jelszómódosítást, de a titkosítási kulcs frissítve lett.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepítése és frissítése az alkalmazás tárból vagy Szövetséges Felhő Megosztásból",
"Federated Cloud Sharing" : "Megosztás Egyesített Felhőben",
@@ -38,12 +38,12 @@ OC.L10N.register(
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "A weboldalad ellenőrzése érdekében helyezd el a következő tartalmat a '.well-known/CloudIdVerificationCode.txt'-ba. (figyelj arra, hogy az egész szöveg egy sorban legyen):",
"%1$s changed your password on %2$s." : "%1$smegváltoztatta a jelszavadat%2$s-on.",
"Your password on %s was changed." : "A jelszavad %s-on megváltozott.",
- "Your password on %s was reset by an administrator." : "A jelszavad %s-on visszaállította egy adminisztrátor.",
+ "Your password on %s was reset by an administrator." : "A jelszavad %s-on visszaállította egy rendszergazda.",
"Password for %1$s changed on %2$s" : "%1$s jelszava megváltozott %2$s-on",
"Password changed for %s" : "%s jelszava módosítva",
- "If you did not request this, please contact an administrator." : "Ha ezt nem te kérted, lépj kapcsolatba egy adminisztrátorral.",
+ "If you did not request this, please contact an administrator." : "Ha ezt nem te kérted, lépj kapcsolatba egy rendszergazdával.",
"Your email address on %s was changed." : "Az e-mail címed megváltozott %s-on.",
- "Your email address on %s was changed by an administrator." : "Az e-mail címedet %s-on megváltoztatta egy adminisztrátor.",
+ "Your email address on %s was changed by an administrator." : "Az e-mail címedet %s-on megváltoztatta egy rendszergazda.",
"Email address for %1$s changed on %2$s" : "%1$s e-mail címe megváltozott%2$s-on",
"Email address changed for %s" : "%s e-mail címe módosítva",
"The new email address is %s" : "Az új e-mail cím %s",
@@ -55,7 +55,7 @@ OC.L10N.register(
"Set your password" : "Állítsd be a jelszabad",
"Go to %s" : "Menj ide: %s",
"Install Client" : "Kliens telepítés",
- "Logged in user must be a subadmin" : "Nem admin felhasználóként kell bejelentkezzen",
+ "Logged in user must be a subadmin" : "Nem rendszergazda felhasználóként kell bejelentkezzen",
"Migration in progress. Please wait until the migration is finished" : "Migráció folyamatban. Kérlek várj, míg a migráció befejeződik.",
"Migration started …" : "Migráció elindítva ...",
"Not saved" : "Nincs mentve",
@@ -92,7 +92,7 @@ OC.L10N.register(
"Only visible to local users" : "Csak a helyi felhasználók láthatják",
"Only visible to you" : "Csak te láthatod",
"Contacts" : "Névjegyek",
- "Visible to local users and to trusted servers" : "Helyi felhasználók és megbízható szereverek láthatják",
+ "Visible to local users and to trusted servers" : "Helyi felhasználók és megbízható szerverek láthatják",
"Public" : "Nyilvános",
"Will be synced to a global and public address book" : "Globális és nyilvános névjegyek számára lesz szinkronizálva",
"Verify" : "Ellenőrzés",
@@ -109,6 +109,7 @@ OC.L10N.register(
"Groups" : "Csoportok",
"Group list is empty" : "Csoport lista üres",
"Unable to retrieve the group list" : "Csoportlista betöltése sikertelen",
+ "Limit to groups" : "Csoportokra korlátozás",
"Official" : "Hivatalos",
"No results" : "Nincsenek eredmények",
"Visit website" : "Weboldal meglátogatása",
@@ -131,7 +132,7 @@ OC.L10N.register(
"Welcome mail sent!" : "Üdvöző üzenet elküldve!",
"Display name" : "Név megjelenítés",
"Email" : "E-mail",
- "Group admin for" : "Csoport Adminisztrátor itt",
+ "Group admin for" : "Csoport Rendszergazda itt",
"Language" : "Nyelv",
"User backend" : "Felhasználói háttér",
"Unlimited" : "Korlátlan",
@@ -153,7 +154,7 @@ OC.L10N.register(
"You are about to remove the group {group}. The users will NOT be deleted." : "A {group} csoportot fodja törölni. A felhasználó NEM fog törlődni.",
"Please confirm the group removal " : "Kérem erősítse meg a csoport törlését",
"Remove group" : "Csoport törlése",
- "Admins" : "Adminisztrátorok",
+ "Admins" : "Rendszergazdák",
"Disabled users" : "Letiltott felhasználók",
"Everyone" : "Mindenki",
"Add group" : "csoport hozzáadása",
@@ -164,7 +165,7 @@ OC.L10N.register(
"Issued By" : "Kiadta",
"Valid until %s" : "Érvényes: %s",
"Import root certificate" : "Gyökértanúsítvány importálása",
- "Administrator documentation" : "Adminisztrátori dokumentáció",
+ "Administrator documentation" : "Rendszergazdai dokumentáció",
"Documentation" : "Dokumentáció",
"Forum" : "Fórum",
"None" : "Egyik sem",
@@ -198,6 +199,7 @@ OC.L10N.register(
"Checking for system and security issues." : "Rendszer és biztonsági dolgok ellenőrzése.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Ellenőrizze a Nextcloud biztonságát <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> a biztonsági ellenőrzőnkkel ↗</a>.",
"Version" : "Verzió",
+ "Two-Factor Authentication" : "Kétfaktoros hitelesítés",
"Server-side encryption" : "Szerver-oldali titkosítás",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A szerveroldali titkosítás segítségével a tárolt fájlok titkosítva kerülnek tárolásra a szerveren. Ez korlátozásokkal jár, például teljesítmény csökkenést okoz, így csak akkor kapcsold be, ha szükséges.",
"Enable server-side encryption" : "Szerver-oldali titkosítás engedélyezése",
@@ -224,7 +226,7 @@ OC.L10N.register(
"The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t ennek a rendszer felhasználónak kell végrehajtania: \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ennek futtatásához PHP POSIX kiterjesztés szükséges. Nézd meg a {linkstart}PHP dokumentációt{linkend} a részletekért.",
"Sharing" : "Megosztás",
- "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Adminisztrátorként finomhangolhatod a megosztás viselkedését. Kérlek nézd meg a dokumentációt a részletekért.",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Rendszergazdaként finomhangolhatod a megosztás viselkedését. Kérlek nézd meg a dokumentációt a részletekért.",
"Allow apps to use the Share API" : "Lehetővé teszi, hogy a programmodulok is használhassák a megosztást",
"Allow users to share via link" : "Engedjük meg a fájlok hivatkozással történő megosztását",
"Allow public uploads" : "Nyilvános feltöltés engedélyezése",
@@ -244,7 +246,7 @@ OC.L10N.register(
"This text will be shown on the public link upload page when the file list is hidden." : "Ez a szöveg jelenik meg a nyilvános feltöltési oldalon, amikor a fájl lista el van rejtve.",
"Default share permissions" : "Alapértelmezett megosztási beállítások",
"Personal" : "Személyes",
- "Administration" : "Adminisztrátor",
+ "Administration" : "Adminisztráció",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Fejleszti a {communityopen}Nextcloud közösség{linkclose}, a {githubopen}forráskódra{linkclose} az {licenseopen}AGPL{linkclose} licenc vonatkozik.",
"Follow us on Google+" : "Kövess Google+ -on.",
"Like our Facebook page" : "Lájkold a Facebook oldalunkat",
@@ -392,12 +394,11 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Ellenőrizze a Nextcloud biztonságát a biztonsági ellenőrzőnkkel ",
"Hardening and security guidance" : "Megerősítési és biztonsági útmutató",
"View in store" : "Megtekintés a tárban",
- "Limit to groups" : "Csoportokra korlátozás",
"This app has an update available." : "Frissítés érhető el az alkalmazáshoz.",
"by %s" : "készítő: %s",
"%s-licensed" : "%s-licencelt",
"Documentation:" : "Dokumentációk:",
- "Admin documentation" : "Adminisztrátori dokumentáció",
+ "Admin documentation" : "Rendszergazdai dokumentáció",
"Report a bug" : "Hiba bejelentése",
"Show description …" : "Leírás megjelenítése ...",
"Hide description …" : "Leírás elrejtése ...",
@@ -414,7 +415,7 @@ OC.L10N.register(
"Android app" : "Android alkalmazás",
"iOS app" : "IOS alkalmazás",
"If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Ha szeretnéd támogatni a projektet {contributeopen}csatlakozz a fejlesztéshez{linkclose} vagy {contributeopen}terjeszd a világban{linkclose}!",
- "Show First Run Wizard again" : "Jelenítsd meg újra az Első indíráskori varázslót!",
+ "Show First Run Wizard again" : "Az első indításkori varázsló újbóli megjelenítése",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, asztali, mobil kliensek és app specifikus jelszavak, amelyek jelenleg hozzáférnek a fiókodhoz.",
"App passwords" : "Alkalmazás jelszavak",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Itt adhatsz egyedi jelszavakat az appokhoz. Így nem kell a sajátodat kiadnod nekik. Itt is vonhatod vissza azokat.",
@@ -432,7 +433,7 @@ OC.L10N.register(
"When the password of a new user is left empty, an activation email with a link to set the password is sent." : "Amikor egy új felhasználónál üres marad a jelszó mező, akkor egy aktivációs levél kerül kiküldésre a felhasználónak, ahol beállíthatja a jelszavát.",
"E-Mail" : "E-mail",
"Create" : "Létrehozás",
- "Admin Recovery Password" : "Adminisztrátori jelszó a fájlok visszanyerésére",
+ "Admin Recovery Password" : "Rendszergazdai jelszó a fájlok visszanyerésére",
"Enter the recovery password in order to recover the users files during password change" : "Adja meg az adatok visszanyeréséhez szükséges jelszót arra az esetre, ha a felhasználók megváltoztatják a jelszavukat",
"Group name" : "Csoport neve",
"Disabled" : "Kikapcsolva",
diff --git a/settings/l10n/hu.json b/settings/l10n/hu.json
index fc41609848c..3f9935b4c67 100644
--- a/settings/l10n/hu.json
+++ b/settings/l10n/hu.json
@@ -1,10 +1,10 @@
{ "translations": {
"{actor} changed your password" : "{actor} módosította a jelszavad",
"You changed your password" : "Módosítottad a jelszavad",
- "Your password was reset by an administrator" : "A jelszavadat visszaállította egy adminisztrátor",
+ "Your password was reset by an administrator" : "A jelszavadat visszaállította egy rendszergazda",
"{actor} changed your email address" : "{actor} megváltoztatta az e-mail címed",
"You changed your email address" : "Módosítottad az e-mail címed",
- "Your email address was changed by an administrator" : "Az e-mail címedet megváltoztatta egy adminisztrátor",
+ "Your email address was changed by an administrator" : "Az e-mail címedet megváltoztatta egy rendszergazda",
"Security" : "Biztonság",
"You successfully logged in using two-factor authentication (%1$s)" : "Sikeresen bejelentkeztél kétfaktoros azonosítással (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "Egy kétfaktoros bejelentkezési kísérlet sikertelen volt (%1$s)",
@@ -16,8 +16,8 @@
"No user supplied" : "Nincs megadva felhasználó",
"Unable to change password" : "Nem sikerült megváltoztatni a jelszót",
"Authentication error" : "Azonosítási hiba",
- "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy adminisztrátori visszaállító jelszót; különben, az összes felhasználó adata eltűnik.",
- "Wrong admin recovery password. Please check the password and try again." : "Hibás admin helyreállítási jelszó. Ellenőrizze a jelszót és próbálja újra!",
+ "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy rendszergazdai visszaállító jelszót; különben, az összes felhasználó adata eltűnik.",
+ "Wrong admin recovery password. Please check the password and try again." : "Hibás rendszergazda helyreállítási jelszó. Ellenőrizze a jelszót és próbálja újra!",
"Backend doesn't support password change, but the user's encryption key was updated." : "A háttérszolgáltatás nem támogatja a jelszómódosítást, de a titkosítási kulcs frissítve lett.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepítése és frissítése az alkalmazás tárból vagy Szövetséges Felhő Megosztásból",
"Federated Cloud Sharing" : "Megosztás Egyesített Felhőben",
@@ -36,12 +36,12 @@
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "A weboldalad ellenőrzése érdekében helyezd el a következő tartalmat a '.well-known/CloudIdVerificationCode.txt'-ba. (figyelj arra, hogy az egész szöveg egy sorban legyen):",
"%1$s changed your password on %2$s." : "%1$smegváltoztatta a jelszavadat%2$s-on.",
"Your password on %s was changed." : "A jelszavad %s-on megváltozott.",
- "Your password on %s was reset by an administrator." : "A jelszavad %s-on visszaállította egy adminisztrátor.",
+ "Your password on %s was reset by an administrator." : "A jelszavad %s-on visszaállította egy rendszergazda.",
"Password for %1$s changed on %2$s" : "%1$s jelszava megváltozott %2$s-on",
"Password changed for %s" : "%s jelszava módosítva",
- "If you did not request this, please contact an administrator." : "Ha ezt nem te kérted, lépj kapcsolatba egy adminisztrátorral.",
+ "If you did not request this, please contact an administrator." : "Ha ezt nem te kérted, lépj kapcsolatba egy rendszergazdával.",
"Your email address on %s was changed." : "Az e-mail címed megváltozott %s-on.",
- "Your email address on %s was changed by an administrator." : "Az e-mail címedet %s-on megváltoztatta egy adminisztrátor.",
+ "Your email address on %s was changed by an administrator." : "Az e-mail címedet %s-on megváltoztatta egy rendszergazda.",
"Email address for %1$s changed on %2$s" : "%1$s e-mail címe megváltozott%2$s-on",
"Email address changed for %s" : "%s e-mail címe módosítva",
"The new email address is %s" : "Az új e-mail cím %s",
@@ -53,7 +53,7 @@
"Set your password" : "Állítsd be a jelszabad",
"Go to %s" : "Menj ide: %s",
"Install Client" : "Kliens telepítés",
- "Logged in user must be a subadmin" : "Nem admin felhasználóként kell bejelentkezzen",
+ "Logged in user must be a subadmin" : "Nem rendszergazda felhasználóként kell bejelentkezzen",
"Migration in progress. Please wait until the migration is finished" : "Migráció folyamatban. Kérlek várj, míg a migráció befejeződik.",
"Migration started …" : "Migráció elindítva ...",
"Not saved" : "Nincs mentve",
@@ -90,7 +90,7 @@
"Only visible to local users" : "Csak a helyi felhasználók láthatják",
"Only visible to you" : "Csak te láthatod",
"Contacts" : "Névjegyek",
- "Visible to local users and to trusted servers" : "Helyi felhasználók és megbízható szereverek láthatják",
+ "Visible to local users and to trusted servers" : "Helyi felhasználók és megbízható szerverek láthatják",
"Public" : "Nyilvános",
"Will be synced to a global and public address book" : "Globális és nyilvános névjegyek számára lesz szinkronizálva",
"Verify" : "Ellenőrzés",
@@ -107,6 +107,7 @@
"Groups" : "Csoportok",
"Group list is empty" : "Csoport lista üres",
"Unable to retrieve the group list" : "Csoportlista betöltése sikertelen",
+ "Limit to groups" : "Csoportokra korlátozás",
"Official" : "Hivatalos",
"No results" : "Nincsenek eredmények",
"Visit website" : "Weboldal meglátogatása",
@@ -129,7 +130,7 @@
"Welcome mail sent!" : "Üdvöző üzenet elküldve!",
"Display name" : "Név megjelenítés",
"Email" : "E-mail",
- "Group admin for" : "Csoport Adminisztrátor itt",
+ "Group admin for" : "Csoport Rendszergazda itt",
"Language" : "Nyelv",
"User backend" : "Felhasználói háttér",
"Unlimited" : "Korlátlan",
@@ -151,7 +152,7 @@
"You are about to remove the group {group}. The users will NOT be deleted." : "A {group} csoportot fodja törölni. A felhasználó NEM fog törlődni.",
"Please confirm the group removal " : "Kérem erősítse meg a csoport törlését",
"Remove group" : "Csoport törlése",
- "Admins" : "Adminisztrátorok",
+ "Admins" : "Rendszergazdák",
"Disabled users" : "Letiltott felhasználók",
"Everyone" : "Mindenki",
"Add group" : "csoport hozzáadása",
@@ -162,7 +163,7 @@
"Issued By" : "Kiadta",
"Valid until %s" : "Érvényes: %s",
"Import root certificate" : "Gyökértanúsítvány importálása",
- "Administrator documentation" : "Adminisztrátori dokumentáció",
+ "Administrator documentation" : "Rendszergazdai dokumentáció",
"Documentation" : "Dokumentáció",
"Forum" : "Fórum",
"None" : "Egyik sem",
@@ -196,6 +197,7 @@
"Checking for system and security issues." : "Rendszer és biztonsági dolgok ellenőrzése.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Ellenőrizze a Nextcloud biztonságát <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> a biztonsági ellenőrzőnkkel ↗</a>.",
"Version" : "Verzió",
+ "Two-Factor Authentication" : "Kétfaktoros hitelesítés",
"Server-side encryption" : "Szerver-oldali titkosítás",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A szerveroldali titkosítás segítségével a tárolt fájlok titkosítva kerülnek tárolásra a szerveren. Ez korlátozásokkal jár, például teljesítmény csökkenést okoz, így csak akkor kapcsold be, ha szükséges.",
"Enable server-side encryption" : "Szerver-oldali titkosítás engedélyezése",
@@ -222,7 +224,7 @@
"The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t ennek a rendszer felhasználónak kell végrehajtania: \"%s\".",
"To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ennek futtatásához PHP POSIX kiterjesztés szükséges. Nézd meg a {linkstart}PHP dokumentációt{linkend} a részletekért.",
"Sharing" : "Megosztás",
- "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Adminisztrátorként finomhangolhatod a megosztás viselkedését. Kérlek nézd meg a dokumentációt a részletekért.",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Rendszergazdaként finomhangolhatod a megosztás viselkedését. Kérlek nézd meg a dokumentációt a részletekért.",
"Allow apps to use the Share API" : "Lehetővé teszi, hogy a programmodulok is használhassák a megosztást",
"Allow users to share via link" : "Engedjük meg a fájlok hivatkozással történő megosztását",
"Allow public uploads" : "Nyilvános feltöltés engedélyezése",
@@ -242,7 +244,7 @@
"This text will be shown on the public link upload page when the file list is hidden." : "Ez a szöveg jelenik meg a nyilvános feltöltési oldalon, amikor a fájl lista el van rejtve.",
"Default share permissions" : "Alapértelmezett megosztási beállítások",
"Personal" : "Személyes",
- "Administration" : "Adminisztrátor",
+ "Administration" : "Adminisztráció",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Fejleszti a {communityopen}Nextcloud közösség{linkclose}, a {githubopen}forráskódra{linkclose} az {licenseopen}AGPL{linkclose} licenc vonatkozik.",
"Follow us on Google+" : "Kövess Google+ -on.",
"Like our Facebook page" : "Lájkold a Facebook oldalunkat",
@@ -390,12 +392,11 @@
"Check the security of your Nextcloud over our security scan" : "Ellenőrizze a Nextcloud biztonságát a biztonsági ellenőrzőnkkel ",
"Hardening and security guidance" : "Megerősítési és biztonsági útmutató",
"View in store" : "Megtekintés a tárban",
- "Limit to groups" : "Csoportokra korlátozás",
"This app has an update available." : "Frissítés érhető el az alkalmazáshoz.",
"by %s" : "készítő: %s",
"%s-licensed" : "%s-licencelt",
"Documentation:" : "Dokumentációk:",
- "Admin documentation" : "Adminisztrátori dokumentáció",
+ "Admin documentation" : "Rendszergazdai dokumentáció",
"Report a bug" : "Hiba bejelentése",
"Show description …" : "Leírás megjelenítése ...",
"Hide description …" : "Leírás elrejtése ...",
@@ -412,7 +413,7 @@
"Android app" : "Android alkalmazás",
"iOS app" : "IOS alkalmazás",
"If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "Ha szeretnéd támogatni a projektet {contributeopen}csatlakozz a fejlesztéshez{linkclose} vagy {contributeopen}terjeszd a világban{linkclose}!",
- "Show First Run Wizard again" : "Jelenítsd meg újra az Első indíráskori varázslót!",
+ "Show First Run Wizard again" : "Az első indításkori varázsló újbóli megjelenítése",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Web, asztali, mobil kliensek és app specifikus jelszavak, amelyek jelenleg hozzáférnek a fiókodhoz.",
"App passwords" : "Alkalmazás jelszavak",
"Here you can generate individual passwords for apps so you don’t have to give out your password. You can revoke them individually too." : "Itt adhatsz egyedi jelszavakat az appokhoz. Így nem kell a sajátodat kiadnod nekik. Itt is vonhatod vissza azokat.",
@@ -430,7 +431,7 @@
"When the password of a new user is left empty, an activation email with a link to set the password is sent." : "Amikor egy új felhasználónál üres marad a jelszó mező, akkor egy aktivációs levél kerül kiküldésre a felhasználónak, ahol beállíthatja a jelszavát.",
"E-Mail" : "E-mail",
"Create" : "Létrehozás",
- "Admin Recovery Password" : "Adminisztrátori jelszó a fájlok visszanyerésére",
+ "Admin Recovery Password" : "Rendszergazdai jelszó a fájlok visszanyerésére",
"Enter the recovery password in order to recover the users files during password change" : "Adja meg az adatok visszanyeréséhez szükséges jelszót arra az esetre, ha a felhasználók megváltoztatják a jelszavukat",
"Group name" : "Csoport neve",
"Disabled" : "Kikapcsolva",
diff --git a/settings/l10n/is.js b/settings/l10n/is.js
index dd3677819aa..79445a211ae 100644
--- a/settings/l10n/is.js
+++ b/settings/l10n/is.js
@@ -109,6 +109,7 @@ OC.L10N.register(
"Groups" : "Hópar",
"Group list is empty" : "Listi yfir hópa er tómur",
"Unable to retrieve the group list" : "Tókst ekki að ná í lista yfir hópinn",
+ "Limit to groups" : "Takmarka við hópa",
"Official" : "Opinbert",
"No results" : "Engar niðurstöður",
"Visit website" : "Heimsækja vefsvæðið",
@@ -199,6 +200,7 @@ OC.L10N.register(
"Checking for system and security issues." : "Athuga með kerfis- og öryggisvandamál.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Athugaðu öryggi Nextcloud-skýsins með <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">öryggisskönnun okkar ↗</a>.",
"Version" : "Útgáfa",
+ "Two-Factor Authentication" : "Tveggja-þrepa auðkenning",
"Server-side encryption" : "Dulritun á þjóni",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Dulritun á vefþjóni (server-side encryption) gerir kleift að dulrita skrár sem sendar eru inn á þennan þjón. Sá eiginleiki er ekki án áhrifa á afköst kerfisins, þannig að slíkt ætti ekki að virkja nema að vel yfirlögðu máli.",
"Enable server-side encryption" : "Virkja dulritun á þjóni",
@@ -294,9 +296,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Af öryggisástæðum er þetta lykilorð einungis birt einu sinni.",
"Username" : "Notandanafn",
"Done" : "Lokið",
- "Two-Factor Authentication" : "Tveggja-þrepa auðkenning",
- "Two-factor authentication is enabled on your account." : "Tveggja-þrepa auðkenning er virk fyrir aðganginn þinn.",
- "Two-factor authentication is disabled on your account." : "Tveggja-þrepa auðkenning er óvirk fyrir aðganginn þinn.",
"Enabled apps" : "Virk forrit",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL er að nota úrelda útgáfu af %s (%s). Uppfærðu stýrikerfið þitt, annars er hætt við að eiginleikar á borð við %s virki ekki sem skyldi.",
"A problem occurred, please check your log files (Error: %s)" : "Vandamál kom upp, skoðaðu yfir annálana þína (Villa: %s)",
@@ -397,7 +396,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Athugaðu öryggi Nextcloud-skýsins með öryggisskönnun okkar",
"Hardening and security guidance" : "Brynjun og öryggisleiðbeiningar",
"View in store" : "Skoða í hugbúnaðarsafni",
- "Limit to groups" : "Takmarka við hópa",
"This app has an update available." : "Uppfærsla er tiltæk fyrir þetta forrit.",
"by %s" : "frá %s",
"%s-licensed" : "%s-notkunarleyfi",
diff --git a/settings/l10n/is.json b/settings/l10n/is.json
index 8b1de89b1a4..ca90a0fca90 100644
--- a/settings/l10n/is.json
+++ b/settings/l10n/is.json
@@ -107,6 +107,7 @@
"Groups" : "Hópar",
"Group list is empty" : "Listi yfir hópa er tómur",
"Unable to retrieve the group list" : "Tókst ekki að ná í lista yfir hópinn",
+ "Limit to groups" : "Takmarka við hópa",
"Official" : "Opinbert",
"No results" : "Engar niðurstöður",
"Visit website" : "Heimsækja vefsvæðið",
@@ -197,6 +198,7 @@
"Checking for system and security issues." : "Athuga með kerfis- og öryggisvandamál.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Athugaðu öryggi Nextcloud-skýsins með <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">öryggisskönnun okkar ↗</a>.",
"Version" : "Útgáfa",
+ "Two-Factor Authentication" : "Tveggja-þrepa auðkenning",
"Server-side encryption" : "Dulritun á þjóni",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Dulritun á vefþjóni (server-side encryption) gerir kleift að dulrita skrár sem sendar eru inn á þennan þjón. Sá eiginleiki er ekki án áhrifa á afköst kerfisins, þannig að slíkt ætti ekki að virkja nema að vel yfirlögðu máli.",
"Enable server-side encryption" : "Virkja dulritun á þjóni",
@@ -292,9 +294,6 @@
"For security reasons this password will only be shown once." : "Af öryggisástæðum er þetta lykilorð einungis birt einu sinni.",
"Username" : "Notandanafn",
"Done" : "Lokið",
- "Two-Factor Authentication" : "Tveggja-þrepa auðkenning",
- "Two-factor authentication is enabled on your account." : "Tveggja-þrepa auðkenning er virk fyrir aðganginn þinn.",
- "Two-factor authentication is disabled on your account." : "Tveggja-þrepa auðkenning er óvirk fyrir aðganginn þinn.",
"Enabled apps" : "Virk forrit",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL er að nota úrelda útgáfu af %s (%s). Uppfærðu stýrikerfið þitt, annars er hætt við að eiginleikar á borð við %s virki ekki sem skyldi.",
"A problem occurred, please check your log files (Error: %s)" : "Vandamál kom upp, skoðaðu yfir annálana þína (Villa: %s)",
@@ -395,7 +394,6 @@
"Check the security of your Nextcloud over our security scan" : "Athugaðu öryggi Nextcloud-skýsins með öryggisskönnun okkar",
"Hardening and security guidance" : "Brynjun og öryggisleiðbeiningar",
"View in store" : "Skoða í hugbúnaðarsafni",
- "Limit to groups" : "Takmarka við hópa",
"This app has an update available." : "Uppfærsla er tiltæk fyrir þetta forrit.",
"by %s" : "frá %s",
"%s-licensed" : "%s-notkunarleyfi",
diff --git a/settings/l10n/it.js b/settings/l10n/it.js
index 5afe4c0d717..c20df47ab3f 100644
--- a/settings/l10n/it.js
+++ b/settings/l10n/it.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Il motore non supporta la modifica della password, ma la chiave di cifratura dell'utente è stata aggiornata.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installazione e aggiornamento delle applicazioni tramite il negozio delle applicazioni o condivisione cloud federata",
"Federated Cloud Sharing" : "Condivisione cloud federata",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL sta utilizzando una versione di %1$s datata (%2$s). Aggiorna il tuo sistema operativo o funzionalità come %3$s non funzioneranno correttamente.",
"Invalid SMTP password." : "Password SMTP non valida.",
"Email setting test" : "Prova impostazioni email",
"Well done, %s!" : "Ben fatto, %s!",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Gruppi",
"Group list is empty" : "L'elenco dei gruppi è vuoto",
"Unable to retrieve the group list" : "Impossibile recuperare l'elenco dei gruppi",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'autenticazione a due fattori può essere imposta per tutti gli\tutenti e gruppi specifici. Se non hanno un fornitore a due fattori configurato, non saranno in grado di accedere al sistema.",
+ "Enforce two-factor authentication" : "Applica l'autenticazione a due fattori",
+ "Limit to groups" : "Limita a gruppi",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'autenticazione a due fattori non è applicata per\ti membri dei gruppi seguenti.",
"Official" : "Ufficiale",
"No results" : "Nessun risultato",
"Visit website" : "Visita il sito web",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Sono presenti degli errori relativi alla tua configurazione.",
"There are some warnings regarding your setup." : "Sono presenti degli avvisi relativi alla tua configurazione.",
"Checking for system and security issues." : "Verifica di problemi di sistema e sicurezza.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Leggi attentamente le <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guide d'installazione ↗</a>, e controlla gli errori o gli avvisi nel <a href=\"%2$s\">log</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controlla la sicurezza del tuo Nextcloud con la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nostra scansione di sicurezza ↗</a>",
"Version" : "Versione",
+ "Two-Factor Authentication" : "Autenticazione a due fattori",
"Server-side encryption" : "Cifratura lato server",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La cifratura lato server rende possibile cifrare i file caricati sul server. Ciò presenta dei limiti, come una riduzione delle prestazioni, perciò abilita questa funzione solo se necessario.",
"Enable server-side encryption" : "Abilita cifratura lato server",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Dettagli",
"You are a member of the following groups:" : "Sei un membro dei seguenti gruppi:",
"You are using <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Stai utilizzando <strong>%1$s</strong> di <strong>%2$s</strong> (<strong>%3$s%%</strong>)",
"Full name" : "Nome completo",
"No display name set" : "Nome visualizzato non impostato",
"Your email address" : "Il tuo indirizzo email",
@@ -294,9 +302,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Per motivi di sicurezza questa password sarà mostra solo una volta.",
"Username" : "Nome utente",
"Done" : "Completato",
- "Two-Factor Authentication" : "Autenticazione a due fattori",
- "Two-factor authentication is enabled on your account." : "L'autenticazione a due fattori è abilitata sul tuo account.",
- "Two-factor authentication is disabled on your account." : "L'autenticazione a due fattori è disabilitata sul tuo account.",
"Enabled apps" : "Applicazioni abilitate",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL utilizza una versione %s datata (%s). Aggiorna il tuo sistema operativo o funzionalità come %s non funzioneranno correttamente.",
"A problem occurred, please check your log files (Error: %s)" : "Si è verificato un problema, controlla i tuoi file di log (Errore: %s)",
@@ -397,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Controlla la sicurezza del tuo Nextcloud con la nostra scansione di sicurezza",
"Hardening and security guidance" : "Guida alla messa in sicurezza",
"View in store" : "Visualizza nell'archivio",
- "Limit to groups" : "Limita a gruppi",
"This app has an update available." : "Un aggiornamento di questa applicazione è disponibile.",
"by %s" : "di %s",
"%s-licensed" : "sotto licenza %s",
diff --git a/settings/l10n/it.json b/settings/l10n/it.json
index 9b21c7f7120..b94c671ca8b 100644
--- a/settings/l10n/it.json
+++ b/settings/l10n/it.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Il motore non supporta la modifica della password, ma la chiave di cifratura dell'utente è stata aggiornata.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installazione e aggiornamento delle applicazioni tramite il negozio delle applicazioni o condivisione cloud federata",
"Federated Cloud Sharing" : "Condivisione cloud federata",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL sta utilizzando una versione di %1$s datata (%2$s). Aggiorna il tuo sistema operativo o funzionalità come %3$s non funzioneranno correttamente.",
"Invalid SMTP password." : "Password SMTP non valida.",
"Email setting test" : "Prova impostazioni email",
"Well done, %s!" : "Ben fatto, %s!",
@@ -107,6 +108,10 @@
"Groups" : "Gruppi",
"Group list is empty" : "L'elenco dei gruppi è vuoto",
"Unable to retrieve the group list" : "Impossibile recuperare l'elenco dei gruppi",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'autenticazione a due fattori può essere imposta per tutti gli\tutenti e gruppi specifici. Se non hanno un fornitore a due fattori configurato, non saranno in grado di accedere al sistema.",
+ "Enforce two-factor authentication" : "Applica l'autenticazione a due fattori",
+ "Limit to groups" : "Limita a gruppi",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'autenticazione a due fattori non è applicata per\ti membri dei gruppi seguenti.",
"Official" : "Ufficiale",
"No results" : "Nessun risultato",
"Visit website" : "Visita il sito web",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Sono presenti degli errori relativi alla tua configurazione.",
"There are some warnings regarding your setup." : "Sono presenti degli avvisi relativi alla tua configurazione.",
"Checking for system and security issues." : "Verifica di problemi di sistema e sicurezza.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Leggi attentamente le <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guide d'installazione ↗</a>, e controlla gli errori o gli avvisi nel <a href=\"%2$s\">log</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controlla la sicurezza del tuo Nextcloud con la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nostra scansione di sicurezza ↗</a>",
"Version" : "Versione",
+ "Two-Factor Authentication" : "Autenticazione a due fattori",
"Server-side encryption" : "Cifratura lato server",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La cifratura lato server rende possibile cifrare i file caricati sul server. Ciò presenta dei limiti, come una riduzione delle prestazioni, perciò abilita questa funzione solo se necessario.",
"Enable server-side encryption" : "Abilita cifratura lato server",
@@ -262,6 +269,7 @@
"Details" : "Dettagli",
"You are a member of the following groups:" : "Sei un membro dei seguenti gruppi:",
"You are using <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Stai utilizzando <strong>%1$s</strong> di <strong>%2$s</strong> (<strong>%3$s%%</strong>)",
"Full name" : "Nome completo",
"No display name set" : "Nome visualizzato non impostato",
"Your email address" : "Il tuo indirizzo email",
@@ -292,9 +300,6 @@
"For security reasons this password will only be shown once." : "Per motivi di sicurezza questa password sarà mostra solo una volta.",
"Username" : "Nome utente",
"Done" : "Completato",
- "Two-Factor Authentication" : "Autenticazione a due fattori",
- "Two-factor authentication is enabled on your account." : "L'autenticazione a due fattori è abilitata sul tuo account.",
- "Two-factor authentication is disabled on your account." : "L'autenticazione a due fattori è disabilitata sul tuo account.",
"Enabled apps" : "Applicazioni abilitate",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL utilizza una versione %s datata (%s). Aggiorna il tuo sistema operativo o funzionalità come %s non funzioneranno correttamente.",
"A problem occurred, please check your log files (Error: %s)" : "Si è verificato un problema, controlla i tuoi file di log (Errore: %s)",
@@ -395,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Controlla la sicurezza del tuo Nextcloud con la nostra scansione di sicurezza",
"Hardening and security guidance" : "Guida alla messa in sicurezza",
"View in store" : "Visualizza nell'archivio",
- "Limit to groups" : "Limita a gruppi",
"This app has an update available." : "Un aggiornamento di questa applicazione è disponibile.",
"by %s" : "di %s",
"%s-licensed" : "sotto licenza %s",
diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js
index ce7ab04e23f..f1cabe1ddb4 100644
--- a/settings/l10n/ja.js
+++ b/settings/l10n/ja.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "言語を変更する際にエラーが発生しました。ページをリロードして、再度試してください。",
"Select a profile picture" : "プロファイル画像を選択",
"Groups" : "グループ",
+ "Limit to groups" : "次のグループに制限",
"Official" : "公式",
"Visit website" : "ウェブサイトを表示",
"User documentation" : "ユーザードキュメント",
@@ -329,7 +330,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "セキュリティスキャンで、Nextcloudのセキュリティをチェックする",
"Hardening and security guidance" : "堅牢化とセキュリティガイダンス",
"View in store" : "ストア内で表示",
- "Limit to groups" : "次のグループに制限",
"This app has an update available." : "このアプリでアップデートが利用できます.",
"by %s" : "%s による",
"%s-licensed" : "%s ライセンス",
diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json
index 7bd00d53b0b..490a2f6a6b2 100644
--- a/settings/l10n/ja.json
+++ b/settings/l10n/ja.json
@@ -100,6 +100,7 @@
"An error occured while changing your language. Please reload the page and try again." : "言語を変更する際にエラーが発生しました。ページをリロードして、再度試してください。",
"Select a profile picture" : "プロファイル画像を選択",
"Groups" : "グループ",
+ "Limit to groups" : "次のグループに制限",
"Official" : "公式",
"Visit website" : "ウェブサイトを表示",
"User documentation" : "ユーザードキュメント",
@@ -327,7 +328,6 @@
"Check the security of your Nextcloud over our security scan" : "セキュリティスキャンで、Nextcloudのセキュリティをチェックする",
"Hardening and security guidance" : "堅牢化とセキュリティガイダンス",
"View in store" : "ストア内で表示",
- "Limit to groups" : "次のグループに制限",
"This app has an update available." : "このアプリでアップデートが利用できます.",
"by %s" : "%s による",
"%s-licensed" : "%s ライセンス",
diff --git a/settings/l10n/ka_GE.js b/settings/l10n/ka_GE.js
index 8a448e2b502..cf228ace0ee 100644
--- a/settings/l10n/ka_GE.js
+++ b/settings/l10n/ka_GE.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "თქვენი ენის ცვლილებისას წარმოიქმნა შეცდომა. გთხოვთ განაახლოთ გვერდი და სცადოთ ახლიდან.",
"Select a profile picture" : "აირჩიეთ პროფილის სურათი",
"Groups" : "ჯგუფები",
+ "Limit to groups" : "ლიმიტი ჯგუფებზე",
"Official" : "ოფიციალური",
"Visit website" : "საიტზე სტუმრობა",
"User documentation" : "მომხმარებლის დოკუმენტაცია",
@@ -353,7 +354,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "შეამოწმეთ თქვენი Nextcloud ჩვენი უსფრთხოების შემოწმებით",
"Hardening and security guidance" : "განმტკიცებისა და უსაფრთხოების სახელმძღვანელო",
"View in store" : "იხილეთ store-ში",
- "Limit to groups" : "ლიმიტი ჯგუფებზე",
"This app has an update available." : "აპლიკაციას გააჩნია ხელმისაწვდომი განახლება.",
"by %s" : "%s-ს მიერ",
"%s-licensed" : "%s-ლიცენზირებული",
diff --git a/settings/l10n/ka_GE.json b/settings/l10n/ka_GE.json
index 9c097a82962..fe6d6291df2 100644
--- a/settings/l10n/ka_GE.json
+++ b/settings/l10n/ka_GE.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "თქვენი ენის ცვლილებისას წარმოიქმნა შეცდომა. გთხოვთ განაახლოთ გვერდი და სცადოთ ახლიდან.",
"Select a profile picture" : "აირჩიეთ პროფილის სურათი",
"Groups" : "ჯგუფები",
+ "Limit to groups" : "ლიმიტი ჯგუფებზე",
"Official" : "ოფიციალური",
"Visit website" : "საიტზე სტუმრობა",
"User documentation" : "მომხმარებლის დოკუმენტაცია",
@@ -351,7 +352,6 @@
"Check the security of your Nextcloud over our security scan" : "შეამოწმეთ თქვენი Nextcloud ჩვენი უსფრთხოების შემოწმებით",
"Hardening and security guidance" : "განმტკიცებისა და უსაფრთხოების სახელმძღვანელო",
"View in store" : "იხილეთ store-ში",
- "Limit to groups" : "ლიმიტი ჯგუფებზე",
"This app has an update available." : "აპლიკაციას გააჩნია ხელმისაწვდომი განახლება.",
"by %s" : "%s-ს მიერ",
"%s-licensed" : "%s-ლიცენზირებული",
diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js
index b2066d8ad17..de2ab834a2b 100644
--- a/settings/l10n/ko.js
+++ b/settings/l10n/ko.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "언어를 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.",
"Select a profile picture" : "프로필 사진 선택",
"Groups" : "그룹",
+ "Limit to groups" : "그룹으로 제한",
"Official" : "공식",
"Visit website" : "웹 사이트 방문",
"User documentation" : "사용자 문서",
@@ -352,7 +353,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Nextcloud의 보안 상태 검사하기",
"Hardening and security guidance" : "보안 강화 지침",
"View in store" : "스토어에서 보기",
- "Limit to groups" : "그룹으로 제한",
"This app has an update available." : "이 앱을 업데이트할 수 있습니다.",
"by %s" : "%s 개발",
"%s-licensed" : "%s 라이선스",
diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json
index 76f58a7259e..9ddb62fcd89 100644
--- a/settings/l10n/ko.json
+++ b/settings/l10n/ko.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "언어를 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.",
"Select a profile picture" : "프로필 사진 선택",
"Groups" : "그룹",
+ "Limit to groups" : "그룹으로 제한",
"Official" : "공식",
"Visit website" : "웹 사이트 방문",
"User documentation" : "사용자 문서",
@@ -350,7 +351,6 @@
"Check the security of your Nextcloud over our security scan" : "Nextcloud의 보안 상태 검사하기",
"Hardening and security guidance" : "보안 강화 지침",
"View in store" : "스토어에서 보기",
- "Limit to groups" : "그룹으로 제한",
"This app has an update available." : "이 앱을 업데이트할 수 있습니다.",
"by %s" : "%s 개발",
"%s-licensed" : "%s 라이선스",
diff --git a/settings/l10n/nb.js b/settings/l10n/nb.js
index a46d79e9aab..9a309efbd80 100644
--- a/settings/l10n/nb.js
+++ b/settings/l10n/nb.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "En feil oppstod under endring av språk. Last inn siden på nytt og prøv igjen.",
"Select a profile picture" : "Velg et profilbilde",
"Groups" : "Grupper",
+ "Limit to groups" : "Begrens til grupper",
"Official" : "Offisiell",
"Visit website" : "Besøk nettsiden",
"User documentation" : "Brukerdokumentasjon",
@@ -353,7 +354,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Sjekk sikkerheten på din Nextcloud over vår sikkerhetsskanning",
"Hardening and security guidance" : "Herding og sikkerhetsveiledning",
"View in store" : "Vis i butikk",
- "Limit to groups" : "Begrens til grupper",
"This app has an update available." : "En oppdatering er tilgjengelig for dette programmet.",
"by %s" : "av %s",
"%s-licensed" : "%s-lisensiert",
diff --git a/settings/l10n/nb.json b/settings/l10n/nb.json
index e166979e13b..e075de6cc20 100644
--- a/settings/l10n/nb.json
+++ b/settings/l10n/nb.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "En feil oppstod under endring av språk. Last inn siden på nytt og prøv igjen.",
"Select a profile picture" : "Velg et profilbilde",
"Groups" : "Grupper",
+ "Limit to groups" : "Begrens til grupper",
"Official" : "Offisiell",
"Visit website" : "Besøk nettsiden",
"User documentation" : "Brukerdokumentasjon",
@@ -351,7 +352,6 @@
"Check the security of your Nextcloud over our security scan" : "Sjekk sikkerheten på din Nextcloud over vår sikkerhetsskanning",
"Hardening and security guidance" : "Herding og sikkerhetsveiledning",
"View in store" : "Vis i butikk",
- "Limit to groups" : "Begrens til grupper",
"This app has an update available." : "En oppdatering er tilgjengelig for dette programmet.",
"by %s" : "av %s",
"%s-licensed" : "%s-lisensiert",
diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js
index 24e21ed15a3..d847dc014f9 100644
--- a/settings/l10n/nl.js
+++ b/settings/l10n/nl.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "De Back-end ondersteunt geen wachtwoordwijzigingen, maar de cryptosleutel van de gebruiker is succesvol bijgewerkt.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installeren en bijwerken van applicaties via de app store of gefedereerd delen",
"Federated Cloud Sharing" : "Gefedereerd delen via de cloud",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cUrl gebruikt een verouderde %1$s versie (%2$s). Werk het besturingssysteem bij, want anders zullen functies als %3$s niet betrouwbaar werken.",
"Invalid SMTP password." : "Ongeldig SMTP wachtwoord",
"Email setting test" : "E-mailinstellingen test",
"Well done, %s!" : "Goed gedaan, %s!",
@@ -109,6 +110,7 @@ OC.L10N.register(
"Groups" : "Groepen",
"Group list is empty" : "Groepenlijst is leeg",
"Unable to retrieve the group list" : "Kan groepenoverzicht niet ophalen",
+ "Limit to groups" : "Beperk tot groepen",
"Official" : "Officieel",
"No results" : "Geen resultaten",
"Visit website" : "Bezoek website",
@@ -197,8 +199,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Er zijn fouten binnen je configuratie.",
"There are some warnings regarding your setup." : "Er zijn waarschuwingen over je configuratie.",
"Checking for system and security issues." : "Controleren op systeem- en beveiligingsproblemen.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installatie-handleiding ↗</a> goed door en controleer <a href=\"%2$s\">de logs</a> op fouten en waarschuwingen.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controleer de beveiliging van je Nextcloud via <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">onze securityscan ↗</a>.",
"Version" : "Versie",
+ "Two-Factor Authentication" : "Tweefactor authenticatie",
"Server-side encryption" : "Server-side versleuteling",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Server-side versleuteling maakt het mogelijk om bestanden te versleutelen die worden geüploaded. Dit betekent wel enig prestatieverlies, dus schakel het alleen in als het nodig is.",
"Enable server-side encryption" : "Server-side versleuteling inschakelen",
@@ -264,6 +268,7 @@ OC.L10N.register(
"Details" : "Details",
"You are a member of the following groups:" : "Je bent lid van de volgende groepen:",
"You are using <strong>%s</strong>" : "Je gebruikt <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Je gebruikt <strong>%1$s</strong> van <strong>%2$s</strong> (%3$s%%</strong>)",
"Full name" : "Volledige naam",
"No display name set" : "Nog geen weergavenaam ingesteld",
"Your email address" : "Je e-mailadres",
@@ -294,9 +299,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Vanwege beveiligingsredenen wordt dit wachtwoord maar één keer getoond.",
"Username" : "Gebruikersnaam",
"Done" : "Gedaan",
- "Two-Factor Authentication" : "Tweefactor authenticatie",
- "Two-factor authentication is enabled on your account." : "Tweefactor authenticatie is ingeschakeld voor je account.",
- "Two-factor authentication is disabled on your account." : "Tweefactor authenticatie is uitgeschakeld voor je account.",
"Enabled apps" : "Ingeschakelde apps",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cUrl gebruikt een verouderde %s versie (%s). Werk het besturingssysteem bij, want anders zullen functies als %s niet betrouwbaar werken.",
"A problem occurred, please check your log files (Error: %s)" : "Er trad een een probleem op, controleer je logbestanden (Fout: %s).",
@@ -397,7 +399,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Controleer de beveiliging van je Nextcloud met onze securityscan",
"Hardening and security guidance" : "Hardening en security advies",
"View in store" : "Bekijken in store",
- "Limit to groups" : "Beperk tot groepen",
"This app has an update available." : "Er is een update beschikbaar voor deze applicatie.",
"by %s" : "op %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json
index d36355d9269..a9e1a770df6 100644
--- a/settings/l10n/nl.json
+++ b/settings/l10n/nl.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "De Back-end ondersteunt geen wachtwoordwijzigingen, maar de cryptosleutel van de gebruiker is succesvol bijgewerkt.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "installeren en bijwerken van applicaties via de app store of gefedereerd delen",
"Federated Cloud Sharing" : "Gefedereerd delen via de cloud",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cUrl gebruikt een verouderde %1$s versie (%2$s). Werk het besturingssysteem bij, want anders zullen functies als %3$s niet betrouwbaar werken.",
"Invalid SMTP password." : "Ongeldig SMTP wachtwoord",
"Email setting test" : "E-mailinstellingen test",
"Well done, %s!" : "Goed gedaan, %s!",
@@ -107,6 +108,7 @@
"Groups" : "Groepen",
"Group list is empty" : "Groepenlijst is leeg",
"Unable to retrieve the group list" : "Kan groepenoverzicht niet ophalen",
+ "Limit to groups" : "Beperk tot groepen",
"Official" : "Officieel",
"No results" : "Geen resultaten",
"Visit website" : "Bezoek website",
@@ -195,8 +197,10 @@
"There are some errors regarding your setup." : "Er zijn fouten binnen je configuratie.",
"There are some warnings regarding your setup." : "Er zijn waarschuwingen over je configuratie.",
"Checking for system and security issues." : "Controleren op systeem- en beveiligingsproblemen.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installatie-handleiding ↗</a> goed door en controleer <a href=\"%2$s\">de logs</a> op fouten en waarschuwingen.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controleer de beveiliging van je Nextcloud via <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">onze securityscan ↗</a>.",
"Version" : "Versie",
+ "Two-Factor Authentication" : "Tweefactor authenticatie",
"Server-side encryption" : "Server-side versleuteling",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Server-side versleuteling maakt het mogelijk om bestanden te versleutelen die worden geüploaded. Dit betekent wel enig prestatieverlies, dus schakel het alleen in als het nodig is.",
"Enable server-side encryption" : "Server-side versleuteling inschakelen",
@@ -262,6 +266,7 @@
"Details" : "Details",
"You are a member of the following groups:" : "Je bent lid van de volgende groepen:",
"You are using <strong>%s</strong>" : "Je gebruikt <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Je gebruikt <strong>%1$s</strong> van <strong>%2$s</strong> (%3$s%%</strong>)",
"Full name" : "Volledige naam",
"No display name set" : "Nog geen weergavenaam ingesteld",
"Your email address" : "Je e-mailadres",
@@ -292,9 +297,6 @@
"For security reasons this password will only be shown once." : "Vanwege beveiligingsredenen wordt dit wachtwoord maar één keer getoond.",
"Username" : "Gebruikersnaam",
"Done" : "Gedaan",
- "Two-Factor Authentication" : "Tweefactor authenticatie",
- "Two-factor authentication is enabled on your account." : "Tweefactor authenticatie is ingeschakeld voor je account.",
- "Two-factor authentication is disabled on your account." : "Tweefactor authenticatie is uitgeschakeld voor je account.",
"Enabled apps" : "Ingeschakelde apps",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cUrl gebruikt een verouderde %s versie (%s). Werk het besturingssysteem bij, want anders zullen functies als %s niet betrouwbaar werken.",
"A problem occurred, please check your log files (Error: %s)" : "Er trad een een probleem op, controleer je logbestanden (Fout: %s).",
@@ -395,7 +397,6 @@
"Check the security of your Nextcloud over our security scan" : "Controleer de beveiliging van je Nextcloud met onze securityscan",
"Hardening and security guidance" : "Hardening en security advies",
"View in store" : "Bekijken in store",
- "Limit to groups" : "Beperk tot groepen",
"This app has an update available." : "Er is een update beschikbaar voor deze applicatie.",
"by %s" : "op %s",
"%s-licensed" : "%s-licensed",
diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js
index 6cb1cbfab93..b67418d8a24 100644
--- a/settings/l10n/pl.js
+++ b/settings/l10n/pl.js
@@ -109,6 +109,7 @@ OC.L10N.register(
"Groups" : "Grupy",
"Group list is empty" : "Lista grup jest pusta",
"Unable to retrieve the group list" : "Nie można pobrać listy grup",
+ "Limit to groups" : "Ogranicz do group",
"Official" : "Oficjalny",
"No results" : "Brak wyników",
"Visit website" : "Odwiedź stronę",
@@ -199,6 +200,7 @@ OC.L10N.register(
"Checking for system and security issues." : "Sprawdzanie błędów systemu i bezpieczeństwa.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sprawdź bezpieczeństwo swojego serwera Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">naszym skanerem bezpieczeństwa ↗</a>.",
"Version" : "Wersja",
+ "Two-Factor Authentication" : "Weryfikacja dwuetapowa",
"Server-side encryption" : "Szyfrowanie po stronie serwera",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Szyfrowanie po stronie serwera umożliwia szyfrowanie wysyłanych na niego plików. Ta opcja wprowadza ograniczenia takie, jak ograniczenie wydajności. Włącz tylko wtedy, gdy potrzebne.",
"Enable server-side encryption" : "Włącz szyfrowanie po stronie serwera",
@@ -294,9 +296,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Ze względów bezpieczeństwa hasło zostanie pokazane tylko raz.",
"Username" : "Nazwa użytkownika",
"Done" : "Ukończono",
- "Two-Factor Authentication" : "Weryfikacja dwuetapowa",
- "Two-factor authentication is enabled on your account." : "Weryfikacja dwuetapowa jest włączona na twoim koncie",
- "Two-factor authentication is disabled on your account." : "Weryfikacja dwuetapowa jest wyłączona na twoim koncie",
"Enabled apps" : "Włączone aplikacje",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL używa starej %s wersji (%s). Proszę zaktualizować swój system operacyjny albo funkcje takie jak %s nie będą działały niezawodnie.",
"A problem occurred, please check your log files (Error: %s)" : "Wystąpił problem, sprawdź logi (Error: %s) ",
@@ -397,7 +396,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Sprawdź bezpieczeństwo swojego Nextclouda przez nasz skan zabezpieczeń",
"Hardening and security guidance" : "Kierowanie i wzmacnianie bezpieczeństwa",
"View in store" : "Zobacz w sklepie",
- "Limit to groups" : "Ogranicz do group",
"This app has an update available." : "Ta aplikacja ma dostępną aktualizację.",
"by %s" : "autorstwa %s",
"%s-licensed" : "%s-licencjonowany",
diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json
index d9c1d924522..4fa249741c7 100644
--- a/settings/l10n/pl.json
+++ b/settings/l10n/pl.json
@@ -107,6 +107,7 @@
"Groups" : "Grupy",
"Group list is empty" : "Lista grup jest pusta",
"Unable to retrieve the group list" : "Nie można pobrać listy grup",
+ "Limit to groups" : "Ogranicz do group",
"Official" : "Oficjalny",
"No results" : "Brak wyników",
"Visit website" : "Odwiedź stronę",
@@ -197,6 +198,7 @@
"Checking for system and security issues." : "Sprawdzanie błędów systemu i bezpieczeństwa.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sprawdź bezpieczeństwo swojego serwera Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">naszym skanerem bezpieczeństwa ↗</a>.",
"Version" : "Wersja",
+ "Two-Factor Authentication" : "Weryfikacja dwuetapowa",
"Server-side encryption" : "Szyfrowanie po stronie serwera",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Szyfrowanie po stronie serwera umożliwia szyfrowanie wysyłanych na niego plików. Ta opcja wprowadza ograniczenia takie, jak ograniczenie wydajności. Włącz tylko wtedy, gdy potrzebne.",
"Enable server-side encryption" : "Włącz szyfrowanie po stronie serwera",
@@ -292,9 +294,6 @@
"For security reasons this password will only be shown once." : "Ze względów bezpieczeństwa hasło zostanie pokazane tylko raz.",
"Username" : "Nazwa użytkownika",
"Done" : "Ukończono",
- "Two-Factor Authentication" : "Weryfikacja dwuetapowa",
- "Two-factor authentication is enabled on your account." : "Weryfikacja dwuetapowa jest włączona na twoim koncie",
- "Two-factor authentication is disabled on your account." : "Weryfikacja dwuetapowa jest wyłączona na twoim koncie",
"Enabled apps" : "Włączone aplikacje",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL używa starej %s wersji (%s). Proszę zaktualizować swój system operacyjny albo funkcje takie jak %s nie będą działały niezawodnie.",
"A problem occurred, please check your log files (Error: %s)" : "Wystąpił problem, sprawdź logi (Error: %s) ",
@@ -395,7 +394,6 @@
"Check the security of your Nextcloud over our security scan" : "Sprawdź bezpieczeństwo swojego Nextclouda przez nasz skan zabezpieczeń",
"Hardening and security guidance" : "Kierowanie i wzmacnianie bezpieczeństwa",
"View in store" : "Zobacz w sklepie",
- "Limit to groups" : "Ogranicz do group",
"This app has an update available." : "Ta aplikacja ma dostępną aktualizację.",
"by %s" : "autorstwa %s",
"%s-licensed" : "%s-licencjonowany",
diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js
index a79d210ad44..e075377017e 100644
--- a/settings/l10n/pt_BR.js
+++ b/settings/l10n/pt_BR.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "A plataforma de serviço não suporta alteração de senha mas a chave de criptografia do usuário foi alterada.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada",
"Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando uma versão %1$s desatualizada (%2$s). Atualize seu sistema operacional ou recursos como %3$s não funcionarão adequadamente.",
"Invalid SMTP password." : "Senha SMTP incorreta.",
"Email setting test" : "Teste da configuração de e-mail",
"Well done, %s!" : "Bom trabalho %s!",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Grupos",
"Group list is empty" : "A lista de grupos está vazia",
"Unable to retrieve the group list" : "Não é possível recuperar a lista de grupos",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Autenticação de dois fatores pode ser aplicada para todos\tos usuários e grupos específicos. Se eles não tiverem um provedor de dois fatores configurado, eles não poderão efetuar login no sistema.",
+ "Enforce two-factor authentication" : "Aplicar autenticação de dois fatores",
+ "Limit to groups" : "Limitado a grupos",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "A autenticação de dois fatores não é aplicada para\tmembros dos seguintes grupos.",
"Official" : "Oficial",
"No results" : "Sem resultados",
"Visit website" : "Visitar website",
@@ -188,7 +193,7 @@ OC.L10N.register(
"Credentials" : "Credenciais",
"SMTP Username" : "Nome do Usuário SMTP",
"SMTP Password" : "Senha SMTP",
- "Store credentials" : "Armazenar credenciais",
+ "Store credentials" : "Salvar credenciais",
"Test email settings" : "Configurações do e-mail de teste",
"Send email" : "Enviar e-mail",
"Security & setup warnings" : "Segurança & avisos de configuração",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Existem alguns erros na configuração.",
"There are some warnings regarding your setup." : "Existem alguns avisos na configuração.",
"Checking for system and security issues." : "Verificando problemas de sistema e segurança.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">manuais de instalação ↗</a> e procure por erros ou avisos no <a href=\"%2$s\">log</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Verifique a segurança do seu Nextcloud em <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nossa verificação de segurança ↗</a>.",
"Version" : "Versão",
+ "Two-Factor Authentication" : "Autenticação de Dois Fatores",
"Server-side encryption" : "Criptografia do lado do servidor",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A criptografia do lado do servidor torna possível criptografar arquivos que são carregados para este servidor. Isso diminui um pouco o desempenho portanto habilite apenas se necessário.",
"Enable server-side encryption" : "Habilitar a criptografia do lado do servidor",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Detalhes",
"You are a member of the following groups:" : "Você é um membro dos seguintes grupos:",
"You are using <strong>%s</strong>" : "Você está usando <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Você está usando<strong>%1$s</strong> de<strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Nome completo",
"No display name set" : "Nenhum nome de exibição definido",
"Your email address" : "Seu endereço de e-mail",
@@ -294,9 +302,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Por motivo de segurança, esta senha só será exibida uma vez.",
"Username" : "Nome de Usuário",
"Done" : "Concluído",
- "Two-Factor Authentication" : "Autenticação de Dois Fatores",
- "Two-factor authentication is enabled on your account." : "A autenticação de dois fatores está ativada na sua conta.",
- "Two-factor authentication is disabled on your account." : "A autenticação de dois fatores está desativada na sua conta.",
"Enabled apps" : "Aplicativos habilitados",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando uma versão %s desatualizada (%s). Por favor, atualize seu sistema operacional ou recursos como %s não funcionarão de forma confiável.",
"A problem occurred, please check your log files (Error: %s)" : "Ocorreu um problema, por favor verifique seus arquivos de log (Erro: %s)",
@@ -397,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verificar a segurança do Nextcloud na nossa análise de segurança",
"Hardening and security guidance" : "Orientações de proteção e segurança",
"View in store" : "Ver na loja",
- "Limit to groups" : "Limitado a grupos",
"This app has an update available." : "Este aplicativo tem uma atualização disponível.",
"by %s" : "por %s",
"%s-licensed" : "%s-licenciado",
diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json
index abe6ae4850f..485b81b0f5e 100644
--- a/settings/l10n/pt_BR.json
+++ b/settings/l10n/pt_BR.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "A plataforma de serviço não suporta alteração de senha mas a chave de criptografia do usuário foi alterada.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada",
"Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando uma versão %1$s desatualizada (%2$s). Atualize seu sistema operacional ou recursos como %3$s não funcionarão adequadamente.",
"Invalid SMTP password." : "Senha SMTP incorreta.",
"Email setting test" : "Teste da configuração de e-mail",
"Well done, %s!" : "Bom trabalho %s!",
@@ -107,6 +108,10 @@
"Groups" : "Grupos",
"Group list is empty" : "A lista de grupos está vazia",
"Unable to retrieve the group list" : "Não é possível recuperar a lista de grupos",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Autenticação de dois fatores pode ser aplicada para todos\tos usuários e grupos específicos. Se eles não tiverem um provedor de dois fatores configurado, eles não poderão efetuar login no sistema.",
+ "Enforce two-factor authentication" : "Aplicar autenticação de dois fatores",
+ "Limit to groups" : "Limitado a grupos",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "A autenticação de dois fatores não é aplicada para\tmembros dos seguintes grupos.",
"Official" : "Oficial",
"No results" : "Sem resultados",
"Visit website" : "Visitar website",
@@ -186,7 +191,7 @@
"Credentials" : "Credenciais",
"SMTP Username" : "Nome do Usuário SMTP",
"SMTP Password" : "Senha SMTP",
- "Store credentials" : "Armazenar credenciais",
+ "Store credentials" : "Salvar credenciais",
"Test email settings" : "Configurações do e-mail de teste",
"Send email" : "Enviar e-mail",
"Security & setup warnings" : "Segurança & avisos de configuração",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Existem alguns erros na configuração.",
"There are some warnings regarding your setup." : "Existem alguns avisos na configuração.",
"Checking for system and security issues." : "Verificando problemas de sistema e segurança.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">manuais de instalação ↗</a> e procure por erros ou avisos no <a href=\"%2$s\">log</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Verifique a segurança do seu Nextcloud em <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nossa verificação de segurança ↗</a>.",
"Version" : "Versão",
+ "Two-Factor Authentication" : "Autenticação de Dois Fatores",
"Server-side encryption" : "Criptografia do lado do servidor",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A criptografia do lado do servidor torna possível criptografar arquivos que são carregados para este servidor. Isso diminui um pouco o desempenho portanto habilite apenas se necessário.",
"Enable server-side encryption" : "Habilitar a criptografia do lado do servidor",
@@ -262,6 +269,7 @@
"Details" : "Detalhes",
"You are a member of the following groups:" : "Você é um membro dos seguintes grupos:",
"You are using <strong>%s</strong>" : "Você está usando <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Você está usando<strong>%1$s</strong> de<strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Nome completo",
"No display name set" : "Nenhum nome de exibição definido",
"Your email address" : "Seu endereço de e-mail",
@@ -292,9 +300,6 @@
"For security reasons this password will only be shown once." : "Por motivo de segurança, esta senha só será exibida uma vez.",
"Username" : "Nome de Usuário",
"Done" : "Concluído",
- "Two-Factor Authentication" : "Autenticação de Dois Fatores",
- "Two-factor authentication is enabled on your account." : "A autenticação de dois fatores está ativada na sua conta.",
- "Two-factor authentication is disabled on your account." : "A autenticação de dois fatores está desativada na sua conta.",
"Enabled apps" : "Aplicativos habilitados",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando uma versão %s desatualizada (%s). Por favor, atualize seu sistema operacional ou recursos como %s não funcionarão de forma confiável.",
"A problem occurred, please check your log files (Error: %s)" : "Ocorreu um problema, por favor verifique seus arquivos de log (Erro: %s)",
@@ -395,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Verificar a segurança do Nextcloud na nossa análise de segurança",
"Hardening and security guidance" : "Orientações de proteção e segurança",
"View in store" : "Ver na loja",
- "Limit to groups" : "Limitado a grupos",
"This app has an update available." : "Este aplicativo tem uma atualização disponível.",
"by %s" : "por %s",
"%s-licensed" : "%s-licenciado",
diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js
index d0e405e5419..4cc2a6493df 100644
--- a/settings/l10n/pt_PT.js
+++ b/settings/l10n/pt_PT.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Ocorreu um erro ao modificar a sua lingua. Por favor recarregue a página e tente novamente.",
"Select a profile picture" : "Selecione uma fotografia de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitado a grupos",
"Official" : "Oficial",
"Visit website" : "Visitar o website",
"User documentation" : "Documentação de Utilizador",
@@ -341,7 +342,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Verifique a segurança da sua Nextcloud através da nossa verificação de segurança",
"Hardening and security guidance" : "Orientações de proteção e segurança",
"View in store" : "Ver na loja",
- "Limit to groups" : "Limitado a grupos",
"This app has an update available." : "Esta aplicação tem uma atualização disponível.",
"by %s" : "por %s",
"%s-licensed" : "%s-autorizado",
diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json
index 36674891dad..cc178a6d69a 100644
--- a/settings/l10n/pt_PT.json
+++ b/settings/l10n/pt_PT.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Ocorreu um erro ao modificar a sua lingua. Por favor recarregue a página e tente novamente.",
"Select a profile picture" : "Selecione uma fotografia de perfil",
"Groups" : "Grupos",
+ "Limit to groups" : "Limitado a grupos",
"Official" : "Oficial",
"Visit website" : "Visitar o website",
"User documentation" : "Documentação de Utilizador",
@@ -339,7 +340,6 @@
"Check the security of your Nextcloud over our security scan" : "Verifique a segurança da sua Nextcloud através da nossa verificação de segurança",
"Hardening and security guidance" : "Orientações de proteção e segurança",
"View in store" : "Ver na loja",
- "Limit to groups" : "Limitado a grupos",
"This app has an update available." : "Esta aplicação tem uma atualização disponível.",
"by %s" : "por %s",
"%s-licensed" : "%s-autorizado",
diff --git a/settings/l10n/ro.js b/settings/l10n/ro.js
index 5f3e43b3b2d..0c0cfdd15f9 100644
--- a/settings/l10n/ro.js
+++ b/settings/l10n/ro.js
@@ -46,6 +46,7 @@ OC.L10N.register(
"Not supported!" : "Nu este suportat!",
"Press ⌘-C to copy." : "Apasă ⌘-C pentru copiere.",
"Press Ctrl-C to copy." : "Apasă Ctrl-C pentru copiere.",
+ "Error while deleting the token" : "Eroare de ștergere token",
"Valid until {date}" : "Valabil până la {date}",
"Delete" : "Șterge",
"Contacts" : "Contacte",
@@ -59,6 +60,7 @@ OC.L10N.register(
"Select a profile picture" : "Selectează o imagine de profil",
"Groups" : "Grupuri",
"Official" : "Oficial",
+ "Visit website" : "Viziteaza pagina web",
"User documentation" : "Documentație utilizator",
"Developer documentation" : "Documentație pentru dezvoltatori",
"Enable" : "Activare",
@@ -135,6 +137,7 @@ OC.L10N.register(
"Choose as profile picture" : "Alege ca imagine de profil",
"Full name" : "Nume complet",
"Your email address" : "Adresa ta de email",
+ "No email address set" : "Fără adresă de email setată",
"Phone number" : "Număr telefon",
"Your phone number" : "Numărul tău de telefon",
"Address" : "Adresă",
@@ -149,8 +152,11 @@ OC.L10N.register(
"Change password" : "Schimbă parola",
"Device" : "Dispozitiv",
"App name" : "Numele aplicației",
+ "Create new app password" : "Crează o nouă parolă pentru aplicație",
"Username" : "Nume utilizator",
+ "Done" : "Realizat",
"Enabled apps" : "Aplicații active",
+ "A problem occurred, please check your log files (Error: %s)" : "A apărut o problemă, te rugăm verifică fișierele tale de log (Eroare: %s)",
"Migration Completed" : "Migrare încheiată",
"Group already exists." : "Grupul există deja.",
"Unable to add group." : "Nu se poate adăuga grupul.",
@@ -170,6 +176,7 @@ OC.L10N.register(
"Are you really sure you want add {domain} as trusted domain?" : "Ești sigur că vrei sa adaugi {domain} ca domeniu de încredere?",
"Add trusted domain" : "Adaugă domeniu de încredere",
"All" : "Toate ",
+ "Update to %s" : "Actualizat la %s",
"No apps found for your version" : "Nu au fost găsite aplicații pentru versiunea ta",
"Error while disabling app" : "Eroare în timpul dezactivării aplicației",
"Disable" : "Dezactivați",
@@ -177,6 +184,7 @@ OC.L10N.register(
"Updated" : "Actualizat",
"Approved" : "Aprobat",
"Experimental" : "Experimental",
+ "No apps found for {query}" : "Nu am gasit nici o aplicatie pentru {query}",
"Unable to delete {objName}" : "Nu s-a putut șterge {objName}",
"Error creating group: {message}" : "Eroare la crearea grupului: {message}",
"A valid group name must be provided" : "Trebuie furnizat un nume de grup valid",
@@ -194,6 +202,9 @@ OC.L10N.register(
"A valid email must be provided" : "Trebuie furnizată o adresă email validă",
"Tips & tricks" : "Tips & tricks",
"How to do backups" : "Cum să faci copii de rezervă",
+ "Performance tuning" : "Imbunătățirea performanței",
+ "Improving the config.php" : "Imbunătățire config.php",
+ "Theming" : "Tema",
"This app has an update available." : "Este disponibilă o actualizare pentru această aplicație.",
"by %s" : "de %s",
"%s-licensed" : "%s-licențiat",
@@ -205,12 +216,19 @@ OC.L10N.register(
"Enable only for specific groups" : "Activează doar pentru grupuri specifice",
"Online documentation" : "Documentație online",
"Commercial support" : "Suport comercial",
+ "You are using <strong>%s</strong> of <strong>%s</strong>" : "Folosești <strong>%s</strong> sau <strong>%s</strong>",
+ "You are member of the following groups:" : "Ești membru a următoarelor grupuri:",
"Settings" : "Setări",
+ "Show storage location" : "Arată localizarea stocării",
+ "Show user backend" : "Arată administrare utilizator",
+ "Show email address" : "Arată adresa de email",
+ "Send email to new user" : "Trimite email către noul utilizator",
"E-Mail" : "Email",
"Create" : "Crează",
"Admin Recovery Password" : "Parolă de recuperare a Administratorului",
"Enter the recovery password in order to recover the users files during password change" : "Introdu parola de recuperare pentru a recupera fișierele utilizatorilor în timpul schimbării parolei",
"Disabled" : "Dezactivați",
+ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Te rugăm introdu cota de stocare (ex: \"512 MB\" sau \"12 GB\")",
"Other" : "Altele",
"Quota" : "Cotă",
"change full name" : "schimbă numele complet",
diff --git a/settings/l10n/ro.json b/settings/l10n/ro.json
index a39b857162f..70d8f58d5b8 100644
--- a/settings/l10n/ro.json
+++ b/settings/l10n/ro.json
@@ -44,6 +44,7 @@
"Not supported!" : "Nu este suportat!",
"Press ⌘-C to copy." : "Apasă ⌘-C pentru copiere.",
"Press Ctrl-C to copy." : "Apasă Ctrl-C pentru copiere.",
+ "Error while deleting the token" : "Eroare de ștergere token",
"Valid until {date}" : "Valabil până la {date}",
"Delete" : "Șterge",
"Contacts" : "Contacte",
@@ -57,6 +58,7 @@
"Select a profile picture" : "Selectează o imagine de profil",
"Groups" : "Grupuri",
"Official" : "Oficial",
+ "Visit website" : "Viziteaza pagina web",
"User documentation" : "Documentație utilizator",
"Developer documentation" : "Documentație pentru dezvoltatori",
"Enable" : "Activare",
@@ -133,6 +135,7 @@
"Choose as profile picture" : "Alege ca imagine de profil",
"Full name" : "Nume complet",
"Your email address" : "Adresa ta de email",
+ "No email address set" : "Fără adresă de email setată",
"Phone number" : "Număr telefon",
"Your phone number" : "Numărul tău de telefon",
"Address" : "Adresă",
@@ -147,8 +150,11 @@
"Change password" : "Schimbă parola",
"Device" : "Dispozitiv",
"App name" : "Numele aplicației",
+ "Create new app password" : "Crează o nouă parolă pentru aplicație",
"Username" : "Nume utilizator",
+ "Done" : "Realizat",
"Enabled apps" : "Aplicații active",
+ "A problem occurred, please check your log files (Error: %s)" : "A apărut o problemă, te rugăm verifică fișierele tale de log (Eroare: %s)",
"Migration Completed" : "Migrare încheiată",
"Group already exists." : "Grupul există deja.",
"Unable to add group." : "Nu se poate adăuga grupul.",
@@ -168,6 +174,7 @@
"Are you really sure you want add {domain} as trusted domain?" : "Ești sigur că vrei sa adaugi {domain} ca domeniu de încredere?",
"Add trusted domain" : "Adaugă domeniu de încredere",
"All" : "Toate ",
+ "Update to %s" : "Actualizat la %s",
"No apps found for your version" : "Nu au fost găsite aplicații pentru versiunea ta",
"Error while disabling app" : "Eroare în timpul dezactivării aplicației",
"Disable" : "Dezactivați",
@@ -175,6 +182,7 @@
"Updated" : "Actualizat",
"Approved" : "Aprobat",
"Experimental" : "Experimental",
+ "No apps found for {query}" : "Nu am gasit nici o aplicatie pentru {query}",
"Unable to delete {objName}" : "Nu s-a putut șterge {objName}",
"Error creating group: {message}" : "Eroare la crearea grupului: {message}",
"A valid group name must be provided" : "Trebuie furnizat un nume de grup valid",
@@ -192,6 +200,9 @@
"A valid email must be provided" : "Trebuie furnizată o adresă email validă",
"Tips & tricks" : "Tips & tricks",
"How to do backups" : "Cum să faci copii de rezervă",
+ "Performance tuning" : "Imbunătățirea performanței",
+ "Improving the config.php" : "Imbunătățire config.php",
+ "Theming" : "Tema",
"This app has an update available." : "Este disponibilă o actualizare pentru această aplicație.",
"by %s" : "de %s",
"%s-licensed" : "%s-licențiat",
@@ -203,12 +214,19 @@
"Enable only for specific groups" : "Activează doar pentru grupuri specifice",
"Online documentation" : "Documentație online",
"Commercial support" : "Suport comercial",
+ "You are using <strong>%s</strong> of <strong>%s</strong>" : "Folosești <strong>%s</strong> sau <strong>%s</strong>",
+ "You are member of the following groups:" : "Ești membru a următoarelor grupuri:",
"Settings" : "Setări",
+ "Show storage location" : "Arată localizarea stocării",
+ "Show user backend" : "Arată administrare utilizator",
+ "Show email address" : "Arată adresa de email",
+ "Send email to new user" : "Trimite email către noul utilizator",
"E-Mail" : "Email",
"Create" : "Crează",
"Admin Recovery Password" : "Parolă de recuperare a Administratorului",
"Enter the recovery password in order to recover the users files during password change" : "Introdu parola de recuperare pentru a recupera fișierele utilizatorilor în timpul schimbării parolei",
"Disabled" : "Dezactivați",
+ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Te rugăm introdu cota de stocare (ex: \"512 MB\" sau \"12 GB\")",
"Other" : "Altele",
"Quota" : "Cotă",
"change full name" : "schimbă numele complet",
diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js
index ae73db69a33..d6502270598 100644
--- a/settings/l10n/ru.js
+++ b/settings/l10n/ru.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ",
"Federated Cloud Sharing" : "Федерация облачных хранилищ",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL использует %1$s устаревшей версии %2$s. Обновите операционную систему, иначе такие возможности, как %3$s, не будут работать корректно.",
"Invalid SMTP password." : "Неверный пароль SMTP.",
"Email setting test" : "Проверка настроек электронной почты",
"Well done, %s!" : "Отлично, %s!",
@@ -109,6 +110,7 @@ OC.L10N.register(
"Groups" : "Группы",
"Group list is empty" : "Список групп пуст",
"Unable to retrieve the group list" : "Не удалось получить список групп",
+ "Limit to groups" : "Ограничить группами",
"Official" : "Официальное",
"No results" : "Результаты отсутствуют",
"Visit website" : "Посетите веб-сайт",
@@ -197,8 +199,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Были обнаружены ошибки конфигурации.",
"There are some warnings regarding your setup." : "Предупреждения о текущей конфигурации.",
"Checking for system and security issues." : "Проверка системы и возможных уязвимостей.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ещё раз внимательно прочитайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">руководство по установке ↗</a> и проверьте <a href=\"%2$s\">журнал</a> на наличие ошибок и предупреждений.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверка безопасности вашей установки Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашим сканером ↗</a>.",
"Version" : "Версия",
+ "Two-Factor Authentication" : "Двухфакторная аутентификация",
"Server-side encryption" : "Шифрование на стороне сервера",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрование на стороне сервера позволяет шифровать файлы, которые загружаются на этот сервер. Это связано с ограничениями, такими как снижение производительности, поэтому включите его только в случае необходимости.",
"Enable server-side encryption" : "Включить шифрование на стороне сервера",
@@ -250,6 +254,7 @@ OC.L10N.register(
"Follow us on Google+" : "Следите за нашими новостями в Google Plus",
"Like our Facebook page" : "Посмотрите нашу страницу на Facebook",
"Follow us on Twitter" : "Следите за нашими новостями в Twitter",
+ "Follow us on Mastodon" : "Следите за нашими новостями в Mastodon",
"Check out our blog" : "Просмотрите наш блог",
"Subscribe to our newsletter" : "Подписывайтесь на нашу новостную рассылку",
"Profile picture" : "Аватар",
@@ -263,6 +268,7 @@ OC.L10N.register(
"Details" : "Подробности",
"You are a member of the following groups:" : "Вы являетесь членом следующих групп:",
"You are using <strong>%s</strong>" : "Вы используете <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вы используете <strong>%1$s</strong> из <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Полное имя",
"No display name set" : "Отображаемое имя не указано",
"Your email address" : "Ваш адрес электронной почты",
@@ -393,7 +399,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Проверить безопасность вашего Nextcloud нашем сканером",
"Hardening and security guidance" : "Руководство по безопасности и защите",
"View in store" : "Посмотреть в магазине приложений",
- "Limit to groups" : "Ограничить группами",
"This app has an update available." : "Для этого приложения доступно обновление.",
"by %s" : "от %s",
"%s-licensed" : "Лицензия %s",
@@ -462,6 +467,7 @@ OC.L10N.register(
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "В случае установки не в корне домена и использования системного планировщика Cron возможны проблемы с правильной генерацией URL. Для их избежания, установите настройке «overwrite.cli.url» в файле config.php значение, равное пути папки установки. (Предположительно: «%s».)",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Не удаётся запустить задачу планировщика с использованием CLI (интерфейса командной строки). Произошли следующие технические ошибки:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Пожалуйста перечитайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> инструкции по установке</a> и проверьте <a href=\"%s\"> логи </a> на предмет наличия ошибок и предупреждений",
- "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Для перехода на другую базу данных используйте команду: «occ db:convert-type» или обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документации ↗</a>. "
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Для перехода на другую базу данных используйте команду: «occ db:convert-type» или обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документации ↗</a>. ",
+ "Default quota :" : "Квота по умолчанию: "
},
"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/settings/l10n/ru.json b/settings/l10n/ru.json
index 80549d7bcb8..700a51f620d 100644
--- a/settings/l10n/ru.json
+++ b/settings/l10n/ru.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ",
"Federated Cloud Sharing" : "Федерация облачных хранилищ",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL использует %1$s устаревшей версии %2$s. Обновите операционную систему, иначе такие возможности, как %3$s, не будут работать корректно.",
"Invalid SMTP password." : "Неверный пароль SMTP.",
"Email setting test" : "Проверка настроек электронной почты",
"Well done, %s!" : "Отлично, %s!",
@@ -107,6 +108,7 @@
"Groups" : "Группы",
"Group list is empty" : "Список групп пуст",
"Unable to retrieve the group list" : "Не удалось получить список групп",
+ "Limit to groups" : "Ограничить группами",
"Official" : "Официальное",
"No results" : "Результаты отсутствуют",
"Visit website" : "Посетите веб-сайт",
@@ -195,8 +197,10 @@
"There are some errors regarding your setup." : "Были обнаружены ошибки конфигурации.",
"There are some warnings regarding your setup." : "Предупреждения о текущей конфигурации.",
"Checking for system and security issues." : "Проверка системы и возможных уязвимостей.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ещё раз внимательно прочитайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">руководство по установке ↗</a> и проверьте <a href=\"%2$s\">журнал</a> на наличие ошибок и предупреждений.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверка безопасности вашей установки Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашим сканером ↗</a>.",
"Version" : "Версия",
+ "Two-Factor Authentication" : "Двухфакторная аутентификация",
"Server-side encryption" : "Шифрование на стороне сервера",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрование на стороне сервера позволяет шифровать файлы, которые загружаются на этот сервер. Это связано с ограничениями, такими как снижение производительности, поэтому включите его только в случае необходимости.",
"Enable server-side encryption" : "Включить шифрование на стороне сервера",
@@ -248,6 +252,7 @@
"Follow us on Google+" : "Следите за нашими новостями в Google Plus",
"Like our Facebook page" : "Посмотрите нашу страницу на Facebook",
"Follow us on Twitter" : "Следите за нашими новостями в Twitter",
+ "Follow us on Mastodon" : "Следите за нашими новостями в Mastodon",
"Check out our blog" : "Просмотрите наш блог",
"Subscribe to our newsletter" : "Подписывайтесь на нашу новостную рассылку",
"Profile picture" : "Аватар",
@@ -261,6 +266,7 @@
"Details" : "Подробности",
"You are a member of the following groups:" : "Вы являетесь членом следующих групп:",
"You are using <strong>%s</strong>" : "Вы используете <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вы используете <strong>%1$s</strong> из <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Полное имя",
"No display name set" : "Отображаемое имя не указано",
"Your email address" : "Ваш адрес электронной почты",
@@ -391,7 +397,6 @@
"Check the security of your Nextcloud over our security scan" : "Проверить безопасность вашего Nextcloud нашем сканером",
"Hardening and security guidance" : "Руководство по безопасности и защите",
"View in store" : "Посмотреть в магазине приложений",
- "Limit to groups" : "Ограничить группами",
"This app has an update available." : "Для этого приложения доступно обновление.",
"by %s" : "от %s",
"%s-licensed" : "Лицензия %s",
@@ -460,6 +465,7 @@
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "В случае установки не в корне домена и использования системного планировщика Cron возможны проблемы с правильной генерацией URL. Для их избежания, установите настройке «overwrite.cli.url» в файле config.php значение, равное пути папки установки. (Предположительно: «%s».)",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Не удаётся запустить задачу планировщика с использованием CLI (интерфейса командной строки). Произошли следующие технические ошибки:",
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Пожалуйста перечитайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> инструкции по установке</a> и проверьте <a href=\"%s\"> логи </a> на предмет наличия ошибок и предупреждений",
- "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Для перехода на другую базу данных используйте команду: «occ db:convert-type» или обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документации ↗</a>. "
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation ↗</a>." : "Для перехода на другую базу данных используйте команду: «occ db:convert-type» или обратитесь к <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документации ↗</a>. ",
+ "Default quota :" : "Квота по умолчанию: "
},"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/settings/l10n/sk.js b/settings/l10n/sk.js
index 2a1267da17c..60854ea4894 100644
--- a/settings/l10n/sk.js
+++ b/settings/l10n/sk.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Počas zmeny jazyka sa vyskytla chyba. Prosím obnovte stránku a skúste znova.",
"Select a profile picture" : "Vybrať avatara",
"Groups" : "Skupiny",
+ "Limit to groups" : "Povoľ len pre skupiny",
"Official" : "Oficiálny",
"Visit website" : "Navštíviť webstránku",
"User documentation" : "Príručka používateľa",
@@ -330,7 +331,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Skontrolujte bezpečnosť Vášho Nextcloud-u s pomocou bezpečnostného scan-u",
"Hardening and security guidance" : "Sprievodca vylepšením bezpečnosti",
"View in store" : "Zobraz v obchode",
- "Limit to groups" : "Povoľ len pre skupiny",
"This app has an update available." : "Pre túto aplikáciu je dostupná aktualizácia.",
"by %s" : "od %s",
"%s-licensed" : "%s-licencovaný",
diff --git a/settings/l10n/sk.json b/settings/l10n/sk.json
index 6dfba3a3fa4..9bc35ba1f8c 100644
--- a/settings/l10n/sk.json
+++ b/settings/l10n/sk.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Počas zmeny jazyka sa vyskytla chyba. Prosím obnovte stránku a skúste znova.",
"Select a profile picture" : "Vybrať avatara",
"Groups" : "Skupiny",
+ "Limit to groups" : "Povoľ len pre skupiny",
"Official" : "Oficiálny",
"Visit website" : "Navštíviť webstránku",
"User documentation" : "Príručka používateľa",
@@ -328,7 +329,6 @@
"Check the security of your Nextcloud over our security scan" : "Skontrolujte bezpečnosť Vášho Nextcloud-u s pomocou bezpečnostného scan-u",
"Hardening and security guidance" : "Sprievodca vylepšením bezpečnosti",
"View in store" : "Zobraz v obchode",
- "Limit to groups" : "Povoľ len pre skupiny",
"This app has an update available." : "Pre túto aplikáciu je dostupná aktualizácia.",
"by %s" : "od %s",
"%s-licensed" : "%s-licencovaný",
diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js
index 0a5922d93d4..a878aab4daa 100644
--- a/settings/l10n/sl.js
+++ b/settings/l10n/sl.js
@@ -68,6 +68,7 @@ OC.L10N.register(
"Select a profile picture" : "Izbor slike profila",
"Week starts on {fdow}" : "Začetek tedna je {fdow}",
"Groups" : "Skupine",
+ "Limit to groups" : "Omeji na skupine",
"Official" : "Uradno",
"No results" : "Ni zadetkov",
"Visit website" : "Odpri spletno stran",
@@ -86,6 +87,7 @@ OC.L10N.register(
"Unlimited" : "Neomejeno",
"Default quota" : "Privzeta količinska omejitev",
"You did not enter the password in time" : "Čas za vpis gesla je potekel.",
+ "Your apps" : "Vsi programi",
"Admins" : "Skrbniki",
"Everyone" : "Vsi",
"Add group" : "Dodaj skupino",
@@ -204,6 +206,8 @@ OC.L10N.register(
"All" : "Vsi",
"Update to %s" : "Posodobi na %s",
"No apps found for your version" : "Za to različico ni na voljo noben vstavek",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Uradne programe razvijajo posamezniki, ki na odprt način sodelujejo s skupnostjo. V kodo so vključene bistvene zmožnosti programa, uporaba je namenjena široki skupini uporabnikov.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Odobrene programe razvijajo izbrani razvijalci, vključena koda je tudi varnostno pregledana. Programe vzdržuje skupnost v odprtokodnem skladišču, upravljalci posameznih projektov pa skrbijo za stabilnost in enostavnost uporabe. ",
"Error while disabling app" : "Napaka onemogočanja programa",
"Disable" : "Onemogoči",
"Error while enabling app" : "Napaka omogočanja programa",
@@ -234,7 +238,6 @@ OC.L10N.register(
"Theming" : "Teme",
"Hardening and security guidance" : "Varnost in varnostni napotki",
"View in store" : "Pokaži v trgovini",
- "Limit to groups" : "Omeji na skupine",
"This app has an update available." : "Za program so na voljo posodobitve.",
"%s-licensed" : "dovoljenje-%s",
"Documentation:" : "Dokumentacija:",
@@ -249,6 +252,7 @@ OC.L10N.register(
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Uporabljate <strong>%s</strong> od <strong>%s</strong>",
"You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Uporabljate <strong>%s</strong> od <strong>%s</strong> (<strong>%s %%</strong>)",
"You are member of the following groups:" : "Omogočeno je članstvo v skupinah:",
+ "Get the apps to sync your files" : "Programi za usklajevanje datotek",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Gesla spletnih, namiznih in mobilnih naprav, ki imajo trenutno odobren dostop do računa.",
"Follow us on Google+!" : "Sledite nam na Google+!",
"Follow us on Twitter!" : "Sledite nam na Twitter!",
diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json
index c22f530245c..d48333fffd4 100644
--- a/settings/l10n/sl.json
+++ b/settings/l10n/sl.json
@@ -66,6 +66,7 @@
"Select a profile picture" : "Izbor slike profila",
"Week starts on {fdow}" : "Začetek tedna je {fdow}",
"Groups" : "Skupine",
+ "Limit to groups" : "Omeji na skupine",
"Official" : "Uradno",
"No results" : "Ni zadetkov",
"Visit website" : "Odpri spletno stran",
@@ -84,6 +85,7 @@
"Unlimited" : "Neomejeno",
"Default quota" : "Privzeta količinska omejitev",
"You did not enter the password in time" : "Čas za vpis gesla je potekel.",
+ "Your apps" : "Vsi programi",
"Admins" : "Skrbniki",
"Everyone" : "Vsi",
"Add group" : "Dodaj skupino",
@@ -202,6 +204,8 @@
"All" : "Vsi",
"Update to %s" : "Posodobi na %s",
"No apps found for your version" : "Za to različico ni na voljo noben vstavek",
+ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Uradne programe razvijajo posamezniki, ki na odprt način sodelujejo s skupnostjo. V kodo so vključene bistvene zmožnosti programa, uporaba je namenjena široki skupini uporabnikov.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Odobrene programe razvijajo izbrani razvijalci, vključena koda je tudi varnostno pregledana. Programe vzdržuje skupnost v odprtokodnem skladišču, upravljalci posameznih projektov pa skrbijo za stabilnost in enostavnost uporabe. ",
"Error while disabling app" : "Napaka onemogočanja programa",
"Disable" : "Onemogoči",
"Error while enabling app" : "Napaka omogočanja programa",
@@ -232,7 +236,6 @@
"Theming" : "Teme",
"Hardening and security guidance" : "Varnost in varnostni napotki",
"View in store" : "Pokaži v trgovini",
- "Limit to groups" : "Omeji na skupine",
"This app has an update available." : "Za program so na voljo posodobitve.",
"%s-licensed" : "dovoljenje-%s",
"Documentation:" : "Dokumentacija:",
@@ -247,6 +250,7 @@
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Uporabljate <strong>%s</strong> od <strong>%s</strong>",
"You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Uporabljate <strong>%s</strong> od <strong>%s</strong> (<strong>%s %%</strong>)",
"You are member of the following groups:" : "Omogočeno je članstvo v skupinah:",
+ "Get the apps to sync your files" : "Programi za usklajevanje datotek",
"Web, desktop, mobile clients and app specific passwords that currently have access to your account." : "Gesla spletnih, namiznih in mobilnih naprav, ki imajo trenutno odobren dostop do računa.",
"Follow us on Google+!" : "Sledite nam na Google+!",
"Follow us on Twitter!" : "Sledite nam na Twitter!",
diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js
index b53a56c9f01..8af03a7048e 100644
--- a/settings/l10n/sq.js
+++ b/settings/l10n/sq.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "Ndodhi një gabim teksa ndryshohej gjuha. Ju lutem, rifresko faqen dhe provo përsëri.",
"Select a profile picture" : "Përzgjidhni një foto profili",
"Groups" : "Grupe",
+ "Limit to groups" : "Kufizo grupet",
"Official" : "Zyrtare",
"Visit website" : "Vizitoni sajtin",
"User documentation" : "Dokumentim për përdoruesit",
@@ -326,7 +327,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Kontrolloni sigurinë e Nextcloud tuaj mbi skanimin tonë të sigurisë",
"Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
"View in store" : "Shiko në dyqan",
- "Limit to groups" : "Kufizo grupet",
"This app has an update available." : "Ka gati një përditësim për këtë aplikacion.",
"by %s" : "nga %s",
"%s-licensed" : "licencuar prej %s",
diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json
index 9e426502ebc..7b90ee7c98c 100644
--- a/settings/l10n/sq.json
+++ b/settings/l10n/sq.json
@@ -101,6 +101,7 @@
"An error occured while changing your language. Please reload the page and try again." : "Ndodhi një gabim teksa ndryshohej gjuha. Ju lutem, rifresko faqen dhe provo përsëri.",
"Select a profile picture" : "Përzgjidhni një foto profili",
"Groups" : "Grupe",
+ "Limit to groups" : "Kufizo grupet",
"Official" : "Zyrtare",
"Visit website" : "Vizitoni sajtin",
"User documentation" : "Dokumentim për përdoruesit",
@@ -324,7 +325,6 @@
"Check the security of your Nextcloud over our security scan" : "Kontrolloni sigurinë e Nextcloud tuaj mbi skanimin tonë të sigurisë",
"Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
"View in store" : "Shiko në dyqan",
- "Limit to groups" : "Kufizo grupet",
"This app has an update available." : "Ka gati një përditësim për këtë aplikacion.",
"by %s" : "nga %s",
"%s-licensed" : "licencuar prej %s",
diff --git a/settings/l10n/sr.js b/settings/l10n/sr.js
index 74a20567af5..30f2dbb3e34 100644
--- a/settings/l10n/sr.js
+++ b/settings/l10n/sr.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Позадина не подржава измену лозинке, али кориснички кључеви за шифровање су успешно ажурирани.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Инсталирање и ажурирање апликација кроз продавницу или здруженом дељењу у облаку",
"Federated Cloud Sharing" : "Здружено дељење у облаку",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарелу верзију %1$s (%2$s). Ажурирајте оперативни систем или функционалности као што је %3$s неће радити поуздано.",
"Invalid SMTP password." : "Неисправна SMTP лозинка.",
"Email setting test" : "Тестирај поставке е-поште",
"Well done, %s!" : "Свака част, %s!",
@@ -109,6 +110,7 @@ OC.L10N.register(
"Groups" : "Групе",
"Group list is empty" : "Списак група је празан",
"Unable to retrieve the group list" : "Није могуће дохватити списак група",
+ "Limit to groups" : "Ограничи на групе",
"Official" : "Званичне",
"No results" : "Нема резултата",
"Visit website" : "Посети веб сајт",
@@ -197,8 +199,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Постоје неке грешке у вези са Вашом инсталацијом.",
"There are some warnings regarding your setup." : "Постоје нека упозорења у вези са Вашом инсталацијом.",
"Checking for system and security issues." : "Проверавам за системске и безбедноносне проблеме.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Добро погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">инсталациону документацију ↗</a> и проверите за било какве грешке или упозорења у <a href=\"%2$s\">записнику</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверите безбедност Вашег Некстклауда на <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашем безбедоносном скенирању↗</a>.",
"Version" : "Верзија",
+ "Two-Factor Authentication" : "Двофакторска провера идентитета",
"Server-side encryption" : "Шифровање на страни сервера",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифровање на страни сервера омогућава да шифрујете фајлове који се стављају на овај сервер. Цена за ово се плаћа кроз лошије перформансе, тако да треба да омогућите ово само ако Вам је стварно потребно.",
"Enable server-side encryption" : "Укључи шифровање на страни сервера",
@@ -264,6 +268,7 @@ OC.L10N.register(
"Details" : "Детаљи",
"You are a member of the following groups:" : "Члан сте следећих група:",
"You are using <strong>%s</strong>" : "Користите <strong>%s</strong>.",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s%%</strong>)",
"Full name" : "Пуно име",
"No display name set" : "Није постављено име за приказ",
"Your email address" : "Адреса Ваше е-поште",
@@ -294,9 +299,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Из безбедносних разлога, ова лозинка ће бити приказана само једном.",
"Username" : "Корисничко име",
"Done" : "Завршено",
- "Two-Factor Authentication" : "Двофакторска провера идентитета",
- "Two-factor authentication is enabled on your account." : "Двофакторска провера идентитета је укључена на Вашем налогу.",
- "Two-factor authentication is disabled on your account." : "Двофакторска провера идентитета је искључена на Вашем налогу.",
"Enabled apps" : "Укључене апликације",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL користи застарелу верзију %s (%s). Ажурирајте оперативни систем или функционалности као што је %s неће радити поуздано.",
"A problem occurred, please check your log files (Error: %s)" : "Појавио се проблем. Проверите записнике (грешка: %s)",
@@ -397,7 +399,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Проверавање безбедности Вашег Некстклауда кроз наше безбедоносно скенирање",
"Hardening and security guidance" : "Ојачавање система и безбедносне препоруке",
"View in store" : "Погледај у продавници",
- "Limit to groups" : "Ограничи на групе",
"This app has an update available." : "Ова апликација има доступно ажурирање.",
"by %s" : "од %s",
"%s-licensed" : "%s лиценцирано",
diff --git a/settings/l10n/sr.json b/settings/l10n/sr.json
index 5c94db16b58..53a92c70370 100644
--- a/settings/l10n/sr.json
+++ b/settings/l10n/sr.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Позадина не подржава измену лозинке, али кориснички кључеви за шифровање су успешно ажурирани.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Инсталирање и ажурирање апликација кроз продавницу или здруженом дељењу у облаку",
"Federated Cloud Sharing" : "Здружено дељење у облаку",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарелу верзију %1$s (%2$s). Ажурирајте оперативни систем или функционалности као што је %3$s неће радити поуздано.",
"Invalid SMTP password." : "Неисправна SMTP лозинка.",
"Email setting test" : "Тестирај поставке е-поште",
"Well done, %s!" : "Свака част, %s!",
@@ -107,6 +108,7 @@
"Groups" : "Групе",
"Group list is empty" : "Списак група је празан",
"Unable to retrieve the group list" : "Није могуће дохватити списак група",
+ "Limit to groups" : "Ограничи на групе",
"Official" : "Званичне",
"No results" : "Нема резултата",
"Visit website" : "Посети веб сајт",
@@ -195,8 +197,10 @@
"There are some errors regarding your setup." : "Постоје неке грешке у вези са Вашом инсталацијом.",
"There are some warnings regarding your setup." : "Постоје нека упозорења у вези са Вашом инсталацијом.",
"Checking for system and security issues." : "Проверавам за системске и безбедноносне проблеме.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Добро погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">инсталациону документацију ↗</a> и проверите за било какве грешке или упозорења у <a href=\"%2$s\">записнику</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверите безбедност Вашег Некстклауда на <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашем безбедоносном скенирању↗</a>.",
"Version" : "Верзија",
+ "Two-Factor Authentication" : "Двофакторска провера идентитета",
"Server-side encryption" : "Шифровање на страни сервера",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифровање на страни сервера омогућава да шифрујете фајлове који се стављају на овај сервер. Цена за ово се плаћа кроз лошије перформансе, тако да треба да омогућите ово само ако Вам је стварно потребно.",
"Enable server-side encryption" : "Укључи шифровање на страни сервера",
@@ -262,6 +266,7 @@
"Details" : "Детаљи",
"You are a member of the following groups:" : "Члан сте следећих група:",
"You are using <strong>%s</strong>" : "Користите <strong>%s</strong>.",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s%%</strong>)",
"Full name" : "Пуно име",
"No display name set" : "Није постављено име за приказ",
"Your email address" : "Адреса Ваше е-поште",
@@ -292,9 +297,6 @@
"For security reasons this password will only be shown once." : "Из безбедносних разлога, ова лозинка ће бити приказана само једном.",
"Username" : "Корисничко име",
"Done" : "Завршено",
- "Two-Factor Authentication" : "Двофакторска провера идентитета",
- "Two-factor authentication is enabled on your account." : "Двофакторска провера идентитета је укључена на Вашем налогу.",
- "Two-factor authentication is disabled on your account." : "Двофакторска провера идентитета је искључена на Вашем налогу.",
"Enabled apps" : "Укључене апликације",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL користи застарелу верзију %s (%s). Ажурирајте оперативни систем или функционалности као што је %s неће радити поуздано.",
"A problem occurred, please check your log files (Error: %s)" : "Појавио се проблем. Проверите записнике (грешка: %s)",
@@ -395,7 +397,6 @@
"Check the security of your Nextcloud over our security scan" : "Проверавање безбедности Вашег Некстклауда кроз наше безбедоносно скенирање",
"Hardening and security guidance" : "Ојачавање система и безбедносне препоруке",
"View in store" : "Погледај у продавници",
- "Limit to groups" : "Ограничи на групе",
"This app has an update available." : "Ова апликација има доступно ажурирање.",
"by %s" : "од %s",
"%s-licensed" : "%s лиценцирано",
diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js
index 2ba7d498e62..9cf84b6534b 100644
--- a/settings/l10n/sv.js
+++ b/settings/l10n/sv.js
@@ -102,11 +102,13 @@ OC.L10N.register(
"Good password" : "Bra lösenord",
"Strong password" : "Starkt lösenord",
"An error occured while changing your language. Please reload the page and try again." : "Ett fel inträffade när språket ändrades. Var god ladda om sidan och försök igen.",
+ "An error occured while changing your locale. Please reload the page and try again." : "Ett fel inträffade när din plats ändrades. Var god ladda om sidan och försök igen.",
"Select a profile picture" : "Välj en profilbild",
"Week starts on {fdow}" : "Veckan börjar på {fdow}",
"Groups" : "Grupper",
"Group list is empty" : "Grupplistan är tom",
"Unable to retrieve the group list" : "Kan inte hämta grupplistan",
+ "Limit to groups" : "Begränsa till grupper",
"Official" : "Officiell",
"No results" : "Inga resultat",
"Visit website" : "Besök webbsida",
@@ -120,6 +122,7 @@ OC.L10N.register(
"Download and enable" : "Ladda ner och aktivera",
"Enable" : "Aktivera",
"The app will be downloaded from the app store" : "Appen kommer hämtas från appstore",
+ "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren",
"Delete user" : "Radera användare",
"Disable user" : "Stäng av användare",
"Enable user" : "Aktivera användare",
@@ -183,6 +186,7 @@ OC.L10N.register(
"Security & setup warnings" : "Säkerhet & systemvarningar",
"All checks passed." : "Alla kontroller lyckades!",
"Version" : "Version",
+ "Two-Factor Authentication" : "Tvåfaktorsautentisering",
"Server-side encryption" : "Serverkryptering",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering från servern möjliggör kryptering av filer som är uppladdade till servern. Detta innebär vissa begränsningar som prestandaförluster, så aktivera bara om det behövs.",
"Enable server-side encryption" : "Aktivera kryptering på server.",
@@ -234,6 +238,7 @@ OC.L10N.register(
"Follow us on Google+" : "Följ oss på Google+",
"Like our Facebook page" : "Gilla vår Facebook-sida",
"Follow us on Twitter" : "Följ oss på Twitter",
+ "Follow us on Mastodon" : "Följ oss på Mastodon",
"Check out our blog" : "Kolla in vår blogg",
"Subscribe to our newsletter" : "Prenumerera på vårt nyhetsbrev",
"Profile picture" : "Profilbild",
@@ -247,6 +252,7 @@ OC.L10N.register(
"Details" : "Detaljer",
"You are a member of the following groups:" : "Du är medlem i följande grupper:",
"You are using <strong>%s</strong>" : "Du använder <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du använder <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Namn",
"No display name set" : "Inget visningsnamn angivet",
"Your email address" : "Din e-postadress",
@@ -262,6 +268,7 @@ OC.L10N.register(
"Twitter" : "Twitter",
"Twitter handle @…" : "Twitter handle @…",
"Help translate" : "Hjälp oss att översätta",
+ "Locale" : "Plats",
"Password" : "Lösenord",
"Current password" : "Nuvarande lösenord",
"New password" : "Nytt lösenord",
@@ -312,6 +319,7 @@ OC.L10N.register(
"Error while enabling app" : "Fel vid aktivering av app",
"Error: Could not disable broken app" : "Fel: Kunde inte inaktivera trasig app",
"Error while disabling broken app" : "Fel under inaktivering av trasig applikation.",
+ "Updating...." : "Uppdaterar...",
"Updated" : "Uppdaterad",
"Removing …" : "Tar bort ...",
"Remove" : "Ta bort",
@@ -339,6 +347,7 @@ OC.L10N.register(
"A valid password must be provided" : "Ett giltigt lösenord måste anges",
"A valid email must be provided" : "En giltig e-postadress måste anges",
"__language_name__" : "Svenska",
+ "Verifying" : "Verifierar",
"Personal info" : "Personlig info",
"Sync clients" : "Synk-klienter",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via webbgränssnittet.",
@@ -357,7 +366,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Kontrollera säkerheten för ditt Nextcloud med vår säkerhets-skanning",
"Hardening and security guidance" : "Säkerhetsriktlinjer",
"View in store" : "Visa i butik",
- "Limit to groups" : "Begränsa till grupper",
"This app has an update available." : "Denna applikation har en uppdatering tillgänglig.",
"by %s" : "av %s",
"%s-licensed" : "%s-licensierad.",
diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json
index eddfced9f0e..1bac9c4b389 100644
--- a/settings/l10n/sv.json
+++ b/settings/l10n/sv.json
@@ -100,11 +100,13 @@
"Good password" : "Bra lösenord",
"Strong password" : "Starkt lösenord",
"An error occured while changing your language. Please reload the page and try again." : "Ett fel inträffade när språket ändrades. Var god ladda om sidan och försök igen.",
+ "An error occured while changing your locale. Please reload the page and try again." : "Ett fel inträffade när din plats ändrades. Var god ladda om sidan och försök igen.",
"Select a profile picture" : "Välj en profilbild",
"Week starts on {fdow}" : "Veckan börjar på {fdow}",
"Groups" : "Grupper",
"Group list is empty" : "Grupplistan är tom",
"Unable to retrieve the group list" : "Kan inte hämta grupplistan",
+ "Limit to groups" : "Begränsa till grupper",
"Official" : "Officiell",
"No results" : "Inga resultat",
"Visit website" : "Besök webbsida",
@@ -118,6 +120,7 @@
"Download and enable" : "Ladda ner och aktivera",
"Enable" : "Aktivera",
"The app will be downloaded from the app store" : "Appen kommer hämtas från appstore",
+ "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren",
"Delete user" : "Radera användare",
"Disable user" : "Stäng av användare",
"Enable user" : "Aktivera användare",
@@ -181,6 +184,7 @@
"Security & setup warnings" : "Säkerhet & systemvarningar",
"All checks passed." : "Alla kontroller lyckades!",
"Version" : "Version",
+ "Two-Factor Authentication" : "Tvåfaktorsautentisering",
"Server-side encryption" : "Serverkryptering",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering från servern möjliggör kryptering av filer som är uppladdade till servern. Detta innebär vissa begränsningar som prestandaförluster, så aktivera bara om det behövs.",
"Enable server-side encryption" : "Aktivera kryptering på server.",
@@ -232,6 +236,7 @@
"Follow us on Google+" : "Följ oss på Google+",
"Like our Facebook page" : "Gilla vår Facebook-sida",
"Follow us on Twitter" : "Följ oss på Twitter",
+ "Follow us on Mastodon" : "Följ oss på Mastodon",
"Check out our blog" : "Kolla in vår blogg",
"Subscribe to our newsletter" : "Prenumerera på vårt nyhetsbrev",
"Profile picture" : "Profilbild",
@@ -245,6 +250,7 @@
"Details" : "Detaljer",
"You are a member of the following groups:" : "Du är medlem i följande grupper:",
"You are using <strong>%s</strong>" : "Du använder <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du använder <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Namn",
"No display name set" : "Inget visningsnamn angivet",
"Your email address" : "Din e-postadress",
@@ -260,6 +266,7 @@
"Twitter" : "Twitter",
"Twitter handle @…" : "Twitter handle @…",
"Help translate" : "Hjälp oss att översätta",
+ "Locale" : "Plats",
"Password" : "Lösenord",
"Current password" : "Nuvarande lösenord",
"New password" : "Nytt lösenord",
@@ -310,6 +317,7 @@
"Error while enabling app" : "Fel vid aktivering av app",
"Error: Could not disable broken app" : "Fel: Kunde inte inaktivera trasig app",
"Error while disabling broken app" : "Fel under inaktivering av trasig applikation.",
+ "Updating...." : "Uppdaterar...",
"Updated" : "Uppdaterad",
"Removing …" : "Tar bort ...",
"Remove" : "Ta bort",
@@ -337,6 +345,7 @@
"A valid password must be provided" : "Ett giltigt lösenord måste anges",
"A valid email must be provided" : "En giltig e-postadress måste anges",
"__language_name__" : "Svenska",
+ "Verifying" : "Verifierar",
"Personal info" : "Personlig info",
"Sync clients" : "Synk-klienter",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via webbgränssnittet.",
@@ -355,7 +364,6 @@
"Check the security of your Nextcloud over our security scan" : "Kontrollera säkerheten för ditt Nextcloud med vår säkerhets-skanning",
"Hardening and security guidance" : "Säkerhetsriktlinjer",
"View in store" : "Visa i butik",
- "Limit to groups" : "Begränsa till grupper",
"This app has an update available." : "Denna applikation har en uppdatering tillgänglig.",
"by %s" : "av %s",
"%s-licensed" : "%s-licensierad.",
diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js
index 45f5ae19431..859ce64581a 100644
--- a/settings/l10n/tr.js
+++ b/settings/l10n/tr.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Yönetim bölümünden parola değişikliği yapılamaz, ancak kullanıcının şifreleme anahtarı güncellendi.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşmiş Bulut Paylaşımından uygulama kurma ve güncelleme",
"Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL eski bir %1$s sürümü kullanıyor (%2$s). Lütfen işletim sisteminizi güncelleyin, yoksa %3$s gibi özellikler düzgün çalışmaz.",
"Invalid SMTP password." : "SMTP parolası geçersiz.",
"Email setting test" : "E-posta ayarları sınaması",
"Well done, %s!" : "Tamamdır %s!",
@@ -109,6 +110,10 @@ OC.L10N.register(
"Groups" : "Gruplar",
"Group list is empty" : "Grup listesi boş",
"Unable to retrieve the group list" : "Grup listesi alınamadı",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tüm kullanıcılar ve belirli gruplar için iki aşamalı\tkimlik doğrulama kullanılır. Yapılandırılmış bir iki aşamalı kimlik doğrulama hizmeti sağlayıcısı olmayan kullanıcılar oturum açamaz.",
+ "Enforce two-factor authentication" : "İki aşamalı kimlik doğrulama dayatılsın",
+ "Limit to groups" : "Şu gruplarla sınırla",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Şu grupların üyeleri için iki aşamalı kimlik doğrulaması\tdayatılmaz.",
"Official" : "Resmi",
"No results" : "Herhangi bir sonuç bulunamadı",
"Visit website" : "Web sayfasına bakın",
@@ -197,8 +202,10 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Kurulumunuz ile ilgili bazı sorunlar var.",
"There are some warnings regarding your setup." : "Kurulumunuz ile ilgili bazı uyarılar var.",
"Checking for system and security issues." : "Sistem ve güvenlik sorunları denetleniyor.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lütfen <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">kurulum rehberlerini↗</a> yeniden gözden geçirin ve <a href=\"%2$s\">günlük</a> kayıtlarındaki hata ve uyarılara bakın.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Güvenlik sınamamızdan ↗</a> geçirerek Nextcloud güvenliğinizi denetleyin.",
"Version" : "Sürüm",
+ "Two-Factor Authentication" : "İki Aşamalı Kimlik Doğrulama",
"Server-side encryption" : "Sunucu tarafı şifreleme",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Sunucu tarafındaki şifreleme, sunucuya yüklenen dosyaların şifrelenebilmesini sağlar. Bu özellik genel başarımı düşürdüğünden yalnız gerek varsa etkinleştirin.",
"Enable server-side encryption" : "Sunucu tarafı şifreleme kullanılsın",
@@ -214,11 +221,11 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız. Lütfen \"Varsayılan şifreleme modülü\"nü etkinleştirip 'occ encryption:migrate' komutunu yürütün",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.",
"Start migration" : "Aktarmayı başlat",
- "Background jobs" : "Art alan görevleri",
+ "Background jobs" : "Arka plan görevleri",
"Last job ran %s." : "Son görev çalışması: %s.",
"Last job execution ran %s. Something seems wrong." : "Son görev yürütülmesi: %s. Yanlış bir şeyler var.",
- "Background job didn’t run yet!" : "Art alan görevi henüz yürütülmemiş!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için art alan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
+ "Background job didn’t run yet!" : "Arka plan görevi henüz yürütülmemiş!",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
"Execute one task with each page loaded" : "Her sayfa yüklemesinde bir görev yürütülsün",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php, HTTP üzerinden 15 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
"Use system cron service to call the cron.php file every 15 minutes." : "15 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.",
@@ -264,6 +271,7 @@ OC.L10N.register(
"Details" : "Ayrıntılar",
"You are a member of the following groups:" : "Şu gruplara üyesiniz:",
"You are using <strong>%s</strong>" : "<strong>%s</strong> kullanıyorsunuz",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kullandığınız: <strong>%1$s</strong> Kullanabileceğiniz: <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Tam ad",
"No display name set" : "Görüntülenecek ad belirtilmemiş",
"Your email address" : "E-posta adresiniz",
@@ -294,9 +302,6 @@ OC.L10N.register(
"For security reasons this password will only be shown once." : "Güvenlik nedenleriyle bu parola yalnız bir kez görüntülenir.",
"Username" : "Kullanıcı Adı",
"Done" : "Tamam",
- "Two-Factor Authentication" : "İki Aşamalı Kimlik Doğrulama",
- "Two-factor authentication is enabled on your account." : "Hesabınız için iki aşamalı kimlik doğrulamasını etkinleştirildi.",
- "Two-factor authentication is disabled on your account." : "Hesabınız için iki aşamalı kimlik doğrulamasını devre dışı bırakıldı.",
"Enabled apps" : "Etkinleştirilmiş Uygulamalar",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL eski bir %s sürümü kullanıyor (%s). Lütfen işletim sisteminizi güncelleyin, yoksa %s gibi özellikler düzgün çalışmaz.",
"A problem occurred, please check your log files (Error: %s)" : "Bir sorun çıktı. Lütfen günlük dosyalarınıza bakın (Hata: %s)",
@@ -397,7 +402,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "Güvenlik sınamamızdan geçirerek Nextcloud güvenliğinizi denetleyin",
"Hardening and security guidance" : "Sağlamlaştırma ve güvenlik rehberliği",
"View in store" : "Mağazada görüntüle",
- "Limit to groups" : "Şu gruplarla sınırla",
"This app has an update available." : "Bu uygulama için bir güncelleme yayınlanmış.",
"by %s" : "Yazar: %s",
"%s-licensed" : "%s lisanslı",
diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json
index 38859fbbeb5..f3f34a4b8cb 100644
--- a/settings/l10n/tr.json
+++ b/settings/l10n/tr.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Yönetim bölümünden parola değişikliği yapılamaz, ancak kullanıcının şifreleme anahtarı güncellendi.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşmiş Bulut Paylaşımından uygulama kurma ve güncelleme",
"Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL eski bir %1$s sürümü kullanıyor (%2$s). Lütfen işletim sisteminizi güncelleyin, yoksa %3$s gibi özellikler düzgün çalışmaz.",
"Invalid SMTP password." : "SMTP parolası geçersiz.",
"Email setting test" : "E-posta ayarları sınaması",
"Well done, %s!" : "Tamamdır %s!",
@@ -107,6 +108,10 @@
"Groups" : "Gruplar",
"Group list is empty" : "Grup listesi boş",
"Unable to retrieve the group list" : "Grup listesi alınamadı",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tüm kullanıcılar ve belirli gruplar için iki aşamalı\tkimlik doğrulama kullanılır. Yapılandırılmış bir iki aşamalı kimlik doğrulama hizmeti sağlayıcısı olmayan kullanıcılar oturum açamaz.",
+ "Enforce two-factor authentication" : "İki aşamalı kimlik doğrulama dayatılsın",
+ "Limit to groups" : "Şu gruplarla sınırla",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Şu grupların üyeleri için iki aşamalı kimlik doğrulaması\tdayatılmaz.",
"Official" : "Resmi",
"No results" : "Herhangi bir sonuç bulunamadı",
"Visit website" : "Web sayfasına bakın",
@@ -195,8 +200,10 @@
"There are some errors regarding your setup." : "Kurulumunuz ile ilgili bazı sorunlar var.",
"There are some warnings regarding your setup." : "Kurulumunuz ile ilgili bazı uyarılar var.",
"Checking for system and security issues." : "Sistem ve güvenlik sorunları denetleniyor.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lütfen <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">kurulum rehberlerini↗</a> yeniden gözden geçirin ve <a href=\"%2$s\">günlük</a> kayıtlarındaki hata ve uyarılara bakın.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Güvenlik sınamamızdan ↗</a> geçirerek Nextcloud güvenliğinizi denetleyin.",
"Version" : "Sürüm",
+ "Two-Factor Authentication" : "İki Aşamalı Kimlik Doğrulama",
"Server-side encryption" : "Sunucu tarafı şifreleme",
"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Sunucu tarafındaki şifreleme, sunucuya yüklenen dosyaların şifrelenebilmesini sağlar. Bu özellik genel başarımı düşürdüğünden yalnız gerek varsa etkinleştirin.",
"Enable server-side encryption" : "Sunucu tarafı şifreleme kullanılsın",
@@ -212,11 +219,11 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız. Lütfen \"Varsayılan şifreleme modülü\"nü etkinleştirip 'occ encryption:migrate' komutunu yürütün",
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.",
"Start migration" : "Aktarmayı başlat",
- "Background jobs" : "Art alan görevleri",
+ "Background jobs" : "Arka plan görevleri",
"Last job ran %s." : "Son görev çalışması: %s.",
"Last job execution ran %s. Something seems wrong." : "Son görev yürütülmesi: %s. Yanlış bir şeyler var.",
- "Background job didn’t run yet!" : "Art alan görevi henüz yürütülmemiş!",
- "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için art alan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
+ "Background job didn’t run yet!" : "Arka plan görevi henüz yürütülmemiş!",
+ "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.",
"Execute one task with each page loaded" : "Her sayfa yüklemesinde bir görev yürütülsün",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php, HTTP üzerinden 15 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.",
"Use system cron service to call the cron.php file every 15 minutes." : "15 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.",
@@ -262,6 +269,7 @@
"Details" : "Ayrıntılar",
"You are a member of the following groups:" : "Şu gruplara üyesiniz:",
"You are using <strong>%s</strong>" : "<strong>%s</strong> kullanıyorsunuz",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kullandığınız: <strong>%1$s</strong> Kullanabileceğiniz: <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Tam ad",
"No display name set" : "Görüntülenecek ad belirtilmemiş",
"Your email address" : "E-posta adresiniz",
@@ -292,9 +300,6 @@
"For security reasons this password will only be shown once." : "Güvenlik nedenleriyle bu parola yalnız bir kez görüntülenir.",
"Username" : "Kullanıcı Adı",
"Done" : "Tamam",
- "Two-Factor Authentication" : "İki Aşamalı Kimlik Doğrulama",
- "Two-factor authentication is enabled on your account." : "Hesabınız için iki aşamalı kimlik doğrulamasını etkinleştirildi.",
- "Two-factor authentication is disabled on your account." : "Hesabınız için iki aşamalı kimlik doğrulamasını devre dışı bırakıldı.",
"Enabled apps" : "Etkinleştirilmiş Uygulamalar",
"cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL eski bir %s sürümü kullanıyor (%s). Lütfen işletim sisteminizi güncelleyin, yoksa %s gibi özellikler düzgün çalışmaz.",
"A problem occurred, please check your log files (Error: %s)" : "Bir sorun çıktı. Lütfen günlük dosyalarınıza bakın (Hata: %s)",
@@ -395,7 +400,6 @@
"Check the security of your Nextcloud over our security scan" : "Güvenlik sınamamızdan geçirerek Nextcloud güvenliğinizi denetleyin",
"Hardening and security guidance" : "Sağlamlaştırma ve güvenlik rehberliği",
"View in store" : "Mağazada görüntüle",
- "Limit to groups" : "Şu gruplarla sınırla",
"This app has an update available." : "Bu uygulama için bir güncelleme yayınlanmış.",
"by %s" : "Yazar: %s",
"%s-licensed" : "%s lisanslı",
diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js
index 667e86737f8..6fac14f022b 100644
--- a/settings/l10n/zh_CN.js
+++ b/settings/l10n/zh_CN.js
@@ -10,7 +10,7 @@ OC.L10N.register(
"Security" : "安全",
"You successfully logged in using two-factor authentication (%1$s)" : "您使用两步验证登录成功 (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "使用两步验证登录失败的尝试 (%1$s)",
- "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密码</strong> 或 <strong>密码</strong> 已被更改",
+ "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密码</strong> 或 <strong>邮箱</strong> 已被更改",
"Couldn't remove app." : "无法删除应用.",
"Couldn't update app." : "无法更新应用.",
"Wrong password" : "密码错误",
@@ -49,7 +49,7 @@ OC.L10N.register(
"The new email address is %s" : "新的电子邮件地址是%s",
"Your %s account was created" : "你的 %s 帐户已创建",
"Welcome aboard" : "欢迎使用",
- "Welcome aboard %s" : "欢迎使用%s",
+ "Welcome aboard %s" : "%s,欢迎使用",
"Welcome to your %s account, you can add, protect, and share your data." : "欢迎使用你的 %s 帐户,你可以添加、保护和共享你的数据。",
"Your username is: %s" : "你的用户名是: %s",
"Set your password" : "设置你的密码",
@@ -105,6 +105,7 @@ OC.L10N.register(
"Select a profile picture" : "选择头像",
"Week starts on {fdow}" : "周开始于 {fdow}",
"Groups" : "分组",
+ "Limit to groups" : "限制于组",
"Official" : "官方",
"No results" : "没有结果",
"Visit website" : "访问网站",
@@ -217,7 +218,7 @@ OC.L10N.register(
"Sharing" : "共享",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "作为管理员,您可以调整共享行为。 有关详细信息,请参阅文档。",
"Allow apps to use the Share API" : "允许应用使用共享 API",
- "Allow users to share via link" : "允许用户通过链接分享文件",
+ "Allow users to share via link" : "允许用户通过链接共享文件",
"Allow public uploads" : "允许公开上传",
"Always ask for a password" : "一直要求输入密码",
"Enforce password protection" : "强制密码保护",
@@ -227,13 +228,13 @@ OC.L10N.register(
"Enforce expiration date" : "强制过期日期",
"Allow resharing" : "允许二次共享",
"Allow sharing with groups" : "允许群组共享",
- "Restrict users to only share with users in their groups" : "限制仅与组内用户分享",
- "Exclude groups from sharing" : "在分享中排除组",
- "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取分享, 但无法向他人分享.",
+ "Restrict users to only share with users in their groups" : "限制仅与组内用户共享",
+ "Exclude groups from sharing" : "在共享中排除组",
+ "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。",
"Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "在共享对话框中允许用户名自动完成。 如果被禁用,则需要输入完整的用户名或电子邮件地址。",
"Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "在公开链接上传页中显示免责声明. (仅当文件列表隐藏时显示)",
"This text will be shown on the public link upload page when the file list is hidden." : "这些内容将在公开链接上传页中当文件列表隐藏时显示.",
- "Default share permissions" : "默认分享权限",
+ "Default share permissions" : "默认共享权限",
"Personal" : "个人",
"Administration" : "管理",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud community{linkclose} 开发, {githubopen}源代码{linkclose} 基于 {licenseopen}AGPL{linkclose} 许可协议.",
@@ -369,7 +370,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "通过我们的安全扫描来检查Nextcloud的安全性",
"Hardening and security guidance" : "强化和安全指南",
"View in store" : "在商店中查看",
- "Limit to groups" : "限制于组",
"This app has an update available." : "此应用有可用的更新.",
"by %s" : "由 %s",
"%s-licensed" : "%s-许可协议",
diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json
index fdba6cadbe4..2b005045263 100644
--- a/settings/l10n/zh_CN.json
+++ b/settings/l10n/zh_CN.json
@@ -8,7 +8,7 @@
"Security" : "安全",
"You successfully logged in using two-factor authentication (%1$s)" : "您使用两步验证登录成功 (%1$s)",
"A login attempt using two-factor authentication failed (%1$s)" : "使用两步验证登录失败的尝试 (%1$s)",
- "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密码</strong> 或 <strong>密码</strong> 已被更改",
+ "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密码</strong> 或 <strong>邮箱</strong> 已被更改",
"Couldn't remove app." : "无法删除应用.",
"Couldn't update app." : "无法更新应用.",
"Wrong password" : "密码错误",
@@ -47,7 +47,7 @@
"The new email address is %s" : "新的电子邮件地址是%s",
"Your %s account was created" : "你的 %s 帐户已创建",
"Welcome aboard" : "欢迎使用",
- "Welcome aboard %s" : "欢迎使用%s",
+ "Welcome aboard %s" : "%s,欢迎使用",
"Welcome to your %s account, you can add, protect, and share your data." : "欢迎使用你的 %s 帐户,你可以添加、保护和共享你的数据。",
"Your username is: %s" : "你的用户名是: %s",
"Set your password" : "设置你的密码",
@@ -103,6 +103,7 @@
"Select a profile picture" : "选择头像",
"Week starts on {fdow}" : "周开始于 {fdow}",
"Groups" : "分组",
+ "Limit to groups" : "限制于组",
"Official" : "官方",
"No results" : "没有结果",
"Visit website" : "访问网站",
@@ -215,7 +216,7 @@
"Sharing" : "共享",
"As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "作为管理员,您可以调整共享行为。 有关详细信息,请参阅文档。",
"Allow apps to use the Share API" : "允许应用使用共享 API",
- "Allow users to share via link" : "允许用户通过链接分享文件",
+ "Allow users to share via link" : "允许用户通过链接共享文件",
"Allow public uploads" : "允许公开上传",
"Always ask for a password" : "一直要求输入密码",
"Enforce password protection" : "强制密码保护",
@@ -225,13 +226,13 @@
"Enforce expiration date" : "强制过期日期",
"Allow resharing" : "允许二次共享",
"Allow sharing with groups" : "允许群组共享",
- "Restrict users to only share with users in their groups" : "限制仅与组内用户分享",
- "Exclude groups from sharing" : "在分享中排除组",
- "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取分享, 但无法向他人分享.",
+ "Restrict users to only share with users in their groups" : "限制仅与组内用户共享",
+ "Exclude groups from sharing" : "在共享中排除组",
+ "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。",
"Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "在共享对话框中允许用户名自动完成。 如果被禁用,则需要输入完整的用户名或电子邮件地址。",
"Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "在公开链接上传页中显示免责声明. (仅当文件列表隐藏时显示)",
"This text will be shown on the public link upload page when the file list is hidden." : "这些内容将在公开链接上传页中当文件列表隐藏时显示.",
- "Default share permissions" : "默认分享权限",
+ "Default share permissions" : "默认共享权限",
"Personal" : "个人",
"Administration" : "管理",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud community{linkclose} 开发, {githubopen}源代码{linkclose} 基于 {licenseopen}AGPL{linkclose} 许可协议.",
@@ -367,7 +368,6 @@
"Check the security of your Nextcloud over our security scan" : "通过我们的安全扫描来检查Nextcloud的安全性",
"Hardening and security guidance" : "强化和安全指南",
"View in store" : "在商店中查看",
- "Limit to groups" : "限制于组",
"This app has an update available." : "此应用有可用的更新.",
"by %s" : "由 %s",
"%s-licensed" : "%s-许可协议",
diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js
index c9dea7c2628..ab7f65a0f83 100644
--- a/settings/l10n/zh_TW.js
+++ b/settings/l10n/zh_TW.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"An error occured while changing your language. Please reload the page and try again." : "變更語言時發生錯誤,請重新整理頁面後重試",
"Select a profile picture" : "選擇大頭貼照",
"Groups" : "群組",
+ "Limit to groups" : "限制給特定群組",
"Official" : "官方",
"Visit website" : "開啟網站",
"User documentation" : "用戶說明文件",
@@ -325,7 +326,6 @@ OC.L10N.register(
"Check the security of your Nextcloud over our security scan" : "使用我們的掃描服務來檢查您 Nextcloud 的安全性",
"Hardening and security guidance" : "增強安全指南",
"View in store" : "在商店中檢視",
- "Limit to groups" : "限制給特定群組",
"This app has an update available." : "此應用程式有可用的更新",
"by %s" : "由 %s",
"%s-licensed" : "%s 授權",
diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json
index dde2a43a9ce..214b82a16e2 100644
--- a/settings/l10n/zh_TW.json
+++ b/settings/l10n/zh_TW.json
@@ -102,6 +102,7 @@
"An error occured while changing your language. Please reload the page and try again." : "變更語言時發生錯誤,請重新整理頁面後重試",
"Select a profile picture" : "選擇大頭貼照",
"Groups" : "群組",
+ "Limit to groups" : "限制給特定群組",
"Official" : "官方",
"Visit website" : "開啟網站",
"User documentation" : "用戶說明文件",
@@ -323,7 +324,6 @@
"Check the security of your Nextcloud over our security scan" : "使用我們的掃描服務來檢查您 Nextcloud 的安全性",
"Hardening and security guidance" : "增強安全指南",
"View in store" : "在商店中檢視",
- "Limit to groups" : "限制給特定群組",
"This app has an update available." : "此應用程式有可用的更新",
"by %s" : "由 %s",
"%s-licensed" : "%s 授權",
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index f3e6c854808..f2e8d112b64 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -117,7 +117,7 @@ class LoginControllerTest extends TestCase {
->willReturn('/login');
$expected = new RedirectResponse('/login');
- $expected->addHeader('Clear-Site-Data', '"cache", "cookies", "storage", "executionContexts"');
+ $expected->addHeader('Clear-Site-Data', '"cache", "storage", "executionContexts"');
$this->assertEquals($expected, $this->loginController->logout());
}
@@ -147,7 +147,7 @@ class LoginControllerTest extends TestCase {
->willReturn('/login');
$expected = new RedirectResponse('/login');
- $expected->addHeader('Clear-Site-Data', '"cache", "cookies", "storage", "executionContexts"');
+ $expected->addHeader('Clear-Site-Data', '"cache", "storage", "executionContexts"');
$this->assertEquals($expected, $this->loginController->logout());
}
diff --git a/tests/acceptance/features/app-files.feature b/tests/acceptance/features/app-files.feature
index 00f09900d3e..3bded3fef11 100644
--- a/tests/acceptance/features/app-files.feature
+++ b/tests/acceptance/features/app-files.feature
@@ -31,6 +31,78 @@ Feature: app-files
When I open the details view for "welcome.txt"
Then I see that the details view is open
+ Scenario: show recent files
+ Given I am logged in
+ And I create a new folder named "Folder just created"
+ When I open the "Recent" section
+ Then I see that the current section is "Recent"
+ Then I see that the file list contains a file named "Folder just created"
+
+ Scenario: show recent files for a second time
+ Given I am logged in
+ And I open the "Recent" section
+ And I see that the current section is "Recent"
+ And I open the "All files" section
+ And I see that the current section is "All files"
+ And I create a new folder named "Folder just created"
+ When I open the "Recent" section
+ Then I see that the current section is "Recent"
+ Then I see that the file list contains a file named "Folder just created"
+
+ Scenario: show favorites
+ Given I am logged in
+ And I mark "welcome.txt" as favorite
+ When I open the "Favorites" section
+ Then I see that the current section is "Favorites"
+ Then I see that the file list contains a file named "welcome.txt"
+
+ Scenario: show favorites for a second time
+ Given I am logged in
+ And I open the "Favorites" section
+ And I see that the current section is "Favorites"
+ And I open the "All files" section
+ And I see that the current section is "All files"
+ And I mark "welcome.txt" as favorite
+ When I open the "Favorites" section
+ Then I see that the current section is "Favorites"
+ Then I see that the file list contains a file named "welcome.txt"
+
+ Scenario: show shares
+ Given I am logged in
+ And I share the link for "welcome.txt"
+ When I open the "Shares" section
+ Then I see that the current section is "Shares"
+ Then I see that the file list contains a file named "welcome.txt"
+
+ Scenario: show shares for a second time
+ Given I am logged in
+ And I open the "Shares" section
+ And I see that the current section is "Shares"
+ And I open the "All files" section
+ And I see that the current section is "All files"
+ And I share the link for "welcome.txt"
+ When I open the "Shares" section
+ Then I see that the current section is "Shares"
+ Then I see that the file list contains a file named "welcome.txt"
+
+ Scenario: show deleted files
+ Given I am logged in
+ And I delete "welcome.txt"
+ When I open the "Deleted files" section
+ Then I see that the current section is "Deleted files"
+ Then I see that the file list contains a file named "welcome.txt"
+
+ Scenario: show deleted files for a second time
+ Given I am logged in
+ And I open the "Deleted files" section
+ And I see that the current section is "Deleted files"
+ And I open the "All files" section
+ And I see that the current section is "All files"
+ And I delete "welcome.txt"
+ When I open the "Deleted files" section
+ Then I see that the current section is "Deleted files"
+ Then I see that the file list contains a file named "welcome.txt"
+
Scenario: rename a file with the details view open
Given I am logged in
And I open the details view for "welcome.txt"
diff --git a/tests/acceptance/features/bootstrap/FileListContext.php b/tests/acceptance/features/bootstrap/FileListContext.php
index bc225e3f9b1..6a39d7a999f 100644
--- a/tests/acceptance/features/bootstrap/FileListContext.php
+++ b/tests/acceptance/features/bootstrap/FileListContext.php
@@ -255,6 +255,13 @@ class FileListContext implements Context, ActorAwareInterface {
}
/**
+ * @return Locator
+ */
+ public static function deleteMenuItem() {
+ return self::fileActionsMenuItemFor("Delete");
+ }
+
+ /**
* @Given I create a new folder named :folderName
*/
public function iCreateANewFolderNamed($folderName) {
@@ -323,6 +330,15 @@ class FileListContext implements Context, ActorAwareInterface {
}
/**
+ * @When I delete :fileName
+ */
+ public function iDelete($fileName) {
+ $this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
+
+ $this->actor->find(self::deleteMenuItem(), 2)->click();
+ }
+
+ /**
* @Then I see that the file list is eventually loaded
*/
public function iSeeThatTheFileListIsEventuallyLoaded() {
diff --git a/tests/data/setUploadLimit/htaccess b/tests/data/setUploadLimit/htaccess
index 65957a29838..f7bfcdbc80b 100644
--- a/tests/data/setUploadLimit/htaccess
+++ b/tests/data/setUploadLimit/htaccess
@@ -38,6 +38,7 @@ RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
+RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
RewriteRule ^\.well-known/carddav /remote.php/carddav/ [R=301,L]
RewriteRule ^\.well-known/caldav /remote.php/caldav/ [R=301,L]
RewriteRule ^apps/calendar/caldav\.php remote.php/caldav/ [QSA,L]
diff --git a/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php b/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php
index 7c30df730d3..7e86903892f 100644
--- a/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php
+++ b/tests/lib/AppFramework/Http/EmptyContentSecurityPolicyTest.php
@@ -451,4 +451,19 @@ class EmptyContentSecurityPolicyTest extends \Test\TestCase {
$this->contentSecurityPolicy->addAllowedScriptDomain("'self'");
$this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
}
+
+ public function testGetPolicyWithReportUri() {
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';report-uri https://my-report-uri.com";
+
+ $this->contentSecurityPolicy->addReportTo("https://my-report-uri.com");
+ $this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
+ }
+
+ public function testGetPolicyWithMultipleReportUri() {
+ $expectedPolicy = "default-src 'none';base-uri 'none';manifest-src 'self';report-uri https://my-report-uri.com https://my-other-report-uri.com";
+
+ $this->contentSecurityPolicy->addReportTo("https://my-report-uri.com");
+ $this->contentSecurityPolicy->addReportTo("https://my-other-report-uri.com");
+ $this->assertSame($expectedPolicy, $this->contentSecurityPolicy->buildPolicy());
+ }
}
diff --git a/tests/lib/AvatarTest.php b/tests/lib/AvatarTest.php
index 759dd385564..c8c9d3b8317 100644
--- a/tests/lib/AvatarTest.php
+++ b/tests/lib/AvatarTest.php
@@ -48,7 +48,7 @@ class AvatarTest extends \Test\TestCase {
$this->createMock(ILogger::class),
$this->config
);
-
+
// abcdefghi is a convenient name that our algorithm convert to our nextcloud blue 0082c9
$this->user->method('getDisplayName')->willReturn('abcdefghi');
}
@@ -231,11 +231,11 @@ class AvatarTest extends \Test\TestCase {
public function testGenerateSvgAvatar() {
$avatar = $this->invokePrivate($this->avatar, 'getAvatarVector', [64]);
-
+
$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64" version="1.1" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" fill="#0082c9"></rect>
- <text x="50%" y="350" style="font-weight:600;font-size:278px;font-family:\'Open Sans\';text-anchor:middle;fill:#fff">A</text>
+ <text x="50%" y="350" style="font-weight:normal;font-size:279px;font-family:\'Nunito\';text-anchor:middle;fill:#fff">A</text>
</svg>';
$this->assertEquals($avatar, $svg);
}
diff --git a/tests/lib/Encryption/DecryptAllTest.php b/tests/lib/Encryption/DecryptAllTest.php
index 59c24fb3c1d..4e4b2438a25 100644
--- a/tests/lib/Encryption/DecryptAllTest.php
+++ b/tests/lib/Encryption/DecryptAllTest.php
@@ -311,7 +311,10 @@ class DecryptAllTest extends TestCase {
}
- public function testDecryptFile() {
+ /**
+ * @dataProvider dataTrueFalse
+ */
+ public function testDecryptFile($isEncrypted) {
$path = 'test.txt';
@@ -327,15 +330,26 @@ class DecryptAllTest extends TestCase {
->setMethods(['getTimestamp'])
->getMock();
- $instance->expects($this->any())->method('getTimestamp')->willReturn(42);
-
- $this->view->expects($this->once())
- ->method('copy')
- ->with($path, $path . '.decrypted.42');
- $this->view->expects($this->once())
- ->method('rename')
- ->with($path . '.decrypted.42', $path);
-
+ $fileInfo = $this->createMock(FileInfo::class);
+ $fileInfo->expects($this->any())->method('isEncrypted')
+ ->willReturn($isEncrypted);
+ $this->view->expects($this->any())->method('getFileInfo')
+ ->willReturn($fileInfo);
+
+ if ($isEncrypted) {
+ $instance->expects($this->any())->method('getTimestamp')->willReturn(42);
+
+ $this->view->expects($this->once())
+ ->method('copy')
+ ->with($path, $path . '.decrypted.42');
+ $this->view->expects($this->once())
+ ->method('rename')
+ ->with($path . '.decrypted.42', $path);
+ } else {
+ $instance->expects($this->never())->method('getTimestamp');
+ $this->view->expects($this->never())->method('copy');
+ $this->view->expects($this->never())->method('rename');
+ }
$this->assertTrue(
$this->invokePrivate($instance, 'decryptFile', [$path])
);
@@ -356,6 +370,13 @@ class DecryptAllTest extends TestCase {
->setMethods(['getTimestamp'])
->getMock();
+
+ $fileInfo = $this->createMock(FileInfo::class);
+ $fileInfo->expects($this->any())->method('isEncrypted')
+ ->willReturn(true);
+ $this->view->expects($this->any())->method('getFileInfo')
+ ->willReturn($fileInfo);
+
$instance->expects($this->any())->method('getTimestamp')->willReturn(42);
$this->view->expects($this->once())