summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/encryption/appinfo/register_command.php7
-rw-r--r--apps/encryption/command/enablemasterkey.php86
-rw-r--r--apps/encryption/l10n/cs_CZ.js1
-rw-r--r--apps/encryption/l10n/cs_CZ.json1
-rw-r--r--apps/encryption/l10n/es.js3
-rw-r--r--apps/encryption/l10n/es.json3
-rw-r--r--apps/encryption/l10n/et_EE.js8
-rw-r--r--apps/encryption/l10n/et_EE.json8
-rw-r--r--apps/encryption/l10n/fr.js3
-rw-r--r--apps/encryption/l10n/fr.json3
-rw-r--r--apps/encryption/l10n/th_TH.js3
-rw-r--r--apps/encryption/l10n/th_TH.json3
-rw-r--r--apps/encryption/lib/crypto/encryption.php39
-rw-r--r--apps/encryption/lib/keymanager.php80
-rw-r--r--apps/encryption/lib/users/setup.php1
-rw-r--r--apps/encryption/lib/util.php10
-rw-r--r--apps/encryption/tests/command/testenablemasterkey.php103
-rw-r--r--apps/encryption/tests/lib/KeyManagerTest.php150
-rw-r--r--apps/encryption/tests/lib/UtilTest.php21
-rw-r--r--apps/encryption/tests/lib/users/SetupTest.php2
-rw-r--r--apps/files/css/files.css140
-rw-r--r--apps/files/css/upload.css14
-rw-r--r--apps/files/index.php1
-rw-r--r--apps/files/js/detailsview.js2
-rw-r--r--apps/files/js/detailtabview.js7
-rw-r--r--apps/files/js/file-upload.js149
-rw-r--r--apps/files/js/fileactionsmenu.js4
-rw-r--r--apps/files/js/filelist.js192
-rw-r--r--apps/files/js/newfilemenu.js235
-rw-r--r--apps/files/js/tagsplugin.js24
-rw-r--r--apps/files/l10n/af_ZA.js4
-rw-r--r--apps/files/l10n/af_ZA.json4
-rw-r--r--apps/files/l10n/ar.js12
-rw-r--r--apps/files/l10n/ar.json12
-rw-r--r--apps/files/l10n/ast.js17
-rw-r--r--apps/files/l10n/ast.json17
-rw-r--r--apps/files/l10n/az.js17
-rw-r--r--apps/files/l10n/az.json17
-rw-r--r--apps/files/l10n/bg_BG.js17
-rw-r--r--apps/files/l10n/bg_BG.json17
-rw-r--r--apps/files/l10n/bn_BD.js12
-rw-r--r--apps/files/l10n/bn_BD.json12
-rw-r--r--apps/files/l10n/bn_IN.js4
-rw-r--r--apps/files/l10n/bn_IN.json4
-rw-r--r--apps/files/l10n/bs.js17
-rw-r--r--apps/files/l10n/bs.json17
-rw-r--r--apps/files/l10n/ca.js17
-rw-r--r--apps/files/l10n/ca.json17
-rw-r--r--apps/files/l10n/cs_CZ.js17
-rw-r--r--apps/files/l10n/cs_CZ.json17
-rw-r--r--apps/files/l10n/cy_GB.js10
-rw-r--r--apps/files/l10n/cy_GB.json10
-rw-r--r--apps/files/l10n/da.js17
-rw-r--r--apps/files/l10n/da.json17
-rw-r--r--apps/files/l10n/de.js17
-rw-r--r--apps/files/l10n/de.json17
-rw-r--r--apps/files/l10n/de_AT.js4
-rw-r--r--apps/files/l10n/de_AT.json4
-rw-r--r--apps/files/l10n/de_DE.js17
-rw-r--r--apps/files/l10n/de_DE.json17
-rw-r--r--apps/files/l10n/el.js19
-rw-r--r--apps/files/l10n/el.json19
-rw-r--r--apps/files/l10n/en_GB.js17
-rw-r--r--apps/files/l10n/en_GB.json17
-rw-r--r--apps/files/l10n/eo.js17
-rw-r--r--apps/files/l10n/eo.json17
-rw-r--r--apps/files/l10n/es.js19
-rw-r--r--apps/files/l10n/es.json19
-rw-r--r--apps/files/l10n/es_AR.js17
-rw-r--r--apps/files/l10n/es_AR.json17
-rw-r--r--apps/files/l10n/es_CL.js4
-rw-r--r--apps/files/l10n/es_CL.json4
-rw-r--r--apps/files/l10n/es_MX.js17
-rw-r--r--apps/files/l10n/es_MX.json17
-rw-r--r--apps/files/l10n/et_EE.js17
-rw-r--r--apps/files/l10n/et_EE.json17
-rw-r--r--apps/files/l10n/eu.js17
-rw-r--r--apps/files/l10n/eu.json17
-rw-r--r--apps/files/l10n/fa.js12
-rw-r--r--apps/files/l10n/fa.json12
-rw-r--r--apps/files/l10n/fi_FI.js19
-rw-r--r--apps/files/l10n/fi_FI.json19
-rw-r--r--apps/files/l10n/fr.js19
-rw-r--r--apps/files/l10n/fr.json19
-rw-r--r--apps/files/l10n/gl.js17
-rw-r--r--apps/files/l10n/gl.json17
-rw-r--r--apps/files/l10n/he.js12
-rw-r--r--apps/files/l10n/he.json12
-rw-r--r--apps/files/l10n/hi.js6
-rw-r--r--apps/files/l10n/hi.json6
-rw-r--r--apps/files/l10n/hr.js17
-rw-r--r--apps/files/l10n/hr.json17
-rw-r--r--apps/files/l10n/hu_HU.js19
-rw-r--r--apps/files/l10n/hu_HU.json19
-rw-r--r--apps/files/l10n/ia.js10
-rw-r--r--apps/files/l10n/ia.json10
-rw-r--r--apps/files/l10n/id.js17
-rw-r--r--apps/files/l10n/id.json17
-rw-r--r--apps/files/l10n/is.js10
-rw-r--r--apps/files/l10n/is.json10
-rw-r--r--apps/files/l10n/it.js19
-rw-r--r--apps/files/l10n/it.json19
-rw-r--r--apps/files/l10n/ja.js17
-rw-r--r--apps/files/l10n/ja.json17
-rw-r--r--apps/files/l10n/ka_GE.js12
-rw-r--r--apps/files/l10n/ka_GE.json12
-rw-r--r--apps/files/l10n/km.js12
-rw-r--r--apps/files/l10n/km.json12
-rw-r--r--apps/files/l10n/kn.js17
-rw-r--r--apps/files/l10n/kn.json17
-rw-r--r--apps/files/l10n/ko.js17
-rw-r--r--apps/files/l10n/ko.json17
-rw-r--r--apps/files/l10n/ku_IQ.js6
-rw-r--r--apps/files/l10n/ku_IQ.json6
-rw-r--r--apps/files/l10n/lb.js10
-rw-r--r--apps/files/l10n/lb.json10
-rw-r--r--apps/files/l10n/lt_LT.js17
-rw-r--r--apps/files/l10n/lt_LT.json17
-rw-r--r--apps/files/l10n/lv.js17
-rw-r--r--apps/files/l10n/lv.json17
-rw-r--r--apps/files/l10n/mk.js16
-rw-r--r--apps/files/l10n/mk.json16
-rw-r--r--apps/files/l10n/mn.js4
-rw-r--r--apps/files/l10n/mn.json4
-rw-r--r--apps/files/l10n/ms_MY.js8
-rw-r--r--apps/files/l10n/ms_MY.json8
-rw-r--r--apps/files/l10n/nb_NO.js17
-rw-r--r--apps/files/l10n/nb_NO.json17
-rw-r--r--apps/files/l10n/nl.js19
-rw-r--r--apps/files/l10n/nl.json19
-rw-r--r--apps/files/l10n/nn_NO.js12
-rw-r--r--apps/files/l10n/nn_NO.json12
-rw-r--r--apps/files/l10n/oc.js17
-rw-r--r--apps/files/l10n/oc.json17
-rw-r--r--apps/files/l10n/pa.js2
-rw-r--r--apps/files/l10n/pa.json2
-rw-r--r--apps/files/l10n/pl.js17
-rw-r--r--apps/files/l10n/pl.json17
-rw-r--r--apps/files/l10n/pt_BR.js19
-rw-r--r--apps/files/l10n/pt_BR.json19
-rw-r--r--apps/files/l10n/pt_PT.js17
-rw-r--r--apps/files/l10n/pt_PT.json17
-rw-r--r--apps/files/l10n/ro.js17
-rw-r--r--apps/files/l10n/ro.json17
-rw-r--r--apps/files/l10n/ru.js17
-rw-r--r--apps/files/l10n/ru.json17
-rw-r--r--apps/files/l10n/si_LK.js8
-rw-r--r--apps/files/l10n/si_LK.json8
-rw-r--r--apps/files/l10n/sk_SK.js17
-rw-r--r--apps/files/l10n/sk_SK.json17
-rw-r--r--apps/files/l10n/sl.js17
-rw-r--r--apps/files/l10n/sl.json17
-rw-r--r--apps/files/l10n/sq.js17
-rw-r--r--apps/files/l10n/sq.json17
-rw-r--r--apps/files/l10n/sr.js17
-rw-r--r--apps/files/l10n/sr.json17
-rw-r--r--apps/files/l10n/sr@latin.js17
-rw-r--r--apps/files/l10n/sr@latin.json17
-rw-r--r--apps/files/l10n/sv.js17
-rw-r--r--apps/files/l10n/sv.json17
-rw-r--r--apps/files/l10n/ta_IN.js6
-rw-r--r--apps/files/l10n/ta_IN.json6
-rw-r--r--apps/files/l10n/ta_LK.js10
-rw-r--r--apps/files/l10n/ta_LK.json10
-rw-r--r--apps/files/l10n/te.js4
-rw-r--r--apps/files/l10n/te.json4
-rw-r--r--apps/files/l10n/th_TH.js19
-rw-r--r--apps/files/l10n/th_TH.json19
-rw-r--r--apps/files/l10n/tr.js17
-rw-r--r--apps/files/l10n/tr.json17
-rw-r--r--apps/files/l10n/ug.js12
-rw-r--r--apps/files/l10n/ug.json12
-rw-r--r--apps/files/l10n/uk.js17
-rw-r--r--apps/files/l10n/uk.json17
-rw-r--r--apps/files/l10n/vi.js17
-rw-r--r--apps/files/l10n/vi.json17
-rw-r--r--apps/files/l10n/zh_CN.js17
-rw-r--r--apps/files/l10n/zh_CN.json17
-rw-r--r--apps/files/l10n/zh_HK.js8
-rw-r--r--apps/files/l10n/zh_HK.json8
-rw-r--r--apps/files/l10n/zh_TW.js17
-rw-r--r--apps/files/l10n/zh_TW.json17
-rw-r--r--apps/files/templates/list.php52
-rw-r--r--apps/files/tests/js/fileUploadSpec.js51
-rw-r--r--apps/files/tests/js/filelistSpec.js119
-rw-r--r--apps/files/tests/js/newfilemenuSpec.js119
-rw-r--r--apps/files/tests/js/tagspluginspec.js33
-rw-r--r--apps/files_external/appinfo/application.php5
-rw-r--r--apps/files_external/js/settings.js7
-rw-r--r--apps/files_external/l10n/cs_CZ.js17
-rw-r--r--apps/files_external/l10n/cs_CZ.json17
-rw-r--r--apps/files_external/l10n/fr.js7
-rw-r--r--apps/files_external/l10n/fr.json7
-rw-r--r--apps/files_external/l10n/pt_PT.js38
-rw-r--r--apps/files_external/l10n/pt_PT.json38
-rw-r--r--apps/files_external/lib/backend/amazons3.php5
-rw-r--r--apps/files_external/lib/backend/dav.php4
-rw-r--r--apps/files_external/lib/backend/dropbox.php5
-rw-r--r--apps/files_external/lib/backend/ftp.php4
-rw-r--r--apps/files_external/lib/backend/google.php5
-rw-r--r--apps/files_external/lib/backend/legacybackend.php21
-rw-r--r--apps/files_external/lib/backend/smb.php4
-rw-r--r--apps/files_external/lib/dependencytrait.php47
-rw-r--r--apps/files_external/lib/legacydependencycheckpolyfill.php70
-rw-r--r--apps/files_external/tests/backend/legacybackendtest.php38
-rw-r--r--apps/files_external/tests/legacydependencycheckpolyfilltest.php (renamed from apps/files_external/tests/dependencytraittest.php)23
-rw-r--r--apps/files_sharing/ajax/external.php1
-rw-r--r--apps/files_sharing/api/remote.php4
-rw-r--r--apps/files_sharing/api/server2server.php23
-rw-r--r--apps/files_sharing/appinfo/app.php11
-rw-r--r--apps/files_sharing/appinfo/application.php1
-rw-r--r--apps/files_sharing/appinfo/install.php22
-rw-r--r--apps/files_sharing/appinfo/update.php1
-rw-r--r--apps/files_sharing/appinfo/version2
-rw-r--r--apps/files_sharing/l10n/cs_CZ.js2
-rw-r--r--apps/files_sharing/l10n/cs_CZ.json2
-rw-r--r--apps/files_sharing/l10n/da.js3
-rw-r--r--apps/files_sharing/l10n/da.json3
-rw-r--r--apps/files_sharing/l10n/de.js2
-rw-r--r--apps/files_sharing/l10n/de.json2
-rw-r--r--apps/files_sharing/l10n/de_DE.js2
-rw-r--r--apps/files_sharing/l10n/de_DE.json2
-rw-r--r--apps/files_sharing/l10n/el.js3
-rw-r--r--apps/files_sharing/l10n/el.json3
-rw-r--r--apps/files_sharing/l10n/en_GB.js1
-rw-r--r--apps/files_sharing/l10n/en_GB.json1
-rw-r--r--apps/files_sharing/l10n/eo.js1
-rw-r--r--apps/files_sharing/l10n/eo.json1
-rw-r--r--apps/files_sharing/l10n/es.js3
-rw-r--r--apps/files_sharing/l10n/es.json3
-rw-r--r--apps/files_sharing/l10n/et_EE.js6
-rw-r--r--apps/files_sharing/l10n/et_EE.json6
-rw-r--r--apps/files_sharing/l10n/fi_FI.js3
-rw-r--r--apps/files_sharing/l10n/fi_FI.json3
-rw-r--r--apps/files_sharing/l10n/fr.js3
-rw-r--r--apps/files_sharing/l10n/fr.json3
-rw-r--r--apps/files_sharing/l10n/gl.js2
-rw-r--r--apps/files_sharing/l10n/gl.json2
-rw-r--r--apps/files_sharing/l10n/hu_HU.js3
-rw-r--r--apps/files_sharing/l10n/hu_HU.json3
-rw-r--r--apps/files_sharing/l10n/id.js2
-rw-r--r--apps/files_sharing/l10n/id.json2
-rw-r--r--apps/files_sharing/l10n/it.js3
-rw-r--r--apps/files_sharing/l10n/it.json3
-rw-r--r--apps/files_sharing/l10n/ja.js2
-rw-r--r--apps/files_sharing/l10n/ja.json2
-rw-r--r--apps/files_sharing/l10n/ko.js2
-rw-r--r--apps/files_sharing/l10n/ko.json2
-rw-r--r--apps/files_sharing/l10n/nb_NO.js2
-rw-r--r--apps/files_sharing/l10n/nb_NO.json2
-rw-r--r--apps/files_sharing/l10n/nl.js3
-rw-r--r--apps/files_sharing/l10n/nl.json3
-rw-r--r--apps/files_sharing/l10n/pl.js1
-rw-r--r--apps/files_sharing/l10n/pl.json1
-rw-r--r--apps/files_sharing/l10n/pt_BR.js3
-rw-r--r--apps/files_sharing/l10n/pt_BR.json3
-rw-r--r--apps/files_sharing/l10n/pt_PT.js33
-rw-r--r--apps/files_sharing/l10n/pt_PT.json33
-rw-r--r--apps/files_sharing/l10n/ru.js2
-rw-r--r--apps/files_sharing/l10n/ru.json2
-rw-r--r--apps/files_sharing/l10n/sk_SK.js2
-rw-r--r--apps/files_sharing/l10n/sk_SK.json2
-rw-r--r--apps/files_sharing/l10n/sl.js1
-rw-r--r--apps/files_sharing/l10n/sl.json1
-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/th_TH.js3
-rw-r--r--apps/files_sharing/l10n/th_TH.json3
-rw-r--r--apps/files_sharing/l10n/tr.js2
-rw-r--r--apps/files_sharing/l10n/tr.json2
-rw-r--r--apps/files_sharing/l10n/uk.js1
-rw-r--r--apps/files_sharing/l10n/uk.json1
-rw-r--r--apps/files_sharing/lib/cache.php6
-rw-r--r--apps/files_sharing/lib/external/manager.php24
-rw-r--r--apps/files_sharing/lib/hooks.php1
-rw-r--r--apps/files_sharing/lib/mountprovider.php6
-rw-r--r--apps/files_sharing/lib/notifier.php86
-rw-r--r--apps/files_sharing/lib/propagation/recipientpropagator.php8
-rw-r--r--apps/files_sharing/lib/sharedmount.php2
-rw-r--r--apps/files_sharing/lib/sharedstorage.php7
-rw-r--r--apps/files_sharing/templates/public.php1
-rw-r--r--apps/files_sharing/tests/external/managertest.php1
-rw-r--r--apps/files_sharing/tests/server2server.php1
-rw-r--r--apps/files_versions/ajax/getVersions.php2
-rw-r--r--apps/files_versions/ajax/preview.php5
-rw-r--r--apps/files_versions/appinfo/app.php1
-rw-r--r--apps/files_versions/css/versions.css27
-rw-r--r--apps/files_versions/js/filesplugin.js34
-rw-r--r--apps/files_versions/js/versioncollection.js91
-rw-r--r--apps/files_versions/js/versionmodel.js77
-rw-r--r--apps/files_versions/js/versions.js193
-rw-r--r--apps/files_versions/js/versionstabview.js198
-rw-r--r--apps/files_versions/lib/hooks.php12
-rw-r--r--apps/files_versions/tests/js/versioncollectionSpec.js161
-rw-r--r--apps/files_versions/tests/js/versionmodelSpec.js96
-rw-r--r--apps/files_versions/tests/js/versionstabviewSpec.js208
-rw-r--r--apps/provisioning_api/lib/apps.php29
-rw-r--r--apps/provisioning_api/lib/groups.php39
-rw-r--r--apps/provisioning_api/lib/users.php56
-rw-r--r--apps/user_ldap/appinfo/app.php3
-rw-r--r--apps/user_ldap/appinfo/install.php3
-rw-r--r--apps/user_ldap/appinfo/update.php3
-rw-r--r--apps/user_ldap/appinfo/version2
-rw-r--r--apps/user_ldap/lib/connection.php4
-rw-r--r--apps/user_ldap/lib/proxy.php4
-rw-r--r--core/command/maintenance/mimetype/updatedb.php96
-rw-r--r--core/command/maintenance/mimetype/updatejs.php (renamed from core/command/maintenance/mimetypesjs.php)43
-rw-r--r--core/css/apps.css65
-rw-r--r--core/css/styles.css12
-rw-r--r--core/img/filetypes/application-pdf.pngbin354 -> 1022 bytes
-rw-r--r--core/img/filetypes/application-pdf.svg3
-rw-r--r--core/img/filetypes/application.pngbin244 -> 614 bytes
-rw-r--r--core/img/filetypes/audio.pngbin362 -> 781 bytes
-rw-r--r--core/img/filetypes/file.pngbin155 -> 251 bytes
-rw-r--r--core/img/filetypes/folder-drag-accept.pngbin137 -> 188 bytes
-rw-r--r--core/img/filetypes/folder-external.pngbin274 -> 549 bytes
-rw-r--r--core/img/filetypes/folder-public.pngbin264 -> 602 bytes
-rw-r--r--core/img/filetypes/folder-shared.pngbin308 -> 726 bytes
-rw-r--r--core/img/filetypes/folder-starred.pngbin309 -> 683 bytes
-rw-r--r--core/img/filetypes/folder.pngbin135 -> 215 bytes
-rw-r--r--core/img/filetypes/image.pngbin223 -> 394 bytes
-rw-r--r--core/img/filetypes/package-x-generic.pngbin142 -> 210 bytes
-rw-r--r--core/img/filetypes/text-calendar.pngbin250 -> 572 bytes
-rw-r--r--core/img/filetypes/text-code.pngbin194 -> 314 bytes
-rw-r--r--core/img/filetypes/text-vcard.pngbin439 -> 1098 bytes
-rw-r--r--core/img/filetypes/text.pngbin169 -> 270 bytes
-rw-r--r--core/img/filetypes/video.pngbin166 -> 239 bytes
-rw-r--r--core/img/filetypes/x-office-document.pngbin169 -> 270 bytes
-rw-r--r--core/img/filetypes/x-office-presentation.pngbin135 -> 179 bytes
-rw-r--r--core/img/filetypes/x-office-spreadsheet.pngbin166 -> 266 bytes
-rw-r--r--core/img/places/picture.pngbin360 -> 295 bytes
-rw-r--r--core/img/places/picture.svg4
-rw-r--r--core/l10n/af_ZA.js1
-rw-r--r--core/l10n/af_ZA.json1
-rw-r--r--core/l10n/bg_BG.js1
-rw-r--r--core/l10n/bg_BG.json1
-rw-r--r--core/l10n/ca.js1
-rw-r--r--core/l10n/ca.json1
-rw-r--r--core/l10n/cs_CZ.js3
-rw-r--r--core/l10n/cs_CZ.json3
-rw-r--r--core/l10n/cy_GB.js1
-rw-r--r--core/l10n/cy_GB.json1
-rw-r--r--core/l10n/da.js1
-rw-r--r--core/l10n/da.json1
-rw-r--r--core/l10n/de.js1
-rw-r--r--core/l10n/de.json1
-rw-r--r--core/l10n/de_DE.js14
-rw-r--r--core/l10n/de_DE.json14
-rw-r--r--core/l10n/el.js1
-rw-r--r--core/l10n/el.json1
-rw-r--r--core/l10n/eo.js1
-rw-r--r--core/l10n/eo.json1
-rw-r--r--core/l10n/es_AR.js1
-rw-r--r--core/l10n/es_AR.json1
-rw-r--r--core/l10n/et_EE.js1
-rw-r--r--core/l10n/et_EE.json1
-rw-r--r--core/l10n/eu.js1
-rw-r--r--core/l10n/eu.json1
-rw-r--r--core/l10n/fi_FI.js1
-rw-r--r--core/l10n/fi_FI.json1
-rw-r--r--core/l10n/fr.js2
-rw-r--r--core/l10n/fr.json2
-rw-r--r--core/l10n/gl.js1
-rw-r--r--core/l10n/gl.json1
-rw-r--r--core/l10n/he.js1
-rw-r--r--core/l10n/he.json1
-rw-r--r--core/l10n/hr.js1
-rw-r--r--core/l10n/hr.json1
-rw-r--r--core/l10n/hu_HU.js1
-rw-r--r--core/l10n/hu_HU.json1
-rw-r--r--core/l10n/is.js1
-rw-r--r--core/l10n/is.json1
-rw-r--r--core/l10n/ja.js1
-rw-r--r--core/l10n/ja.json1
-rw-r--r--core/l10n/ka_GE.js1
-rw-r--r--core/l10n/ka_GE.json1
-rw-r--r--core/l10n/lb.js1
-rw-r--r--core/l10n/lb.json1
-rw-r--r--core/l10n/lt_LT.js1
-rw-r--r--core/l10n/lt_LT.json1
-rw-r--r--core/l10n/lv.js1
-rw-r--r--core/l10n/lv.json1
-rw-r--r--core/l10n/mk.js1
-rw-r--r--core/l10n/mk.json1
-rw-r--r--core/l10n/nb_NO.js19
-rw-r--r--core/l10n/nb_NO.json19
-rw-r--r--core/l10n/pl.js1
-rw-r--r--core/l10n/pl.json1
-rw-r--r--core/l10n/pt_BR.js1
-rw-r--r--core/l10n/pt_BR.json1
-rw-r--r--core/l10n/pt_PT.js11
-rw-r--r--core/l10n/pt_PT.json11
-rw-r--r--core/l10n/si_LK.js1
-rw-r--r--core/l10n/si_LK.json1
-rw-r--r--core/l10n/sk_SK.js1
-rw-r--r--core/l10n/sk_SK.json1
-rw-r--r--core/l10n/sv.js1
-rw-r--r--core/l10n/sv.json1
-rw-r--r--core/l10n/ta_LK.js1
-rw-r--r--core/l10n/ta_LK.json1
-rw-r--r--core/l10n/th_TH.js1
-rw-r--r--core/l10n/th_TH.json1
-rw-r--r--core/l10n/tr.js1
-rw-r--r--core/l10n/tr.json1
-rw-r--r--core/l10n/uk.js1
-rw-r--r--core/l10n/uk.json1
-rw-r--r--core/l10n/vi.js1
-rw-r--r--core/l10n/vi.json1
-rw-r--r--core/l10n/zh_CN.js1
-rw-r--r--core/l10n/zh_CN.json1
-rw-r--r--core/l10n/zh_HK.js1
-rw-r--r--core/l10n/zh_HK.json1
-rw-r--r--core/register_command.php3
-rw-r--r--core/templates/installation.php4
-rw-r--r--core/templates/layout.base.php1
-rw-r--r--core/templates/layout.guest.php1
-rw-r--r--core/templates/layout.user.php1
-rw-r--r--lib/autoloader.php6
-rw-r--r--lib/base.php8
-rw-r--r--lib/l10n/cs_CZ.js1
-rw-r--r--lib/l10n/cs_CZ.json1
-rw-r--r--lib/l10n/da.js1
-rw-r--r--lib/l10n/da.json1
-rw-r--r--lib/l10n/el.js1
-rw-r--r--lib/l10n/el.json1
-rw-r--r--lib/l10n/es.js1
-rw-r--r--lib/l10n/es.json1
-rw-r--r--lib/l10n/fi_FI.js1
-rw-r--r--lib/l10n/fi_FI.json1
-rw-r--r--lib/l10n/fr.js1
-rw-r--r--lib/l10n/fr.json1
-rw-r--r--lib/l10n/it.js1
-rw-r--r--lib/l10n/it.json1
-rw-r--r--lib/l10n/nl.js1
-rw-r--r--lib/l10n/nl.json1
-rw-r--r--lib/l10n/pt_BR.js1
-rw-r--r--lib/l10n/pt_BR.json1
-rw-r--r--lib/l10n/th_TH.js1
-rw-r--r--lib/l10n/th_TH.json1
-rw-r--r--lib/private/app.php3
-rw-r--r--lib/private/appconfig.php219
-rw-r--r--lib/private/backgroundjob/joblist.php22
-rw-r--r--lib/private/eventsource.php11
-rw-r--r--lib/private/files.php58
-rw-r--r--lib/private/files/cache/cache.php96
-rw-r--r--lib/private/files/type/detection.php30
-rw-r--r--lib/private/files/type/loader.php165
-rw-r--r--lib/private/memcache/memcached.php5
-rw-r--r--lib/private/notification/action.php167
-rw-r--r--lib/private/notification/iaction.php109
-rw-r--r--lib/private/notification/iapp.php56
-rw-r--r--lib/private/notification/imanager.php56
-rw-r--r--lib/private/notification/inotification.php241
-rw-r--r--lib/private/notification/inotifier.php43
-rw-r--r--lib/private/notification/manager.php191
-rw-r--r--lib/private/notification/notification.php446
-rw-r--r--lib/private/server.php64
-rw-r--r--lib/private/session/cryptosessiondata.php62
-rw-r--r--lib/private/session/internal.php8
-rw-r--r--lib/private/share/share.php16
-rw-r--r--lib/private/updater.php28
-rw-r--r--lib/private/util.php15
-rw-r--r--lib/public/autoloadnotallowedexception.php36
-rw-r--r--lib/public/files/imimetypeloader.php59
-rw-r--r--lib/public/iservercontainer.php15
-rw-r--r--ocs/routes.php20
-rw-r--r--settings/l10n/cs_CZ.js1
-rw-r--r--settings/l10n/cs_CZ.json1
-rw-r--r--settings/l10n/da.js1
-rw-r--r--settings/l10n/da.json1
-rw-r--r--settings/l10n/de.js1
-rw-r--r--settings/l10n/de.json1
-rw-r--r--settings/l10n/de_DE.js1
-rw-r--r--settings/l10n/de_DE.json1
-rw-r--r--settings/l10n/el.js2
-rw-r--r--settings/l10n/el.json2
-rw-r--r--settings/l10n/en_GB.js1
-rw-r--r--settings/l10n/en_GB.json1
-rw-r--r--settings/l10n/es.js6
-rw-r--r--settings/l10n/es.json6
-rw-r--r--settings/l10n/et_EE.js1
-rw-r--r--settings/l10n/et_EE.json1
-rw-r--r--settings/l10n/fa.js3
-rw-r--r--settings/l10n/fa.json3
-rw-r--r--settings/l10n/fi_FI.js2
-rw-r--r--settings/l10n/fi_FI.json2
-rw-r--r--settings/l10n/fr.js1
-rw-r--r--settings/l10n/fr.json1
-rw-r--r--settings/l10n/gl.js1
-rw-r--r--settings/l10n/gl.json1
-rw-r--r--settings/l10n/hu_HU.js4
-rw-r--r--settings/l10n/hu_HU.json4
-rw-r--r--settings/l10n/id.js1
-rw-r--r--settings/l10n/id.json1
-rw-r--r--settings/l10n/it.js2
-rw-r--r--settings/l10n/it.json2
-rw-r--r--settings/l10n/ko.js1
-rw-r--r--settings/l10n/ko.json1
-rw-r--r--settings/l10n/nb_NO.js1
-rw-r--r--settings/l10n/nb_NO.json1
-rw-r--r--settings/l10n/nl.js2
-rw-r--r--settings/l10n/nl.json2
-rw-r--r--settings/l10n/oc.js1
-rw-r--r--settings/l10n/oc.json1
-rw-r--r--settings/l10n/pt_BR.js2
-rw-r--r--settings/l10n/pt_BR.json2
-rw-r--r--settings/l10n/pt_PT.js2
-rw-r--r--settings/l10n/pt_PT.json2
-rw-r--r--settings/l10n/ru.js1
-rw-r--r--settings/l10n/ru.json1
-rw-r--r--settings/l10n/sr.js1
-rw-r--r--settings/l10n/sr.json1
-rw-r--r--settings/l10n/th_TH.js2
-rw-r--r--settings/l10n/th_TH.json2
-rw-r--r--settings/l10n/tr.js1
-rw-r--r--settings/l10n/tr.json1
-rw-r--r--settings/l10n/zh_CN.js1
-rw-r--r--settings/l10n/zh_CN.json1
-rw-r--r--settings/templates/admin.php10
-rw-r--r--settings/templates/personal.php2
-rw-r--r--settings/users.php2
-rw-r--r--tests/bootstrap.php5
-rw-r--r--tests/core/command/maintenance/mimetype/updatedbtest.php184
-rw-r--r--tests/karma.config.js10
-rw-r--r--tests/lib/appconfig.php451
-rw-r--r--tests/lib/appframework/http/JSONResponseTest.php4
-rw-r--r--tests/lib/files/type/loadertest.php93
-rw-r--r--tests/lib/memcache/memcached.php23
-rw-r--r--tests/lib/notification/actiontest.php236
-rw-r--r--tests/lib/notification/managertest.php345
-rw-r--r--tests/lib/notification/notificationtest.php601
-rw-r--r--tests/lib/repair/repairmimetypes.php29
-rw-r--r--tests/lib/server.php2
-rw-r--r--tests/lib/session/cryptowrappingtest.php13
-rw-r--r--tests/lib/updater.php74
-rw-r--r--themes/example/defaults.php38
-rw-r--r--version.php11
539 files changed, 8197 insertions, 2551 deletions
diff --git a/apps/encryption/appinfo/register_command.php b/apps/encryption/appinfo/register_command.php
index 4fdf7ecec38..0f03b63560a 100644
--- a/apps/encryption/appinfo/register_command.php
+++ b/apps/encryption/appinfo/register_command.php
@@ -21,10 +21,17 @@
*/
use OCA\Encryption\Command\MigrateKeys;
+use Symfony\Component\Console\Helper\QuestionHelper;
$userManager = OC::$server->getUserManager();
$view = new \OC\Files\View();
$config = \OC::$server->getConfig();
+$userSession = \OC::$server->getUserSession();
$connection = \OC::$server->getDatabaseConnection();
$logger = \OC::$server->getLogger();
+$questionHelper = new QuestionHelper();
+$crypt = new \OCA\Encryption\Crypto\Crypt($logger, $userSession, $config);
+$util = new \OCA\Encryption\Util($view, $crypt, $logger, $userSession, $config, $userManager);
+
$application->add(new MigrateKeys($userManager, $view, $connection, $config, $logger));
+$application->add(new \OCA\Encryption\Command\EnableMasterKey($util, $config, $questionHelper));
diff --git a/apps/encryption/command/enablemasterkey.php b/apps/encryption/command/enablemasterkey.php
new file mode 100644
index 00000000000..f49579a3b81
--- /dev/null
+++ b/apps/encryption/command/enablemasterkey.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+
+namespace OCA\Encryption\Command;
+
+
+use OCA\Encryption\Util;
+use OCP\IConfig;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Helper\QuestionHelper;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
+
+class EnableMasterKey extends Command {
+
+ /** @var Util */
+ protected $util;
+
+ /** @var IConfig */
+ protected $config;
+
+ /** @var QuestionHelper */
+ protected $questionHelper;
+
+ /**
+ * @param Util $util
+ * @param IConfig $config
+ * @param QuestionHelper $questionHelper
+ */
+ public function __construct(Util $util,
+ IConfig $config,
+ QuestionHelper $questionHelper) {
+
+ $this->util = $util;
+ $this->config = $config;
+ $this->questionHelper = $questionHelper;
+ parent::__construct();
+ }
+
+ protected function configure() {
+ $this
+ ->setName('encryption:enable-master-key')
+ ->setDescription('Enable the master key. Only available for fresh installations with no existing encrypted data! There is also no way to disable it again.');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+
+ $isAlreadyEnabled = $this->util->isMasterKeyEnabled();
+
+ if($isAlreadyEnabled) {
+ $output->writeln('Master key already enabled');
+ } else {
+ $question = new ConfirmationQuestion(
+ 'Warning: Only available for fresh installations with no existing encrypted data! '
+ . 'There is also no way to disable it again. Do you want to continue? (y/n) ', false);
+ if ($this->questionHelper->ask($input, $output, $question)) {
+ $this->config->setAppValue('encryption', 'useMasterKey', '1');
+ $output->writeln('Master key successfully enabled.');
+ } else {
+ $output->writeln('aborted.');
+ }
+ }
+
+ }
+
+}
diff --git a/apps/encryption/l10n/cs_CZ.js b/apps/encryption/l10n/cs_CZ.js
index e9477dd54db..661731c31d3 100644
--- a/apps/encryption/l10n/cs_CZ.js
+++ b/apps/encryption/l10n/cs_CZ.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče ve vašem osobním nastavení, abyste znovu získali přístup k vašim zašifrovaným souborům.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste",
"Encryption App is enabled and ready" : "Aplikace šifrování je již povolena",
+ "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Soubor nelze načíst, pravděpodobně se jedná o sdílený soubor. Požádejte prosím vlastníka souboru, aby vám jej znovu sdílel.",
"The share will expire on %s." : "Sdílení vyprší %s.",
diff --git a/apps/encryption/l10n/cs_CZ.json b/apps/encryption/l10n/cs_CZ.json
index ed75239894e..1b530d137ed 100644
--- a/apps/encryption/l10n/cs_CZ.json
+++ b/apps/encryption/l10n/cs_CZ.json
@@ -23,6 +23,7 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče ve vašem osobním nastavení, abyste znovu získali přístup k vašim zašifrovaným souborům.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste",
"Encryption App is enabled and ready" : "Aplikace šifrování je již povolena",
+ "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Soubor nelze načíst, pravděpodobně se jedná o sdílený soubor. Požádejte prosím vlastníka souboru, aby vám jej znovu sdílel.",
"The share will expire on %s." : "Sdílení vyprší %s.",
diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js
index 516722cdc0f..cadedbcc0d4 100644
--- a/apps/encryption/l10n/es.js
+++ b/apps/encryption/l10n/es.js
@@ -25,10 +25,13 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.",
"Encryption App is enabled and ready" : "Cifrado App está habilitada y lista",
+ "one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede leer este archivo, probablemente sea un archivo compartido. Consulte con el propietario del mismo y que lo vuelva a compartir con usted.",
+ "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 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nEl administrador ha habilitado el cifrado del lado servidor. Sus archivos serán cifrados usando como contraseña: '%s'.\n\nPor favor logese en el interfaz web, vaya a la sección , 'Modulo básico de cifrado' de sus opciones personales y actualice su contraseña tecleando esta contraseña en el campo 'contraseña antigua' e introduciendo la neva en su correspondiente campo.\n\n",
"The share will expire on %s." : "El objeto dejará de ser compartido el %s.",
"Cheers!" : "¡Saludos!",
+ "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 \"ownCloud 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,\n<br><br>\nEl administrador ha habilitado el cifrado del lado servidor. Sus archivos serán cifrados usando como contraseña: <strong>%s</strong>\n<br><br>\nPor favor logese en el interfaz web, vaya a la sección , 'Modulo básico de cifrado' de sus opciones personales y actualice su contraseña tecleando esta contraseña en el campo 'contraseña antigua' e introduciendo la neva en su correspondiente campo.<br><br>",
"Enable recovery key" : "Activa la clave de recuperación",
"Disable recovery key" : "Desactiva la clave de recuperación",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clave de recuperación es una clave de cifrado extra que se usa para cifrar ficheros. Permite la recuperación de los ficheros de un usuario si él o ella olvida su contraseña.",
diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json
index b070b9393a3..9bdad94cb6d 100644
--- a/apps/encryption/l10n/es.json
+++ b/apps/encryption/l10n/es.json
@@ -23,10 +23,13 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.",
"Encryption App is enabled and ready" : "Cifrado App está habilitada y lista",
+ "one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede leer este archivo, probablemente sea un archivo compartido. Consulte con el propietario del mismo y que lo vuelva a compartir con usted.",
+ "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 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nEl administrador ha habilitado el cifrado del lado servidor. Sus archivos serán cifrados usando como contraseña: '%s'.\n\nPor favor logese en el interfaz web, vaya a la sección , 'Modulo básico de cifrado' de sus opciones personales y actualice su contraseña tecleando esta contraseña en el campo 'contraseña antigua' e introduciendo la neva en su correspondiente campo.\n\n",
"The share will expire on %s." : "El objeto dejará de ser compartido el %s.",
"Cheers!" : "¡Saludos!",
+ "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 \"ownCloud 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,\n<br><br>\nEl administrador ha habilitado el cifrado del lado servidor. Sus archivos serán cifrados usando como contraseña: <strong>%s</strong>\n<br><br>\nPor favor logese en el interfaz web, vaya a la sección , 'Modulo básico de cifrado' de sus opciones personales y actualice su contraseña tecleando esta contraseña en el campo 'contraseña antigua' e introduciendo la neva en su correspondiente campo.<br><br>",
"Enable recovery key" : "Activa la clave de recuperación",
"Disable recovery key" : "Desactiva la clave de recuperación",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clave de recuperación es una clave de cifrado extra que se usa para cifrar ficheros. Permite la recuperación de los ficheros de un usuario si él o ella olvida su contraseña.",
diff --git a/apps/encryption/l10n/et_EE.js b/apps/encryption/l10n/et_EE.js
index f7e7e1de12c..501772c2808 100644
--- a/apps/encryption/l10n/et_EE.js
+++ b/apps/encryption/l10n/et_EE.js
@@ -14,6 +14,8 @@ OC.L10N.register(
"Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli",
"Password successfully changed." : "Parool edukalt vahetatud.",
"Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.",
+ "Recovery Key disabled" : "Taastevõti on välja lülitatud",
+ "Recovery Key enabled" : "Taastevõti on sisse lülitatud",
"Could not update the private key password." : "Ei suutnud uuendada privaatse võtme parooli.",
"The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.",
"The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.",
@@ -23,8 +25,14 @@ 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." : "Sa ei saa seda faili dekrüpteerida, see on tõenäoliselt jagatud fail. Palun lase omanikul seda faili sinuga uuesti jagada.",
"The share will expire on %s." : "Jagamine aegub %s.",
"Cheers!" : "Terekest!",
+ "Enable recovery key" : "Luba taastevõtme kasutamine",
+ "Disable recovery key" : "Keela taastevõtme kasutamine",
"Recovery key password" : "Taastevõtme parool",
+ "Repeat recovery key password" : "Korda taastevõtme parooli",
"Change recovery key password:" : "Muuda taastevõtme parooli:",
+ "Old recovery key password" : "Vana taastevõtme parool",
+ "New recovery key password" : "Uus taastevõtme parool",
+ "Repeat new recovery key password" : "Korda uut taastevõtme parooli",
"Change Password" : "Muuda parooli",
"Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.",
"Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.",
diff --git a/apps/encryption/l10n/et_EE.json b/apps/encryption/l10n/et_EE.json
index ab02c63a71e..14d4c59f9fc 100644
--- a/apps/encryption/l10n/et_EE.json
+++ b/apps/encryption/l10n/et_EE.json
@@ -12,6 +12,8 @@
"Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli",
"Password successfully changed." : "Parool edukalt vahetatud.",
"Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.",
+ "Recovery Key disabled" : "Taastevõti on välja lülitatud",
+ "Recovery Key enabled" : "Taastevõti on sisse lülitatud",
"Could not update the private key password." : "Ei suutnud uuendada privaatse võtme parooli.",
"The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.",
"The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.",
@@ -21,8 +23,14 @@
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Sa ei saa seda faili dekrüpteerida, see on tõenäoliselt jagatud fail. Palun lase omanikul seda faili sinuga uuesti jagada.",
"The share will expire on %s." : "Jagamine aegub %s.",
"Cheers!" : "Terekest!",
+ "Enable recovery key" : "Luba taastevõtme kasutamine",
+ "Disable recovery key" : "Keela taastevõtme kasutamine",
"Recovery key password" : "Taastevõtme parool",
+ "Repeat recovery key password" : "Korda taastevõtme parooli",
"Change recovery key password:" : "Muuda taastevõtme parooli:",
+ "Old recovery key password" : "Vana taastevõtme parool",
+ "New recovery key password" : "Uus taastevõtme parool",
+ "Repeat new recovery key password" : "Korda uut taastevõtme parooli",
"Change Password" : "Muuda parooli",
"Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.",
"Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.",
diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js
index 68063f083fc..0de35f8ec1c 100644
--- a/apps/encryption/l10n/fr.js
+++ b/apps/encryption/l10n/fr.js
@@ -25,10 +25,13 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée de chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de la clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
"Encryption App is enabled and ready" : "L'application de chiffrement est activée et prête",
+ "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ",
+ "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 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe '%s'.\n\nVeuillez vous connecté dans l'interface web, allez dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là mettez à jour votre mot de passe de chiffrement en entrant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" et votre mot de passe de connexion actuel.\n",
"The share will expire on %s." : "Le partage expirera le %s.",
"Cheers!" : "À bientôt !",
+ "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 \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,<br><br>L'administrateur a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe <strong>%s</strong>. <br><br>Veuillez vous connecté dans l'interface web, allez dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là mettez à jour votre mot de passe de chiffrement en entrant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" et votre mot de passe de connexion actuel. <br><br>",
"Enable recovery key" : "Activer la clé de récupération",
"Disable recovery key" : "Désactiver la clé de récupération",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clé de récupération est une clé supplémentaire utilisée pour chiffrer les fichiers. Elle permet de récupérer les fichiers des utilisateurs s'ils oublient leur mot de passe.",
diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json
index 49616502217..3fa598a72ce 100644
--- a/apps/encryption/l10n/fr.json
+++ b/apps/encryption/l10n/fr.json
@@ -23,10 +23,13 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée de chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de la clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
"Encryption App is enabled and ready" : "L'application de chiffrement est activée et prête",
+ "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ",
+ "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 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe '%s'.\n\nVeuillez vous connecté dans l'interface web, allez dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là mettez à jour votre mot de passe de chiffrement en entrant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" et votre mot de passe de connexion actuel.\n",
"The share will expire on %s." : "Le partage expirera le %s.",
"Cheers!" : "À bientôt !",
+ "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 \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,<br><br>L'administrateur a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe <strong>%s</strong>. <br><br>Veuillez vous connecté dans l'interface web, allez dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là mettez à jour votre mot de passe de chiffrement en entrant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" et votre mot de passe de connexion actuel. <br><br>",
"Enable recovery key" : "Activer la clé de récupération",
"Disable recovery key" : "Désactiver la clé de récupération",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clé de récupération est une clé supplémentaire utilisée pour chiffrer les fichiers. Elle permet de récupérer les fichiers des utilisateurs s'ils oublient leur mot de passe.",
diff --git a/apps/encryption/l10n/th_TH.js b/apps/encryption/l10n/th_TH.js
index 82db7a6e8b3..3c4a5d696fa 100644
--- a/apps/encryption/l10n/th_TH.js
+++ b/apps/encryption/l10n/th_TH.js
@@ -25,10 +25,13 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "รหัสส่วนตัวไม่ถูกต้องสำหรับการเข้ารหัสแอพฯ กรุณาอัพเดทรหัสการเข้ารหัสผ่านส่วนตัวของคุณในการตั้งค่าส่วนบุคคลและในการกู้คืนการเข้าถึงไฟล์ที่มีการเข้ารหัสของคุณ",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "การเข้ารหัสแอพฯ ถูกเปิดใช้งานแต่รหัสของคุณยังไม่ได้เริ่มต้นใช้ โปรดออกและเข้าสู่ระบบอีกครั้ง",
"Encryption App is enabled and ready" : "เข้ารหัสแอพถูกเปิดใช้งานและพร้อมทำงาน",
+ "one-time password for server-side-encryption" : "รหัสผ่านเพียงครั้งเดียว สำหรับเข้ารหัสฝั่งเซิร์ฟเวอร์",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "ไม่สามารถถอดรหัสไฟล์นี้ มันอาจเป็นไฟล์ที่ใช้งานร่วมกัน กรุณาถามเจ้าของไฟล์เพื่อยกเลิกการใช้งานร่วมกัน ",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "ไม่สามารถอ่านไฟล์นี้ มันอาจเป็นไฟล์ที่ใช้งานร่วมกัน กรุณาสอบถามเจ้าของไฟล์เพื่อแชร์ไฟล์กับคุณ",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud 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" : "นี่คุณ<br>\n<br> \nผู้ดูแลระบบเปิดใช้งานการเข้ารหัสฝั่งเซิร์ฟเวอร์ ไฟล์ของคุณจะถูกเข้ารหัสโดยใช้รหัสผ่าน <strong>%s</strong><br>\n<br>\nกรุณาเข้าสู่ระบบเว็บอินเตอร์เฟซไปที่ส่วน \"โมดูลการเข้ารหัส ownCloud พื้นฐาน\" ของการตั้งค่าส่วนบุคคลของคุณและอัพเดทการเข้ารหัสรหัสผ่านของคุณโดย ป้อนรหัสผ่านนี้ในช่อง \"รหัสผ่านเก่าที่เข้าสู่ระบบ\" และเข้าสู่ระบบด้วยรหัสผ่านปัจจุบันของคุณ<br>\n<br>\n",
"The share will expire on %s." : "การแชร์จะหมดอายุในวันที่ %s",
"Cheers!" : "ไชโย!",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud 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>กรุณาเข้าสู่ระบบเว็บอินเตอร์เฟซไปที่ส่วน \"โมดูลการเข้ารหัส ownCloud พื้นฐาน\" ของการตั้งค่าส่วนบุคคลของคุณและอัพเดทการเข้ารหัสรหัสผ่านของคุณโดย ป้อนรหัสผ่านนี้ในช่อง \"รหัสผ่านเก่าที่เข้าสู่ระบบ\" และเข้าสู่ระบบด้วยรหัสผ่านปัจจุบันของคุณ<br><br>",
"Enable recovery key" : "เปิดใช้งานการกู้คืนรหัส",
"Disable recovery key" : "ปิดใช้งานรหัสการกู้คืนรหัส",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "รหัสการกู้คืนเป็นการเข้ารหัสลับพิเศษจะใช้ในการเข้ารหัสไฟล์ มันจะช่วยเรื่องการกู้คืนไฟล์ของผู้ใช้ที่ลืมรหัสผ่าน",
diff --git a/apps/encryption/l10n/th_TH.json b/apps/encryption/l10n/th_TH.json
index 11fd75b87e1..b69cdb8a871 100644
--- a/apps/encryption/l10n/th_TH.json
+++ b/apps/encryption/l10n/th_TH.json
@@ -23,10 +23,13 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "รหัสส่วนตัวไม่ถูกต้องสำหรับการเข้ารหัสแอพฯ กรุณาอัพเดทรหัสการเข้ารหัสผ่านส่วนตัวของคุณในการตั้งค่าส่วนบุคคลและในการกู้คืนการเข้าถึงไฟล์ที่มีการเข้ารหัสของคุณ",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "การเข้ารหัสแอพฯ ถูกเปิดใช้งานแต่รหัสของคุณยังไม่ได้เริ่มต้นใช้ โปรดออกและเข้าสู่ระบบอีกครั้ง",
"Encryption App is enabled and ready" : "เข้ารหัสแอพถูกเปิดใช้งานและพร้อมทำงาน",
+ "one-time password for server-side-encryption" : "รหัสผ่านเพียงครั้งเดียว สำหรับเข้ารหัสฝั่งเซิร์ฟเวอร์",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "ไม่สามารถถอดรหัสไฟล์นี้ มันอาจเป็นไฟล์ที่ใช้งานร่วมกัน กรุณาถามเจ้าของไฟล์เพื่อยกเลิกการใช้งานร่วมกัน ",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "ไม่สามารถอ่านไฟล์นี้ มันอาจเป็นไฟล์ที่ใช้งานร่วมกัน กรุณาสอบถามเจ้าของไฟล์เพื่อแชร์ไฟล์กับคุณ",
+ "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud 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" : "นี่คุณ<br>\n<br> \nผู้ดูแลระบบเปิดใช้งานการเข้ารหัสฝั่งเซิร์ฟเวอร์ ไฟล์ของคุณจะถูกเข้ารหัสโดยใช้รหัสผ่าน <strong>%s</strong><br>\n<br>\nกรุณาเข้าสู่ระบบเว็บอินเตอร์เฟซไปที่ส่วน \"โมดูลการเข้ารหัส ownCloud พื้นฐาน\" ของการตั้งค่าส่วนบุคคลของคุณและอัพเดทการเข้ารหัสรหัสผ่านของคุณโดย ป้อนรหัสผ่านนี้ในช่อง \"รหัสผ่านเก่าที่เข้าสู่ระบบ\" และเข้าสู่ระบบด้วยรหัสผ่านปัจจุบันของคุณ<br>\n<br>\n",
"The share will expire on %s." : "การแชร์จะหมดอายุในวันที่ %s",
"Cheers!" : "ไชโย!",
+ "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud 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>กรุณาเข้าสู่ระบบเว็บอินเตอร์เฟซไปที่ส่วน \"โมดูลการเข้ารหัส ownCloud พื้นฐาน\" ของการตั้งค่าส่วนบุคคลของคุณและอัพเดทการเข้ารหัสรหัสผ่านของคุณโดย ป้อนรหัสผ่านนี้ในช่อง \"รหัสผ่านเก่าที่เข้าสู่ระบบ\" และเข้าสู่ระบบด้วยรหัสผ่านปัจจุบันของคุณ<br><br>",
"Enable recovery key" : "เปิดใช้งานการกู้คืนรหัส",
"Disable recovery key" : "ปิดใช้งานรหัสการกู้คืนรหัส",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "รหัสการกู้คืนเป็นการเข้ารหัสลับพิเศษจะใช้ในการเข้ารหัสไฟล์ มันจะช่วยเรื่องการกู้คืนไฟล์ของผู้ใช้ที่ลืมรหัสผ่าน",
diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php
index 1bd6af2eca7..d2925e1b6be 100644
--- a/apps/encryption/lib/crypto/encryption.php
+++ b/apps/encryption/lib/crypto/encryption.php
@@ -84,6 +84,9 @@ class Encryption implements IEncryptionModule {
/** @var EncryptAll */
private $encryptAll;
+ /** @var bool */
+ private $useMasterPassword;
+
/**
*
* @param Crypt $crypt
@@ -105,6 +108,7 @@ class Encryption implements IEncryptionModule {
$this->encryptAll = $encryptAll;
$this->logger = $logger;
$this->l = $il10n;
+ $this->useMasterPassword = $util->isMasterKeyEnabled();
}
/**
@@ -193,23 +197,26 @@ class Encryption implements IEncryptionModule {
$this->writeCache = '';
}
$publicKeys = array();
- foreach ($this->accessList['users'] as $uid) {
- try {
- $publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
- } catch (PublicKeyMissingException $e) {
- $this->logger->warning(
- 'no public key found for user "{uid}", user will not be able to read the file',
- ['app' => 'encryption', 'uid' => $uid]
- );
- // if the public key of the owner is missing we should fail
- if ($uid === $this->user) {
- throw $e;
+ if ($this->useMasterPassword === true) {
+ $publicKeys[$this->keyManager->getMasterKeyId()] = $this->keyManager->getPublicMasterKey();
+ } else {
+ foreach ($this->accessList['users'] as $uid) {
+ try {
+ $publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
+ } catch (PublicKeyMissingException $e) {
+ $this->logger->warning(
+ 'no public key found for user "{uid}", user will not be able to read the file',
+ ['app' => 'encryption', 'uid' => $uid]
+ );
+ // if the public key of the owner is missing we should fail
+ if ($uid === $this->user) {
+ throw $e;
+ }
}
}
}
$publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->user);
-
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
}
@@ -318,8 +325,12 @@ class Encryption implements IEncryptionModule {
if (!empty($fileKey)) {
$publicKeys = array();
- foreach ($accessList['users'] as $user) {
- $publicKeys[$user] = $this->keyManager->getPublicKey($user);
+ if ($this->useMasterPassword === true) {
+ $publicKeys[$this->keyManager->getMasterKeyId()] = $this->keyManager->getPublicMasterKey();
+ } else {
+ foreach ($accessList['users'] as $user) {
+ $publicKeys[$user] = $this->keyManager->getPublicKey($user);
+ }
}
$publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $uid);
diff --git a/apps/encryption/lib/keymanager.php b/apps/encryption/lib/keymanager.php
index 6c793e5964f..c4507228878 100644
--- a/apps/encryption/lib/keymanager.php
+++ b/apps/encryption/lib/keymanager.php
@@ -55,6 +55,10 @@ class KeyManager {
*/
private $publicShareKeyId;
/**
+ * @var string
+ */
+ private $masterKeyId;
+ /**
* @var string UserID
*/
private $keyId;
@@ -131,10 +135,20 @@ class KeyManager {
$this->config->setAppValue('encryption', 'publicShareKeyId', $this->publicShareKeyId);
}
+ $this->masterKeyId = $this->config->getAppValue('encryption',
+ 'masterKeyId');
+ if (empty($this->masterKeyId)) {
+ $this->masterKeyId = 'master_' . substr(md5(time()), 0, 8);
+ $this->config->setAppValue('encryption', 'masterKeyId', $this->masterKeyId);
+ }
+
$this->keyId = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
$this->log = $log;
}
+ /**
+ * check if key pair for public link shares exists, if not we create one
+ */
public function validateShareKey() {
$shareKey = $this->getPublicShareKey();
if (empty($shareKey)) {
@@ -153,6 +167,26 @@ class KeyManager {
}
/**
+ * check if a key pair for the master key exists, if not we create one
+ */
+ public function validateMasterKey() {
+ $masterKey = $this->getPublicMasterKey();
+ if (empty($masterKey)) {
+ $keyPair = $this->crypt->createKeyPair();
+
+ // Save public key
+ $this->keyStorage->setSystemUserKey(
+ $this->masterKeyId . '.publicKey', $keyPair['publicKey'],
+ Encryption::ID);
+
+ // Encrypt private key with system password
+ $encryptedKey = $this->crypt->encryptPrivateKey($keyPair['privateKey'], $this->getMasterKeyPassword(), $this->masterKeyId);
+ $header = $this->crypt->generateHeader();
+ $this->setSystemPrivateKey($this->masterKeyId, $header . $encryptedKey);
+ }
+ }
+
+ /**
* @return bool
*/
public function recoveryKeyExists() {
@@ -304,8 +338,15 @@ class KeyManager {
$this->session->setStatus(Session::INIT_EXECUTED);
+
try {
- $privateKey = $this->getPrivateKey($uid);
+ if($this->util->isMasterKeyEnabled()) {
+ $uid = $this->getMasterKeyId();
+ $passPhrase = $this->getMasterKeyPassword();
+ $privateKey = $this->getSystemPrivateKey($uid);
+ } else {
+ $privateKey = $this->getPrivateKey($uid);
+ }
$privateKey = $this->crypt->decryptPrivateKey($privateKey, $passPhrase, $uid);
} catch (PrivateKeyMissingException $e) {
return false;
@@ -345,6 +386,10 @@ class KeyManager {
public function getFileKey($path, $uid) {
$encryptedFileKey = $this->keyStorage->getFileKey($path, $this->fileKeyId, Encryption::ID);
+ if ($this->util->isMasterKeyEnabled()) {
+ $uid = $this->getMasterKeyId();
+ }
+
if (is_null($uid)) {
$uid = $this->getPublicShareKeyId();
$shareKey = $this->getShareKey($path, $uid);
@@ -566,4 +611,37 @@ class KeyManager {
return $publicKeys;
}
+
+ /**
+ * get master key password
+ *
+ * @return string
+ * @throws \Exception
+ */
+ protected function getMasterKeyPassword() {
+ $password = $this->config->getSystemValue('secret');
+ if (empty($password)){
+ throw new \Exception('Can not get secret from ownCloud instance');
+ }
+
+ return $password;
+ }
+
+ /**
+ * return master key id
+ *
+ * @return string
+ */
+ public function getMasterKeyId() {
+ return $this->masterKeyId;
+ }
+
+ /**
+ * get public master key
+ *
+ * @return string
+ */
+ public function getPublicMasterKey() {
+ return $this->keyStorage->getSystemUserKey($this->masterKeyId . '.publicKey', Encryption::ID);
+ }
}
diff --git a/apps/encryption/lib/users/setup.php b/apps/encryption/lib/users/setup.php
index 433ea824c9b..d4f7c374547 100644
--- a/apps/encryption/lib/users/setup.php
+++ b/apps/encryption/lib/users/setup.php
@@ -84,6 +84,7 @@ class Setup {
*/
public function setupServerSide($uid, $password) {
$this->keyManager->validateShareKey();
+ $this->keyManager->validateMasterKey();
// Check if user already has keys
if (!$this->keyManager->userHasKeys($uid)) {
return $this->keyManager->storeKeyPair($uid, $password,
diff --git a/apps/encryption/lib/util.php b/apps/encryption/lib/util.php
index fbedc5d6077..e9f916eff38 100644
--- a/apps/encryption/lib/util.php
+++ b/apps/encryption/lib/util.php
@@ -102,6 +102,16 @@ class Util {
}
/**
+ * check if master key is enabled
+ *
+ * @return bool
+ */
+ public function isMasterKeyEnabled() {
+ $userMasterKey = $this->config->getAppValue('encryption', 'useMasterKey', '0');
+ return ($userMasterKey === '1');
+ }
+
+ /**
* @param $enabled
* @return bool
*/
diff --git a/apps/encryption/tests/command/testenablemasterkey.php b/apps/encryption/tests/command/testenablemasterkey.php
new file mode 100644
index 00000000000..c905329269e
--- /dev/null
+++ b/apps/encryption/tests/command/testenablemasterkey.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * @author Björn Schießle <schiessle@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+
+namespace OCA\Encryption\Tests\Command;
+
+
+use OCA\Encryption\Command\EnableMasterKey;
+use Test\TestCase;
+
+class TestEnableMasterKey extends TestCase {
+
+ /** @var EnableMasterKey */
+ protected $enableMasterKey;
+
+ /** @var Util | \PHPUnit_Framework_MockObject_MockObject */
+ protected $util;
+
+ /** @var \OCP\IConfig | \PHPUnit_Framework_MockObject_MockObject */
+ protected $config;
+
+ /** @var \Symfony\Component\Console\Helper\QuestionHelper | \PHPUnit_Framework_MockObject_MockObject */
+ protected $questionHelper;
+
+ /** @var \Symfony\Component\Console\Output\OutputInterface | \PHPUnit_Framework_MockObject_MockObject */
+ protected $output;
+
+ /** @var \Symfony\Component\Console\Input\InputInterface | \PHPUnit_Framework_MockObject_MockObject */
+ protected $input;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->util = $this->getMockBuilder('OCA\Encryption\Util')
+ ->disableOriginalConstructor()->getMock();
+ $this->config = $this->getMockBuilder('OCP\IConfig')
+ ->disableOriginalConstructor()->getMock();
+ $this->questionHelper = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
+ ->disableOriginalConstructor()->getMock();
+ $this->output = $this->getMockBuilder('Symfony\Component\Console\Output\OutputInterface')
+ ->disableOriginalConstructor()->getMock();
+ $this->input = $this->getMockBuilder('Symfony\Component\Console\Input\InputInterface')
+ ->disableOriginalConstructor()->getMock();
+
+ $this->enableMasterKey = new EnableMasterKey($this->util, $this->config, $this->questionHelper);
+ }
+
+ /**
+ * @dataProvider dataTestExecute
+ *
+ * @param bool $isAlreadyEnabled
+ * @param string $answer
+ */
+ public function testExecute($isAlreadyEnabled, $answer) {
+
+ $this->util->expects($this->once())->method('isMasterKeyEnabled')
+ ->willReturn($isAlreadyEnabled);
+
+ if ($isAlreadyEnabled) {
+ $this->output->expects($this->once())->method('writeln')
+ ->with('Master key already enabled');
+ } else {
+ if ($answer === 'y') {
+ $this->questionHelper->expects($this->once())->method('ask')->willReturn(true);
+ $this->config->expects($this->once())->method('setAppValue')
+ ->with('encryption', 'useMasterKey', '1');
+ } else {
+ $this->questionHelper->expects($this->once())->method('ask')->willReturn(false);
+ $this->config->expects($this->never())->method('setAppValue');
+
+ }
+ }
+
+ $this->invokePrivate($this->enableMasterKey, 'execute', [$this->input, $this->output]);
+ }
+
+ public function dataTestExecute() {
+ return [
+ [true, ''],
+ [false, 'y'],
+ [false, 'n'],
+ [false, '']
+ ];
+ }
+}
diff --git a/apps/encryption/tests/lib/KeyManagerTest.php b/apps/encryption/tests/lib/KeyManagerTest.php
index 71b00cf254a..8f1da623efb 100644
--- a/apps/encryption/tests/lib/KeyManagerTest.php
+++ b/apps/encryption/tests/lib/KeyManagerTest.php
@@ -27,6 +27,7 @@ namespace OCA\Encryption\Tests;
use OCA\Encryption\KeyManager;
+use OCA\Encryption\Session;
use Test\TestCase;
class KeyManagerTest extends TestCase {
@@ -237,24 +238,62 @@ class KeyManagerTest extends TestCase {
}
+ /**
+ * @dataProvider dataTestInit
+ *
+ * @param bool $useMasterKey
+ */
+ public function testInit($useMasterKey) {
+
+ $instance = $this->getMockBuilder('OCA\Encryption\KeyManager')
+ ->setConstructorArgs(
+ [
+ $this->keyStorageMock,
+ $this->cryptMock,
+ $this->configMock,
+ $this->userMock,
+ $this->sessionMock,
+ $this->logMock,
+ $this->utilMock
+ ]
+ )->setMethods(['getMasterKeyId', 'getMasterKeyPassword', 'getSystemPrivateKey', 'getPrivateKey'])
+ ->getMock();
- public function testInit() {
- $this->keyStorageMock->expects($this->any())
- ->method('getUserKey')
- ->with($this->equalTo($this->userId), $this->equalTo('privateKey'))
- ->willReturn('privateKey');
- $this->cryptMock->expects($this->any())
- ->method('decryptPrivateKey')
- ->with($this->equalTo('privateKey'), $this->equalTo('pass'))
- ->willReturn('decryptedPrivateKey');
+ $this->utilMock->expects($this->once())->method('isMasterKeyEnabled')
+ ->willReturn($useMasterKey);
+
+ $this->sessionMock->expects($this->at(0))->method('setStatus')
+ ->with(Session::INIT_EXECUTED);
+
+ $instance->expects($this->any())->method('getMasterKeyId')->willReturn('masterKeyId');
+ $instance->expects($this->any())->method('getMasterKeyPassword')->willReturn('masterKeyPassword');
+ $instance->expects($this->any())->method('getSystemPrivateKey')->with('masterKeyId')->willReturn('privateMasterKey');
+ $instance->expects($this->any())->method('getPrivateKey')->with($this->userId)->willReturn('privateUserKey');
+
+ if($useMasterKey) {
+ $this->cryptMock->expects($this->once())->method('decryptPrivateKey')
+ ->with('privateMasterKey', 'masterKeyPassword', 'masterKeyId')
+ ->willReturn('key');
+ } else {
+ $this->cryptMock->expects($this->once())->method('decryptPrivateKey')
+ ->with('privateUserKey', 'pass', $this->userId)
+ ->willReturn('key');
+ }
+ $this->sessionMock->expects($this->once())->method('setPrivateKey')
+ ->with('key');
- $this->assertTrue(
- $this->instance->init($this->userId, 'pass')
- );
+ $this->assertTrue($instance->init($this->userId, 'pass'));
+ }
+ public function dataTestInit() {
+ return [
+ [true],
+ [false]
+ ];
}
+
public function testSetRecoveryKey() {
$this->keyStorageMock->expects($this->exactly(2))
->method('setSystemUserKey')
@@ -401,5 +440,92 @@ class KeyManagerTest extends TestCase {
);
}
+ public function testGetMasterKeyId() {
+ $this->assertSame('systemKeyId', $this->instance->getMasterKeyId());
+ }
+
+ public function testGetPublicMasterKey() {
+ $this->keyStorageMock->expects($this->once())->method('getSystemUserKey')
+ ->with('systemKeyId.publicKey', \OCA\Encryption\Crypto\Encryption::ID)
+ ->willReturn(true);
+
+ $this->assertTrue(
+ $this->instance->getPublicMasterKey()
+ );
+ }
+
+ public function testGetMasterKeyPassword() {
+ $this->configMock->expects($this->once())->method('getSystemValue')->with('secret')
+ ->willReturn('password');
+
+ $this->assertSame('password',
+ $this->invokePrivate($this->instance, 'getMasterKeyPassword', [])
+ );
+ }
+
+ /**
+ * @expectedException \Exception
+ */
+ public function testGetMasterKeyPasswordException() {
+ $this->configMock->expects($this->once())->method('getSystemValue')->with('secret')
+ ->willReturn('');
+
+ $this->invokePrivate($this->instance, 'getMasterKeyPassword', []);
+ }
+
+ /**
+ * @dataProvider dataTestValidateMasterKey
+ *
+ * @param $masterKey
+ */
+ public function testValidateMasterKey($masterKey) {
+
+ /** @var \OCA\Encryption\KeyManager | \PHPUnit_Framework_MockObject_MockObject $instance */
+ $instance = $this->getMockBuilder('OCA\Encryption\KeyManager')
+ ->setConstructorArgs(
+ [
+ $this->keyStorageMock,
+ $this->cryptMock,
+ $this->configMock,
+ $this->userMock,
+ $this->sessionMock,
+ $this->logMock,
+ $this->utilMock
+ ]
+ )->setMethods(['getPublicMasterKey', 'setSystemPrivateKey', 'getMasterKeyPassword'])
+ ->getMock();
+
+ $instance->expects($this->once())->method('getPublicMasterKey')
+ ->willReturn($masterKey);
+
+ $instance->expects($this->any())->method('getMasterKeyPassword')->willReturn('masterKeyPassword');
+ $this->cryptMock->expects($this->any())->method('generateHeader')->willReturn('header');
+
+ if(empty($masterKey)) {
+ $this->cryptMock->expects($this->once())->method('createKeyPair')
+ ->willReturn(['publicKey' => 'public', 'privateKey' => 'private']);
+ $this->keyStorageMock->expects($this->once())->method('setSystemUserKey')
+ ->with('systemKeyId.publicKey', 'public', \OCA\Encryption\Crypto\Encryption::ID);
+ $this->cryptMock->expects($this->once())->method('encryptPrivateKey')
+ ->with('private', 'masterKeyPassword', 'systemKeyId')
+ ->willReturn('EncryptedKey');
+ $instance->expects($this->once())->method('setSystemPrivateKey')
+ ->with('systemKeyId', 'headerEncryptedKey');
+ } else {
+ $this->cryptMock->expects($this->never())->method('createKeyPair');
+ $this->keyStorageMock->expects($this->never())->method('setSystemUserKey');
+ $this->cryptMock->expects($this->never())->method('encryptPrivateKey');
+ $instance->expects($this->never())->method('setSystemPrivateKey');
+ }
+
+ $instance->validateMasterKey();
+ }
+
+ public function dataTestValidateMasterKey() {
+ return [
+ ['masterKey'],
+ ['']
+ ];
+ }
}
diff --git a/apps/encryption/tests/lib/UtilTest.php b/apps/encryption/tests/lib/UtilTest.php
index e75e8ea36b4..9988ff93f43 100644
--- a/apps/encryption/tests/lib/UtilTest.php
+++ b/apps/encryption/tests/lib/UtilTest.php
@@ -132,4 +132,25 @@ class UtilTest extends TestCase {
return $default ?: null;
}
+ /**
+ * @dataProvider dataTestIsMasterKeyEnabled
+ *
+ * @param string $value
+ * @param bool $expect
+ */
+ public function testIsMasterKeyEnabled($value, $expect) {
+ $this->configMock->expects($this->once())->method('getAppValue')
+ ->with('encryption', 'useMasterKey', '0')->willReturn($value);
+ $this->assertSame($expect,
+ $this->instance->isMasterKeyEnabled()
+ );
+ }
+
+ public function dataTestIsMasterKeyEnabled() {
+ return [
+ ['0', false],
+ ['1', true]
+ ];
+ }
+
}
diff --git a/apps/encryption/tests/lib/users/SetupTest.php b/apps/encryption/tests/lib/users/SetupTest.php
index e6936c5c12e..bca3ff58b07 100644
--- a/apps/encryption/tests/lib/users/SetupTest.php
+++ b/apps/encryption/tests/lib/users/SetupTest.php
@@ -43,6 +43,8 @@ class SetupTest extends TestCase {
private $instance;
public function testSetupServerSide() {
+ $this->keyManagerMock->expects($this->exactly(2))->method('validateShareKey');
+ $this->keyManagerMock->expects($this->exactly(2))->method('validateMasterKey');
$this->keyManagerMock->expects($this->exactly(2))
->method('userHasKeys')
->with('admin')
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index 375666141ba..05033dc2fed 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -18,11 +18,6 @@
z-index: -30;
}
-#new {
- z-index: 1010;
- float: left;
- padding: 0 !important; /* override default control bar button padding */
-}
#trash {
margin-right: 8px;
float: right;
@@ -30,49 +25,8 @@
padding: 10px;
font-weight: normal;
}
-#new > a {
- padding: 14px 10px;
- position: relative;
- top: 7px;
-}
-#new.active {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
- border-bottom: none;
- background: #f8f8f8;
-}
-#new > ul {
- display: none;
- position: fixed;
- min-width: 112px;
- z-index: -10;
- padding: 8px;
- padding-bottom: 0;
- margin-top: 13.5px;
- margin-left: -1px;
- text-align: left;
- background: #f8f8f8;
- border: 1px solid #ddd;
- border: 1px solid rgba(240, 240, 240, 0.9);
- border-radius: 5px;
- border-top-left-radius: 0;
- box-shadow: 0 2px 7px rgba(170,170,170,.4);
-}
-#new > ul > li {
- height: 36px;
- margin: 5px;
- padding-left: 42px;
- padding-bottom: 2px;
- background-position: left center;
- cursor: pointer;
-}
-#new > ul > li > p {
- cursor: pointer;
- padding-top: 7px;
- padding-bottom: 7px;
-}
-#new .error, #fileList .error {
+.newFileMenu .error, #fileList .error {
color: #e9322d;
border-color: #e9322d;
-webkit-box-shadow: 0 0 6px #f8b9b7;
@@ -144,6 +98,30 @@
margin-bottom: 44px;
}
+#app-navigation .nav-files a.nav-icon-files {
+ width: auto;
+}
+/* button needs overrides due to navigation styles */
+#app-navigation .nav-files a.new {
+ width: 40px;
+ height: 32px;
+ padding: 0 10px;
+ margin: 0;
+ cursor: pointer;
+}
+
+#app-navigation .nav-files a {
+ display: inline-block;
+}
+
+#app-navigation .nav-files a.new.hidden {
+ display: none;
+}
+
+#app-navigation .nav-files a.new.disabled {
+ opacity: 0.3;
+}
+
#filestable tbody tr {
background-color: #fff;
height: 40px;
@@ -600,7 +578,8 @@ a.action > img {
#fileList a.action.action-menu {
padding: 17px 14px;
}
-#fileList .fileActionsMenu {
+
+#fileList .popovermenu {
margin-right: 21px;
}
@@ -655,13 +634,13 @@ a.action > img {
}
/* properly display actions in the popover menu */
-#fileList .fileActionsMenu .action {
+#fileList .popovermenu .action {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)" !important;
filter: alpha(opacity=50) !important;
opacity: .5 !important;
}
-#fileList .fileActionsMenu .action:hover,
-#fileList .fileActionsMenu .action:focus {
+#fileList .popovermenu .action:hover,
+#fileList .popovermenu .action:focus {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)" !important;
filter: alpha(opacity=100) !important;
opacity: 1 !important;
@@ -745,43 +724,56 @@ table.dragshadow td.size {
opacity: 0;
}
-.fileActionsMenu {
- padding: 4px 12px;
-}
-.fileActionsMenu li {
- padding: 5px 0;
-}
-#fileList .fileActionsMenu a.action img {
+#fileList .popovermenu a.action img {
padding: initial;
}
-#fileList .fileActionsMenu a.action {
+
+#fileList .popovermenu a.action {
padding: 10px;
margin: -10px;
}
-.fileActionsMenu.hidden {
- display: none;
+.newFileMenu {
+ width: 140px;
+ margin-left: -56px;
+ margin-top: 25px;
}
-#fileList .fileActionsMenu .action {
- display: block;
- line-height: 30px;
- padding-left: 5px;
- color: #000;
+.newFileMenu .menuitem {
+ white-space: nowrap;
+ overflow: hidden;
+}
+.newFileMenu.popovermenu .menuitem .icon {
+ margin-bottom: -2px;
+}
+.newFileMenu.popovermenu a.menuitem,
+.newFileMenu.popovermenu label.menuitem,
+.newFileMenu.popovermenu .menuitem {
padding: 0;
+ margin: 0;
+}
+
+.newFileMenu.bubble:after {
+ left: 75px;
+ right: auto;
+}
+.newFileMenu.bubble:before {
+ left: 75px;
+ right: auto;
}
-.fileActionsMenu .action img,
-.fileActionsMenu .action .no-icon {
+.newFileMenu .filenameform {
display: inline-block;
- width: 16px;
- margin-right: 5px;
}
-.fileActionsMenu .action {
- opacity: 0.5;
+.newFileMenu .filenameform input {
+ width: 100px;
}
-.fileActionsMenu li:hover .action {
- opacity: 1;
+#fileList .popovermenu .action {
+ display: block;
+ line-height: 30px;
+ padding-left: 5px;
+ color: #000;
+ padding: 0;
}
diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css
index bd60f831388..07b788b937f 100644
--- a/apps/files/css/upload.css
+++ b/apps/files/css/upload.css
@@ -24,20 +24,6 @@
}
.file_upload_target { display:none; }
.file_upload_form { display:inline; float:left; margin:0; padding:0; cursor:pointer; overflow:visible; }
-#file_upload_start {
- position: relative;
- left: 0;
- top: 0;
- width: 44px;
- height: 44px;
- margin: -5px -3px;
- padding: 0;
- font-size: 16px;
- -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0;
- z-index: 20;
- cursor: pointer;
- overflow: hidden;
-}
#uploadprogresswrapper, #uploadprogresswrapper * {
-moz-box-sizing: border-box;
diff --git a/apps/files/index.php b/apps/files/index.php
index a73caa50fbe..cc007ebdb07 100644
--- a/apps/files/index.php
+++ b/apps/files/index.php
@@ -38,6 +38,7 @@ OCP\Util::addStyle('files', 'upload');
OCP\Util::addStyle('files', 'mobile');
OCP\Util::addscript('files', 'app');
OCP\Util::addscript('files', 'file-upload');
+OCP\Util::addscript('files', 'newfilemenu');
OCP\Util::addscript('files', 'jquery.iframe-transport');
OCP\Util::addscript('files', 'jquery.fileupload');
OCP\Util::addscript('files', 'jquery-visibility');
diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js
index 83d7fd4a178..3a775c29ec6 100644
--- a/apps/files/js/detailsview.js
+++ b/apps/files/js/detailsview.js
@@ -35,7 +35,7 @@
var DetailsView = OC.Backbone.View.extend({
id: 'app-sidebar',
tabName: 'div',
- className: 'detailsView',
+ className: 'detailsView scroll-container',
_template: null,
diff --git a/apps/files/js/detailtabview.js b/apps/files/js/detailtabview.js
index b0e170bc4e7..449047cf252 100644
--- a/apps/files/js/detailtabview.js
+++ b/apps/files/js/detailtabview.js
@@ -84,6 +84,13 @@
*/
getFileInfo: function() {
return this.model;
+ },
+
+ /**
+ * Load the next page of results
+ */
+ nextPage: function() {
+ // load the next page, if applicable
}
});
DetailTabView._TAB_COUNT = 0;
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index 6b6acdb5e01..17f0f777169 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -551,155 +551,6 @@ OC.Upload = {
$('#file_upload_start').attr('multiple', 'multiple');
}
- $(document).click(function(ev) {
- // do not close when clicking in the dropdown
- if ($(ev.target).closest('#new').length){
- return;
- }
- $('#new>ul').hide();
- $('#new').removeClass('active');
- if ($('#new .error').length > 0) {
- $('#new .error').tipsy('hide');
- }
- $('#new li').each(function(i,element) {
- if ($(element).children('p').length === 0) {
- $(element).children('form').remove();
- $(element).append('<p>' + $(element).data('text') + '</p>');
- }
- });
- });
- $('#new').click(function(event) {
- event.stopPropagation();
- });
- $('#new>a').click(function() {
- $('#new>ul').toggle();
- $('#new').toggleClass('active');
- });
- $('#new li').click(function() {
- if ($(this).children('p').length === 0) {
- return;
- }
-
- $('#new .error').tipsy('hide');
-
- $('#new li').each(function(i, element) {
- if ($(element).children('p').length === 0) {
- $(element).children('form').remove();
- $(element).append('<p>' + $(element).data('text') + '</p>');
- }
- });
-
- var type = $(this).data('type');
- var text = $(this).children('p').text();
- $(this).data('text', text);
- $(this).children('p').remove();
-
- // add input field
- var form = $('<form></form>');
- var input = $('<input type="text">');
- var newName = $(this).attr('data-newname') || '';
- var fileType = 'input-' + $(this).attr('data-type');
- if (newName) {
- input.val(newName);
- input.attr('id', fileType);
- }
- var label = $('<label class="hidden-visually" for="">' + escapeHTML(newName) + '</label>');
- label.attr('for', fileType);
-
- form.append(label).append(input);
- $(this).append(form);
- var lastPos;
- var checkInput = function () {
- var filename = input.val();
- if (!Files.isFileNameValid(filename)) {
- // Files.isFileNameValid(filename) throws an exception itself
- } else if (FileList.inList(filename)) {
- throw t('files', '{new_name} already exists', {new_name: filename});
- } else {
- return true;
- }
- };
-
- // verify filename on typing
- input.keyup(function(event) {
- try {
- checkInput();
- input.tipsy('hide');
- input.removeClass('error');
- } catch (error) {
- input.attr('title', error);
- input.tipsy({gravity: 'w', trigger: 'manual'});
- input.tipsy('show');
- input.addClass('error');
- }
- });
-
- input.focus();
- // pre select name up to the extension
- lastPos = newName.lastIndexOf('.');
- if (lastPos === -1) {
- lastPos = newName.length;
- }
- input.selectRange(0, lastPos);
- form.submit(function(event) {
- event.stopPropagation();
- event.preventDefault();
- try {
- checkInput();
- var newname = input.val();
- if (FileList.lastAction) {
- FileList.lastAction();
- }
- var name = FileList.getUniqueName(newname);
- switch(type) {
- case 'file':
- $.post(
- OC.filePath('files', 'ajax', 'newfile.php'),
- {
- dir: FileList.getCurrentDirectory(),
- filename: name
- },
- function(result) {
- if (result.status === 'success') {
- FileList.add(result.data, {animate: true, scrollTo: true});
- } else {
- OC.dialogs.alert(result.data.message, t('core', 'Could not create file'));
- }
- }
- );
- break;
- case 'folder':
- $.post(
- OC.filePath('files','ajax','newfolder.php'),
- {
- dir: FileList.getCurrentDirectory(),
- foldername: name
- },
- function(result) {
- if (result.status === 'success') {
- FileList.add(result.data, {animate: true, scrollTo: true});
- } else {
- OC.dialogs.alert(result.data.message, t('core', 'Could not create folder'));
- }
- }
- );
- break;
- }
- var li = form.parent();
- form.remove();
- /* workaround for IE 9&10 click event trap, 2 lines: */
- $('input').first().focus();
- $('#content').focus();
- li.append('<p>' + li.data('text') + '</p>');
- $('#new>a').click();
- } catch (error) {
- input.attr('title', error);
- input.tipsy({gravity: 'w', trigger: 'manual'});
- input.tipsy('show');
- input.addClass('error');
- }
- });
- });
window.file_upload_param = file_upload_param;
return file_upload_param;
}
diff --git a/apps/files/js/fileactionsmenu.js b/apps/files/js/fileactionsmenu.js
index 623ebde5442..5ab0e42f93e 100644
--- a/apps/files/js/fileactionsmenu.js
+++ b/apps/files/js/fileactionsmenu.js
@@ -14,7 +14,7 @@
'<ul>' +
'{{#each items}}' +
'<li>' +
- '<a href="#" class="action action-{{nameLowerCase}} permanent" data-action="{{name}}">{{#if icon}}<img src="{{icon}}"/>{{else}}<span class="no-icon"></span>{{/if}}<span>{{displayName}}</span></a>' +
+ '<a href="#" class="menuitem action action-{{nameLowerCase}} permanent" data-action="{{name}}">{{#if icon}}<img class="icon" src="{{icon}}"/>{{else}}<span class="no-icon"></span>{{/if}}<span>{{displayName}}</span></a>' +
'</li>' +
'{{/each}}' +
'</ul>';
@@ -26,7 +26,7 @@
*/
var FileActionsMenu = OC.Backbone.View.extend({
tagName: 'div',
- className: 'fileActionsMenu bubble hidden open menu',
+ className: 'fileActionsMenu popovermenu bubble hidden open menu',
/**
* Current context
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 9593ee79e66..c52e414e3a7 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -9,6 +9,9 @@
*/
(function() {
+
+ var TEMPLATE_ADDBUTTON = '<a href="#" class="button new" title="{{addText}}"><img src="{{iconUrl}}"></img></a>';
+
/**
* @class OCA.Files.FileList
* @classdesc
@@ -220,6 +223,8 @@
this.$el.find('#controls').prepend(this.breadcrumb.$el);
+ this._renderNewButton();
+
this.$el.find('thead th .columntitle').click(_.bind(this._onClickHeader, this));
this._onResize = _.debounce(_.bind(this._onResize, this), 100);
@@ -262,6 +267,12 @@
* Destroy / uninitialize this instance.
*/
destroy: function() {
+ if (this._newFileMenu) {
+ this._newFileMenu.remove();
+ }
+ if (this._newButton) {
+ this._newButton.remove();
+ }
// TODO: also unregister other event handlers
this.fileActions.off('registerAction', this._onFileActionsUpdated);
this.fileActions.off('setDefault', this._onFileActionsUpdated);
@@ -291,6 +302,7 @@
* @return {OCA.Files.FileInfoModel} file info model
*/
getModelForFile: function(fileName) {
+ var self = this;
var $tr;
// jQuery object ?
if (fileName.is) {
@@ -318,6 +330,21 @@
if (!model.has('path')) {
model.set('path', this.getCurrentDirectory(), {silent: true});
}
+
+ model.on('change', function(model) {
+ // re-render row
+ var highlightState = $tr.hasClass('highlighted');
+ $tr = self.updateRow(
+ $tr,
+ _.extend({isPreviewAvailable: true}, model.toJSON()),
+ {updateSummary: true, silent: false, animate: true}
+ );
+ $tr.toggleClass('highlighted', highlightState);
+ });
+ model.on('busy', function(model, state) {
+ self.showFileBusyState($tr, state);
+ });
+
return model;
},
@@ -341,6 +368,9 @@
if (!fileName) {
OC.Apps.hideAppSidebar(this._detailsView.$el);
this._detailsView.setFileInfo(null);
+ if (this._currentFileModel) {
+ this._currentFileModel.off();
+ }
this._currentFileModel = null;
return;
}
@@ -1223,6 +1253,10 @@
reload: function() {
this._selectedFiles = {};
this._selectionSummary.clear();
+ if (this._currentFileModel) {
+ this._currentFileModel.off();
+ }
+ this._currentFileModel = null;
this.$el.find('.select-all').prop('checked', false);
this.showMask();
if (this._reloadCall) {
@@ -1555,6 +1589,23 @@
},
/**
+ * Updates the given row with the given file info
+ *
+ * @param {Object} $tr row element
+ * @param {OCA.Files.FileInfo} fileInfo file info
+ * @param {Object} options options
+ *
+ * @return {Object} new row element
+ */
+ updateRow: function($tr, fileInfo, options) {
+ this.files.splice($tr.index(), 1);
+ $tr.remove();
+ $tr = this.add(fileInfo, _.extend({updateSummary: false, silent: true}, options));
+ this.$fileList.trigger($.Event('fileActionsReady', {fileList: this, $files: $tr}));
+ return $tr;
+ },
+
+ /**
* Triggers file rename input field for the given file name.
* If the user enters a new name, the file will be renamed.
*
@@ -1690,6 +1741,106 @@
form.trigger('submit');
});
},
+
+ /**
+ * Create an empty file inside the current directory.
+ *
+ * @param {string} name name of the file
+ *
+ * @return {Promise} promise that will be resolved after the
+ * file was created
+ *
+ * @since 8.2
+ */
+ createFile: function(name) {
+ var self = this;
+ var deferred = $.Deferred();
+ var promise = deferred.promise();
+
+ OCA.Files.Files.isFileNameValid(name);
+ name = this.getUniqueName(name);
+
+ if (this.lastAction) {
+ this.lastAction();
+ }
+
+ $.post(
+ OC.generateUrl('/apps/files/ajax/newfile.php'),
+ {
+ dir: this.getCurrentDirectory(),
+ filename: name
+ },
+ function(result) {
+ if (result.status === 'success') {
+ self.add(result.data, {animate: true, scrollTo: true});
+ deferred.resolve(result.status, result.data);
+ } else {
+ if (result.data && result.data.message) {
+ OC.Notification.showTemporary(result.data.message);
+ } else {
+ OC.Notification.showTemporary(t('core', 'Could not create file'));
+ }
+ deferred.reject(result.status, result.data);
+ }
+ }
+ );
+
+ return promise;
+ },
+
+ /**
+ * Create a directory inside the current directory.
+ *
+ * @param {string} name name of the directory
+ *
+ * @return {Promise} promise that will be resolved after the
+ * directory was created
+ *
+ * @since 8.2
+ */
+ createDirectory: function(name) {
+ var self = this;
+ var deferred = $.Deferred();
+ var promise = deferred.promise();
+
+ OCA.Files.Files.isFileNameValid(name);
+ name = this.getUniqueName(name);
+
+ if (this.lastAction) {
+ this.lastAction();
+ }
+
+ $.post(
+ OC.generateUrl('/apps/files/ajax/newfolder.php'),
+ {
+ dir: this.getCurrentDirectory(),
+ foldername: name
+ },
+ function(result) {
+ if (result.status === 'success') {
+ self.add(result.data, {animate: true, scrollTo: true});
+ deferred.resolve(result.status, result.data);
+ } else {
+ if (result.data && result.data.message) {
+ OC.Notification.showTemporary(result.data.message);
+ } else {
+ OC.Notification.showTemporary(t('core', 'Could not create folder'));
+ }
+ deferred.reject(result.status);
+ }
+ }
+ );
+
+ return promise;
+ },
+
+ /**
+ * Returns whether the given file name exists in the list
+ *
+ * @param {string} file file name
+ *
+ * @return {bool} true if the file exists in the list, false otherwise
+ */
inList:function(file) {
return this.findFileEl(file).length;
},
@@ -2351,6 +2502,47 @@
});
},
+ _renderNewButton: function() {
+ // if an upload button (legacy) already exists, skip
+ if ($('#controls .button.upload').length) {
+ return;
+ }
+ if (!this._addButtonTemplate) {
+ this._addButtonTemplate = Handlebars.compile(TEMPLATE_ADDBUTTON);
+ }
+ var $newButton = $(this._addButtonTemplate({
+ addText: t('files', 'New'),
+ iconUrl: OC.imagePath('core', 'actions/add')
+ }));
+
+ $('#controls .actions').prepend($newButton);
+ $newButton.tooltip({'placement': 'bottom'});
+
+ $newButton.click(_.bind(this._onClickNewButton, this));
+ this._newButton = $newButton;
+ },
+
+ _onClickNewButton: function(event) {
+ var $target = $(event.target);
+ if (!$target.hasClass('.button')) {
+ $target = $target.closest('.button');
+ }
+ this._newButton.tooltip('hide');
+ event.preventDefault();
+ if ($target.hasClass('disabled')) {
+ return false;
+ }
+ if (!this._newFileMenu) {
+ this._newFileMenu = new OCA.Files.NewFileMenu({
+ fileList: this
+ });
+ $('body').append(this._newFileMenu.$el);
+ }
+ this._newFileMenu.showAt($target);
+
+ return false;
+ },
+
/**
* Register a tab view to be added to all views
*/
diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js
new file mode 100644
index 00000000000..4c021e6b873
--- /dev/null
+++ b/apps/files/js/newfilemenu.js
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2014
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+/* global Files */
+
+(function() {
+
+ var TEMPLATE_MENU =
+ '<ul>' +
+ '<li>' +
+ '<label for="file_upload_start" class="menuitem" data-action="upload" title="{{uploadMaxHumanFilesize}}"><span class="svg icon icon-upload"></span><span class="displayname">{{uploadLabel}}</span></label>' +
+ '</li>' +
+ '{{#each items}}' +
+ '<li>' +
+ '<a href="#" class="menuitem" data-templatename="{{templateName}}" data-filetype="{{fileType}}" data-action="{{id}}"><span class="icon {{iconClass}} svg"></span><span class="displayname">{{displayName}}</span></a>' +
+ '</li>' +
+ '{{/each}}' +
+ '</ul>';
+
+ var TEMPLATE_FILENAME_FORM =
+ '<form class="filenameform">' +
+ '<label class="hidden-visually" for="{{cid}}-input-{{fileType}}">{{fileName}}</label>' +
+ '<input id="{{cid}}-input-{{fileType}}" type="text" value="{{fileName}}">' +
+ '</form>';
+
+ /**
+ * Construct a new NewFileMenu instance
+ * @constructs NewFileMenu
+ *
+ * @memberof OCA.Files
+ */
+ var NewFileMenu = OC.Backbone.View.extend({
+ tagName: 'div',
+ className: 'newFileMenu popovermenu bubble hidden open menu',
+
+ events: {
+ 'click .menuitem': '_onClickAction'
+ },
+
+ initialize: function(options) {
+ var self = this;
+ var $uploadEl = $('#file_upload_start');
+ if ($uploadEl.length) {
+ $uploadEl.on('fileuploadstart', function() {
+ self.trigger('actionPerformed', 'upload');
+ });
+ } else {
+ console.warn('Missing upload element "file_upload_start"');
+ }
+
+ this._fileList = options && options.fileList;
+ },
+
+ template: function(data) {
+ if (!OCA.Files.NewFileMenu._TEMPLATE) {
+ OCA.Files.NewFileMenu._TEMPLATE = Handlebars.compile(TEMPLATE_MENU);
+ }
+ return OCA.Files.NewFileMenu._TEMPLATE(data);
+ },
+
+ /**
+ * Event handler whenever an action has been clicked within the menu
+ *
+ * @param {Object} event event object
+ */
+ _onClickAction: function(event) {
+ var $target = $(event.target);
+ if (!$target.hasClass('menuitem')) {
+ $target = $target.closest('.menuitem');
+ }
+ var action = $target.attr('data-action');
+ // note: clicking the upload label will automatically
+ // set the focus on the "file_upload_start" hidden field
+ // which itself triggers the upload dialog.
+ // Currently the upload logic is still in file-upload.js and filelist.js
+ if (action === 'upload') {
+ OC.hideMenus();
+ } else {
+ event.preventDefault();
+ this._promptFileName($target);
+ }
+ },
+
+ _promptFileName: function($target) {
+ var self = this;
+ if (!OCA.Files.NewFileMenu._TEMPLATE_FORM) {
+ OCA.Files.NewFileMenu._TEMPLATE_FORM = Handlebars.compile(TEMPLATE_FILENAME_FORM);
+ }
+
+ if ($target.find('form').length) {
+ $target.find('input').focus();
+ return;
+ }
+
+ // discard other forms
+ this.$el.find('form').remove();
+ this.$el.find('.displayname').removeClass('hidden');
+
+ $target.find('.displayname').addClass('hidden');
+
+ var newName = $target.attr('data-templatename');
+ var fileType = $target.attr('data-filetype');
+ var $form = $(OCA.Files.NewFileMenu._TEMPLATE_FORM({
+ fileName: newName,
+ cid: this.cid,
+ fileType: fileType
+ }));
+
+ //this.trigger('actionPerformed', action);
+ $target.append($form);
+
+ // here comes the OLD code
+ var $input = $form.find('input');
+
+ var lastPos;
+ var checkInput = function () {
+ var filename = $input.val();
+ try {
+ if (!Files.isFileNameValid(filename)) {
+ // Files.isFileNameValid(filename) throws an exception itself
+ } else if (self._fileList.inList(filename)) {
+ throw t('files', '{newname} already exists', {newname: filename});
+ } else {
+ return true;
+ }
+ } catch (error) {
+ $input.attr('title', error);
+ $input.tooltip({placement: 'right', trigger: 'manual'});
+ $input.tooltip('show');
+ $input.addClass('error');
+ }
+ return false;
+ };
+
+ // verify filename on typing
+ $input.keyup(function() {
+ if (checkInput()) {
+ $input.tooltip('hide');
+ $input.removeClass('error');
+ }
+ });
+
+ $input.focus();
+ // pre select name up to the extension
+ lastPos = newName.lastIndexOf('.');
+ if (lastPos === -1) {
+ lastPos = newName.length;
+ }
+ $input.selectRange(0, lastPos);
+
+ $form.submit(function(event) {
+ event.stopPropagation();
+ event.preventDefault();
+
+ if (checkInput()) {
+ var newname = $input.val();
+ self._createFile(fileType, newname);
+ $form.remove();
+ $target.find('.displayname').removeClass('hidden');
+ OC.hideMenus();
+ }
+ });
+ },
+
+ /**
+ * Creates a file with the given type and name.
+ * This calls the matching methods on the attached file list.
+ *
+ * @param {string} fileType file type
+ * @param {string} name file name
+ */
+ _createFile: function(fileType, name) {
+ switch(fileType) {
+ case 'file':
+ this._fileList.createFile(name);
+ break;
+ case 'folder':
+ this._fileList.createDirectory(name);
+ break;
+ default:
+ console.warn('Unknown file type "' + fileType + '"');
+ }
+ },
+
+ /**
+ * Renders the menu with the currently set items
+ */
+ render: function() {
+ this.$el.html(this.template({
+ uploadMaxHumanFileSize: 'TODO',
+ uploadLabel: t('files', 'Upload'),
+ items: [{
+ id: 'file',
+ displayName: t('files', 'Text file'),
+ templateName: t('files', 'New text file.txt'),
+ iconClass: 'icon-filetype-text',
+ fileType: 'file'
+ }, {
+ id: 'folder',
+ displayName: t('files', 'Folder'),
+ templateName: t('files', 'New folder'),
+ iconClass: 'icon-folder',
+ fileType: 'folder'
+ }]
+ }));
+ },
+
+ /**
+ * Displays the menu under the given element
+ *
+ * @param {Object} $target target element
+ */
+ showAt: function($target) {
+ this.render();
+ var targetOffset = $target.offset();
+ this.$el.css({
+ left: targetOffset.left,
+ top: targetOffset.top + $target.height()
+ });
+ this.$el.removeClass('hidden');
+
+ OC.showMenu(null, this.$el);
+ }
+ });
+
+ OCA.Files.NewFileMenu = NewFileMenu;
+
+})();
diff --git a/apps/files/js/tagsplugin.js b/apps/files/js/tagsplugin.js
index ed1105a1706..9f45da9a6e2 100644
--- a/apps/files/js/tagsplugin.js
+++ b/apps/files/js/tagsplugin.js
@@ -92,6 +92,7 @@
actionHandler: function(fileName, context) {
var $actionEl = context.$file.find('.action-favorite');
var $file = context.$file;
+ var fileInfo = context.fileList.files[$file.index()];
var dir = context.dir || context.fileList.getCurrentDirectory();
var tags = $file.attr('data-tags');
if (_.isUndefined(tags)) {
@@ -106,9 +107,11 @@
} else {
tags.push(OC.TAG_FAVORITE);
}
+
+ // pre-toggle the star
toggleStar($actionEl, !isFavorite);
- context.fileInfoModel.set('tags', tags);
+ context.fileInfoModel.trigger('busy', context.fileInfoModel, true);
self.applyFileTags(
dir + '/' + fileName,
@@ -116,17 +119,16 @@
$actionEl,
isFavorite
).then(function(result) {
+ context.fileInfoModel.trigger('busy', context.fileInfoModel, false);
// response from server should contain updated tags
var newTags = result.tags;
if (_.isUndefined(newTags)) {
newTags = tags;
}
- var fileInfo = context.fileList.files[$file.index()];
- // read latest state from result
- toggleStar($actionEl, (newTags.indexOf(OC.TAG_FAVORITE) >= 0));
- $file.attr('data-tags', newTags.join('|'));
- $file.attr('data-favorite', !isFavorite);
- fileInfo.tags = newTags;
+ context.fileInfoModel.set({
+ 'tags': newTags,
+ 'favorite': !isFavorite
+ });
});
}
});
@@ -150,7 +152,13 @@
var oldElementToFile = fileList.elementToFile;
fileList.elementToFile = function($el) {
var fileInfo = oldElementToFile.apply(this, arguments);
- fileInfo.tags = $el.attr('data-tags') || [];
+ var tags = $el.attr('data-tags');
+ if (_.isUndefined(tags)) {
+ tags = '';
+ }
+ tags = tags.split('|');
+ tags = _.without(tags, '');
+ fileInfo.tags = tags;
return fileInfo;
};
},
diff --git a/apps/files/l10n/af_ZA.js b/apps/files/l10n/af_ZA.js
index 1844e8ad363..2061e5ec49c 100644
--- a/apps/files/l10n/af_ZA.js
+++ b/apps/files/l10n/af_ZA.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"files",
{
"Error" : "Fout",
- "Settings" : "Instellings",
- "Folder" : "Omslag"
+ "Folder" : "Omslag",
+ "Settings" : "Instellings"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/af_ZA.json b/apps/files/l10n/af_ZA.json
index 841c572bc7c..95096fd551b 100644
--- a/apps/files/l10n/af_ZA.json
+++ b/apps/files/l10n/af_ZA.json
@@ -1,6 +1,6 @@
{ "translations": {
"Error" : "Fout",
- "Settings" : "Instellings",
- "Folder" : "Omslag"
+ "Folder" : "Omslag",
+ "Settings" : "Instellings"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index d4960b2f370..6dab5f6ba27 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -27,12 +27,12 @@ OC.L10N.register(
"Upload cancelled." : "تم إلغاء عملية رفع الملفات .",
"Could not get result from server." : "تعذر الحصول على نتيجة من الخادم",
"File upload is in progress. Leaving the page now will cancel the upload." : "عملية رفع الملفات قيد التنفيذ. اغلاق الصفحة سوف يلغي عملية رفع الملفات.",
- "{new_name} already exists" : "{new_name} موجود مسبقا",
"Actions" : "* تطبيقات.\n* أنشطة.",
"Download" : "تحميل",
"Pending" : "قيد الانتظار",
"Error moving file" : "حدث خطأ أثناء نقل الملف",
"Error" : "خطأ",
+ "{new_name} already exists" : "{new_name} موجود مسبقا",
"Name" : "اسم",
"Size" : "حجم",
"Modified" : "معدل",
@@ -40,10 +40,15 @@ OC.L10N.register(
"_%n file_::_%n files_" : ["لا يوجد ملفات %n","ملف %n","2 ملف %n","قليل من ملفات %n","الكثير من ملفات %n"," ملفات %n"],
"{dirs} and {files}" : "{dirs} و {files}",
"_Uploading %n file_::_Uploading %n files_" : ["لا يوجد ملفات %n لتحميلها","تحميل 1 ملف %n","تحميل 2 ملف %n","يتم تحميل عدد قليل من ملفات %n","يتم تحميل عدد كبير من ملفات %n","يتم تحميل ملفات %n"],
+ "New" : "جديد",
"File name cannot be empty." : "اسم الملف لا يجوز أن يكون فارغا",
"Your storage is full, files can not be updated or synced anymore!" : "مساحتك التخزينية ممتلئة, لا يمكم تحديث ملفاتك أو مزامنتها بعد الآن !",
"Your storage is almost full ({usedSpacePercent}%)" : "مساحتك التخزينية امتلأت تقريبا ",
"Favorite" : "المفضلة",
+ "Upload" : "رفع",
+ "Text file" : "ملف",
+ "Folder" : "مجلد",
+ "New folder" : "مجلد جديد",
"A new file or folder has been <strong>created</strong>" : "تم <strong> إنشاء</strong> ملف جديد أو مجلد ",
"A file or folder has been <strong>changed</strong>" : "تم <strong> تغيير</strong> ملف أو مجلد",
"A file or folder has been <strong>deleted</strong>" : "تم <strong>حذف </strong> ملف أو مجلد",
@@ -65,11 +70,6 @@ OC.L10N.register(
"Settings" : "إعدادات",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "استخدم هذا العنوان لـ <a href=\"%s\" target=\"_blank\">الدخول الى ملفاتك عن طريق WebDAV</a>",
- "New" : "جديد",
- "Text file" : "ملف",
- "New folder" : "مجلد جديد",
- "Folder" : "مجلد",
- "Upload" : "رفع",
"Cancel upload" : "إلغاء الرفع",
"Delete" : "إلغاء",
"Upload too large" : "حجم الترفيع أعلى من المسموح",
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index 16d9732aaef..745d82dc19b 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -25,12 +25,12 @@
"Upload cancelled." : "تم إلغاء عملية رفع الملفات .",
"Could not get result from server." : "تعذر الحصول على نتيجة من الخادم",
"File upload is in progress. Leaving the page now will cancel the upload." : "عملية رفع الملفات قيد التنفيذ. اغلاق الصفحة سوف يلغي عملية رفع الملفات.",
- "{new_name} already exists" : "{new_name} موجود مسبقا",
"Actions" : "* تطبيقات.\n* أنشطة.",
"Download" : "تحميل",
"Pending" : "قيد الانتظار",
"Error moving file" : "حدث خطأ أثناء نقل الملف",
"Error" : "خطأ",
+ "{new_name} already exists" : "{new_name} موجود مسبقا",
"Name" : "اسم",
"Size" : "حجم",
"Modified" : "معدل",
@@ -38,10 +38,15 @@
"_%n file_::_%n files_" : ["لا يوجد ملفات %n","ملف %n","2 ملف %n","قليل من ملفات %n","الكثير من ملفات %n"," ملفات %n"],
"{dirs} and {files}" : "{dirs} و {files}",
"_Uploading %n file_::_Uploading %n files_" : ["لا يوجد ملفات %n لتحميلها","تحميل 1 ملف %n","تحميل 2 ملف %n","يتم تحميل عدد قليل من ملفات %n","يتم تحميل عدد كبير من ملفات %n","يتم تحميل ملفات %n"],
+ "New" : "جديد",
"File name cannot be empty." : "اسم الملف لا يجوز أن يكون فارغا",
"Your storage is full, files can not be updated or synced anymore!" : "مساحتك التخزينية ممتلئة, لا يمكم تحديث ملفاتك أو مزامنتها بعد الآن !",
"Your storage is almost full ({usedSpacePercent}%)" : "مساحتك التخزينية امتلأت تقريبا ",
"Favorite" : "المفضلة",
+ "Upload" : "رفع",
+ "Text file" : "ملف",
+ "Folder" : "مجلد",
+ "New folder" : "مجلد جديد",
"A new file or folder has been <strong>created</strong>" : "تم <strong> إنشاء</strong> ملف جديد أو مجلد ",
"A file or folder has been <strong>changed</strong>" : "تم <strong> تغيير</strong> ملف أو مجلد",
"A file or folder has been <strong>deleted</strong>" : "تم <strong>حذف </strong> ملف أو مجلد",
@@ -63,11 +68,6 @@
"Settings" : "إعدادات",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "استخدم هذا العنوان لـ <a href=\"%s\" target=\"_blank\">الدخول الى ملفاتك عن طريق WebDAV</a>",
- "New" : "جديد",
- "Text file" : "ملف",
- "New folder" : "مجلد جديد",
- "Folder" : "مجلد",
- "Upload" : "رفع",
"Cancel upload" : "إلغاء الرفع",
"Delete" : "إلغاء",
"Upload too large" : "حجم الترفيع أعلى من المسموح",
diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js
index 586d66d0c24..33bf5e37c0a 100644
--- a/apps/files/l10n/ast.js
+++ b/apps/files/l10n/ast.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Xuba encaboxada.",
"Could not get result from server." : "Nun pudo obtenese'l resultáu del sirvidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.",
- "{new_name} already exists" : "{new_name} yá existe",
- "Could not create file" : "Nun pudo crease'l ficheru",
- "Could not create folder" : "Nun pudo crease la carpeta",
"Actions" : "Aiciones",
"Download" : "Descargar",
"Select" : "Esbillar",
@@ -48,7 +45,10 @@ OC.L10N.register(
"Error moving file." : "Fallu moviendo'l ficheru.",
"Error moving file" : "Fallu moviendo'l ficheru",
"Error" : "Fallu",
+ "{new_name} already exists" : "{new_name} yá existe",
"Could not rename file" : "Nun pudo renomase'l ficheru",
+ "Could not create file" : "Nun pudo crease'l ficheru",
+ "Could not create folder" : "Nun pudo crease la carpeta",
"Error deleting file." : "Fallu desaniciando'l ficheru.",
"Name" : "Nome",
"Size" : "Tamañu",
@@ -58,11 +58,16 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} y {files}",
"You don’t have permission to upload or create files here" : "Nun tienes permisu pa xubir o crear ficheros equí",
"_Uploading %n file_::_Uploading %n files_" : ["Xubiendo %n ficheru","Xubiendo %n ficheros"],
+ "New" : "Nuevu",
"\"{name}\" is an invalid file name." : "\"{name}\" ye un nome de ficheru inválidu.",
"File name cannot be empty." : "El nome de ficheru nun pue quedar baleru.",
"Your storage is full, files can not be updated or synced anymore!" : "L'almacenamientu ta completu, ¡yá nun se pueden anovar o sincronizar ficheros!",
"Your storage is almost full ({usedSpacePercent}%)" : "L'almacenamientu ta casi completu ({usedSpacePercent}%)",
"Favorite" : "Favoritu",
+ "Upload" : "Xubir",
+ "Text file" : "Ficheru de testu",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva carpeta",
"A new file or folder has been <strong>created</strong>" : "<strong>Creóse</strong> un ficheru o carpeta nuevos",
"A file or folder has been <strong>changed</strong>" : "<strong>Camudóse</strong> un ficheru o carpeta",
"A file or folder has been <strong>deleted</strong>" : "<strong>Desanicióse</strong> un ficheru o carpeta",
@@ -86,12 +91,6 @@ OC.L10N.register(
"Settings" : "Axustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Usa esta direición <a href=\"%s\" target=\"_blank\">p'acceder a los ficheros a traviés de WebDAV</a>",
- "New" : "Nuevu",
- "New text file" : "Ficheru de testu nuevu",
- "Text file" : "Ficheru de testu",
- "New folder" : "Nueva carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Xubir",
"Cancel upload" : "Encaboxar xuba",
"Delete" : "Desaniciar",
"Upload too large" : "La xuba ye abondo grande",
diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json
index e9b411383a2..601bf2d85f1 100644
--- a/apps/files/l10n/ast.json
+++ b/apps/files/l10n/ast.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Xuba encaboxada.",
"Could not get result from server." : "Nun pudo obtenese'l resultáu del sirvidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.",
- "{new_name} already exists" : "{new_name} yá existe",
- "Could not create file" : "Nun pudo crease'l ficheru",
- "Could not create folder" : "Nun pudo crease la carpeta",
"Actions" : "Aiciones",
"Download" : "Descargar",
"Select" : "Esbillar",
@@ -46,7 +43,10 @@
"Error moving file." : "Fallu moviendo'l ficheru.",
"Error moving file" : "Fallu moviendo'l ficheru",
"Error" : "Fallu",
+ "{new_name} already exists" : "{new_name} yá existe",
"Could not rename file" : "Nun pudo renomase'l ficheru",
+ "Could not create file" : "Nun pudo crease'l ficheru",
+ "Could not create folder" : "Nun pudo crease la carpeta",
"Error deleting file." : "Fallu desaniciando'l ficheru.",
"Name" : "Nome",
"Size" : "Tamañu",
@@ -56,11 +56,16 @@
"{dirs} and {files}" : "{dirs} y {files}",
"You don’t have permission to upload or create files here" : "Nun tienes permisu pa xubir o crear ficheros equí",
"_Uploading %n file_::_Uploading %n files_" : ["Xubiendo %n ficheru","Xubiendo %n ficheros"],
+ "New" : "Nuevu",
"\"{name}\" is an invalid file name." : "\"{name}\" ye un nome de ficheru inválidu.",
"File name cannot be empty." : "El nome de ficheru nun pue quedar baleru.",
"Your storage is full, files can not be updated or synced anymore!" : "L'almacenamientu ta completu, ¡yá nun se pueden anovar o sincronizar ficheros!",
"Your storage is almost full ({usedSpacePercent}%)" : "L'almacenamientu ta casi completu ({usedSpacePercent}%)",
"Favorite" : "Favoritu",
+ "Upload" : "Xubir",
+ "Text file" : "Ficheru de testu",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva carpeta",
"A new file or folder has been <strong>created</strong>" : "<strong>Creóse</strong> un ficheru o carpeta nuevos",
"A file or folder has been <strong>changed</strong>" : "<strong>Camudóse</strong> un ficheru o carpeta",
"A file or folder has been <strong>deleted</strong>" : "<strong>Desanicióse</strong> un ficheru o carpeta",
@@ -84,12 +89,6 @@
"Settings" : "Axustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Usa esta direición <a href=\"%s\" target=\"_blank\">p'acceder a los ficheros a traviés de WebDAV</a>",
- "New" : "Nuevu",
- "New text file" : "Ficheru de testu nuevu",
- "Text file" : "Ficheru de testu",
- "New folder" : "Nueva carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Xubir",
"Cancel upload" : "Encaboxar xuba",
"Delete" : "Desaniciar",
"Upload too large" : "La xuba ye abondo grande",
diff --git a/apps/files/l10n/az.js b/apps/files/l10n/az.js
index ba3aa4e1b9f..7e80b0aa82d 100644
--- a/apps/files/l10n/az.js
+++ b/apps/files/l10n/az.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Yüklənmə dayandırıldı.",
"Could not get result from server." : "Nəticəni serverdən almaq mümkün olmur.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Faylın yüklənməsi gedir. Əgər səhifəni indi tərk etsəniz yüklənmə dayanacaq.",
- "{new_name} already exists" : "{new_name} artıq mövcuddur",
- "Could not create file" : "Faylı yaratmaq olmur",
- "Could not create folder" : "Qovluğu yaratmaq olmur",
"Download" : "Yüklə",
"Select" : "Seç",
"Pending" : "Gözləmə",
@@ -46,7 +43,10 @@ OC.L10N.register(
"Error moving file." : "Faylın köçürülməsində səhv baş verdi.",
"Error moving file" : "Faylın köçürülməsində səhv baş verdi",
"Error" : "Səhv",
+ "{new_name} already exists" : "{new_name} artıq mövcuddur",
"Could not rename file" : "Faylın adını dəyişmək mümkün olmadı",
+ "Could not create file" : "Faylı yaratmaq olmur",
+ "Could not create folder" : "Qovluğu yaratmaq olmur",
"Error deleting file." : "Faylın silinməsində səhv baş verdi.",
"No entries in this folder match '{filter}'" : "Bu qovluqda '{filter}' uyğunluğunda heç bir verilən tapılmadı",
"Name" : "Ad",
@@ -57,6 +57,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} və {files}",
"You don’t have permission to upload or create files here" : "Sizin burda yükləməyə və ya fayl yaratmağa yetkiniz yoxdur ",
"_Uploading %n file_::_Uploading %n files_" : ["%n fayllar yüklənilir","%n fayllar yüklənilir"],
+ "New" : "Yeni",
"\"{name}\" is an invalid file name." : "\"{name}\" yalnış fayl adıdır.",
"File name cannot be empty." : "Faylın adı boş ola bilməz.",
"Your storage is full, files can not be updated or synced anymore!" : "Sizin deponuz doludur, fayllar artıq yenilənə və sinxronizasiya edilə bilməz!",
@@ -64,6 +65,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["uyğun '{filter}'","uyğun '{filter}'"],
"Favorited" : "İstəkləndi",
"Favorite" : "İstəkli",
+ "Upload" : "Serverə yüklə",
+ "Text file" : "Tekst faylı",
+ "Folder" : "Qovluq",
+ "New folder" : "Yeni qovluq",
"An error occurred while trying to update the tags" : "Qeydlərin yenilənməsi müddətində səhv baş verdi ",
"A new file or folder has been <strong>created</strong>" : "Yeni fayl və ya direktoriya <strong>yaradılmışdır</strong>",
"A file or folder has been <strong>changed</strong>" : "Fayl və ya direktoriya <strong>dəyişdirilib</strong>",
@@ -90,12 +95,6 @@ OC.L10N.register(
"Settings" : "Quraşdırmalar",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bu ünvanı <a href=\"%s\" target=\"_blank\">WebDAV vasitəsilə fayllarınızı əldə etmək üçün</a> istifadə edə bilərsiniz. ",
- "New" : "Yeni",
- "New text file" : "Yeni tekst faylı",
- "Text file" : "Tekst faylı",
- "New folder" : "Yeni qovluq",
- "Folder" : "Qovluq",
- "Upload" : "Serverə yüklə",
"Cancel upload" : "Yüklənməni dayandır",
"No files in here" : "Burda fayl yoxdur",
"Upload some content or sync with your devices!" : "Bezi kontenti yüklə yada, öz avadanlıqlarınızla sinxronizasiya edin!",
diff --git a/apps/files/l10n/az.json b/apps/files/l10n/az.json
index a9790ba8322..83347ae9a14 100644
--- a/apps/files/l10n/az.json
+++ b/apps/files/l10n/az.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Yüklənmə dayandırıldı.",
"Could not get result from server." : "Nəticəni serverdən almaq mümkün olmur.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Faylın yüklənməsi gedir. Əgər səhifəni indi tərk etsəniz yüklənmə dayanacaq.",
- "{new_name} already exists" : "{new_name} artıq mövcuddur",
- "Could not create file" : "Faylı yaratmaq olmur",
- "Could not create folder" : "Qovluğu yaratmaq olmur",
"Download" : "Yüklə",
"Select" : "Seç",
"Pending" : "Gözləmə",
@@ -44,7 +41,10 @@
"Error moving file." : "Faylın köçürülməsində səhv baş verdi.",
"Error moving file" : "Faylın köçürülməsində səhv baş verdi",
"Error" : "Səhv",
+ "{new_name} already exists" : "{new_name} artıq mövcuddur",
"Could not rename file" : "Faylın adını dəyişmək mümkün olmadı",
+ "Could not create file" : "Faylı yaratmaq olmur",
+ "Could not create folder" : "Qovluğu yaratmaq olmur",
"Error deleting file." : "Faylın silinməsində səhv baş verdi.",
"No entries in this folder match '{filter}'" : "Bu qovluqda '{filter}' uyğunluğunda heç bir verilən tapılmadı",
"Name" : "Ad",
@@ -55,6 +55,7 @@
"{dirs} and {files}" : "{dirs} və {files}",
"You don’t have permission to upload or create files here" : "Sizin burda yükləməyə və ya fayl yaratmağa yetkiniz yoxdur ",
"_Uploading %n file_::_Uploading %n files_" : ["%n fayllar yüklənilir","%n fayllar yüklənilir"],
+ "New" : "Yeni",
"\"{name}\" is an invalid file name." : "\"{name}\" yalnış fayl adıdır.",
"File name cannot be empty." : "Faylın adı boş ola bilməz.",
"Your storage is full, files can not be updated or synced anymore!" : "Sizin deponuz doludur, fayllar artıq yenilənə və sinxronizasiya edilə bilməz!",
@@ -62,6 +63,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["uyğun '{filter}'","uyğun '{filter}'"],
"Favorited" : "İstəkləndi",
"Favorite" : "İstəkli",
+ "Upload" : "Serverə yüklə",
+ "Text file" : "Tekst faylı",
+ "Folder" : "Qovluq",
+ "New folder" : "Yeni qovluq",
"An error occurred while trying to update the tags" : "Qeydlərin yenilənməsi müddətində səhv baş verdi ",
"A new file or folder has been <strong>created</strong>" : "Yeni fayl və ya direktoriya <strong>yaradılmışdır</strong>",
"A file or folder has been <strong>changed</strong>" : "Fayl və ya direktoriya <strong>dəyişdirilib</strong>",
@@ -88,12 +93,6 @@
"Settings" : "Quraşdırmalar",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bu ünvanı <a href=\"%s\" target=\"_blank\">WebDAV vasitəsilə fayllarınızı əldə etmək üçün</a> istifadə edə bilərsiniz. ",
- "New" : "Yeni",
- "New text file" : "Yeni tekst faylı",
- "Text file" : "Tekst faylı",
- "New folder" : "Yeni qovluq",
- "Folder" : "Qovluq",
- "Upload" : "Serverə yüklə",
"Cancel upload" : "Yüklənməni dayandır",
"No files in here" : "Burda fayl yoxdur",
"Upload some content or sync with your devices!" : "Bezi kontenti yüklə yada, öz avadanlıqlarınızla sinxronizasiya edin!",
diff --git a/apps/files/l10n/bg_BG.js b/apps/files/l10n/bg_BG.js
index 1b79d6b2824..f21c5de9dc1 100644
--- a/apps/files/l10n/bg_BG.js
+++ b/apps/files/l10n/bg_BG.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Качването е прекъснато.",
"Could not get result from server." : "Не се получи резултат от сървърът.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Извършва се качване на файлове. Затварянето на тази страница ще прекъсне качването.",
- "{new_name} already exists" : "{new_name} вече съществува.",
- "Could not create file" : "Несупешно създаване на файла.",
- "Could not create folder" : "Неуспешно създаване на папка.",
"Actions" : "Действия",
"Download" : "Изтегли",
"Select" : "Избери",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Грешка при местенето на файла.",
"Error moving file" : "Грешка при преместването на файла.",
"Error" : "Грешка",
+ "{new_name} already exists" : "{new_name} вече съществува.",
"Could not rename file" : "Неуспешно преименуване на файла.",
+ "Could not create file" : "Несупешно създаване на файла.",
+ "Could not create folder" : "Неуспешно създаване на папка.",
"Error deleting file." : "Грешка при изтриването на файла.",
"No entries in this folder match '{filter}'" : "Нищо в тази папка не отговаря на '{filter}'",
"Name" : "Име",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} и {files}",
"You don’t have permission to upload or create files here" : "Нямаш разрешение да създаваш или качваш файлове тук.",
"_Uploading %n file_::_Uploading %n files_" : ["Качване на %n файл","Качване на %n файла."],
+ "New" : "Създай",
"\"{name}\" is an invalid file name." : "\"{name}\" е непозволено име за файл.",
"File name cannot be empty." : "Името на файла не може да бъде оставено празно.",
"Your storage is full, files can not be updated or synced anymore!" : "Заделеното място е запълнено, повече файлове не могат да бъдат синхронизирани или опреснени!",
@@ -65,6 +66,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["пасва на '{filter}'","пасват на '{filter}'\n "],
"Favorited" : "Отбелязано в любими",
"Favorite" : "Любими",
+ "Upload" : "Качване",
+ "Text file" : "Текстов файл",
+ "Folder" : "Папка",
+ "New folder" : "Нова папка",
"An error occurred while trying to update the tags" : "Настъпи грешка при опита за промяна на бележките",
"A new file or folder has been <strong>created</strong>" : "Нов файл или папка беше <strong>създаден/а</strong>",
"A file or folder has been <strong>changed</strong>" : "Файл или папка беше <strong>променен/а</strong>",
@@ -90,12 +95,6 @@ OC.L10N.register(
"Settings" : "Настройки",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Използвай този адрес, за да получиш <a href=\"%s\" target=\"_blank\">достъп до своите файлове чрез WebDAV</a>.",
- "New" : "Създай",
- "New text file" : "Нов текстов файл",
- "Text file" : "Текстов файл",
- "New folder" : "Нова папка",
- "Folder" : "Папка",
- "Upload" : "Качване",
"Cancel upload" : "Отказване на качването",
"No files in here" : "Тук няма файлове",
"Upload some content or sync with your devices!" : "Качи съдържание или синхронизирай с твоите устройства!",
diff --git a/apps/files/l10n/bg_BG.json b/apps/files/l10n/bg_BG.json
index 4493a450d66..6778eff6da8 100644
--- a/apps/files/l10n/bg_BG.json
+++ b/apps/files/l10n/bg_BG.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Качването е прекъснато.",
"Could not get result from server." : "Не се получи резултат от сървърът.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Извършва се качване на файлове. Затварянето на тази страница ще прекъсне качването.",
- "{new_name} already exists" : "{new_name} вече съществува.",
- "Could not create file" : "Несупешно създаване на файла.",
- "Could not create folder" : "Неуспешно създаване на папка.",
"Actions" : "Действия",
"Download" : "Изтегли",
"Select" : "Избери",
@@ -45,7 +42,10 @@
"Error moving file." : "Грешка при местенето на файла.",
"Error moving file" : "Грешка при преместването на файла.",
"Error" : "Грешка",
+ "{new_name} already exists" : "{new_name} вече съществува.",
"Could not rename file" : "Неуспешно преименуване на файла.",
+ "Could not create file" : "Несупешно създаване на файла.",
+ "Could not create folder" : "Неуспешно създаване на папка.",
"Error deleting file." : "Грешка при изтриването на файла.",
"No entries in this folder match '{filter}'" : "Нищо в тази папка не отговаря на '{filter}'",
"Name" : "Име",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} и {files}",
"You don’t have permission to upload or create files here" : "Нямаш разрешение да създаваш или качваш файлове тук.",
"_Uploading %n file_::_Uploading %n files_" : ["Качване на %n файл","Качване на %n файла."],
+ "New" : "Създай",
"\"{name}\" is an invalid file name." : "\"{name}\" е непозволено име за файл.",
"File name cannot be empty." : "Името на файла не може да бъде оставено празно.",
"Your storage is full, files can not be updated or synced anymore!" : "Заделеното място е запълнено, повече файлове не могат да бъдат синхронизирани или опреснени!",
@@ -63,6 +64,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["пасва на '{filter}'","пасват на '{filter}'\n "],
"Favorited" : "Отбелязано в любими",
"Favorite" : "Любими",
+ "Upload" : "Качване",
+ "Text file" : "Текстов файл",
+ "Folder" : "Папка",
+ "New folder" : "Нова папка",
"An error occurred while trying to update the tags" : "Настъпи грешка при опита за промяна на бележките",
"A new file or folder has been <strong>created</strong>" : "Нов файл или папка беше <strong>създаден/а</strong>",
"A file or folder has been <strong>changed</strong>" : "Файл или папка беше <strong>променен/а</strong>",
@@ -88,12 +93,6 @@
"Settings" : "Настройки",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Използвай този адрес, за да получиш <a href=\"%s\" target=\"_blank\">достъп до своите файлове чрез WebDAV</a>.",
- "New" : "Създай",
- "New text file" : "Нов текстов файл",
- "Text file" : "Текстов файл",
- "New folder" : "Нова папка",
- "Folder" : "Папка",
- "Upload" : "Качване",
"Cancel upload" : "Отказване на качването",
"No files in here" : "Тук няма файлове",
"Upload some content or sync with your devices!" : "Качи съдържание или синхронизирай с твоите устройства!",
diff --git a/apps/files/l10n/bn_BD.js b/apps/files/l10n/bn_BD.js
index f21d44873f0..1272966209b 100644
--- a/apps/files/l10n/bn_BD.js
+++ b/apps/files/l10n/bn_BD.js
@@ -27,22 +27,27 @@ OC.L10N.register(
"Close" : "বন্ধ",
"Upload cancelled." : "আপলোড বাতিল করা হয়েছে।",
"File upload is in progress. Leaving the page now will cancel the upload." : "ফাইল আপলোড চলমান। এই পৃষ্ঠা পরিত্যাগ করলে আপলোড বাতিল করা হবে।",
- "{new_name} already exists" : "{new_name} টি বিদ্যমান",
"Actions" : "পদক্ষেপসমূহ",
"Download" : "ডাউনলোড",
"Pending" : "মুলতুবি",
"Error moving file." : "ফাইল সরাতে সমস্যা হলো।",
"Error moving file" : "ফাইল সরাতে সমস্যা হলো",
"Error" : "সমস্যা",
+ "{new_name} already exists" : "{new_name} টি বিদ্যমান",
"Could not rename file" : "ফাইলের পূণঃনামকরণ করা গেলনা",
"Name" : "রাম",
"Size" : "আকার",
"Modified" : "পরিবর্তিত",
"_Uploading %n file_::_Uploading %n files_" : ["%n ফাইল আপলোড হচ্ছে","%n ফাইল আপলোড হচ্ছে"],
+ "New" : "নতুন",
"\"{name}\" is an invalid file name." : "\"{name}\" টি একটি অননুমোদিত ফাইল নাম।",
"File name cannot be empty." : "ফাইলের নামটি ফাঁকা রাখা যাবে না।",
"Your storage is almost full ({usedSpacePercent}%)" : "আপনার সংরক্ষণাধার প্রায় পরিপূর্ণ ({usedSpacePercent}%) ",
"Favorite" : "প্রিয়জন",
+ "Upload" : "আপলোড",
+ "Text file" : "টেক্সট ফাইল",
+ "Folder" : "ফোল্ডার",
+ "New folder" : "নব ফােলডার",
"A new file or folder has been <strong>created</strong>" : "একটি ফাইল বা ফোলডার <strong>তৈরি</strong> করা হয়েছে",
"A file or folder has been <strong>changed</strong>" : "একটি ফাইল বা ফোলডার <strong>পরিবরতন</strong> করা হয়েছে",
"A file or folder has been <strong>deleted</strong>" : "একটি ফাইল বা ফোলডার <strong>মোছা</strong> হয়েছে",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Save" : "সংরক্ষণ",
"Settings" : "নিয়ামকসমূহ",
"WebDAV" : "WebDAV",
- "New" : "নতুন",
- "Text file" : "টেক্সট ফাইল",
- "New folder" : "নব ফােলডার",
- "Folder" : "ফোল্ডার",
- "Upload" : "আপলোড",
"Cancel upload" : "আপলোড বাতিল কর",
"Delete" : "মুছে",
"Upload too large" : "আপলোডের আকারটি অনেক বড়",
diff --git a/apps/files/l10n/bn_BD.json b/apps/files/l10n/bn_BD.json
index 740613e054d..472aae78865 100644
--- a/apps/files/l10n/bn_BD.json
+++ b/apps/files/l10n/bn_BD.json
@@ -25,22 +25,27 @@
"Close" : "বন্ধ",
"Upload cancelled." : "আপলোড বাতিল করা হয়েছে।",
"File upload is in progress. Leaving the page now will cancel the upload." : "ফাইল আপলোড চলমান। এই পৃষ্ঠা পরিত্যাগ করলে আপলোড বাতিল করা হবে।",
- "{new_name} already exists" : "{new_name} টি বিদ্যমান",
"Actions" : "পদক্ষেপসমূহ",
"Download" : "ডাউনলোড",
"Pending" : "মুলতুবি",
"Error moving file." : "ফাইল সরাতে সমস্যা হলো।",
"Error moving file" : "ফাইল সরাতে সমস্যা হলো",
"Error" : "সমস্যা",
+ "{new_name} already exists" : "{new_name} টি বিদ্যমান",
"Could not rename file" : "ফাইলের পূণঃনামকরণ করা গেলনা",
"Name" : "রাম",
"Size" : "আকার",
"Modified" : "পরিবর্তিত",
"_Uploading %n file_::_Uploading %n files_" : ["%n ফাইল আপলোড হচ্ছে","%n ফাইল আপলোড হচ্ছে"],
+ "New" : "নতুন",
"\"{name}\" is an invalid file name." : "\"{name}\" টি একটি অননুমোদিত ফাইল নাম।",
"File name cannot be empty." : "ফাইলের নামটি ফাঁকা রাখা যাবে না।",
"Your storage is almost full ({usedSpacePercent}%)" : "আপনার সংরক্ষণাধার প্রায় পরিপূর্ণ ({usedSpacePercent}%) ",
"Favorite" : "প্রিয়জন",
+ "Upload" : "আপলোড",
+ "Text file" : "টেক্সট ফাইল",
+ "Folder" : "ফোল্ডার",
+ "New folder" : "নব ফােলডার",
"A new file or folder has been <strong>created</strong>" : "একটি ফাইল বা ফোলডার <strong>তৈরি</strong> করা হয়েছে",
"A file or folder has been <strong>changed</strong>" : "একটি ফাইল বা ফোলডার <strong>পরিবরতন</strong> করা হয়েছে",
"A file or folder has been <strong>deleted</strong>" : "একটি ফাইল বা ফোলডার <strong>মোছা</strong> হয়েছে",
@@ -57,11 +62,6 @@
"Save" : "সংরক্ষণ",
"Settings" : "নিয়ামকসমূহ",
"WebDAV" : "WebDAV",
- "New" : "নতুন",
- "Text file" : "টেক্সট ফাইল",
- "New folder" : "নব ফােলডার",
- "Folder" : "ফোল্ডার",
- "Upload" : "আপলোড",
"Cancel upload" : "আপলোড বাতিল কর",
"Delete" : "মুছে",
"Upload too large" : "আপলোডের আকারটি অনেক বড়",
diff --git a/apps/files/l10n/bn_IN.js b/apps/files/l10n/bn_IN.js
index 903dadca605..995c9ad45d1 100644
--- a/apps/files/l10n/bn_IN.js
+++ b/apps/files/l10n/bn_IN.js
@@ -20,6 +20,8 @@ OC.L10N.register(
"Error" : "ভুল",
"Name" : "নাম",
"Size" : "আকার",
+ "Folder" : "ফোল্ডার",
+ "New folder" : "নতুন ফোল্ডার",
"A new file or folder has been <strong>created</strong>" : "একটি নতুন ফাইল বা ফোল্ডার হয়েছে <strong>তৈরি</strong>",
"A file or folder has been <strong>changed</strong>" : "একটি নতুন ফাইল বা ফোল্ডার <strong>বদলানো হয়েছে</strong>",
"A file or folder has been <strong>deleted</strong>" : "একটি নতুন ফাইল বা ফোল্ডার <strong>মুছে ফেলা হয়েছে</strong>",
@@ -31,8 +33,6 @@ OC.L10N.register(
"%2$s deleted %1$s" : "%2$s মুছেছে %1$s কে",
"Save" : "সেভ",
"Settings" : "সেটিংস",
- "New folder" : "নতুন ফোল্ডার",
- "Folder" : "ফোল্ডার",
"Delete" : "মুছে ফেলা"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/bn_IN.json b/apps/files/l10n/bn_IN.json
index afdcf0b6f13..17ce39d023a 100644
--- a/apps/files/l10n/bn_IN.json
+++ b/apps/files/l10n/bn_IN.json
@@ -18,6 +18,8 @@
"Error" : "ভুল",
"Name" : "নাম",
"Size" : "আকার",
+ "Folder" : "ফোল্ডার",
+ "New folder" : "নতুন ফোল্ডার",
"A new file or folder has been <strong>created</strong>" : "একটি নতুন ফাইল বা ফোল্ডার হয়েছে <strong>তৈরি</strong>",
"A file or folder has been <strong>changed</strong>" : "একটি নতুন ফাইল বা ফোল্ডার <strong>বদলানো হয়েছে</strong>",
"A file or folder has been <strong>deleted</strong>" : "একটি নতুন ফাইল বা ফোল্ডার <strong>মুছে ফেলা হয়েছে</strong>",
@@ -29,8 +31,6 @@
"%2$s deleted %1$s" : "%2$s মুছেছে %1$s কে",
"Save" : "সেভ",
"Settings" : "সেটিংস",
- "New folder" : "নতুন ফোল্ডার",
- "Folder" : "ফোল্ডার",
"Delete" : "মুছে ফেলা"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/bs.js b/apps/files/l10n/bs.js
index 6fb4c6ed0e9..f10c87bfef8 100644
--- a/apps/files/l10n/bs.js
+++ b/apps/files/l10n/bs.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Učitavanje je prekinuto.",
"Could not get result from server." : "Nemoguće dobiti rezultat od servera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Učitavanje datoteke je u toku. Napuštanje stranice prekinut će učitavanje.",
- "{new_name} already exists" : "{new_name} već postoji",
- "Could not create file" : "Datoteku nije moguće kreirati",
- "Could not create folder" : "Direktorij nije moguće kreirati",
"Actions" : "Radnje",
"Download" : "Preuzmi",
"Select" : "Izaberi",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Greška pri premještanju datoteke",
"Error moving file" : "Greška pri premještanju datoteke",
"Error" : "Greška",
+ "{new_name} already exists" : "{new_name} već postoji",
"Could not rename file" : "Nemoguće preimenovati datoteku",
+ "Could not create file" : "Datoteku nije moguće kreirati",
+ "Could not create folder" : "Direktorij nije moguće kreirati",
"Error deleting file." : "Greška pri brisanju datoteke",
"Name" : "Ime",
"Size" : "Veličina",
@@ -57,12 +57,17 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Ovdje niste ovlašteni učitavati ili kreirati datoteke",
"_Uploading %n file_::_Uploading %n files_" : ["Prenosim %n datoteku","Prenosim %n datoteke","Prenosim %n datoteke"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" je neispravno ime datoteke.",
"File name cannot be empty." : "Naziv datoteke ne može biti prazan",
"Your storage is full, files can not be updated or synced anymore!" : "Vaša pohrana je puna, datoteke više nije moguće ažurirati niti sinhronizirati!",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)",
"Favorited" : "Favorizovano",
"Favorite" : "Favorit",
+ "Upload" : "Učitaj",
+ "Text file" : "Tekstualna datoteka",
+ "Folder" : "Direktorij",
+ "New folder" : "Novi direktorij",
"%s could not be renamed as it has been deleted" : "%s nije moguće preimenovati jer je izbrisan",
"%s could not be renamed" : "%s nije moguće preimenovati",
"Upload (max. %s)" : "Učitaj (max. %s)",
@@ -73,12 +78,6 @@ OC.L10N.register(
"Settings" : "Postavke",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Koristi slijedeću adresu za <a href=\"%s\" target=\"_blank\">pristup vašim datotekama putem WebDAV-a</a>",
- "New" : "Novo",
- "New text file" : "Nova tekstualna datoteka",
- "Text file" : "Tekstualna datoteka",
- "New folder" : "Novi direktorij",
- "Folder" : "Direktorij",
- "Upload" : "Učitaj",
"Cancel upload" : "Prekini učitavanje",
"Upload some content or sync with your devices!" : "Učitaj neki sadržaj ili sinhronizuj sa tvojim uređajima!",
"Select all" : "Označi sve",
diff --git a/apps/files/l10n/bs.json b/apps/files/l10n/bs.json
index b398ca5a39b..7d8a87f6398 100644
--- a/apps/files/l10n/bs.json
+++ b/apps/files/l10n/bs.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Učitavanje je prekinuto.",
"Could not get result from server." : "Nemoguće dobiti rezultat od servera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Učitavanje datoteke je u toku. Napuštanje stranice prekinut će učitavanje.",
- "{new_name} already exists" : "{new_name} već postoji",
- "Could not create file" : "Datoteku nije moguće kreirati",
- "Could not create folder" : "Direktorij nije moguće kreirati",
"Actions" : "Radnje",
"Download" : "Preuzmi",
"Select" : "Izaberi",
@@ -45,7 +42,10 @@
"Error moving file." : "Greška pri premještanju datoteke",
"Error moving file" : "Greška pri premještanju datoteke",
"Error" : "Greška",
+ "{new_name} already exists" : "{new_name} već postoji",
"Could not rename file" : "Nemoguće preimenovati datoteku",
+ "Could not create file" : "Datoteku nije moguće kreirati",
+ "Could not create folder" : "Direktorij nije moguće kreirati",
"Error deleting file." : "Greška pri brisanju datoteke",
"Name" : "Ime",
"Size" : "Veličina",
@@ -55,12 +55,17 @@
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Ovdje niste ovlašteni učitavati ili kreirati datoteke",
"_Uploading %n file_::_Uploading %n files_" : ["Prenosim %n datoteku","Prenosim %n datoteke","Prenosim %n datoteke"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" je neispravno ime datoteke.",
"File name cannot be empty." : "Naziv datoteke ne može biti prazan",
"Your storage is full, files can not be updated or synced anymore!" : "Vaša pohrana je puna, datoteke više nije moguće ažurirati niti sinhronizirati!",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)",
"Favorited" : "Favorizovano",
"Favorite" : "Favorit",
+ "Upload" : "Učitaj",
+ "Text file" : "Tekstualna datoteka",
+ "Folder" : "Direktorij",
+ "New folder" : "Novi direktorij",
"%s could not be renamed as it has been deleted" : "%s nije moguće preimenovati jer je izbrisan",
"%s could not be renamed" : "%s nije moguće preimenovati",
"Upload (max. %s)" : "Učitaj (max. %s)",
@@ -71,12 +76,6 @@
"Settings" : "Postavke",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Koristi slijedeću adresu za <a href=\"%s\" target=\"_blank\">pristup vašim datotekama putem WebDAV-a</a>",
- "New" : "Novo",
- "New text file" : "Nova tekstualna datoteka",
- "Text file" : "Tekstualna datoteka",
- "New folder" : "Novi direktorij",
- "Folder" : "Direktorij",
- "Upload" : "Učitaj",
"Cancel upload" : "Prekini učitavanje",
"Upload some content or sync with your devices!" : "Učitaj neki sadržaj ili sinhronizuj sa tvojim uređajima!",
"Select all" : "Označi sve",
diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js
index 28261b62219..f8388534802 100644
--- a/apps/files/l10n/ca.js
+++ b/apps/files/l10n/ca.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "La pujada s'ha cancel·lat.",
"Could not get result from server." : "No hi ha resposta del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà.",
- "{new_name} already exists" : "{new_name} ja existeix",
- "Could not create file" : "No s'ha pogut crear el fitxer",
- "Could not create folder" : "No s'ha pogut crear la carpeta",
"Actions" : "Accions",
"Download" : "Baixa",
"Select" : "Selecciona",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Error en moure el fitxer.",
"Error moving file" : "Error en moure el fitxer",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ja existeix",
"Could not rename file" : "No es pot canviar el nom de fitxer",
+ "Could not create file" : "No s'ha pogut crear el fitxer",
+ "Could not create folder" : "No s'ha pogut crear la carpeta",
"Error deleting file." : "Error en esborrar el fitxer.",
"No entries in this folder match '{filter}'" : "No hi ha resultats que coincideixin amb '{filter}'",
"Name" : "Nom",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "No teniu permisos per a pujar o crear els fitxers aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Pujant %n fitxer","Pujant %n fitxers"],
+ "New" : "Nou",
"\"{name}\" is an invalid file name." : "\"{name}\" no es un fitxer vàlid.",
"File name cannot be empty." : "El nom del fitxer no pot ser buit.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "L'emmagatzematge de {owner} està ple, els arxius no es poden actualitzar o sincronitzar més!",
@@ -67,6 +68,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"],
"Favorited" : "Agregat a favorits",
"Favorite" : "Preferits",
+ "Upload" : "Puja",
+ "Text file" : "Fitxer de text",
+ "Folder" : "Carpeta",
+ "New folder" : "Carpeta nova",
"An error occurred while trying to update the tags" : "S'ha produït un error en tractar d'actualitzar les etiquetes",
"A new file or folder has been <strong>created</strong>" : "S'ha <strong>creat</strong> un nou fitxer o una nova carpeta",
"A file or folder has been <strong>changed</strong>" : "S'ha <strong>canviat</strong> un fitxer o una carpeta",
@@ -93,12 +98,6 @@ OC.L10N.register(
"Settings" : "Arranjament",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Useu aquesta adreça per <a href=\"%s\" target=\"_blank\">accedir als fitxers via WebDAV</a>",
- "New" : "Nou",
- "New text file" : "Nou fitxer de text",
- "Text file" : "Fitxer de text",
- "New folder" : "Carpeta nova",
- "Folder" : "Carpeta",
- "Upload" : "Puja",
"Cancel upload" : "Cancel·la la pujada",
"No files in here" : "No hi ha arxius",
"Upload some content or sync with your devices!" : "Pugi continguts o sincronitzi els seus dispositius.",
diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json
index 7fcc056717d..10a39fc941a 100644
--- a/apps/files/l10n/ca.json
+++ b/apps/files/l10n/ca.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "La pujada s'ha cancel·lat.",
"Could not get result from server." : "No hi ha resposta del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà.",
- "{new_name} already exists" : "{new_name} ja existeix",
- "Could not create file" : "No s'ha pogut crear el fitxer",
- "Could not create folder" : "No s'ha pogut crear la carpeta",
"Actions" : "Accions",
"Download" : "Baixa",
"Select" : "Selecciona",
@@ -45,7 +42,10 @@
"Error moving file." : "Error en moure el fitxer.",
"Error moving file" : "Error en moure el fitxer",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ja existeix",
"Could not rename file" : "No es pot canviar el nom de fitxer",
+ "Could not create file" : "No s'ha pogut crear el fitxer",
+ "Could not create folder" : "No s'ha pogut crear la carpeta",
"Error deleting file." : "Error en esborrar el fitxer.",
"No entries in this folder match '{filter}'" : "No hi ha resultats que coincideixin amb '{filter}'",
"Name" : "Nom",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "No teniu permisos per a pujar o crear els fitxers aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Pujant %n fitxer","Pujant %n fitxers"],
+ "New" : "Nou",
"\"{name}\" is an invalid file name." : "\"{name}\" no es un fitxer vàlid.",
"File name cannot be empty." : "El nom del fitxer no pot ser buit.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "L'emmagatzematge de {owner} està ple, els arxius no es poden actualitzar o sincronitzar més!",
@@ -65,6 +66,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"],
"Favorited" : "Agregat a favorits",
"Favorite" : "Preferits",
+ "Upload" : "Puja",
+ "Text file" : "Fitxer de text",
+ "Folder" : "Carpeta",
+ "New folder" : "Carpeta nova",
"An error occurred while trying to update the tags" : "S'ha produït un error en tractar d'actualitzar les etiquetes",
"A new file or folder has been <strong>created</strong>" : "S'ha <strong>creat</strong> un nou fitxer o una nova carpeta",
"A file or folder has been <strong>changed</strong>" : "S'ha <strong>canviat</strong> un fitxer o una carpeta",
@@ -91,12 +96,6 @@
"Settings" : "Arranjament",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Useu aquesta adreça per <a href=\"%s\" target=\"_blank\">accedir als fitxers via WebDAV</a>",
- "New" : "Nou",
- "New text file" : "Nou fitxer de text",
- "Text file" : "Fitxer de text",
- "New folder" : "Carpeta nova",
- "Folder" : "Carpeta",
- "Upload" : "Puja",
"Cancel upload" : "Cancel·la la pujada",
"No files in here" : "No hi ha arxius",
"Upload some content or sync with your devices!" : "Pugi continguts o sincronitzi els seus dispositius.",
diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js
index c12c66892d9..d462c1361de 100644
--- a/apps/files/l10n/cs_CZ.js
+++ b/apps/files/l10n/cs_CZ.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Odesílání zrušeno.",
"Could not get result from server." : "Nepodařilo se získat výsledek ze serveru.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Probíhá odesílání souboru. Opuštění stránky způsobí zrušení nahrávání.",
- "{new_name} already exists" : "{new_name} již existuje",
- "Could not create file" : "Nepodařilo se vytvořit soubor",
- "Could not create folder" : "Nepodařilo se vytvořit složku",
"Actions" : "Činnosti",
"Download" : "Stáhnout",
"Select" : "Vybrat",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Chyba při přesunu souboru.",
"Error moving file" : "Chyba při přesunu souboru",
"Error" : "Chyba",
+ "{new_name} already exists" : "{new_name} již existuje",
"Could not rename file" : "Nepodařilo se přejmenovat soubor",
+ "Could not create file" : "Nepodařilo se vytvořit soubor",
+ "Could not create folder" : "Nepodařilo se vytvořit složku",
"Error deleting file." : "Chyba při mazání souboru.",
"No entries in this folder match '{filter}'" : "V tomto adresáři nic nesouhlasí s '{filter}'",
"Name" : "Název",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} a {files}",
"You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo vytvářet soubory",
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů"],
+ "New" : "Nový",
"\"{name}\" is an invalid file name." : "\"{name}\" je neplatným názvem souboru.",
"File name cannot be empty." : "Název souboru nemůže být prázdný řetězec.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Úložiště uživatele {owner} je zaplněné, soubory nelze aktualizovat a synchronizovat!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"],
"Favorited" : "Přidáno k oblíbeným",
"Favorite" : "Oblíbené",
+ "Upload" : "Odeslat",
+ "Text file" : "Textový soubor",
+ "Folder" : "Složka",
+ "New folder" : "Nová složka",
"An error occurred while trying to update the tags" : "Při pokusu o úpravu tagů nastala chyba",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo složka",
"A file or folder has been <strong>changed</strong>" : "Soubor nebo složka byla <strong>změněna</strong>",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "Nastavení",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použijte tuto adresu pro <a href=\"%s\" target=\"_blank\">přístup k vašim souborům přes WebDAV</a>",
- "New" : "Nový",
- "New text file" : "Nový textový soubor",
- "Text file" : "Textový soubor",
- "New folder" : "Nová složka",
- "Folder" : "Složka",
- "Upload" : "Odeslat",
"Cancel upload" : "Zrušit odesílání",
"No files in here" : "Žádné soubory",
"Upload some content or sync with your devices!" : "Nahrajte nějaký obsah nebo synchronizujte se svými přístroji!",
diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json
index da8c653d37e..56695a52489 100644
--- a/apps/files/l10n/cs_CZ.json
+++ b/apps/files/l10n/cs_CZ.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Odesílání zrušeno.",
"Could not get result from server." : "Nepodařilo se získat výsledek ze serveru.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Probíhá odesílání souboru. Opuštění stránky způsobí zrušení nahrávání.",
- "{new_name} already exists" : "{new_name} již existuje",
- "Could not create file" : "Nepodařilo se vytvořit soubor",
- "Could not create folder" : "Nepodařilo se vytvořit složku",
"Actions" : "Činnosti",
"Download" : "Stáhnout",
"Select" : "Vybrat",
@@ -47,7 +44,10 @@
"Error moving file." : "Chyba při přesunu souboru.",
"Error moving file" : "Chyba při přesunu souboru",
"Error" : "Chyba",
+ "{new_name} already exists" : "{new_name} již existuje",
"Could not rename file" : "Nepodařilo se přejmenovat soubor",
+ "Could not create file" : "Nepodařilo se vytvořit soubor",
+ "Could not create folder" : "Nepodařilo se vytvořit složku",
"Error deleting file." : "Chyba při mazání souboru.",
"No entries in this folder match '{filter}'" : "V tomto adresáři nic nesouhlasí s '{filter}'",
"Name" : "Název",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} a {files}",
"You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo vytvářet soubory",
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů"],
+ "New" : "Nový",
"\"{name}\" is an invalid file name." : "\"{name}\" je neplatným názvem souboru.",
"File name cannot be empty." : "Název souboru nemůže být prázdný řetězec.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Úložiště uživatele {owner} je zaplněné, soubory nelze aktualizovat a synchronizovat!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"],
"Favorited" : "Přidáno k oblíbeným",
"Favorite" : "Oblíbené",
+ "Upload" : "Odeslat",
+ "Text file" : "Textový soubor",
+ "Folder" : "Složka",
+ "New folder" : "Nová složka",
"An error occurred while trying to update the tags" : "Při pokusu o úpravu tagů nastala chyba",
"A new file or folder has been <strong>created</strong>" : "Byl <strong>vytvořen</strong> nový soubor nebo složka",
"A file or folder has been <strong>changed</strong>" : "Soubor nebo složka byla <strong>změněna</strong>",
@@ -96,12 +101,6 @@
"Settings" : "Nastavení",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použijte tuto adresu pro <a href=\"%s\" target=\"_blank\">přístup k vašim souborům přes WebDAV</a>",
- "New" : "Nový",
- "New text file" : "Nový textový soubor",
- "Text file" : "Textový soubor",
- "New folder" : "Nová složka",
- "Folder" : "Složka",
- "Upload" : "Odeslat",
"Cancel upload" : "Zrušit odesílání",
"No files in here" : "Žádné soubory",
"Upload some content or sync with your devices!" : "Nahrajte nějaký obsah nebo synchronizujte se svými přístroji!",
diff --git a/apps/files/l10n/cy_GB.js b/apps/files/l10n/cy_GB.js
index f3a9825ea4c..bdf61e20f24 100644
--- a/apps/files/l10n/cy_GB.js
+++ b/apps/files/l10n/cy_GB.js
@@ -18,26 +18,26 @@ OC.L10N.register(
"Close" : "Cau",
"Upload cancelled." : "Diddymwyd llwytho i fyny.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Mae ffeiliau'n cael eu llwytho i fyny. Bydd gadael y dudalen hon nawr yn diddymu'r broses.",
- "{new_name} already exists" : "{new_name} yn bodoli'n barod",
"Actions" : "Gweithredoedd",
"Download" : "Llwytho i lawr",
"Pending" : "I ddod",
"Error" : "Gwall",
+ "{new_name} already exists" : "{new_name} yn bodoli'n barod",
"Name" : "Enw",
"Size" : "Maint",
"Modified" : "Addaswyd",
+ "New" : "Newydd",
"File name cannot be empty." : "Does dim hawl cael enw ffeil gwag.",
"Your storage is full, files can not be updated or synced anymore!" : "Mae eich storfa'n llawn, ni ellir diweddaru a chydweddu ffeiliau mwyach!",
"Your storage is almost full ({usedSpacePercent}%)" : "Mae eich storfa bron a bod yn llawn ({usedSpacePercent}%)",
+ "Upload" : "Llwytho i fyny",
+ "Text file" : "Ffeil destun",
+ "Folder" : "Plygell",
"File handling" : "Trafod ffeiliau",
"Maximum upload size" : "Maint mwyaf llwytho i fyny",
"max. possible: " : "mwyaf. posib:",
"Save" : "Cadw",
"Settings" : "Gosodiadau",
- "New" : "Newydd",
- "Text file" : "Ffeil destun",
- "Folder" : "Plygell",
- "Upload" : "Llwytho i fyny",
"Cancel upload" : "Diddymu llwytho i fyny",
"Delete" : "Dileu",
"Upload too large" : "Maint llwytho i fyny'n rhy fawr",
diff --git a/apps/files/l10n/cy_GB.json b/apps/files/l10n/cy_GB.json
index e4c7a637625..eb66c24ec62 100644
--- a/apps/files/l10n/cy_GB.json
+++ b/apps/files/l10n/cy_GB.json
@@ -16,26 +16,26 @@
"Close" : "Cau",
"Upload cancelled." : "Diddymwyd llwytho i fyny.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Mae ffeiliau'n cael eu llwytho i fyny. Bydd gadael y dudalen hon nawr yn diddymu'r broses.",
- "{new_name} already exists" : "{new_name} yn bodoli'n barod",
"Actions" : "Gweithredoedd",
"Download" : "Llwytho i lawr",
"Pending" : "I ddod",
"Error" : "Gwall",
+ "{new_name} already exists" : "{new_name} yn bodoli'n barod",
"Name" : "Enw",
"Size" : "Maint",
"Modified" : "Addaswyd",
+ "New" : "Newydd",
"File name cannot be empty." : "Does dim hawl cael enw ffeil gwag.",
"Your storage is full, files can not be updated or synced anymore!" : "Mae eich storfa'n llawn, ni ellir diweddaru a chydweddu ffeiliau mwyach!",
"Your storage is almost full ({usedSpacePercent}%)" : "Mae eich storfa bron a bod yn llawn ({usedSpacePercent}%)",
+ "Upload" : "Llwytho i fyny",
+ "Text file" : "Ffeil destun",
+ "Folder" : "Plygell",
"File handling" : "Trafod ffeiliau",
"Maximum upload size" : "Maint mwyaf llwytho i fyny",
"max. possible: " : "mwyaf. posib:",
"Save" : "Cadw",
"Settings" : "Gosodiadau",
- "New" : "Newydd",
- "Text file" : "Ffeil destun",
- "Folder" : "Plygell",
- "Upload" : "Llwytho i fyny",
"Cancel upload" : "Diddymu llwytho i fyny",
"Delete" : "Dileu",
"Upload too large" : "Maint llwytho i fyny'n rhy fawr",
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index b82b69baf52..1ecbcb7e16f 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Upload afbrudt.",
"Could not get result from server." : "Kunne ikke hente resultat fra server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.",
- "{new_name} already exists" : "{new_name} eksisterer allerede",
- "Could not create file" : "Kunne ikke oprette fil",
- "Could not create folder" : "Kunne ikke oprette mappe",
"Actions" : "Handlinger",
"Download" : "Download",
"Select" : "Vælg",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Fejl ved flytning af fil",
"Error moving file" : "Fejl ved flytning af fil",
"Error" : "Fejl",
+ "{new_name} already exists" : "{new_name} eksisterer allerede",
"Could not rename file" : "Kunne ikke omdøbe filen",
+ "Could not create file" : "Kunne ikke oprette fil",
+ "Could not create folder" : "Kunne ikke oprette mappe",
"Error deleting file." : "Fejl ved sletnign af fil.",
"No entries in this folder match '{filter}'" : "Der er ingen poster i denne mappe, der matcher '{filter}'",
"Name" : "Navn",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} og {files}",
"You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her",
"_Uploading %n file_::_Uploading %n files_" : ["Uploader %n fil","Uploader %n filer"],
+ "New" : "Ny",
"\"{name}\" is an invalid file name." : "'{name}' er et ugyldigt filnavn.",
"File name cannot be empty." : "Filnavnet kan ikke stå tomt.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Opbevaringspladsen tilhørende {owner} er fyldt op - filer kan ikke længere opdateres eller synkroniseres!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Gjort til foretrukken",
"Favorite" : "Foretrukken",
+ "Upload" : "Upload",
+ "Text file" : "Tekstfil",
+ "Folder" : "Mappe",
+ "New folder" : "Ny Mappe",
"An error occurred while trying to update the tags" : "Der opstod en fejl under forsøg på at opdatere mærkerne",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe er blevet <strong>ændret</strong>",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "Indstillinger",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Brug denne adresse for at <a href=\"%s\" target=\"_blank\">tilgå dine filer via WebDAV</a>",
- "New" : "Ny",
- "New text file" : "Ny tekstfil",
- "Text file" : "Tekstfil",
- "New folder" : "Ny Mappe",
- "Folder" : "Mappe",
- "Upload" : "Upload",
"Cancel upload" : "Fortryd upload",
"No files in here" : "Her er ingen filer",
"Upload some content or sync with your devices!" : "Overfør indhold eller synkronisér med dine enheder!",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 85e0f872433..c85759c5640 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Upload afbrudt.",
"Could not get result from server." : "Kunne ikke hente resultat fra server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.",
- "{new_name} already exists" : "{new_name} eksisterer allerede",
- "Could not create file" : "Kunne ikke oprette fil",
- "Could not create folder" : "Kunne ikke oprette mappe",
"Actions" : "Handlinger",
"Download" : "Download",
"Select" : "Vælg",
@@ -47,7 +44,10 @@
"Error moving file." : "Fejl ved flytning af fil",
"Error moving file" : "Fejl ved flytning af fil",
"Error" : "Fejl",
+ "{new_name} already exists" : "{new_name} eksisterer allerede",
"Could not rename file" : "Kunne ikke omdøbe filen",
+ "Could not create file" : "Kunne ikke oprette fil",
+ "Could not create folder" : "Kunne ikke oprette mappe",
"Error deleting file." : "Fejl ved sletnign af fil.",
"No entries in this folder match '{filter}'" : "Der er ingen poster i denne mappe, der matcher '{filter}'",
"Name" : "Navn",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} og {files}",
"You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her",
"_Uploading %n file_::_Uploading %n files_" : ["Uploader %n fil","Uploader %n filer"],
+ "New" : "Ny",
"\"{name}\" is an invalid file name." : "'{name}' er et ugyldigt filnavn.",
"File name cannot be empty." : "Filnavnet kan ikke stå tomt.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Opbevaringspladsen tilhørende {owner} er fyldt op - filer kan ikke længere opdateres eller synkroniseres!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Gjort til foretrukken",
"Favorite" : "Foretrukken",
+ "Upload" : "Upload",
+ "Text file" : "Tekstfil",
+ "Folder" : "Mappe",
+ "New folder" : "Ny Mappe",
"An error occurred while trying to update the tags" : "Der opstod en fejl under forsøg på at opdatere mærkerne",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapper er blevet <strong>oprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe er blevet <strong>ændret</strong>",
@@ -96,12 +101,6 @@
"Settings" : "Indstillinger",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Brug denne adresse for at <a href=\"%s\" target=\"_blank\">tilgå dine filer via WebDAV</a>",
- "New" : "Ny",
- "New text file" : "Ny tekstfil",
- "Text file" : "Tekstfil",
- "New folder" : "Ny Mappe",
- "Folder" : "Mappe",
- "Upload" : "Upload",
"Cancel upload" : "Fortryd upload",
"No files in here" : "Her er ingen filer",
"Upload some content or sync with your devices!" : "Overfør indhold eller synkronisér med dine enheder!",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 48e386308ec..5e22e05f80d 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Upload abgebrochen.",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.",
- "{new_name} already exists" : "{new_name} existiert bereits",
- "Could not create file" : "Die Datei konnte nicht erstellt werden",
- "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
+ "{new_name} already exists" : "{new_name} existiert bereits",
"Could not rename file" : "Die Datei konnte nicht umbenannt werden",
+ "Could not create file" : "Die Datei konnte nicht erstellt werden",
+ "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Error deleting file." : "Fehler beim Löschen der Datei.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Name" : "Name",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} und {files}",
"You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hochgeladen","%n Dateien werden hochgeladen"],
+ "New" : "Neu",
"\"{name}\" is an invalid file name." : "»{name}« ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Favorited" : "Favorisiert",
"Favorite" : "Favorit",
+ "Upload" : "Hochladen",
+ "Text file" : "Textdatei",
+ "Folder" : "Ordner",
+ "New folder" : "Neuer Ordner",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>",
@@ -97,12 +102,6 @@ OC.L10N.register(
"Settings" : "Einstellungen",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutze diese Adresse, um <a href=\"%s\" target=\"_blank\">über WebDAV auf Deine Dateien zuzugreifen</a>",
- "New" : "Neu",
- "New text file" : "Neue Textdatei",
- "Text file" : "Textdatei",
- "New folder" : "Neuer Ordner",
- "Folder" : "Ordner",
- "Upload" : "Hochladen",
"Cancel upload" : "Upload abbrechen",
"No files in here" : "Keine Dateien vorhanden",
"Upload some content or sync with your devices!" : "Lade Inhalte hoch oder synchronisiere mit Deinen Geräten!",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index fdf22ba9732..5e93d2b3856 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Upload abgebrochen.",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.",
- "{new_name} already exists" : "{new_name} existiert bereits",
- "Could not create file" : "Die Datei konnte nicht erstellt werden",
- "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
@@ -47,7 +44,10 @@
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
+ "{new_name} already exists" : "{new_name} existiert bereits",
"Could not rename file" : "Die Datei konnte nicht umbenannt werden",
+ "Could not create file" : "Die Datei konnte nicht erstellt werden",
+ "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Error deleting file." : "Fehler beim Löschen der Datei.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Name" : "Name",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} und {files}",
"You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hochgeladen","%n Dateien werden hochgeladen"],
+ "New" : "Neu",
"\"{name}\" is an invalid file name." : "»{name}« ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"],
"Favorited" : "Favorisiert",
"Favorite" : "Favorit",
+ "Upload" : "Hochladen",
+ "Text file" : "Textdatei",
+ "Folder" : "Ordner",
+ "New folder" : "Neuer Ordner",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>",
@@ -95,12 +100,6 @@
"Settings" : "Einstellungen",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutze diese Adresse, um <a href=\"%s\" target=\"_blank\">über WebDAV auf Deine Dateien zuzugreifen</a>",
- "New" : "Neu",
- "New text file" : "Neue Textdatei",
- "Text file" : "Textdatei",
- "New folder" : "Neuer Ordner",
- "Folder" : "Ordner",
- "Upload" : "Hochladen",
"Cancel upload" : "Upload abbrechen",
"No files in here" : "Keine Dateien vorhanden",
"Upload some content or sync with your devices!" : "Lade Inhalte hoch oder synchronisiere mit Deinen Geräten!",
diff --git a/apps/files/l10n/de_AT.js b/apps/files/l10n/de_AT.js
index a6ff8843a63..70adef6bb08 100644
--- a/apps/files/l10n/de_AT.js
+++ b/apps/files/l10n/de_AT.js
@@ -5,6 +5,8 @@ OC.L10N.register(
"Files" : "Dateien",
"Download" : "Herunterladen",
"Error" : "Fehler",
+ "Upload" : "Hochladen",
+ "New folder" : "Neuer Ordner",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner hat sich <strong>geändert</strong>",
"A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>",
@@ -16,8 +18,6 @@ OC.L10N.register(
"%2$s deleted %1$s" : "%2$s löschte %1$s",
"Save" : "Speichern",
"Settings" : "Einstellungen",
- "New folder" : "Neuer Ordner",
- "Upload" : "Hochladen",
"Cancel upload" : "Hochladen abbrechen",
"Delete" : "Löschen"
},
diff --git a/apps/files/l10n/de_AT.json b/apps/files/l10n/de_AT.json
index 0356e6650af..8766f264741 100644
--- a/apps/files/l10n/de_AT.json
+++ b/apps/files/l10n/de_AT.json
@@ -3,6 +3,8 @@
"Files" : "Dateien",
"Download" : "Herunterladen",
"Error" : "Fehler",
+ "Upload" : "Hochladen",
+ "New folder" : "Neuer Ordner",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner hat sich <strong>geändert</strong>",
"A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>",
@@ -14,8 +16,6 @@
"%2$s deleted %1$s" : "%2$s löschte %1$s",
"Save" : "Speichern",
"Settings" : "Einstellungen",
- "New folder" : "Neuer Ordner",
- "Upload" : "Hochladen",
"Cancel upload" : "Hochladen abbrechen",
"Delete" : "Löschen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index bc2f764ae55..34c6c8fb4a6 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Upload abgebrochen.",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
- "{new_name} already exists" : "{new_name} existiert bereits",
- "Could not create file" : "Die Datei konnte nicht erstellt werden",
- "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
+ "{new_name} already exists" : "{new_name} existiert bereits",
"Could not rename file" : "Die Datei konnte nicht umbenannt werden",
+ "Could not create file" : "Die Datei konnte nicht erstellt werden",
+ "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Error deleting file." : "Fehler beim Löschen der Datei.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Name" : "Name",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} und {files}",
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hoch geladen"],
+ "New" : "Neu",
"\"{name}\" is an invalid file name." : "„{name}“ ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
@@ -69,6 +70,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["stimmt mit '{filter}' überein","stimmen mit '{filter}' überein"],
"Favorited" : "Favorisiert",
"Favorite" : "Favorit",
+ "Upload" : "Hochladen",
+ "Text file" : "Textdatei",
+ "Folder" : "Ordner",
+ "New folder" : "Neuer Ordner",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>",
@@ -95,12 +100,6 @@ OC.L10N.register(
"Settings" : "Einstellungen",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\">über WebDAV auf Ihre Dateien zuzugreifen</a>",
- "New" : "Neu",
- "New text file" : "Neue Textdatei",
- "Text file" : "Textdatei",
- "New folder" : "Neuer Ordner",
- "Folder" : "Ordner",
- "Upload" : "Hochladen",
"Cancel upload" : "Upload abbrechen",
"No files in here" : "Keine Dateien vorhanden",
"Upload some content or sync with your devices!" : "Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten!",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 7e4ee06cb81..390e5e0e575 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Upload abgebrochen.",
"Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
- "{new_name} already exists" : "{new_name} existiert bereits",
- "Could not create file" : "Die Datei konnte nicht erstellt werden",
- "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Actions" : "Aktionen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
@@ -47,7 +44,10 @@
"Error moving file." : "Fehler beim Verschieben der Datei.",
"Error moving file" : "Fehler beim Verschieben der Datei",
"Error" : "Fehler",
+ "{new_name} already exists" : "{new_name} existiert bereits",
"Could not rename file" : "Die Datei konnte nicht umbenannt werden",
+ "Could not create file" : "Die Datei konnte nicht erstellt werden",
+ "Could not create folder" : "Der Ordner konnte nicht erstellt werden",
"Error deleting file." : "Fehler beim Löschen der Datei.",
"No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein",
"Name" : "Name",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} und {files}",
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hoch geladen"],
+ "New" : "Neu",
"\"{name}\" is an invalid file name." : "„{name}“ ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
@@ -67,6 +68,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["stimmt mit '{filter}' überein","stimmen mit '{filter}' überein"],
"Favorited" : "Favorisiert",
"Favorite" : "Favorit",
+ "Upload" : "Hochladen",
+ "Text file" : "Textdatei",
+ "Folder" : "Ordner",
+ "New folder" : "Neuer Ordner",
"An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
"A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>",
"A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>",
@@ -93,12 +98,6 @@
"Settings" : "Einstellungen",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\">über WebDAV auf Ihre Dateien zuzugreifen</a>",
- "New" : "Neu",
- "New text file" : "Neue Textdatei",
- "Text file" : "Textdatei",
- "New folder" : "Neuer Ordner",
- "Folder" : "Ordner",
- "Upload" : "Hochladen",
"Cancel upload" : "Upload abbrechen",
"No files in here" : "Keine Dateien vorhanden",
"Upload some content or sync with your devices!" : "Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten!",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 1d0ac807d5f..fe65869c3bb 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Η αποστολή ακυρώθηκε.",
"Could not get result from server." : "Αδυναμία λήψης αποτελέσματος από το διακομιστή.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
- "{new_name} already exists" : "{new_name} υπάρχει ήδη",
- "Could not create file" : "Αδυναμία δημιουργίας αρχείου",
- "Could not create folder" : "Αδυναμία δημιουργίας φακέλου",
"Actions" : "Ενέργειες",
"Download" : "Λήψη",
"Select" : "Επιλογή",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Σφάλμα κατά τη μετακίνηση του αρχείου.",
"Error moving file" : "Σφάλμα κατά τη μετακίνηση του αρχείου",
"Error" : "Σφάλμα",
+ "{new_name} already exists" : "{new_name} υπάρχει ήδη",
"Could not rename file" : "Αδυναμία μετονομασίας αρχείου",
+ "Could not create file" : "Αδυναμία δημιουργίας αρχείου",
+ "Could not create folder" : "Αδυναμία δημιουργίας φακέλου",
"Error deleting file." : "Σφάλμα διαγραφής αρχείου.",
"No entries in this folder match '{filter}'" : "Δεν ταιριάζουν καταχωρήσεις σε αυτόν το φάκελο '{filter}'",
"Name" : "Όνομα",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{Κατάλογοι αρχείων} και {αρχεία}",
"You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα φόρτωσης ή δημιουργίας αρχείων εδώ",
"_Uploading %n file_::_Uploading %n files_" : ["Ανέβασμα %n αρχείου","Ανέβασμα %n αρχείων"],
+ "New" : "Νέο",
"\"{name}\" is an invalid file name." : "Το \"{name}\" είναι μη έγκυρο όνομα αρχείου.",
"File name cannot be empty." : "Το όνομα αρχείου δεν μπορεί να είναι κενό.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Ο αποθηκευτικός χώρος του {owner} είναι πλήρης, τα αρχεία δεν δύναται να ενημερωθούν ή να συγχρονίσουν!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Προτιμώμενα",
"Favorite" : "Αγαπημένο",
+ "{newname} already exists" : "το {newname} υπάρχει ήδη",
+ "Upload" : "Μεταφόρτωση",
+ "Text file" : "Αρχείο κειμένου",
+ "New text file.txt" : "Νέο αρχείο κειμένου.txt",
+ "Folder" : "Φάκελος",
+ "New folder" : "Νέος κατάλογος",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
"A file or folder has been <strong>changed</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>αλλάξει</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Ρυθμίσεις",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Χρησιμοποιήστε αυτήν την διεύθυνση για να αποκτήσετε <a href=\"%s\" target=\"_blank\">πρόσβαση στα αρχεία σας μέσω WebDAV</a>",
- "New" : "Νέο",
- "New text file" : "Νέο αρχείο κειμένου",
- "Text file" : "Αρχείο κειμένου",
- "New folder" : "Νέος κατάλογος",
- "Folder" : "Φάκελος",
- "Upload" : "Μεταφόρτωση",
"Cancel upload" : "Ακύρωση μεταφόρτωσης",
"No files in here" : "Δεν υπάρχουν αρχεία",
"Upload some content or sync with your devices!" : "Μεταφόρτωση περιεχομένου ή συγχρονισμός με τις συσκευές σας!",
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index d3ea79a5e40..37ff95b406e 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Η αποστολή ακυρώθηκε.",
"Could not get result from server." : "Αδυναμία λήψης αποτελέσματος από το διακομιστή.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
- "{new_name} already exists" : "{new_name} υπάρχει ήδη",
- "Could not create file" : "Αδυναμία δημιουργίας αρχείου",
- "Could not create folder" : "Αδυναμία δημιουργίας φακέλου",
"Actions" : "Ενέργειες",
"Download" : "Λήψη",
"Select" : "Επιλογή",
@@ -47,7 +44,10 @@
"Error moving file." : "Σφάλμα κατά τη μετακίνηση του αρχείου.",
"Error moving file" : "Σφάλμα κατά τη μετακίνηση του αρχείου",
"Error" : "Σφάλμα",
+ "{new_name} already exists" : "{new_name} υπάρχει ήδη",
"Could not rename file" : "Αδυναμία μετονομασίας αρχείου",
+ "Could not create file" : "Αδυναμία δημιουργίας αρχείου",
+ "Could not create folder" : "Αδυναμία δημιουργίας φακέλου",
"Error deleting file." : "Σφάλμα διαγραφής αρχείου.",
"No entries in this folder match '{filter}'" : "Δεν ταιριάζουν καταχωρήσεις σε αυτόν το φάκελο '{filter}'",
"Name" : "Όνομα",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{Κατάλογοι αρχείων} και {αρχεία}",
"You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα φόρτωσης ή δημιουργίας αρχείων εδώ",
"_Uploading %n file_::_Uploading %n files_" : ["Ανέβασμα %n αρχείου","Ανέβασμα %n αρχείων"],
+ "New" : "Νέο",
"\"{name}\" is an invalid file name." : "Το \"{name}\" είναι μη έγκυρο όνομα αρχείου.",
"File name cannot be empty." : "Το όνομα αρχείου δεν μπορεί να είναι κενό.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Ο αποθηκευτικός χώρος του {owner} είναι πλήρης, τα αρχεία δεν δύναται να ενημερωθούν ή να συγχρονίσουν!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Προτιμώμενα",
"Favorite" : "Αγαπημένο",
+ "{newname} already exists" : "το {newname} υπάρχει ήδη",
+ "Upload" : "Μεταφόρτωση",
+ "Text file" : "Αρχείο κειμένου",
+ "New text file.txt" : "Νέο αρχείο κειμένου.txt",
+ "Folder" : "Φάκελος",
+ "New folder" : "Νέος κατάλογος",
"An error occurred while trying to update the tags" : "Ένα σφάλμα προέκυψε κατά τη διάρκεια ενημέρωσης των ετικετών",
"A new file or folder has been <strong>created</strong>" : "Ένα νέο αρχείο ή κατάλογος έχουν <strong>δημιουργηθεί</strong>",
"A file or folder has been <strong>changed</strong>" : "Ένα αρχείο ή κατάλογος έχουν <strong>αλλάξει</strong>",
@@ -96,12 +103,6 @@
"Settings" : "Ρυθμίσεις",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Χρησιμοποιήστε αυτήν την διεύθυνση για να αποκτήσετε <a href=\"%s\" target=\"_blank\">πρόσβαση στα αρχεία σας μέσω WebDAV</a>",
- "New" : "Νέο",
- "New text file" : "Νέο αρχείο κειμένου",
- "Text file" : "Αρχείο κειμένου",
- "New folder" : "Νέος κατάλογος",
- "Folder" : "Φάκελος",
- "Upload" : "Μεταφόρτωση",
"Cancel upload" : "Ακύρωση μεταφόρτωσης",
"No files in here" : "Δεν υπάρχουν αρχεία",
"Upload some content or sync with your devices!" : "Μεταφόρτωση περιεχομένου ή συγχρονισμός με τις συσκευές σας!",
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index 1433c5d9c18..decfe4dcd83 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Upload cancelled.",
"Could not get result from server." : "Could not get result from server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "File upload is in progress. Leaving the page now will cancel the upload.",
- "{new_name} already exists" : "{new_name} already exists",
- "Could not create file" : "Could not create file",
- "Could not create folder" : "Could not create folder",
"Actions" : "Actions",
"Download" : "Download",
"Select" : "Select",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Error moving file.",
"Error moving file" : "Error moving file",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} already exists",
"Could not rename file" : "Could not rename file",
+ "Could not create file" : "Could not create file",
+ "Could not create folder" : "Could not create folder",
"Error deleting file." : "Error deleting file.",
"No entries in this folder match '{filter}'" : "No entries in this folder match '{filter}'",
"Name" : "Name",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} and {files}",
"You don’t have permission to upload or create files here" : "You don’t have permission to upload or create files here",
"_Uploading %n file_::_Uploading %n files_" : ["Uploading %n file","Uploading %n files"],
+ "New" : "New",
"\"{name}\" is an invalid file name." : "\"{name}\" is an invalid file name.",
"File name cannot be empty." : "File name cannot be empty.",
"Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!",
@@ -65,6 +66,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["matches '{filter}'","match '{filter}'"],
"Favorited" : "Favourited",
"Favorite" : "Favourite",
+ "Upload" : "Upload",
+ "Text file" : "Text file",
+ "Folder" : "Folder",
+ "New folder" : "New folder",
"An error occurred while trying to update the tags" : "An error occurred whilst trying to update the tags",
"A new file or folder has been <strong>created</strong>" : "A new file or folder has been <strong>created</strong>",
"A file or folder has been <strong>changed</strong>" : "A file or folder has been <strong>changed</strong>",
@@ -91,12 +96,6 @@ OC.L10N.register(
"Settings" : "Settings",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>",
- "New" : "New",
- "New text file" : "New text file",
- "Text file" : "Text file",
- "New folder" : "New folder",
- "Folder" : "Folder",
- "Upload" : "Upload",
"Cancel upload" : "Cancel upload",
"No files in here" : "No files in here",
"Upload some content or sync with your devices!" : "Upload some content or sync with your devices!",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index 84feb344142..cf06affa55e 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Upload cancelled.",
"Could not get result from server." : "Could not get result from server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "File upload is in progress. Leaving the page now will cancel the upload.",
- "{new_name} already exists" : "{new_name} already exists",
- "Could not create file" : "Could not create file",
- "Could not create folder" : "Could not create folder",
"Actions" : "Actions",
"Download" : "Download",
"Select" : "Select",
@@ -45,7 +42,10 @@
"Error moving file." : "Error moving file.",
"Error moving file" : "Error moving file",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} already exists",
"Could not rename file" : "Could not rename file",
+ "Could not create file" : "Could not create file",
+ "Could not create folder" : "Could not create folder",
"Error deleting file." : "Error deleting file.",
"No entries in this folder match '{filter}'" : "No entries in this folder match '{filter}'",
"Name" : "Name",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} and {files}",
"You don’t have permission to upload or create files here" : "You don’t have permission to upload or create files here",
"_Uploading %n file_::_Uploading %n files_" : ["Uploading %n file","Uploading %n files"],
+ "New" : "New",
"\"{name}\" is an invalid file name." : "\"{name}\" is an invalid file name.",
"File name cannot be empty." : "File name cannot be empty.",
"Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!",
@@ -63,6 +64,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["matches '{filter}'","match '{filter}'"],
"Favorited" : "Favourited",
"Favorite" : "Favourite",
+ "Upload" : "Upload",
+ "Text file" : "Text file",
+ "Folder" : "Folder",
+ "New folder" : "New folder",
"An error occurred while trying to update the tags" : "An error occurred whilst trying to update the tags",
"A new file or folder has been <strong>created</strong>" : "A new file or folder has been <strong>created</strong>",
"A file or folder has been <strong>changed</strong>" : "A file or folder has been <strong>changed</strong>",
@@ -89,12 +94,6 @@
"Settings" : "Settings",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>",
- "New" : "New",
- "New text file" : "New text file",
- "Text file" : "Text file",
- "New folder" : "New folder",
- "Folder" : "Folder",
- "Upload" : "Upload",
"Cancel upload" : "Cancel upload",
"No files in here" : "No files in here",
"Upload some content or sync with your devices!" : "Upload some content or sync with your devices!",
diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js
index 0f6c7de8a31..3c208a6bc17 100644
--- a/apps/files/l10n/eo.js
+++ b/apps/files/l10n/eo.js
@@ -29,16 +29,16 @@ OC.L10N.register(
"Upload cancelled." : "La alŝuto nuliĝis.",
"Could not get result from server." : "Ne povis ekhaviĝi rezulto el la servilo.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dosieralŝuto plenumiĝas. Lasi la paĝon nun nuligus la alŝuton.",
- "{new_name} already exists" : "{new_name} jam ekzistas",
- "Could not create file" : "Ne povis kreiĝi dosiero",
- "Could not create folder" : "Ne povis kreiĝi dosierujo",
"Actions" : "Agoj",
"Download" : "Elŝuti",
"Select" : "Elekti",
"Pending" : "Traktotaj",
"Error moving file" : "Eraris movo de dosiero",
"Error" : "Eraro",
+ "{new_name} already exists" : "{new_name} jam ekzistas",
"Could not rename file" : "Ne povis alinomiĝi dosiero",
+ "Could not create file" : "Ne povis kreiĝi dosiero",
+ "Could not create folder" : "Ne povis kreiĝi dosierujo",
"Name" : "Nomo",
"Size" : "Grando",
"Modified" : "Modifita",
@@ -47,10 +47,15 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} kaj {files}",
"You don’t have permission to upload or create files here" : "Vi ne havas permeson alŝuti aŭ krei dosierojn ĉi tie",
"_Uploading %n file_::_Uploading %n files_" : ["Alŝutatas %n dosiero","Alŝutatas %n dosieroj"],
+ "New" : "Nova",
"File name cannot be empty." : "Dosiernomo devas ne malpleni.",
"Your storage is full, files can not be updated or synced anymore!" : "Via memoro plenas, ne plu eblas ĝisdatigi aŭ sinkronigi dosierojn!",
"Your storage is almost full ({usedSpacePercent}%)" : "Via memoro preskaŭ plenas ({usedSpacePercent}%)",
"Favorite" : "Favorato",
+ "Upload" : "Alŝuti",
+ "Text file" : "Tekstodosiero",
+ "Folder" : "Dosierujo",
+ "New folder" : "Nova dosierujo",
"You created %1$s" : "Vi kreis %1$s",
"%2$s created %1$s" : "%2$s kreis %1$s",
"%1$s was created in a public folder" : "%1$s kreiĝis en publika dosierujo",
@@ -68,12 +73,6 @@ OC.L10N.register(
"Settings" : "Agordo",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uzu ĉi tiun adreson por <a href=\"%s\" target=\"_blank\">aliri viajn Dosierojn per WebDAV</a>",
- "New" : "Nova",
- "New text file" : "Nova tekstodosiero",
- "Text file" : "Tekstodosiero",
- "New folder" : "Nova dosierujo",
- "Folder" : "Dosierujo",
- "Upload" : "Alŝuti",
"Cancel upload" : "Nuligi alŝuton",
"No files in here" : "Neniu dosiero estas ĉi tie",
"Select all" : "Elekti ĉion",
diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json
index 88639f33449..bf69b68d883 100644
--- a/apps/files/l10n/eo.json
+++ b/apps/files/l10n/eo.json
@@ -27,16 +27,16 @@
"Upload cancelled." : "La alŝuto nuliĝis.",
"Could not get result from server." : "Ne povis ekhaviĝi rezulto el la servilo.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dosieralŝuto plenumiĝas. Lasi la paĝon nun nuligus la alŝuton.",
- "{new_name} already exists" : "{new_name} jam ekzistas",
- "Could not create file" : "Ne povis kreiĝi dosiero",
- "Could not create folder" : "Ne povis kreiĝi dosierujo",
"Actions" : "Agoj",
"Download" : "Elŝuti",
"Select" : "Elekti",
"Pending" : "Traktotaj",
"Error moving file" : "Eraris movo de dosiero",
"Error" : "Eraro",
+ "{new_name} already exists" : "{new_name} jam ekzistas",
"Could not rename file" : "Ne povis alinomiĝi dosiero",
+ "Could not create file" : "Ne povis kreiĝi dosiero",
+ "Could not create folder" : "Ne povis kreiĝi dosierujo",
"Name" : "Nomo",
"Size" : "Grando",
"Modified" : "Modifita",
@@ -45,10 +45,15 @@
"{dirs} and {files}" : "{dirs} kaj {files}",
"You don’t have permission to upload or create files here" : "Vi ne havas permeson alŝuti aŭ krei dosierojn ĉi tie",
"_Uploading %n file_::_Uploading %n files_" : ["Alŝutatas %n dosiero","Alŝutatas %n dosieroj"],
+ "New" : "Nova",
"File name cannot be empty." : "Dosiernomo devas ne malpleni.",
"Your storage is full, files can not be updated or synced anymore!" : "Via memoro plenas, ne plu eblas ĝisdatigi aŭ sinkronigi dosierojn!",
"Your storage is almost full ({usedSpacePercent}%)" : "Via memoro preskaŭ plenas ({usedSpacePercent}%)",
"Favorite" : "Favorato",
+ "Upload" : "Alŝuti",
+ "Text file" : "Tekstodosiero",
+ "Folder" : "Dosierujo",
+ "New folder" : "Nova dosierujo",
"You created %1$s" : "Vi kreis %1$s",
"%2$s created %1$s" : "%2$s kreis %1$s",
"%1$s was created in a public folder" : "%1$s kreiĝis en publika dosierujo",
@@ -66,12 +71,6 @@
"Settings" : "Agordo",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uzu ĉi tiun adreson por <a href=\"%s\" target=\"_blank\">aliri viajn Dosierojn per WebDAV</a>",
- "New" : "Nova",
- "New text file" : "Nova tekstodosiero",
- "Text file" : "Tekstodosiero",
- "New folder" : "Nova dosierujo",
- "Folder" : "Dosierujo",
- "Upload" : "Alŝuti",
"Cancel upload" : "Nuligi alŝuton",
"No files in here" : "Neniu dosiero estas ĉi tie",
"Select all" : "Elekti ĉion",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 39f4b8d0569..318a86e5884 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Subida cancelada.",
"Could not get result from server." : "No se pudo obtener respuesta del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
- "{new_name} already exists" : "{new_name} ya existe",
- "Could not create file" : "No se pudo crear el archivo",
- "Could not create folder" : "No se pudo crear la carpeta",
"Actions" : "Acciones",
"Download" : "Descargar",
"Select" : "Seleccionar",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Error al mover el archivo.",
"Error moving file" : "Error moviendo archivo",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ya existe",
"Could not rename file" : "No se pudo renombrar el archivo",
+ "Could not create file" : "No se pudo crear el archivo",
+ "Could not create folder" : "No se pudo crear la carpeta",
"Error deleting file." : "Error al borrar el archivo",
"No entries in this folder match '{filter}'" : "No hay resultados que coincidan con '{filter}'",
"Name" : "Nombre",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} y {files}",
"You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí.",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
+ "New" : "Nuevo",
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "El almacén de {owner} está repleto, ¡los archivos no se actualizarán ni sincronizarán más!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Agregado a Favoritos",
"Favorite" : "Favorito",
+ "{newname} already exists" : "{new_name} ya existe",
+ "Upload" : "Subir",
+ "Text file" : "Archivo de texto",
+ "New text file.txt" : "Nuevo archivo de texto.txt",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva carpeta",
"An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
"A file or folder has been <strong>changed</strong>" : "Se ha <strong>modificado</strong> un archivo o carpeta",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Ajustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use esta URL <a href=\"%s\" target=\"_blank\">para acceder via WebDAV</a>",
- "New" : "Nuevo",
- "New text file" : "Nuevo archivo de texto",
- "Text file" : "Archivo de texto",
- "New folder" : "Nueva carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Subir",
"Cancel upload" : "Cancelar la subida",
"No files in here" : "Aquí no hay archivos",
"Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index 064ffe3785d..26761bf2073 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Subida cancelada.",
"Could not get result from server." : "No se pudo obtener respuesta del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
- "{new_name} already exists" : "{new_name} ya existe",
- "Could not create file" : "No se pudo crear el archivo",
- "Could not create folder" : "No se pudo crear la carpeta",
"Actions" : "Acciones",
"Download" : "Descargar",
"Select" : "Seleccionar",
@@ -47,7 +44,10 @@
"Error moving file." : "Error al mover el archivo.",
"Error moving file" : "Error moviendo archivo",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ya existe",
"Could not rename file" : "No se pudo renombrar el archivo",
+ "Could not create file" : "No se pudo crear el archivo",
+ "Could not create folder" : "No se pudo crear la carpeta",
"Error deleting file." : "Error al borrar el archivo",
"No entries in this folder match '{filter}'" : "No hay resultados que coincidan con '{filter}'",
"Name" : "Nombre",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} y {files}",
"You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí.",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
+ "New" : "Nuevo",
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido.",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "El almacén de {owner} está repleto, ¡los archivos no se actualizarán ni sincronizarán más!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Agregado a Favoritos",
"Favorite" : "Favorito",
+ "{newname} already exists" : "{new_name} ya existe",
+ "Upload" : "Subir",
+ "Text file" : "Archivo de texto",
+ "New text file.txt" : "Nuevo archivo de texto.txt",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva carpeta",
"An error occurred while trying to update the tags" : "Se produjo un error al tratar de actualizar las etiquetas",
"A new file or folder has been <strong>created</strong>" : "Se ha <strong>creado</strong> un nuevo archivo o carpeta",
"A file or folder has been <strong>changed</strong>" : "Se ha <strong>modificado</strong> un archivo o carpeta",
@@ -96,12 +103,6 @@
"Settings" : "Ajustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use esta URL <a href=\"%s\" target=\"_blank\">para acceder via WebDAV</a>",
- "New" : "Nuevo",
- "New text file" : "Nuevo archivo de texto",
- "Text file" : "Archivo de texto",
- "New folder" : "Nueva carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Subir",
"Cancel upload" : "Cancelar la subida",
"No files in here" : "Aquí no hay archivos",
"Upload some content or sync with your devices!" : "Suba contenidos o sincronice sus dispositivos.",
diff --git a/apps/files/l10n/es_AR.js b/apps/files/l10n/es_AR.js
index 8b277c3b9f5..f99464401b6 100644
--- a/apps/files/l10n/es_AR.js
+++ b/apps/files/l10n/es_AR.js
@@ -29,16 +29,16 @@ OC.L10N.register(
"Upload cancelled." : "La subida fue cancelada",
"Could not get result from server." : "No se pudo obtener resultados del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.",
- "{new_name} already exists" : "{new_name} ya existe",
- "Could not create file" : "No se pudo crear el archivo",
- "Could not create folder" : "No se pudo crear el directorio",
"Actions" : "Acciones",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendientes",
"Error moving file" : "Error moviendo el archivo",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ya existe",
"Could not rename file" : "No se pudo renombrar el archivo",
+ "Could not create file" : "No se pudo crear el archivo",
+ "Could not create folder" : "No se pudo crear el directorio",
"Error deleting file." : "Error al borrar el archivo.",
"Name" : "Nombre",
"Size" : "Tamaño",
@@ -48,10 +48,15 @@ OC.L10N.register(
"{dirs} and {files}" : "{carpetas} y {archivos}",
"You don’t have permission to upload or create files here" : "No tienes permisos para subir o crear archivos aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
+ "New" : "Nuevo",
"File name cannot be empty." : "El nombre del archivo no puede quedar vacío.",
"Your storage is full, files can not be updated or synced anymore!" : "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando",
"Your storage is almost full ({usedSpacePercent}%)" : "El almacenamiento está casi lleno ({usedSpacePercent}%)",
"Favorite" : "Favorito",
+ "Upload" : "Subir",
+ "Text file" : "Archivo de texto",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva Carpeta",
"A new file or folder has been <strong>created</strong>" : "Un archivo o carpeta ha sido <strong>creado</strong>",
"A file or folder has been <strong>changed</strong>" : "Un archivo o carpeta ha sido <strong>modificado</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>eliminado</strong>",
@@ -69,12 +74,6 @@ OC.L10N.register(
"Settings" : "Configuración",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Usar esta dirección para <a href=\"%s\" target=\"_blank\">acceder a tus archivos vía WebDAV</a>",
- "New" : "Nuevo",
- "New text file" : "Nuevo archivo de texto",
- "Text file" : "Archivo de texto",
- "New folder" : "Nueva Carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Subir",
"Cancel upload" : "Cancelar subida",
"Delete" : "Borrar",
"Upload too large" : "El tamaño del archivo que querés subir es demasiado grande",
diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json
index a9bd63269db..43dc9d35c3c 100644
--- a/apps/files/l10n/es_AR.json
+++ b/apps/files/l10n/es_AR.json
@@ -27,16 +27,16 @@
"Upload cancelled." : "La subida fue cancelada",
"Could not get result from server." : "No se pudo obtener resultados del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.",
- "{new_name} already exists" : "{new_name} ya existe",
- "Could not create file" : "No se pudo crear el archivo",
- "Could not create folder" : "No se pudo crear el directorio",
"Actions" : "Acciones",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendientes",
"Error moving file" : "Error moviendo el archivo",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ya existe",
"Could not rename file" : "No se pudo renombrar el archivo",
+ "Could not create file" : "No se pudo crear el archivo",
+ "Could not create folder" : "No se pudo crear el directorio",
"Error deleting file." : "Error al borrar el archivo.",
"Name" : "Nombre",
"Size" : "Tamaño",
@@ -46,10 +46,15 @@
"{dirs} and {files}" : "{carpetas} y {archivos}",
"You don’t have permission to upload or create files here" : "No tienes permisos para subir o crear archivos aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
+ "New" : "Nuevo",
"File name cannot be empty." : "El nombre del archivo no puede quedar vacío.",
"Your storage is full, files can not be updated or synced anymore!" : "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando",
"Your storage is almost full ({usedSpacePercent}%)" : "El almacenamiento está casi lleno ({usedSpacePercent}%)",
"Favorite" : "Favorito",
+ "Upload" : "Subir",
+ "Text file" : "Archivo de texto",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva Carpeta",
"A new file or folder has been <strong>created</strong>" : "Un archivo o carpeta ha sido <strong>creado</strong>",
"A file or folder has been <strong>changed</strong>" : "Un archivo o carpeta ha sido <strong>modificado</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>eliminado</strong>",
@@ -67,12 +72,6 @@
"Settings" : "Configuración",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Usar esta dirección para <a href=\"%s\" target=\"_blank\">acceder a tus archivos vía WebDAV</a>",
- "New" : "Nuevo",
- "New text file" : "Nuevo archivo de texto",
- "Text file" : "Archivo de texto",
- "New folder" : "Nueva Carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Subir",
"Cancel upload" : "Cancelar subida",
"Delete" : "Borrar",
"Upload too large" : "El tamaño del archivo que querés subir es demasiado grande",
diff --git a/apps/files/l10n/es_CL.js b/apps/files/l10n/es_CL.js
index a33902178e1..c6269cdafd1 100644
--- a/apps/files/l10n/es_CL.js
+++ b/apps/files/l10n/es_CL.js
@@ -5,6 +5,8 @@ OC.L10N.register(
"Files" : "Archivos",
"Download" : "Descargar",
"Error" : "Error",
+ "Upload" : "Subir",
+ "New folder" : "Nuevo directorio",
"A new file or folder has been <strong>created</strong>" : "Un nuevo archivo o carpeta ha sido <strong>creado</strong>",
"A file or folder has been <strong>changed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>eliminado</strong>",
@@ -15,8 +17,6 @@ OC.L10N.register(
"You deleted %1$s" : "Ha borrado %1$s",
"%2$s deleted %1$s" : "%2$s borró %1$s",
"Settings" : "Configuración",
- "New folder" : "Nuevo directorio",
- "Upload" : "Subir",
"Cancel upload" : "cancelar subida"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/es_CL.json b/apps/files/l10n/es_CL.json
index 9703b5d68f9..75215c9cb7f 100644
--- a/apps/files/l10n/es_CL.json
+++ b/apps/files/l10n/es_CL.json
@@ -3,6 +3,8 @@
"Files" : "Archivos",
"Download" : "Descargar",
"Error" : "Error",
+ "Upload" : "Subir",
+ "New folder" : "Nuevo directorio",
"A new file or folder has been <strong>created</strong>" : "Un nuevo archivo o carpeta ha sido <strong>creado</strong>",
"A file or folder has been <strong>changed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un archivo o carpeta ha sido <strong>eliminado</strong>",
@@ -13,8 +15,6 @@
"You deleted %1$s" : "Ha borrado %1$s",
"%2$s deleted %1$s" : "%2$s borró %1$s",
"Settings" : "Configuración",
- "New folder" : "Nuevo directorio",
- "Upload" : "Subir",
"Cancel upload" : "cancelar subida"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js
index 61438805521..b58037005aa 100644
--- a/apps/files/l10n/es_MX.js
+++ b/apps/files/l10n/es_MX.js
@@ -29,15 +29,15 @@ OC.L10N.register(
"Upload cancelled." : "Subida cancelada.",
"Could not get result from server." : "No se pudo obtener respuesta del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
- "{new_name} already exists" : "{new_name} ya existe",
- "Could not create file" : "No se pudo crear el archivo",
- "Could not create folder" : "No se pudo crear la carpeta",
"Actions" : "Acciones",
"Download" : "Descargar",
"Pending" : "Pendiente",
"Error moving file" : "Error moviendo archivo",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ya existe",
"Could not rename file" : "No se pudo renombrar el archivo",
+ "Could not create file" : "No se pudo crear el archivo",
+ "Could not create folder" : "No se pudo crear la carpeta",
"Error deleting file." : "Error borrando el archivo.",
"Name" : "Nombre",
"Size" : "Tamaño",
@@ -47,10 +47,15 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} y {files}",
"You don’t have permission to upload or create files here" : "No tienes permisos para subir o crear archivos aquí.",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
+ "New" : "Nuevo",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
"Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡los archivos no se actualizarán ni sincronizarán más!",
"Your storage is almost full ({usedSpacePercent}%)" : "Su almacenamiento está casi lleno ({usedSpacePercent}%)",
"Favorite" : "Favorito",
+ "Upload" : "Subir archivo",
+ "Text file" : "Archivo de texto",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva carpeta",
"%s could not be renamed" : "%s no pudo ser renombrado",
"File handling" : "Administración de archivos",
"Maximum upload size" : "Tamaño máximo de subida",
@@ -59,12 +64,6 @@ OC.L10N.register(
"Settings" : "Ajustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilice esta dirección para <a href=\"%s\" target=\"_blank\">acceder a sus archivos vía WebDAV</a>",
- "New" : "Nuevo",
- "New text file" : "Nuevo archivo de texto",
- "Text file" : "Archivo de texto",
- "New folder" : "Nueva carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Subir archivo",
"Cancel upload" : "Cancelar subida",
"Delete" : "Eliminar",
"Upload too large" : "Subida demasido grande",
diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json
index 9bd2fe80f2b..5655fd4bf09 100644
--- a/apps/files/l10n/es_MX.json
+++ b/apps/files/l10n/es_MX.json
@@ -27,15 +27,15 @@
"Upload cancelled." : "Subida cancelada.",
"Could not get result from server." : "No se pudo obtener respuesta del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "La subida del archivo está en proceso. Si sale de la página ahora, la subida será cancelada.",
- "{new_name} already exists" : "{new_name} ya existe",
- "Could not create file" : "No se pudo crear el archivo",
- "Could not create folder" : "No se pudo crear la carpeta",
"Actions" : "Acciones",
"Download" : "Descargar",
"Pending" : "Pendiente",
"Error moving file" : "Error moviendo archivo",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} ya existe",
"Could not rename file" : "No se pudo renombrar el archivo",
+ "Could not create file" : "No se pudo crear el archivo",
+ "Could not create folder" : "No se pudo crear la carpeta",
"Error deleting file." : "Error borrando el archivo.",
"Name" : "Nombre",
"Size" : "Tamaño",
@@ -45,10 +45,15 @@
"{dirs} and {files}" : "{dirs} y {files}",
"You don’t have permission to upload or create files here" : "No tienes permisos para subir o crear archivos aquí.",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos"],
+ "New" : "Nuevo",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
"Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡los archivos no se actualizarán ni sincronizarán más!",
"Your storage is almost full ({usedSpacePercent}%)" : "Su almacenamiento está casi lleno ({usedSpacePercent}%)",
"Favorite" : "Favorito",
+ "Upload" : "Subir archivo",
+ "Text file" : "Archivo de texto",
+ "Folder" : "Carpeta",
+ "New folder" : "Nueva carpeta",
"%s could not be renamed" : "%s no pudo ser renombrado",
"File handling" : "Administración de archivos",
"Maximum upload size" : "Tamaño máximo de subida",
@@ -57,12 +62,6 @@
"Settings" : "Ajustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilice esta dirección para <a href=\"%s\" target=\"_blank\">acceder a sus archivos vía WebDAV</a>",
- "New" : "Nuevo",
- "New text file" : "Nuevo archivo de texto",
- "Text file" : "Archivo de texto",
- "New folder" : "Nueva carpeta",
- "Folder" : "Carpeta",
- "Upload" : "Subir archivo",
"Cancel upload" : "Cancelar subida",
"Delete" : "Eliminar",
"Upload too large" : "Subida demasido grande",
diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js
index 384bce053ef..173c6d5503a 100644
--- a/apps/files/l10n/et_EE.js
+++ b/apps/files/l10n/et_EE.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Üleslaadimine tühistati.",
"Could not get result from server." : "Serverist ei saadud tulemusi",
"File upload is in progress. Leaving the page now will cancel the upload." : "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
- "{new_name} already exists" : "{new_name} on juba olemas",
- "Could not create file" : "Ei suuda luua faili",
- "Could not create folder" : "Ei suuda luua kataloogi",
"Actions" : "Tegevused",
"Download" : "Lae alla",
"Select" : "Vali",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Viga faili liigutamisel.",
"Error moving file" : "Viga faili eemaldamisel",
"Error" : "Viga",
+ "{new_name} already exists" : "{new_name} on juba olemas",
"Could not rename file" : "Ei suuda faili ümber nimetada",
+ "Could not create file" : "Ei suuda luua faili",
+ "Could not create folder" : "Ei suuda luua kataloogi",
"Error deleting file." : "Viga faili kustutamisel.",
"No entries in this folder match '{filter}'" : "Ükski sissekanne ei kattu filtriga '{filter}'",
"Name" : "Nimi",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} ja {files}",
"You don’t have permission to upload or create files here" : "Sul puuduvad õigused siia failide üleslaadimiseks või tekitamiseks",
"_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"],
+ "New" : "Uus",
"\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.",
"File name cannot be empty." : "Faili nimi ei saa olla tühi.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
@@ -70,6 +71,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
"Favorited" : "Lemmikud",
"Favorite" : "Lemmik",
+ "Upload" : "Lae üles",
+ "Text file" : "Tekstifail",
+ "Folder" : "Kaust",
+ "New folder" : "Uus kaust",
"An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge",
"A new file or folder has been <strong>created</strong>" : "Uus fail või kataloog on <strong>loodud</strong>",
"A file or folder has been <strong>changed</strong>" : "Fail või kataloog on <strong>muudetud</strong>",
@@ -96,12 +101,6 @@ OC.L10N.register(
"Settings" : "Seaded",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Kasuta seda aadressi <a href=\"%s\" target=\"_blank\">oma failidele ligipääsuks WebDAV kaudu</a>",
- "New" : "Uus",
- "New text file" : "Uus tekstifail",
- "Text file" : "Tekstifail",
- "New folder" : "Uus kaust",
- "Folder" : "Kaust",
- "Upload" : "Lae üles",
"Cancel upload" : "Tühista üleslaadimine",
"No files in here" : "Siin ei ole faile",
"Upload some content or sync with your devices!" : "Laadi sisu üles või süngi oma seadmetega!",
diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json
index d069982f8f6..d880d3d4720 100644
--- a/apps/files/l10n/et_EE.json
+++ b/apps/files/l10n/et_EE.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Üleslaadimine tühistati.",
"Could not get result from server." : "Serverist ei saadud tulemusi",
"File upload is in progress. Leaving the page now will cancel the upload." : "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
- "{new_name} already exists" : "{new_name} on juba olemas",
- "Could not create file" : "Ei suuda luua faili",
- "Could not create folder" : "Ei suuda luua kataloogi",
"Actions" : "Tegevused",
"Download" : "Lae alla",
"Select" : "Vali",
@@ -47,7 +44,10 @@
"Error moving file." : "Viga faili liigutamisel.",
"Error moving file" : "Viga faili eemaldamisel",
"Error" : "Viga",
+ "{new_name} already exists" : "{new_name} on juba olemas",
"Could not rename file" : "Ei suuda faili ümber nimetada",
+ "Could not create file" : "Ei suuda luua faili",
+ "Could not create folder" : "Ei suuda luua kataloogi",
"Error deleting file." : "Viga faili kustutamisel.",
"No entries in this folder match '{filter}'" : "Ükski sissekanne ei kattu filtriga '{filter}'",
"Name" : "Nimi",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} ja {files}",
"You don’t have permission to upload or create files here" : "Sul puuduvad õigused siia failide üleslaadimiseks või tekitamiseks",
"_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"],
+ "New" : "Uus",
"\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.",
"File name cannot be empty." : "Faili nimi ei saa olla tühi.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
@@ -68,6 +69,10 @@
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
"Favorited" : "Lemmikud",
"Favorite" : "Lemmik",
+ "Upload" : "Lae üles",
+ "Text file" : "Tekstifail",
+ "Folder" : "Kaust",
+ "New folder" : "Uus kaust",
"An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge",
"A new file or folder has been <strong>created</strong>" : "Uus fail või kataloog on <strong>loodud</strong>",
"A file or folder has been <strong>changed</strong>" : "Fail või kataloog on <strong>muudetud</strong>",
@@ -94,12 +99,6 @@
"Settings" : "Seaded",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Kasuta seda aadressi <a href=\"%s\" target=\"_blank\">oma failidele ligipääsuks WebDAV kaudu</a>",
- "New" : "Uus",
- "New text file" : "Uus tekstifail",
- "Text file" : "Tekstifail",
- "New folder" : "Uus kaust",
- "Folder" : "Kaust",
- "Upload" : "Lae üles",
"Cancel upload" : "Tühista üleslaadimine",
"No files in here" : "Siin ei ole faile",
"Upload some content or sync with your devices!" : "Laadi sisu üles või süngi oma seadmetega!",
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index e14be1ba264..249e73b1871 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Igoera ezeztatuta",
"Could not get result from server." : "Ezin da zerbitzaritik emaitzik lortu",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.",
- "{new_name} already exists" : "{new_name} dagoeneko existitzen da",
- "Could not create file" : "Ezin izan da fitxategia sortu",
- "Could not create folder" : "Ezin izan da karpeta sortu",
"Actions" : "Ekintzak",
"Download" : "Deskargatu",
"Select" : "hautatu",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Errorea fitxategia mugitzean.",
"Error moving file" : "Errorea fitxategia mugitzean",
"Error" : "Errorea",
+ "{new_name} already exists" : "{new_name} dagoeneko existitzen da",
"Could not rename file" : "Ezin izan da fitxategia berrizendatu",
+ "Could not create file" : "Ezin izan da fitxategia sortu",
+ "Could not create folder" : "Ezin izan da karpeta sortu",
"Error deleting file." : "Errorea fitxategia ezabatzerakoan.",
"No entries in this folder match '{filter}'" : "Karpeta honetan ez dago sarrerarik '{filter}' iragazkiarekin bat egiten dutenak",
"Name" : "Izena",
@@ -58,12 +58,17 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} eta {files}",
"You don’t have permission to upload or create files here" : "Ez duzu fitxategiak hona igotzeko edo hemen sortzeko baimenik",
"_Uploading %n file_::_Uploading %n files_" : ["Fitxategi %n igotzen","%n fitxategi igotzen"],
+ "New" : "Berria",
"\"{name}\" is an invalid file name." : "\"{name}\" ez da fitxategi izen baliogarria.",
"File name cannot be empty." : "Fitxategi izena ezin da hutsa izan.",
"Your storage is full, files can not be updated or synced anymore!" : "Zure biltegiratzea beterik dago, ezingo duzu aurrerantzean fitxategirik igo edo sinkronizatu!",
"Your storage is almost full ({usedSpacePercent}%)" : "Zure biltegiratzea nahiko beterik dago (%{usedSpacePercent})",
"Favorited" : "Gogokoa",
"Favorite" : "Gogokoa",
+ "Upload" : "Igo",
+ "Text file" : "Testu fitxategia",
+ "Folder" : "Karpeta",
+ "New folder" : "Karpeta berria",
"A new file or folder has been <strong>created</strong>" : "Fitxategi edo karpeta berri bat <strong>sortu da</strong>",
"A file or folder has been <strong>changed</strong>" : "Fitxategi edo karpeta bat <strong>aldatu da</strong>",
"A file or folder has been <strong>deleted</strong>" : "Fitxategi edo karpeta bat <strong>ezabatu da</strong>",
@@ -87,12 +92,6 @@ OC.L10N.register(
"Settings" : "Ezarpenak",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">helbidea erabili zure fitxategiak WebDAV bidez eskuratzeko</a>",
- "New" : "Berria",
- "New text file" : "Testu fitxategi berria",
- "Text file" : "Testu fitxategia",
- "New folder" : "Karpeta berria",
- "Folder" : "Karpeta",
- "Upload" : "Igo",
"Cancel upload" : "Ezeztatu igoera",
"Upload some content or sync with your devices!" : "Igo edukiren bat edo sinkronizatu zure gailuekin!",
"No entries found in this folder" : "Ez da sarrerarik aurkitu karpeta honetan",
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index 3436235e79c..5e610f3f4fa 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Igoera ezeztatuta",
"Could not get result from server." : "Ezin da zerbitzaritik emaitzik lortu",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.",
- "{new_name} already exists" : "{new_name} dagoeneko existitzen da",
- "Could not create file" : "Ezin izan da fitxategia sortu",
- "Could not create folder" : "Ezin izan da karpeta sortu",
"Actions" : "Ekintzak",
"Download" : "Deskargatu",
"Select" : "hautatu",
@@ -45,7 +42,10 @@
"Error moving file." : "Errorea fitxategia mugitzean.",
"Error moving file" : "Errorea fitxategia mugitzean",
"Error" : "Errorea",
+ "{new_name} already exists" : "{new_name} dagoeneko existitzen da",
"Could not rename file" : "Ezin izan da fitxategia berrizendatu",
+ "Could not create file" : "Ezin izan da fitxategia sortu",
+ "Could not create folder" : "Ezin izan da karpeta sortu",
"Error deleting file." : "Errorea fitxategia ezabatzerakoan.",
"No entries in this folder match '{filter}'" : "Karpeta honetan ez dago sarrerarik '{filter}' iragazkiarekin bat egiten dutenak",
"Name" : "Izena",
@@ -56,12 +56,17 @@
"{dirs} and {files}" : "{dirs} eta {files}",
"You don’t have permission to upload or create files here" : "Ez duzu fitxategiak hona igotzeko edo hemen sortzeko baimenik",
"_Uploading %n file_::_Uploading %n files_" : ["Fitxategi %n igotzen","%n fitxategi igotzen"],
+ "New" : "Berria",
"\"{name}\" is an invalid file name." : "\"{name}\" ez da fitxategi izen baliogarria.",
"File name cannot be empty." : "Fitxategi izena ezin da hutsa izan.",
"Your storage is full, files can not be updated or synced anymore!" : "Zure biltegiratzea beterik dago, ezingo duzu aurrerantzean fitxategirik igo edo sinkronizatu!",
"Your storage is almost full ({usedSpacePercent}%)" : "Zure biltegiratzea nahiko beterik dago (%{usedSpacePercent})",
"Favorited" : "Gogokoa",
"Favorite" : "Gogokoa",
+ "Upload" : "Igo",
+ "Text file" : "Testu fitxategia",
+ "Folder" : "Karpeta",
+ "New folder" : "Karpeta berria",
"A new file or folder has been <strong>created</strong>" : "Fitxategi edo karpeta berri bat <strong>sortu da</strong>",
"A file or folder has been <strong>changed</strong>" : "Fitxategi edo karpeta bat <strong>aldatu da</strong>",
"A file or folder has been <strong>deleted</strong>" : "Fitxategi edo karpeta bat <strong>ezabatu da</strong>",
@@ -85,12 +90,6 @@
"Settings" : "Ezarpenak",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">helbidea erabili zure fitxategiak WebDAV bidez eskuratzeko</a>",
- "New" : "Berria",
- "New text file" : "Testu fitxategi berria",
- "Text file" : "Testu fitxategia",
- "New folder" : "Karpeta berria",
- "Folder" : "Karpeta",
- "Upload" : "Igo",
"Cancel upload" : "Ezeztatu igoera",
"Upload some content or sync with your devices!" : "Igo edukiren bat edo sinkronizatu zure gailuekin!",
"No entries found in this folder" : "Ez da sarrerarik aurkitu karpeta honetan",
diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js
index 5df2d0ccc3e..984c53c3740 100644
--- a/apps/files/l10n/fa.js
+++ b/apps/files/l10n/fa.js
@@ -22,18 +22,23 @@ OC.L10N.register(
"Close" : "بستن",
"Upload cancelled." : "بار گذاری لغو شد",
"File upload is in progress. Leaving the page now will cancel the upload." : "آپلودکردن پرونده در حال پیشرفت است. در صورت خروج از صفحه آپلود لغو میگردد. ",
- "{new_name} already exists" : "{نام _جدید} در حال حاضر وجود دارد.",
"Actions" : "فعالیت ها",
"Download" : "دانلود",
"Pending" : "در انتظار",
"Error" : "خطا",
+ "{new_name} already exists" : "{نام _جدید} در حال حاضر وجود دارد.",
"Name" : "نام",
"Size" : "اندازه",
"Modified" : "تاریخ",
"_Uploading %n file_::_Uploading %n files_" : ["در حال بارگذاری %n فایل"],
+ "New" : "جدید",
"File name cannot be empty." : "نام پرونده نمی تواند خالی باشد.",
"Your storage is full, files can not be updated or synced anymore!" : "فضای ذخیره ی شما کاملا پر است، بیش از این فایلها بهنگام یا همگام سازی نمی توانند بشوند!",
"Your storage is almost full ({usedSpacePercent}%)" : "فضای ذخیره ی شما تقریبا پر است ({usedSpacePercent}%)",
+ "Upload" : "بارگزاری",
+ "Text file" : "فایل متنی",
+ "Folder" : "پوشه",
+ "New folder" : "پوشه جدید",
"A new file or folder has been <strong>created</strong>" : "فایل یا پوشه ای <strong>ایجاد</strong> شد",
"A file or folder has been <strong>changed</strong>" : "فایل یا پوشه ای به <strong>تغییر</strong> یافت",
"A file or folder has been <strong>deleted</strong>" : "فایل یا پوشه ای به <strong>حذف</strong> شد",
@@ -55,11 +60,6 @@ OC.L10N.register(
"Settings" : "تنظیمات",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "از این آدرس استفاده کنید تا <a href=\"%s\" target=\"_blank\">بتوانید به فایل‌های خود توسط WebDAV دسترسی پیدا کنید</a>",
- "New" : "جدید",
- "Text file" : "فایل متنی",
- "New folder" : "پوشه جدید",
- "Folder" : "پوشه",
- "Upload" : "بارگزاری",
"Cancel upload" : "متوقف کردن بار گذاری",
"Delete" : "حذف",
"Upload too large" : "سایز فایل برای آپلود زیاد است(م.تنظیمات در php.ini)",
diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json
index b36fee0090c..361dbee1a1f 100644
--- a/apps/files/l10n/fa.json
+++ b/apps/files/l10n/fa.json
@@ -20,18 +20,23 @@
"Close" : "بستن",
"Upload cancelled." : "بار گذاری لغو شد",
"File upload is in progress. Leaving the page now will cancel the upload." : "آپلودکردن پرونده در حال پیشرفت است. در صورت خروج از صفحه آپلود لغو میگردد. ",
- "{new_name} already exists" : "{نام _جدید} در حال حاضر وجود دارد.",
"Actions" : "فعالیت ها",
"Download" : "دانلود",
"Pending" : "در انتظار",
"Error" : "خطا",
+ "{new_name} already exists" : "{نام _جدید} در حال حاضر وجود دارد.",
"Name" : "نام",
"Size" : "اندازه",
"Modified" : "تاریخ",
"_Uploading %n file_::_Uploading %n files_" : ["در حال بارگذاری %n فایل"],
+ "New" : "جدید",
"File name cannot be empty." : "نام پرونده نمی تواند خالی باشد.",
"Your storage is full, files can not be updated or synced anymore!" : "فضای ذخیره ی شما کاملا پر است، بیش از این فایلها بهنگام یا همگام سازی نمی توانند بشوند!",
"Your storage is almost full ({usedSpacePercent}%)" : "فضای ذخیره ی شما تقریبا پر است ({usedSpacePercent}%)",
+ "Upload" : "بارگزاری",
+ "Text file" : "فایل متنی",
+ "Folder" : "پوشه",
+ "New folder" : "پوشه جدید",
"A new file or folder has been <strong>created</strong>" : "فایل یا پوشه ای <strong>ایجاد</strong> شد",
"A file or folder has been <strong>changed</strong>" : "فایل یا پوشه ای به <strong>تغییر</strong> یافت",
"A file or folder has been <strong>deleted</strong>" : "فایل یا پوشه ای به <strong>حذف</strong> شد",
@@ -53,11 +58,6 @@
"Settings" : "تنظیمات",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "از این آدرس استفاده کنید تا <a href=\"%s\" target=\"_blank\">بتوانید به فایل‌های خود توسط WebDAV دسترسی پیدا کنید</a>",
- "New" : "جدید",
- "Text file" : "فایل متنی",
- "New folder" : "پوشه جدید",
- "Folder" : "پوشه",
- "Upload" : "بارگزاری",
"Cancel upload" : "متوقف کردن بار گذاری",
"Delete" : "حذف",
"Upload too large" : "سایز فایل برای آپلود زیاد است(م.تنظیمات در php.ini)",
diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js
index 414312858a3..c6615a61234 100644
--- a/apps/files/l10n/fi_FI.js
+++ b/apps/files/l10n/fi_FI.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Lähetys peruttu.",
"Could not get result from server." : "Tuloksien saaminen palvelimelta ei onnistunut.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
- "{new_name} already exists" : "{new_name} on jo olemassa",
- "Could not create file" : "Tiedoston luominen epäonnistui",
- "Could not create folder" : "Kansion luominen epäonnistui",
"Actions" : "Toiminnot",
"Download" : "Lataa",
"Select" : "Valitse",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Virhe tiedostoa siirrettäessä.",
"Error moving file" : "Virhe tiedostoa siirrettäessä",
"Error" : "Virhe",
+ "{new_name} already exists" : "{new_name} on jo olemassa",
"Could not rename file" : "Tiedoston nimeäminen uudelleen epäonnistui",
+ "Could not create file" : "Tiedoston luominen epäonnistui",
+ "Could not create folder" : "Kansion luominen epäonnistui",
"Error deleting file." : "Virhe tiedostoa poistaessa.",
"No entries in this folder match '{filter}'" : "Mikään tässä kansiossa ei vastaa suodatusta '{filter}'",
"Name" : "Nimi",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} ja {files}",
"You don’t have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai kansioiden luomiseen tähän sijaintiin",
"_Uploading %n file_::_Uploading %n files_" : ["Lähetetään %n tiedosto","Lähetetään %n tiedostoa"],
+ "New" : "Uusi",
"\"{name}\" is an invalid file name." : "\"{name}\" on virheellinen tiedostonimi.",
"File name cannot be empty." : "Tiedoston nimi ei voi olla tyhjä.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Käyttäjän {owner} tallennustila on täynnä, tiedostoja ei voi enää päivittää tai synkronoida!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
"Favorited" : "Lisätty suosikkeihin",
"Favorite" : "Suosikki",
+ "{newname} already exists" : "{newname} on jo olemassa",
+ "Upload" : "Lähetä",
+ "Text file" : "Tekstitiedosto",
+ "New text file.txt" : "Uusi tekstitiedosto.txt",
+ "Folder" : "Kansio",
+ "New folder" : "Uusi kansio",
"An error occurred while trying to update the tags" : "Tunnisteiden päivitystä yrittäessä tapahtui virhe",
"A new file or folder has been <strong>created</strong>" : "Uusi tiedosto tai kansio on <strong>luotu</strong>",
"A file or folder has been <strong>changed</strong>" : "Tiedostoa tai kansiota on <strong>muutettu</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Asetukset",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Käytä tätä osoitetta <a href=\"%s\" target=\"_blank\">käyttääksesi tiedostojasi WebDAVin kautta</a>",
- "New" : "Uusi",
- "New text file" : "Uusi tekstitiedosto",
- "Text file" : "Tekstitiedosto",
- "New folder" : "Uusi kansio",
- "Folder" : "Kansio",
- "Upload" : "Lähetä",
"Cancel upload" : "Peru lähetys",
"No files in here" : "Täällä ei ole tiedostoja",
"Upload some content or sync with your devices!" : "Lähetä tiedostoja tai synkronoi sisältö laitteidesi kanssa!",
diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json
index ade67816cc2..9be7c66d37a 100644
--- a/apps/files/l10n/fi_FI.json
+++ b/apps/files/l10n/fi_FI.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Lähetys peruttu.",
"Could not get result from server." : "Tuloksien saaminen palvelimelta ei onnistunut.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
- "{new_name} already exists" : "{new_name} on jo olemassa",
- "Could not create file" : "Tiedoston luominen epäonnistui",
- "Could not create folder" : "Kansion luominen epäonnistui",
"Actions" : "Toiminnot",
"Download" : "Lataa",
"Select" : "Valitse",
@@ -47,7 +44,10 @@
"Error moving file." : "Virhe tiedostoa siirrettäessä.",
"Error moving file" : "Virhe tiedostoa siirrettäessä",
"Error" : "Virhe",
+ "{new_name} already exists" : "{new_name} on jo olemassa",
"Could not rename file" : "Tiedoston nimeäminen uudelleen epäonnistui",
+ "Could not create file" : "Tiedoston luominen epäonnistui",
+ "Could not create folder" : "Kansion luominen epäonnistui",
"Error deleting file." : "Virhe tiedostoa poistaessa.",
"No entries in this folder match '{filter}'" : "Mikään tässä kansiossa ei vastaa suodatusta '{filter}'",
"Name" : "Nimi",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} ja {files}",
"You don’t have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai kansioiden luomiseen tähän sijaintiin",
"_Uploading %n file_::_Uploading %n files_" : ["Lähetetään %n tiedosto","Lähetetään %n tiedostoa"],
+ "New" : "Uusi",
"\"{name}\" is an invalid file name." : "\"{name}\" on virheellinen tiedostonimi.",
"File name cannot be empty." : "Tiedoston nimi ei voi olla tyhjä.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Käyttäjän {owner} tallennustila on täynnä, tiedostoja ei voi enää päivittää tai synkronoida!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
"Favorited" : "Lisätty suosikkeihin",
"Favorite" : "Suosikki",
+ "{newname} already exists" : "{newname} on jo olemassa",
+ "Upload" : "Lähetä",
+ "Text file" : "Tekstitiedosto",
+ "New text file.txt" : "Uusi tekstitiedosto.txt",
+ "Folder" : "Kansio",
+ "New folder" : "Uusi kansio",
"An error occurred while trying to update the tags" : "Tunnisteiden päivitystä yrittäessä tapahtui virhe",
"A new file or folder has been <strong>created</strong>" : "Uusi tiedosto tai kansio on <strong>luotu</strong>",
"A file or folder has been <strong>changed</strong>" : "Tiedostoa tai kansiota on <strong>muutettu</strong>",
@@ -96,12 +103,6 @@
"Settings" : "Asetukset",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Käytä tätä osoitetta <a href=\"%s\" target=\"_blank\">käyttääksesi tiedostojasi WebDAVin kautta</a>",
- "New" : "Uusi",
- "New text file" : "Uusi tekstitiedosto",
- "Text file" : "Tekstitiedosto",
- "New folder" : "Uusi kansio",
- "Folder" : "Kansio",
- "Upload" : "Lähetä",
"Cancel upload" : "Peru lähetys",
"No files in here" : "Täällä ei ole tiedostoja",
"Upload some content or sync with your devices!" : "Lähetä tiedostoja tai synkronoi sisältö laitteidesi kanssa!",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 40ad266ecea..3b84a6c0c53 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Envoi annulé.",
"Could not get result from server." : "Ne peut recevoir les résultats du serveur.",
"File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
- "{new_name} already exists" : "{new_name} existe déjà",
- "Could not create file" : "Impossible de créer le fichier",
- "Could not create folder" : "Impossible de créer le dossier",
"Actions" : "Actions",
"Download" : "Télécharger",
"Select" : "Sélectionner",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Erreur lors du déplacement du fichier.",
"Error moving file" : "Erreur lors du déplacement du fichier",
"Error" : "Erreur",
+ "{new_name} already exists" : "{new_name} existe déjà",
"Could not rename file" : "Impossible de renommer le fichier",
+ "Could not create file" : "Impossible de créer le fichier",
+ "Could not create folder" : "Impossible de créer le dossier",
"Error deleting file." : "Erreur pendant la suppression du fichier.",
"No entries in this folder match '{filter}'" : "Aucune entrée de ce dossier ne correspond à '{filter}'",
"Name" : "Nom",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} et {files}",
"You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'ajouter des fichiers ici",
"_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Téléversement de %n fichiers"],
+ "New" : "Nouveau",
"\"{name}\" is an invalid file name." : "\"{name}\" n'est pas un nom de fichier valide.",
"File name cannot be empty." : "Le nom de fichier ne peut être vide.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "L'espace de stockage de {owner} est plein. Les fichiers ne peuvent plus être mis à jour ou synchronisés!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n octet","%n octets"],
"Favorited" : "Marqué comme favori",
"Favorite" : "Favoris",
+ "{newname} already exists" : "{newname} existe déjà",
+ "Upload" : "Chargement",
+ "Text file" : "Fichier texte",
+ "New text file.txt" : "Nouveau fichier texte \"file.txt\"",
+ "Folder" : "Dossier",
+ "New folder" : "Nouveau dossier",
"An error occurred while trying to update the tags" : "Une erreur est survenue lors de la mise à jour des étiquettes",
"A new file or folder has been <strong>created</strong>" : "Un nouveau fichier ou répertoire a été <strong>créé</strong>",
"A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Paramètres",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\">accéder à vos fichiers par WebDAV</a>",
- "New" : "Nouveau",
- "New text file" : "Nouveau fichier texte",
- "Text file" : "Fichier texte",
- "New folder" : "Nouveau dossier",
- "Folder" : "Dossier",
- "Upload" : "Chargement",
"Cancel upload" : "Annuler l'envoi",
"No files in here" : "Aucun fichier ici",
"Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index ca2ecebe5d2..4d05b5a42c3 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Envoi annulé.",
"Could not get result from server." : "Ne peut recevoir les résultats du serveur.",
"File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
- "{new_name} already exists" : "{new_name} existe déjà",
- "Could not create file" : "Impossible de créer le fichier",
- "Could not create folder" : "Impossible de créer le dossier",
"Actions" : "Actions",
"Download" : "Télécharger",
"Select" : "Sélectionner",
@@ -47,7 +44,10 @@
"Error moving file." : "Erreur lors du déplacement du fichier.",
"Error moving file" : "Erreur lors du déplacement du fichier",
"Error" : "Erreur",
+ "{new_name} already exists" : "{new_name} existe déjà",
"Could not rename file" : "Impossible de renommer le fichier",
+ "Could not create file" : "Impossible de créer le fichier",
+ "Could not create folder" : "Impossible de créer le dossier",
"Error deleting file." : "Erreur pendant la suppression du fichier.",
"No entries in this folder match '{filter}'" : "Aucune entrée de ce dossier ne correspond à '{filter}'",
"Name" : "Nom",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} et {files}",
"You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'ajouter des fichiers ici",
"_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Téléversement de %n fichiers"],
+ "New" : "Nouveau",
"\"{name}\" is an invalid file name." : "\"{name}\" n'est pas un nom de fichier valide.",
"File name cannot be empty." : "Le nom de fichier ne peut être vide.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "L'espace de stockage de {owner} est plein. Les fichiers ne peuvent plus être mis à jour ou synchronisés!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n octet","%n octets"],
"Favorited" : "Marqué comme favori",
"Favorite" : "Favoris",
+ "{newname} already exists" : "{newname} existe déjà",
+ "Upload" : "Chargement",
+ "Text file" : "Fichier texte",
+ "New text file.txt" : "Nouveau fichier texte \"file.txt\"",
+ "Folder" : "Dossier",
+ "New folder" : "Nouveau dossier",
"An error occurred while trying to update the tags" : "Une erreur est survenue lors de la mise à jour des étiquettes",
"A new file or folder has been <strong>created</strong>" : "Un nouveau fichier ou répertoire a été <strong>créé</strong>",
"A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>",
@@ -96,12 +103,6 @@
"Settings" : "Paramètres",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\">accéder à vos fichiers par WebDAV</a>",
- "New" : "Nouveau",
- "New text file" : "Nouveau fichier texte",
- "Text file" : "Fichier texte",
- "New folder" : "Nouveau dossier",
- "Folder" : "Dossier",
- "Upload" : "Chargement",
"Cancel upload" : "Annuler l'envoi",
"No files in here" : "Aucun fichier ici",
"Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index 3f666f2b95b..4293b3ab9ba 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Envío cancelado.",
"Could not get result from server." : "Non foi posíbel obter o resultado do servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "O envío do ficheiro está en proceso. Saír agora da páxina cancelará o envío.",
- "{new_name} already exists" : "Xa existe un {new_name}",
- "Could not create file" : "Non foi posíbel crear o ficheiro",
- "Could not create folder" : "Non foi posíbel crear o cartafol",
"Actions" : "Accións",
"Download" : "Descargar",
"Select" : "Seleccionar",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Produciuse un erro ao mover o ficheiro.",
"Error moving file" : "Produciuse un erro ao mover o ficheiro",
"Error" : "Erro",
+ "{new_name} already exists" : "Xa existe un {new_name}",
"Could not rename file" : "Non foi posíbel renomear o ficheiro",
+ "Could not create file" : "Non foi posíbel crear o ficheiro",
+ "Could not create folder" : "Non foi posíbel crear o cartafol",
"Error deleting file." : "Produciuse un erro ao eliminar o ficheiro.",
"No entries in this folder match '{filter}'" : "Non hai entradas neste cartafol coincidentes con «{filter}»",
"Name" : "Nome",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Non ten permisos para enviar ou crear ficheiros aquí.",
"_Uploading %n file_::_Uploading %n files_" : ["Cargando %n ficheiro","Cargando %n ficheiros"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "«{name}» é un nome incorrecto de ficheiro.",
"File name cannot be empty." : "O nome de ficheiro non pode estar baleiro",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "O espazo de almacenamento de {owner} está cheo, non é posíbel actualizar ou sincronizar máis os ficheiros!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Marcado como favorito",
"Favorite" : "Favorito",
+ "Upload" : "Enviar",
+ "Text file" : "Ficheiro de texto",
+ "Folder" : "Cartafol",
+ "New folder" : "Novo cartafol",
"An error occurred while trying to update the tags" : "Produciuse un erro ao tentar actualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "<strong>Creouse</strong> un novo ficheiro ou cartafol",
"A file or folder has been <strong>changed</strong>" : "<strong>Cambiouse</strong> un ficheiro ou cartafol",
@@ -97,12 +102,6 @@ OC.L10N.register(
"Settings" : "Axustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Empregue esta ligazón para <a href=\"%s\" target=\"_blank\">acceder aos seus ficheiros mediante WebDAV</a>",
- "New" : "Novo",
- "New text file" : "Ficheiro novo de texto",
- "Text file" : "Ficheiro de texto",
- "New folder" : "Novo cartafol",
- "Folder" : "Cartafol",
- "Upload" : "Enviar",
"Cancel upload" : "Cancelar o envío",
"No files in here" : "Aquí non hai ficheiros",
"Upload some content or sync with your devices!" : "Envíe algún contido ou sincronice cos seus dispositivos!",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index f9fec770356..34eeaa6a369 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Envío cancelado.",
"Could not get result from server." : "Non foi posíbel obter o resultado do servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "O envío do ficheiro está en proceso. Saír agora da páxina cancelará o envío.",
- "{new_name} already exists" : "Xa existe un {new_name}",
- "Could not create file" : "Non foi posíbel crear o ficheiro",
- "Could not create folder" : "Non foi posíbel crear o cartafol",
"Actions" : "Accións",
"Download" : "Descargar",
"Select" : "Seleccionar",
@@ -47,7 +44,10 @@
"Error moving file." : "Produciuse un erro ao mover o ficheiro.",
"Error moving file" : "Produciuse un erro ao mover o ficheiro",
"Error" : "Erro",
+ "{new_name} already exists" : "Xa existe un {new_name}",
"Could not rename file" : "Non foi posíbel renomear o ficheiro",
+ "Could not create file" : "Non foi posíbel crear o ficheiro",
+ "Could not create folder" : "Non foi posíbel crear o cartafol",
"Error deleting file." : "Produciuse un erro ao eliminar o ficheiro.",
"No entries in this folder match '{filter}'" : "Non hai entradas neste cartafol coincidentes con «{filter}»",
"Name" : "Nome",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Non ten permisos para enviar ou crear ficheiros aquí.",
"_Uploading %n file_::_Uploading %n files_" : ["Cargando %n ficheiro","Cargando %n ficheiros"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "«{name}» é un nome incorrecto de ficheiro.",
"File name cannot be empty." : "O nome de ficheiro non pode estar baleiro",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "O espazo de almacenamento de {owner} está cheo, non é posíbel actualizar ou sincronizar máis os ficheiros!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Marcado como favorito",
"Favorite" : "Favorito",
+ "Upload" : "Enviar",
+ "Text file" : "Ficheiro de texto",
+ "Folder" : "Cartafol",
+ "New folder" : "Novo cartafol",
"An error occurred while trying to update the tags" : "Produciuse un erro ao tentar actualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "<strong>Creouse</strong> un novo ficheiro ou cartafol",
"A file or folder has been <strong>changed</strong>" : "<strong>Cambiouse</strong> un ficheiro ou cartafol",
@@ -95,12 +100,6 @@
"Settings" : "Axustes",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Empregue esta ligazón para <a href=\"%s\" target=\"_blank\">acceder aos seus ficheiros mediante WebDAV</a>",
- "New" : "Novo",
- "New text file" : "Ficheiro novo de texto",
- "Text file" : "Ficheiro de texto",
- "New folder" : "Novo cartafol",
- "Folder" : "Cartafol",
- "Upload" : "Enviar",
"Cancel upload" : "Cancelar o envío",
"No files in here" : "Aquí non hai ficheiros",
"Upload some content or sync with your devices!" : "Envíe algún contido ou sincronice cos seus dispositivos!",
diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js
index 8918c8686c9..94956cbff0e 100644
--- a/apps/files/l10n/he.js
+++ b/apps/files/l10n/he.js
@@ -22,18 +22,23 @@ OC.L10N.register(
"Upload cancelled." : "ההעלאה בוטלה.",
"Could not get result from server." : "לא ניתן לגשת לתוצאות מהשרת.",
"File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
- "{new_name} already exists" : "{new_name} כבר קיים",
"Actions" : "פעולות",
"Download" : "הורדה",
"Select" : "בחר",
"Pending" : "ממתין",
"Error" : "שגיאה",
+ "{new_name} already exists" : "{new_name} כבר קיים",
"Name" : "שם",
"Size" : "גודל",
"Modified" : "זמן שינוי",
+ "New" : "חדש",
"File name cannot be empty." : "שם קובץ אינו יכול להיות ריק",
"Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)",
"Favorite" : "מועדף",
+ "Upload" : "העלאה",
+ "Text file" : "קובץ טקסט",
+ "Folder" : "תיקייה",
+ "New folder" : "תיקייה חדשה",
"A new file or folder has been <strong>created</strong>" : "קובץ או תיקייה חדשים <strong>נוצרו<strong/>",
"A file or folder has been <strong>changed</strong>" : "קובץ או תיקייה <strong>שונו<strong/>",
"A file or folder has been <strong>deleted</strong>" : "קובץ או תיקייה <strong>נמחקו<strong/>",
@@ -51,11 +56,6 @@ OC.L10N.register(
"Save" : "שמירה",
"Settings" : "הגדרות",
"WebDAV" : "WebDAV",
- "New" : "חדש",
- "Text file" : "קובץ טקסט",
- "New folder" : "תיקייה חדשה",
- "Folder" : "תיקייה",
- "Upload" : "העלאה",
"Cancel upload" : "ביטול ההעלאה",
"Delete" : "מחיקה",
"Upload too large" : "העלאה גדולה מידי",
diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json
index 38b8365eaa0..8dfc57f3276 100644
--- a/apps/files/l10n/he.json
+++ b/apps/files/l10n/he.json
@@ -20,18 +20,23 @@
"Upload cancelled." : "ההעלאה בוטלה.",
"Could not get result from server." : "לא ניתן לגשת לתוצאות מהשרת.",
"File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
- "{new_name} already exists" : "{new_name} כבר קיים",
"Actions" : "פעולות",
"Download" : "הורדה",
"Select" : "בחר",
"Pending" : "ממתין",
"Error" : "שגיאה",
+ "{new_name} already exists" : "{new_name} כבר קיים",
"Name" : "שם",
"Size" : "גודל",
"Modified" : "זמן שינוי",
+ "New" : "חדש",
"File name cannot be empty." : "שם קובץ אינו יכול להיות ריק",
"Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)",
"Favorite" : "מועדף",
+ "Upload" : "העלאה",
+ "Text file" : "קובץ טקסט",
+ "Folder" : "תיקייה",
+ "New folder" : "תיקייה חדשה",
"A new file or folder has been <strong>created</strong>" : "קובץ או תיקייה חדשים <strong>נוצרו<strong/>",
"A file or folder has been <strong>changed</strong>" : "קובץ או תיקייה <strong>שונו<strong/>",
"A file or folder has been <strong>deleted</strong>" : "קובץ או תיקייה <strong>נמחקו<strong/>",
@@ -49,11 +54,6 @@
"Save" : "שמירה",
"Settings" : "הגדרות",
"WebDAV" : "WebDAV",
- "New" : "חדש",
- "Text file" : "קובץ טקסט",
- "New folder" : "תיקייה חדשה",
- "Folder" : "תיקייה",
- "Upload" : "העלאה",
"Cancel upload" : "ביטול ההעלאה",
"Delete" : "מחיקה",
"Upload too large" : "העלאה גדולה מידי",
diff --git a/apps/files/l10n/hi.js b/apps/files/l10n/hi.js
index 35ad6e5f688..c040105875d 100644
--- a/apps/files/l10n/hi.js
+++ b/apps/files/l10n/hi.js
@@ -4,9 +4,9 @@ OC.L10N.register(
"Files" : "फाइलें ",
"Close" : "बंद करें ",
"Error" : "त्रुटि",
- "Save" : "सहेजें",
- "Settings" : "सेटिंग्स",
+ "Upload" : "अपलोड ",
"New folder" : "नया फ़ोल्डर",
- "Upload" : "अपलोड "
+ "Save" : "सहेजें",
+ "Settings" : "सेटिंग्स"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/hi.json b/apps/files/l10n/hi.json
index 0bcf3ace1de..70db8f9d7f1 100644
--- a/apps/files/l10n/hi.json
+++ b/apps/files/l10n/hi.json
@@ -2,9 +2,9 @@
"Files" : "फाइलें ",
"Close" : "बंद करें ",
"Error" : "त्रुटि",
- "Save" : "सहेजें",
- "Settings" : "सेटिंग्स",
+ "Upload" : "अपलोड ",
"New folder" : "नया फ़ोल्डर",
- "Upload" : "अपलोड "
+ "Save" : "सहेजें",
+ "Settings" : "सेटिंग्स"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/hr.js b/apps/files/l10n/hr.js
index fb273f410cc..379d43f4dbd 100644
--- a/apps/files/l10n/hr.js
+++ b/apps/files/l10n/hr.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Učitavanje je prekinuto.",
"Could not get result from server." : "Nemoguće dobiti rezultat od poslužitelja.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Učitavanje datoteke je u tijeku. Napuštanje stranice prekinut će učitavanje.",
- "{new_name} already exists" : "{new_name} već postoji",
- "Could not create file" : "Datoteku nije moguće kreirati",
- "Could not create folder" : "Mapu nije moguće kreirati",
"Actions" : "Radnje",
"Download" : "Preuzimanje",
"Select" : "Selektiraj",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Pogrešno premještanje datoteke",
"Error moving file" : "Pogrešno premještanje datoteke",
"Error" : "Pogreška",
+ "{new_name} already exists" : "{new_name} već postoji",
"Could not rename file" : "Datoteku nije moguće preimenovati",
+ "Could not create file" : "Datoteku nije moguće kreirati",
+ "Could not create folder" : "Mapu nije moguće kreirati",
"Error deleting file." : "Pogrešno brisanje datoteke",
"No entries in this folder match '{filter}'" : "Nema zapisa u ovom folderu match '{filter}'",
"Name" : "Naziv",
@@ -58,12 +58,17 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Ovdje vam nije dopušteno učitavati ili kreirati datoteke",
"_Uploading %n file_::_Uploading %n files_" : ["Prenosim %n datoteku","Prenosim %n datoteke","Prenosim %n datoteka"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" je neispravno ime datoteke.",
"File name cannot be empty." : "Naziv datoteke ne može biti prazan.",
"Your storage is full, files can not be updated or synced anymore!" : "Vaša je pohrana puna, datoteke više nije moguće ažurirati niti sinkronizirati!",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)",
"Favorited" : "Favoritovan",
"Favorite" : "Favorit",
+ "Upload" : "Učitavanje",
+ "Text file" : "Tekstualna datoteka",
+ "Folder" : "Mapa",
+ "New folder" : "Nova mapa",
"A new file or folder has been <strong>created</strong>" : "Nova datoteka ili nova mapa su <strong>kreirani</strong>",
"A file or folder has been <strong>changed</strong>" : "Datoteka ili mapa su <strong>promijenjeni</strong>",
"A file or folder has been <strong>deleted</strong>" : "Datoteka ili mapa su <strong>izbrisani</strong>",
@@ -87,12 +92,6 @@ OC.L10N.register(
"Settings" : "Postavke",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Koristitet slijedeću adresu za <a href=\"%s\" target=\"_blank\">pristup vašim datotekama putem WebDAV-a</a>",
- "New" : "Novo",
- "New text file" : "Nova tekstualna datoteka",
- "Text file" : "Tekstualna datoteka",
- "New folder" : "Nova mapa",
- "Folder" : "Mapa",
- "Upload" : "Učitavanje",
"Cancel upload" : "Prekini upload",
"Upload some content or sync with your devices!" : "Aplodujte neki sadrzaj ili sinkronizirajte sa vasim uredjajem!",
"No entries found in this folder" : "Zapis nije pronadjen u ovom direktorijumu ",
diff --git a/apps/files/l10n/hr.json b/apps/files/l10n/hr.json
index 92e6b5d80e1..a8d935848ea 100644
--- a/apps/files/l10n/hr.json
+++ b/apps/files/l10n/hr.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Učitavanje je prekinuto.",
"Could not get result from server." : "Nemoguće dobiti rezultat od poslužitelja.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Učitavanje datoteke je u tijeku. Napuštanje stranice prekinut će učitavanje.",
- "{new_name} already exists" : "{new_name} već postoji",
- "Could not create file" : "Datoteku nije moguće kreirati",
- "Could not create folder" : "Mapu nije moguće kreirati",
"Actions" : "Radnje",
"Download" : "Preuzimanje",
"Select" : "Selektiraj",
@@ -45,7 +42,10 @@
"Error moving file." : "Pogrešno premještanje datoteke",
"Error moving file" : "Pogrešno premještanje datoteke",
"Error" : "Pogreška",
+ "{new_name} already exists" : "{new_name} već postoji",
"Could not rename file" : "Datoteku nije moguće preimenovati",
+ "Could not create file" : "Datoteku nije moguće kreirati",
+ "Could not create folder" : "Mapu nije moguće kreirati",
"Error deleting file." : "Pogrešno brisanje datoteke",
"No entries in this folder match '{filter}'" : "Nema zapisa u ovom folderu match '{filter}'",
"Name" : "Naziv",
@@ -56,12 +56,17 @@
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Ovdje vam nije dopušteno učitavati ili kreirati datoteke",
"_Uploading %n file_::_Uploading %n files_" : ["Prenosim %n datoteku","Prenosim %n datoteke","Prenosim %n datoteka"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" je neispravno ime datoteke.",
"File name cannot be empty." : "Naziv datoteke ne može biti prazan.",
"Your storage is full, files can not be updated or synced anymore!" : "Vaša je pohrana puna, datoteke više nije moguće ažurirati niti sinkronizirati!",
"Your storage is almost full ({usedSpacePercent}%)" : "Vaš prostor za pohranu je skoro pun ({usedSpacePercent}%)",
"Favorited" : "Favoritovan",
"Favorite" : "Favorit",
+ "Upload" : "Učitavanje",
+ "Text file" : "Tekstualna datoteka",
+ "Folder" : "Mapa",
+ "New folder" : "Nova mapa",
"A new file or folder has been <strong>created</strong>" : "Nova datoteka ili nova mapa su <strong>kreirani</strong>",
"A file or folder has been <strong>changed</strong>" : "Datoteka ili mapa su <strong>promijenjeni</strong>",
"A file or folder has been <strong>deleted</strong>" : "Datoteka ili mapa su <strong>izbrisani</strong>",
@@ -85,12 +90,6 @@
"Settings" : "Postavke",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Koristitet slijedeću adresu za <a href=\"%s\" target=\"_blank\">pristup vašim datotekama putem WebDAV-a</a>",
- "New" : "Novo",
- "New text file" : "Nova tekstualna datoteka",
- "Text file" : "Tekstualna datoteka",
- "New folder" : "Nova mapa",
- "Folder" : "Mapa",
- "Upload" : "Učitavanje",
"Cancel upload" : "Prekini upload",
"Upload some content or sync with your devices!" : "Aplodujte neki sadrzaj ili sinkronizirajte sa vasim uredjajem!",
"No entries found in this folder" : "Zapis nije pronadjen u ovom direktorijumu ",
diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js
index c7c7719db1c..8b9b7c17f15 100644
--- a/apps/files/l10n/hu_HU.js
+++ b/apps/files/l10n/hu_HU.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "A feltöltést megszakítottuk.",
"Could not get result from server." : "A kiszolgálótól nem kapható meg a művelet eredménye.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
- "{new_name} already exists" : "{new_name} már létezik",
- "Could not create file" : "Az állomány nem hozható létre",
- "Could not create folder" : "A mappa nem hozható létre",
"Actions" : "Műveletek",
"Download" : "Letöltés",
"Select" : "Kiválaszt",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Hiba történt a fájl áthelyezése közben.",
"Error moving file" : "Az állomány áthelyezése nem sikerült.",
"Error" : "Hiba",
+ "{new_name} already exists" : "{new_name} már létezik",
"Could not rename file" : "Az állomány nem nevezhető át",
+ "Could not create file" : "Az állomány nem hozható létre",
+ "Could not create folder" : "A mappa nem hozható létre",
"Error deleting file." : "Hiba a file törlése közben.",
"No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a könyvtárban '{filter}'",
"Name" : "Név",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} és {files}",
"You don’t have permission to upload or create files here" : "Önnek nincs jogosultsága ahhoz, hogy ide állományokat töltsön föl, vagy itt újakat hozzon létre",
"_Uploading %n file_::_Uploading %n files_" : ["%n állomány feltöltése","%n állomány feltöltése"],
+ "New" : "Új",
"\"{name}\" is an invalid file name." : "\"{name}\" érvénytelen, mint fájlnév.",
"File name cannot be empty." : "A fájlnév nem lehet semmi.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "A {owner} felhasználó tárolója betelt, a fájlok nem frissíthetők és szinkronizálhatók többet!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
"Favorited" : "Kedvenc",
"Favorite" : "Kedvenc",
+ "{newname} already exists" : "{newname} már létezik",
+ "Upload" : "Feltöltés",
+ "Text file" : "Szövegfájl",
+ "New text file.txt" : "Új szöveges fájl.txt",
+ "Folder" : "Mappa",
+ "New folder" : "Új mappa",
"An error occurred while trying to update the tags" : "Hiba történt, miközben megpróbálta frissíteni a címkéket",
"A new file or folder has been <strong>created</strong>" : "Új fájl vagy könyvtár <strong>létrehozása</strong>",
"A file or folder has been <strong>changed</strong>" : "Fájl vagy könyvtár <strong>módosítása</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Beállítások",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Ezt a címet használja, ha <a href=\"%s\" target=\"_blank\">WebDAV-on keresztül szeretné elérni a fájljait</a>",
- "New" : "Új",
- "New text file" : "Új szövegfájl",
- "Text file" : "Szövegfájl",
- "New folder" : "Új mappa",
- "Folder" : "Mappa",
- "Upload" : "Feltöltés",
"Cancel upload" : "A feltöltés megszakítása",
"No files in here" : "Itt nincsenek fájlok",
"Upload some content or sync with your devices!" : "Tölts fel néhány tartalmat, vagy szinkronizálj az eszközöddel!",
diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json
index 08027509fb3..6d82cd60413 100644
--- a/apps/files/l10n/hu_HU.json
+++ b/apps/files/l10n/hu_HU.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "A feltöltést megszakítottuk.",
"Could not get result from server." : "A kiszolgálótól nem kapható meg a művelet eredménye.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
- "{new_name} already exists" : "{new_name} már létezik",
- "Could not create file" : "Az állomány nem hozható létre",
- "Could not create folder" : "A mappa nem hozható létre",
"Actions" : "Műveletek",
"Download" : "Letöltés",
"Select" : "Kiválaszt",
@@ -47,7 +44,10 @@
"Error moving file." : "Hiba történt a fájl áthelyezése közben.",
"Error moving file" : "Az állomány áthelyezése nem sikerült.",
"Error" : "Hiba",
+ "{new_name} already exists" : "{new_name} már létezik",
"Could not rename file" : "Az állomány nem nevezhető át",
+ "Could not create file" : "Az állomány nem hozható létre",
+ "Could not create folder" : "A mappa nem hozható létre",
"Error deleting file." : "Hiba a file törlése közben.",
"No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a könyvtárban '{filter}'",
"Name" : "Név",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} és {files}",
"You don’t have permission to upload or create files here" : "Önnek nincs jogosultsága ahhoz, hogy ide állományokat töltsön föl, vagy itt újakat hozzon létre",
"_Uploading %n file_::_Uploading %n files_" : ["%n állomány feltöltése","%n állomány feltöltése"],
+ "New" : "Új",
"\"{name}\" is an invalid file name." : "\"{name}\" érvénytelen, mint fájlnév.",
"File name cannot be empty." : "A fájlnév nem lehet semmi.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "A {owner} felhasználó tárolója betelt, a fájlok nem frissíthetők és szinkronizálhatók többet!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
"Favorited" : "Kedvenc",
"Favorite" : "Kedvenc",
+ "{newname} already exists" : "{newname} már létezik",
+ "Upload" : "Feltöltés",
+ "Text file" : "Szövegfájl",
+ "New text file.txt" : "Új szöveges fájl.txt",
+ "Folder" : "Mappa",
+ "New folder" : "Új mappa",
"An error occurred while trying to update the tags" : "Hiba történt, miközben megpróbálta frissíteni a címkéket",
"A new file or folder has been <strong>created</strong>" : "Új fájl vagy könyvtár <strong>létrehozása</strong>",
"A file or folder has been <strong>changed</strong>" : "Fájl vagy könyvtár <strong>módosítása</strong>",
@@ -96,12 +103,6 @@
"Settings" : "Beállítások",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Ezt a címet használja, ha <a href=\"%s\" target=\"_blank\">WebDAV-on keresztül szeretné elérni a fájljait</a>",
- "New" : "Új",
- "New text file" : "Új szövegfájl",
- "Text file" : "Szövegfájl",
- "New folder" : "Új mappa",
- "Folder" : "Mappa",
- "Upload" : "Feltöltés",
"Cancel upload" : "A feltöltés megszakítása",
"No files in here" : "Itt nincsenek fájlok",
"Upload some content or sync with your devices!" : "Tölts fel néhány tartalmat, vagy szinkronizálj az eszközöddel!",
diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js
index d6d4b83cfca..9b5d321937e 100644
--- a/apps/files/l10n/ia.js
+++ b/apps/files/l10n/ia.js
@@ -13,7 +13,12 @@ OC.L10N.register(
"Name" : "Nomine",
"Size" : "Dimension",
"Modified" : "Modificate",
+ "New" : "Nove",
"File name cannot be empty." : "Le nomine de file non pote esser vacue.",
+ "Upload" : "Incargar",
+ "Text file" : "File de texto",
+ "Folder" : "Dossier",
+ "New folder" : "Nove dossier",
"A new file or folder has been <strong>created</strong>" : "Un nove file o dossier ha essite <strong>create</strong>",
"A file or folder has been <strong>changed</strong>" : "Un nove file o dossier ha essite <strong>modificate</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un nove file o dossier ha essite <strong>delite</strong>",
@@ -31,11 +36,6 @@ OC.L10N.register(
"Maximum upload size" : "Dimension maxime de incargamento",
"Save" : "Salveguardar",
"Settings" : "Configurationes",
- "New" : "Nove",
- "Text file" : "File de texto",
- "New folder" : "Nove dossier",
- "Folder" : "Dossier",
- "Upload" : "Incargar",
"Delete" : "Deler",
"Upload too large" : "Incargamento troppo longe"
},
diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json
index 0389c806b30..461634d526a 100644
--- a/apps/files/l10n/ia.json
+++ b/apps/files/l10n/ia.json
@@ -11,7 +11,12 @@
"Name" : "Nomine",
"Size" : "Dimension",
"Modified" : "Modificate",
+ "New" : "Nove",
"File name cannot be empty." : "Le nomine de file non pote esser vacue.",
+ "Upload" : "Incargar",
+ "Text file" : "File de texto",
+ "Folder" : "Dossier",
+ "New folder" : "Nove dossier",
"A new file or folder has been <strong>created</strong>" : "Un nove file o dossier ha essite <strong>create</strong>",
"A file or folder has been <strong>changed</strong>" : "Un nove file o dossier ha essite <strong>modificate</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un nove file o dossier ha essite <strong>delite</strong>",
@@ -29,11 +34,6 @@
"Maximum upload size" : "Dimension maxime de incargamento",
"Save" : "Salveguardar",
"Settings" : "Configurationes",
- "New" : "Nove",
- "Text file" : "File de texto",
- "New folder" : "Nove dossier",
- "Folder" : "Dossier",
- "Upload" : "Incargar",
"Delete" : "Deler",
"Upload too large" : "Incargamento troppo longe"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index 8d57bacedf4..af35544da8a 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Pengunggahan dibatalkan.",
"Could not get result from server." : "Tidak mendapatkan hasil dari server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.",
- "{new_name} already exists" : "{new_name} sudah ada",
- "Could not create file" : "Tidak dapat membuat berkas",
- "Could not create folder" : "Tidak dapat membuat folder",
"Actions" : "Tindakan",
"Download" : "Unduh",
"Select" : "Pilih",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Kesalahan saat memindahkan berkas.",
"Error moving file" : "Kesalahan saat memindahkan berkas",
"Error" : "Kesalahan ",
+ "{new_name} already exists" : "{new_name} sudah ada",
"Could not rename file" : "Tidak dapat mengubah nama berkas",
+ "Could not create file" : "Tidak dapat membuat berkas",
+ "Could not create folder" : "Tidak dapat membuat folder",
"Error deleting file." : "Kesalahan saat menghapus berkas.",
"No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'",
"Name" : "Nama",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} dan {files}",
"You don’t have permission to upload or create files here" : "Anda tidak memiliki akses untuk mengunggah atau membuat berkas disini",
"_Uploading %n file_::_Uploading %n files_" : ["Mengunggah %n berkas"],
+ "New" : "Baru",
"\"{name}\" is an invalid file name." : "\"{name}\" adalah nama berkas yang tidak sah.",
"File name cannot be empty." : "Nama berkas tidak boleh kosong.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Penyimpanan {owner} penuh, berkas tidak dapat diperbarui atau disinkronisasikan lagi!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte"],
"Favorited" : "Difavoritkan",
"Favorite" : "Favorit",
+ "Upload" : "Unggah",
+ "Text file" : "Berkas teks",
+ "Folder" : "Folder",
+ "New folder" : "Map baru",
"An error occurred while trying to update the tags" : "Terjadi kesalahan saat mencoba untuk memperbarui label",
"A new file or folder has been <strong>created</strong>" : "Sebuah berkas atau folder baru telah <strong>dibuat</strong>",
"A file or folder has been <strong>changed</strong>" : "Sebuah berkas atau folder telah <strong>diubah</strong>",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "Pengaturan",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\">mengakses Berkas via WebDAV</a>",
- "New" : "Baru",
- "New text file" : "Berkas teks baru",
- "Text file" : "Berkas teks",
- "New folder" : "Map baru",
- "Folder" : "Folder",
- "Upload" : "Unggah",
"Cancel upload" : "Batal unggah",
"No files in here" : "Tidak ada berkas disini",
"Upload some content or sync with your devices!" : "Unggah beberapa konten dan sinkronisasikan dengan perangkat Anda!",
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index c38ca149788..2c0f8274542 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Pengunggahan dibatalkan.",
"Could not get result from server." : "Tidak mendapatkan hasil dari server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.",
- "{new_name} already exists" : "{new_name} sudah ada",
- "Could not create file" : "Tidak dapat membuat berkas",
- "Could not create folder" : "Tidak dapat membuat folder",
"Actions" : "Tindakan",
"Download" : "Unduh",
"Select" : "Pilih",
@@ -47,7 +44,10 @@
"Error moving file." : "Kesalahan saat memindahkan berkas.",
"Error moving file" : "Kesalahan saat memindahkan berkas",
"Error" : "Kesalahan ",
+ "{new_name} already exists" : "{new_name} sudah ada",
"Could not rename file" : "Tidak dapat mengubah nama berkas",
+ "Could not create file" : "Tidak dapat membuat berkas",
+ "Could not create folder" : "Tidak dapat membuat folder",
"Error deleting file." : "Kesalahan saat menghapus berkas.",
"No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'",
"Name" : "Nama",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} dan {files}",
"You don’t have permission to upload or create files here" : "Anda tidak memiliki akses untuk mengunggah atau membuat berkas disini",
"_Uploading %n file_::_Uploading %n files_" : ["Mengunggah %n berkas"],
+ "New" : "Baru",
"\"{name}\" is an invalid file name." : "\"{name}\" adalah nama berkas yang tidak sah.",
"File name cannot be empty." : "Nama berkas tidak boleh kosong.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Penyimpanan {owner} penuh, berkas tidak dapat diperbarui atau disinkronisasikan lagi!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n byte"],
"Favorited" : "Difavoritkan",
"Favorite" : "Favorit",
+ "Upload" : "Unggah",
+ "Text file" : "Berkas teks",
+ "Folder" : "Folder",
+ "New folder" : "Map baru",
"An error occurred while trying to update the tags" : "Terjadi kesalahan saat mencoba untuk memperbarui label",
"A new file or folder has been <strong>created</strong>" : "Sebuah berkas atau folder baru telah <strong>dibuat</strong>",
"A file or folder has been <strong>changed</strong>" : "Sebuah berkas atau folder telah <strong>diubah</strong>",
@@ -96,12 +101,6 @@
"Settings" : "Pengaturan",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\">mengakses Berkas via WebDAV</a>",
- "New" : "Baru",
- "New text file" : "Berkas teks baru",
- "Text file" : "Berkas teks",
- "New folder" : "Map baru",
- "Folder" : "Folder",
- "Upload" : "Unggah",
"Cancel upload" : "Batal unggah",
"No files in here" : "Tidak ada berkas disini",
"Upload some content or sync with your devices!" : "Unggah beberapa konten dan sinkronisasikan dengan perangkat Anda!",
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index a3b44be4731..7ac24eba462 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -16,25 +16,25 @@ OC.L10N.register(
"Close" : "Loka",
"Upload cancelled." : "Hætt við innsendingu.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending misheppnast.",
- "{new_name} already exists" : "{new_name} er þegar til",
"Download" : "Niðurhal",
"Select" : "Velja",
"Pending" : "Bíður",
"Error" : "Villa",
+ "{new_name} already exists" : "{new_name} er þegar til",
"Name" : "Nafn",
"Size" : "Stærð",
"Modified" : "Breytt",
+ "New" : "Nýtt",
"File name cannot be empty." : "Nafn skráar má ekki vera tómt",
+ "Upload" : "Senda inn",
+ "Text file" : "Texta skrá",
+ "Folder" : "Mappa",
"File handling" : "Meðhöndlun skrár",
"Maximum upload size" : "Hámarks stærð innsendingar",
"max. possible: " : "hámark mögulegt: ",
"Save" : "Vista",
"Settings" : "Stillingar",
"WebDAV" : "WebDAV",
- "New" : "Nýtt",
- "Text file" : "Texta skrá",
- "Folder" : "Mappa",
- "Upload" : "Senda inn",
"Cancel upload" : "Hætta við innsendingu",
"No entries found in this folder" : "Engar skrár fundust í þessari möppu",
"Select all" : "Velja allt",
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index 9307f9b6df4..8e723d963a7 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -14,25 +14,25 @@
"Close" : "Loka",
"Upload cancelled." : "Hætt við innsendingu.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending misheppnast.",
- "{new_name} already exists" : "{new_name} er þegar til",
"Download" : "Niðurhal",
"Select" : "Velja",
"Pending" : "Bíður",
"Error" : "Villa",
+ "{new_name} already exists" : "{new_name} er þegar til",
"Name" : "Nafn",
"Size" : "Stærð",
"Modified" : "Breytt",
+ "New" : "Nýtt",
"File name cannot be empty." : "Nafn skráar má ekki vera tómt",
+ "Upload" : "Senda inn",
+ "Text file" : "Texta skrá",
+ "Folder" : "Mappa",
"File handling" : "Meðhöndlun skrár",
"Maximum upload size" : "Hámarks stærð innsendingar",
"max. possible: " : "hámark mögulegt: ",
"Save" : "Vista",
"Settings" : "Stillingar",
"WebDAV" : "WebDAV",
- "New" : "Nýtt",
- "Text file" : "Texta skrá",
- "Folder" : "Mappa",
- "Upload" : "Senda inn",
"Cancel upload" : "Hætta við innsendingu",
"No entries found in this folder" : "Engar skrár fundust í þessari möppu",
"Select all" : "Velja allt",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 2a7e998cced..aa92ffc0f70 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Caricamento annullato.",
"Could not get result from server." : "Impossibile ottenere il risultato dal server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
- "{new_name} already exists" : "{new_name} esiste già",
- "Could not create file" : "Impossibile creare il file",
- "Could not create folder" : "Impossibile creare la cartella",
"Actions" : "Azioni",
"Download" : "Scarica",
"Select" : "Seleziona",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Errore durante lo spostamento del file.",
"Error moving file" : "Errore durante lo spostamento del file",
"Error" : "Errore",
+ "{new_name} already exists" : "{new_name} esiste già",
"Could not rename file" : "Impossibile rinominare il file",
+ "Could not create file" : "Impossibile creare il file",
+ "Could not create folder" : "Impossibile creare la cartella",
"Error deleting file." : "Errore durante l'eliminazione del file.",
"No entries in this folder match '{filter}'" : "Nessuna voce in questa cartella corrisponde a '{filter}'",
"Name" : "Nome",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Qui non hai i permessi di caricare o creare file",
"_Uploading %n file_::_Uploading %n files_" : ["Caricamento di %n file in corso","Caricamento di %n file in corso"],
+ "New" : "Nuovo",
"\"{name}\" is an invalid file name." : "\"{name}\" non è un nome file valido.",
"File name cannot be empty." : "Il nome del file non può essere vuoto.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lo spazio di archiviazione di {owner} è pieno, i file non possono essere più aggiornati o sincronizzati!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n byte"],
"Favorited" : "Preferiti",
"Favorite" : "Preferito",
+ "{newname} already exists" : "{newname} esiste già",
+ "Upload" : "Carica",
+ "Text file" : "File di testo",
+ "New text file.txt" : "Nuovo file di testo.txt",
+ "Folder" : "Cartella",
+ "New folder" : "Nuova cartella",
"An error occurred while trying to update the tags" : "Si è verificato un errore durante il tentativo di aggiornare le etichette",
"A new file or folder has been <strong>created</strong>" : "Un nuovo file o cartella è stato <strong>creato</strong>",
"A file or folder has been <strong>changed</strong>" : "Un file o una cartella è stato <strong>modificato</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Impostazioni",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\">accedere ai tuoi file con WebDAV</a>",
- "New" : "Nuovo",
- "New text file" : "Nuovo file di testo",
- "Text file" : "File di testo",
- "New folder" : "Nuova cartella",
- "Folder" : "Cartella",
- "Upload" : "Carica",
"Cancel upload" : "Annulla caricamento",
"No files in here" : "Qui non c'è alcun file",
"Upload some content or sync with your devices!" : "Carica alcuni contenuti o sincronizza con i tuoi dispositivi!",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index b61fb39ae5f..8f18858b2eb 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Caricamento annullato.",
"Could not get result from server." : "Impossibile ottenere il risultato dal server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
- "{new_name} already exists" : "{new_name} esiste già",
- "Could not create file" : "Impossibile creare il file",
- "Could not create folder" : "Impossibile creare la cartella",
"Actions" : "Azioni",
"Download" : "Scarica",
"Select" : "Seleziona",
@@ -47,7 +44,10 @@
"Error moving file." : "Errore durante lo spostamento del file.",
"Error moving file" : "Errore durante lo spostamento del file",
"Error" : "Errore",
+ "{new_name} already exists" : "{new_name} esiste già",
"Could not rename file" : "Impossibile rinominare il file",
+ "Could not create file" : "Impossibile creare il file",
+ "Could not create folder" : "Impossibile creare la cartella",
"Error deleting file." : "Errore durante l'eliminazione del file.",
"No entries in this folder match '{filter}'" : "Nessuna voce in questa cartella corrisponde a '{filter}'",
"Name" : "Nome",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Qui non hai i permessi di caricare o creare file",
"_Uploading %n file_::_Uploading %n files_" : ["Caricamento di %n file in corso","Caricamento di %n file in corso"],
+ "New" : "Nuovo",
"\"{name}\" is an invalid file name." : "\"{name}\" non è un nome file valido.",
"File name cannot be empty." : "Il nome del file non può essere vuoto.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lo spazio di archiviazione di {owner} è pieno, i file non possono essere più aggiornati o sincronizzati!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n byte"],
"Favorited" : "Preferiti",
"Favorite" : "Preferito",
+ "{newname} already exists" : "{newname} esiste già",
+ "Upload" : "Carica",
+ "Text file" : "File di testo",
+ "New text file.txt" : "Nuovo file di testo.txt",
+ "Folder" : "Cartella",
+ "New folder" : "Nuova cartella",
"An error occurred while trying to update the tags" : "Si è verificato un errore durante il tentativo di aggiornare le etichette",
"A new file or folder has been <strong>created</strong>" : "Un nuovo file o cartella è stato <strong>creato</strong>",
"A file or folder has been <strong>changed</strong>" : "Un file o una cartella è stato <strong>modificato</strong>",
@@ -96,12 +103,6 @@
"Settings" : "Impostazioni",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizza questo indirizzo per <a href=\"%s\" target=\"_blank\">accedere ai tuoi file con WebDAV</a>",
- "New" : "Nuovo",
- "New text file" : "Nuovo file di testo",
- "Text file" : "File di testo",
- "New folder" : "Nuova cartella",
- "Folder" : "Cartella",
- "Upload" : "Carica",
"Cancel upload" : "Annulla caricamento",
"No files in here" : "Qui non c'è alcun file",
"Upload some content or sync with your devices!" : "Carica alcuni contenuti o sincronizza con i tuoi dispositivi!",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 23326e2ab2e..91e75e6e76a 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "アップロードはキャンセルされました。",
"Could not get result from server." : "サーバーから結果を取得できませんでした。",
"File upload is in progress. Leaving the page now will cancel the upload." : "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
- "{new_name} already exists" : "{new_name} はすでに存在します",
- "Could not create file" : "ファイルを作成できませんでした",
- "Could not create folder" : "フォルダーを作成できませんでした",
"Actions" : "アクション",
"Download" : "ダウンロード",
"Select" : "選択",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "ファイル移動でエラー",
"Error moving file" : "ファイルの移動エラー",
"Error" : "エラー",
+ "{new_name} already exists" : "{new_name} はすでに存在します",
"Could not rename file" : "ファイルの名前変更ができませんでした",
+ "Could not create file" : "ファイルを作成できませんでした",
+ "Could not create folder" : "フォルダーを作成できませんでした",
"Error deleting file." : "ファイルの削除エラー。",
"No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません",
"Name" : "名前",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} と {files}",
"You don’t have permission to upload or create files here" : "ここにファイルをアップロードもしくは作成する権限がありません",
"_Uploading %n file_::_Uploading %n files_" : ["%n 個のファイルをアップロード中"],
+ "New" : "新規作成",
"\"{name}\" is an invalid file name." : "\"{name}\" は無効なファイル名です。",
"File name cannot be empty." : "ファイル名を空にすることはできません。",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} のストレージは一杯です。ファイルの更新と同期はもうできません!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n バイト"],
"Favorited" : "お気に入り済",
"Favorite" : "お気に入り",
+ "Upload" : "アップロード",
+ "Text file" : "テキストファイル",
+ "Folder" : "フォルダー",
+ "New folder" : "新しいフォルダー",
"An error occurred while trying to update the tags" : "タグを更新する際にエラーが発生しました",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
"A file or folder has been <strong>changed</strong>" : "ファイルまたはフォルダーを<strong>変更</strong>したとき",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "設定",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">WebDAV経由でのファイルアクセス</a>にはこのアドレスを利用してください",
- "New" : "新規作成",
- "New text file" : "新規のテキストファイル作成",
- "Text file" : "テキストファイル",
- "New folder" : "新しいフォルダー",
- "Folder" : "フォルダー",
- "Upload" : "アップロード",
"Cancel upload" : "アップロードをキャンセル",
"No files in here" : "ファイルがありません",
"Upload some content or sync with your devices!" : "何かコンテンツをアップロードするか、デバイスからファイルを同期してください。",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index df2a7bd8058..7c0c94c0348 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "アップロードはキャンセルされました。",
"Could not get result from server." : "サーバーから結果を取得できませんでした。",
"File upload is in progress. Leaving the page now will cancel the upload." : "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
- "{new_name} already exists" : "{new_name} はすでに存在します",
- "Could not create file" : "ファイルを作成できませんでした",
- "Could not create folder" : "フォルダーを作成できませんでした",
"Actions" : "アクション",
"Download" : "ダウンロード",
"Select" : "選択",
@@ -47,7 +44,10 @@
"Error moving file." : "ファイル移動でエラー",
"Error moving file" : "ファイルの移動エラー",
"Error" : "エラー",
+ "{new_name} already exists" : "{new_name} はすでに存在します",
"Could not rename file" : "ファイルの名前変更ができませんでした",
+ "Could not create file" : "ファイルを作成できませんでした",
+ "Could not create folder" : "フォルダーを作成できませんでした",
"Error deleting file." : "ファイルの削除エラー。",
"No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません",
"Name" : "名前",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} と {files}",
"You don’t have permission to upload or create files here" : "ここにファイルをアップロードもしくは作成する権限がありません",
"_Uploading %n file_::_Uploading %n files_" : ["%n 個のファイルをアップロード中"],
+ "New" : "新規作成",
"\"{name}\" is an invalid file name." : "\"{name}\" は無効なファイル名です。",
"File name cannot be empty." : "ファイル名を空にすることはできません。",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} のストレージは一杯です。ファイルの更新と同期はもうできません!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n バイト"],
"Favorited" : "お気に入り済",
"Favorite" : "お気に入り",
+ "Upload" : "アップロード",
+ "Text file" : "テキストファイル",
+ "Folder" : "フォルダー",
+ "New folder" : "新しいフォルダー",
"An error occurred while trying to update the tags" : "タグを更新する際にエラーが発生しました",
"A new file or folder has been <strong>created</strong>" : "新しいファイルまたはフォルダーを<strong>作成</strong>したとき",
"A file or folder has been <strong>changed</strong>" : "ファイルまたはフォルダーを<strong>変更</strong>したとき",
@@ -96,12 +101,6 @@
"Settings" : "設定",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">WebDAV経由でのファイルアクセス</a>にはこのアドレスを利用してください",
- "New" : "新規作成",
- "New text file" : "新規のテキストファイル作成",
- "Text file" : "テキストファイル",
- "New folder" : "新しいフォルダー",
- "Folder" : "フォルダー",
- "Upload" : "アップロード",
"Cancel upload" : "アップロードをキャンセル",
"No files in here" : "ファイルがありません",
"Upload some content or sync with your devices!" : "何かコンテンツをアップロードするか、デバイスからファイルを同期してください。",
diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js
index 68e142e74d5..33135feb7cc 100644
--- a/apps/files/l10n/ka_GE.js
+++ b/apps/files/l10n/ka_GE.js
@@ -20,29 +20,29 @@ OC.L10N.register(
"Close" : "დახურვა",
"Upload cancelled." : "ატვირთვა შეჩერებულ იქნა.",
"File upload is in progress. Leaving the page now will cancel the upload." : "მიმდინარეობს ფაილის ატვირთვა. სხვა გვერდზე გადასვლა გამოიწვევს ატვირთვის შეჩერებას",
- "{new_name} already exists" : "{new_name} უკვე არსებობს",
"Actions" : "მოქმედებები",
"Download" : "ჩამოტვირთვა",
"Pending" : "მოცდის რეჟიმში",
"Error" : "შეცდომა",
+ "{new_name} already exists" : "{new_name} უკვე არსებობს",
"Name" : "სახელი",
"Size" : "ზომა",
"Modified" : "შეცვლილია",
+ "New" : "ახალი",
"File name cannot be empty." : "ფაილის სახელი არ შეიძლება იყოს ცარიელი.",
"Your storage is full, files can not be updated or synced anymore!" : "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!",
"Your storage is almost full ({usedSpacePercent}%)" : "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)",
"Favorite" : "ფავორიტი",
+ "Upload" : "ატვირთვა",
+ "Text file" : "ტექსტური ფაილი",
+ "Folder" : "საქაღალდე",
+ "New folder" : "ახალი ფოლდერი",
"File handling" : "ფაილის დამუშავება",
"Maximum upload size" : "მაქსიმუმ ატვირთის ზომა",
"max. possible: " : "მაქს. შესაძლებელი:",
"Save" : "შენახვა",
"Settings" : "პარამეტრები",
"WebDAV" : "WebDAV",
- "New" : "ახალი",
- "Text file" : "ტექსტური ფაილი",
- "New folder" : "ახალი ფოლდერი",
- "Folder" : "საქაღალდე",
- "Upload" : "ატვირთვა",
"Cancel upload" : "ატვირთვის გაუქმება",
"Delete" : "წაშლა",
"Upload too large" : "ასატვირთი ფაილი ძალიან დიდია",
diff --git a/apps/files/l10n/ka_GE.json b/apps/files/l10n/ka_GE.json
index 4cbe5e15fdd..ef3f109d306 100644
--- a/apps/files/l10n/ka_GE.json
+++ b/apps/files/l10n/ka_GE.json
@@ -18,29 +18,29 @@
"Close" : "დახურვა",
"Upload cancelled." : "ატვირთვა შეჩერებულ იქნა.",
"File upload is in progress. Leaving the page now will cancel the upload." : "მიმდინარეობს ფაილის ატვირთვა. სხვა გვერდზე გადასვლა გამოიწვევს ატვირთვის შეჩერებას",
- "{new_name} already exists" : "{new_name} უკვე არსებობს",
"Actions" : "მოქმედებები",
"Download" : "ჩამოტვირთვა",
"Pending" : "მოცდის რეჟიმში",
"Error" : "შეცდომა",
+ "{new_name} already exists" : "{new_name} უკვე არსებობს",
"Name" : "სახელი",
"Size" : "ზომა",
"Modified" : "შეცვლილია",
+ "New" : "ახალი",
"File name cannot be empty." : "ფაილის სახელი არ შეიძლება იყოს ცარიელი.",
"Your storage is full, files can not be updated or synced anymore!" : "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!",
"Your storage is almost full ({usedSpacePercent}%)" : "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)",
"Favorite" : "ფავორიტი",
+ "Upload" : "ატვირთვა",
+ "Text file" : "ტექსტური ფაილი",
+ "Folder" : "საქაღალდე",
+ "New folder" : "ახალი ფოლდერი",
"File handling" : "ფაილის დამუშავება",
"Maximum upload size" : "მაქსიმუმ ატვირთის ზომა",
"max. possible: " : "მაქს. შესაძლებელი:",
"Save" : "შენახვა",
"Settings" : "პარამეტრები",
"WebDAV" : "WebDAV",
- "New" : "ახალი",
- "Text file" : "ტექსტური ფაილი",
- "New folder" : "ახალი ფოლდერი",
- "Folder" : "საქაღალდე",
- "Upload" : "ატვირთვა",
"Cancel upload" : "ატვირთვის გაუქმება",
"Delete" : "წაშლა",
"Upload too large" : "ასატვირთი ფაილი ძალიან დიდია",
diff --git a/apps/files/l10n/km.js b/apps/files/l10n/km.js
index d21f200dc09..6b8517e7229 100644
--- a/apps/files/l10n/km.js
+++ b/apps/files/l10n/km.js
@@ -9,14 +9,19 @@ OC.L10N.register(
"Files" : "ឯកសារ",
"Close" : "បិទ",
"Upload cancelled." : "បាន​បោះបង់​ការ​ផ្ទុក​ឡើង។",
- "{new_name} already exists" : "មាន​ឈ្មោះ {new_name} រួច​ហើយ",
"Download" : "ទាញយក",
"Pending" : "កំពុង​រង់ចាំ",
"Error" : "កំហុស",
+ "{new_name} already exists" : "មាន​ឈ្មោះ {new_name} រួច​ហើយ",
"Name" : "ឈ្មោះ",
"Size" : "ទំហំ",
"Modified" : "បាន​កែ​ប្រែ",
+ "New" : "ថ្មី",
"File name cannot be empty." : "ឈ្មោះ​ឯកសារ​មិន​អាច​នៅ​ទទេ​បាន​ឡើយ។",
+ "Upload" : "ផ្ទុក​ឡើង",
+ "Text file" : "ឯកសារ​អក្សរ",
+ "Folder" : "ថត",
+ "New folder" : "ថត​ថ្មី",
"You created %1$s" : "អ្នក​បាន​បង្កើត %1$s",
"%2$s created %1$s" : "%2$s បាន​បង្កើត %1$s",
"You changed %1$s" : "អ្នក​បាន​ផ្លាស់​ប្ដូរ %1$s",
@@ -27,11 +32,6 @@ OC.L10N.register(
"Save" : "រក្សាទុក",
"Settings" : "ការកំណត់",
"WebDAV" : "WebDAV",
- "New" : "ថ្មី",
- "Text file" : "ឯកសារ​អក្សរ",
- "New folder" : "ថត​ថ្មី",
- "Folder" : "ថត",
- "Upload" : "ផ្ទុក​ឡើង",
"Cancel upload" : "បោះបង់​ការ​ផ្ទុកឡើង",
"Delete" : "លុប",
"Upload too large" : "ផ្ទុក​ឡើង​ធំ​ពេក"
diff --git a/apps/files/l10n/km.json b/apps/files/l10n/km.json
index bd147f593d0..ebbb9a8b4ab 100644
--- a/apps/files/l10n/km.json
+++ b/apps/files/l10n/km.json
@@ -7,14 +7,19 @@
"Files" : "ឯកសារ",
"Close" : "បិទ",
"Upload cancelled." : "បាន​បោះបង់​ការ​ផ្ទុក​ឡើង។",
- "{new_name} already exists" : "មាន​ឈ្មោះ {new_name} រួច​ហើយ",
"Download" : "ទាញយក",
"Pending" : "កំពុង​រង់ចាំ",
"Error" : "កំហុស",
+ "{new_name} already exists" : "មាន​ឈ្មោះ {new_name} រួច​ហើយ",
"Name" : "ឈ្មោះ",
"Size" : "ទំហំ",
"Modified" : "បាន​កែ​ប្រែ",
+ "New" : "ថ្មី",
"File name cannot be empty." : "ឈ្មោះ​ឯកសារ​មិន​អាច​នៅ​ទទេ​បាន​ឡើយ។",
+ "Upload" : "ផ្ទុក​ឡើង",
+ "Text file" : "ឯកសារ​អក្សរ",
+ "Folder" : "ថត",
+ "New folder" : "ថត​ថ្មី",
"You created %1$s" : "អ្នក​បាន​បង្កើត %1$s",
"%2$s created %1$s" : "%2$s បាន​បង្កើត %1$s",
"You changed %1$s" : "អ្នក​បាន​ផ្លាស់​ប្ដូរ %1$s",
@@ -25,11 +30,6 @@
"Save" : "រក្សាទុក",
"Settings" : "ការកំណត់",
"WebDAV" : "WebDAV",
- "New" : "ថ្មី",
- "Text file" : "ឯកសារ​អក្សរ",
- "New folder" : "ថត​ថ្មី",
- "Folder" : "ថត",
- "Upload" : "ផ្ទុក​ឡើង",
"Cancel upload" : "បោះបង់​ការ​ផ្ទុកឡើង",
"Delete" : "លុប",
"Upload too large" : "ផ្ទុក​ឡើង​ធំ​ពេក"
diff --git a/apps/files/l10n/kn.js b/apps/files/l10n/kn.js
index 59e444e46c6..9bd8982fdaf 100644
--- a/apps/files/l10n/kn.js
+++ b/apps/files/l10n/kn.js
@@ -28,9 +28,6 @@ OC.L10N.register(
"Close" : "ಮುಚ್ಚು",
"Upload cancelled." : "ವರ್ಗಾವಣೆಯನ್ನು ರದ್ದು ಮಾಡಲಾಯಿತು.",
"Could not get result from server." : "ಪರಿಚಾರಕ ಕಣಕದಿಂದ ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.",
- "{new_name} already exists" : "ಈಗಾಗಲೇ {new_name} ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ",
- "Could not create file" : "ಕಡತ ರಚಿಸಲಾಗಲಿಲ್ಲ",
- "Could not create folder" : "ಕೋಶವನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ",
"Download" : "ಪ್ರತಿಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಉಳಿಸಿಕೊಳ್ಳಿ",
"Select" : "ಆಯ್ಕೆ ಮಾಡಿ",
"Pending" : "ಬಾಕಿ ಇದೆ",
@@ -38,7 +35,10 @@ OC.L10N.register(
"Error moving file." : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ.",
"Error moving file" : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ",
"Error" : "ತಪ್ಪಾಗಿದೆ",
+ "{new_name} already exists" : "ಈಗಾಗಲೇ {new_name} ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ",
"Could not rename file" : "ಕಡತ ಮರುಹೆಸರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ",
+ "Could not create file" : "ಕಡತ ರಚಿಸಲಾಗಲಿಲ್ಲ",
+ "Could not create folder" : "ಕೋಶವನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ",
"Error deleting file." : "ಕಡತವನ್ನು ಅಳಿಸುವಲ್ಲಿ ಲೋಪವಾದೆ",
"Name" : "ಹೆಸರು",
"Size" : " ಪ್ರಮಾಣ",
@@ -47,9 +47,14 @@ OC.L10N.register(
"_%n file_::_%n files_" : ["%n ಕಡತ"],
"You don’t have permission to upload or create files here" : "ನಿಮಗೆ ಇಲ್ಲಿ ಅಪ್ಲೋಡ್ ಅಥವಾ ಕಡತಗಳನ್ನು ರಚಿಸವ ಅನುಮತಿ ಇಲ್ಲ",
"_Uploading %n file_::_Uploading %n files_" : ["%n 'ನೆ ಕಡತವನ್ನು ವರ್ಗಾಯಿಸಲಾಗುತ್ತಿದೆ"],
+ "New" : "ಹೊಸ",
"File name cannot be empty." : "ಕಡತ ಹೆಸರು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.",
"Favorited" : "ಅಚ್ಚುಮೆಚ್ಚಿನವು",
"Favorite" : "ಅಚ್ಚುಮೆಚ್ಚಿನ",
+ "Upload" : "ವರ್ಗಾಯಿಸಿ",
+ "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ",
+ "Folder" : "ಕಡತಕೋಶ",
+ "New folder" : "ಹೊಸ ಕಡತಕೋಶ",
"Upload (max. %s)" : "ವರ್ಗಾವಣೆ (ಗರಿಷ್ಠ %s)",
"File handling" : "ಕಡತ ನಿರ್ವಹಣೆ",
"Maximum upload size" : "ಗರಿಷ್ಠ ವರ್ಗಾವಣೆ ಗಾತ್ರ",
@@ -57,12 +62,6 @@ OC.L10N.register(
"Save" : "ಉಳಿಸಿ",
"Settings" : "ಆಯ್ಕೆ",
"WebDAV" : "WebDAV",
- "New" : "ಹೊಸ",
- "New text file" : "ಹೊಸ ಸರಳಾಕ್ಷರದ ಕಡತ ",
- "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ",
- "New folder" : "ಹೊಸ ಕಡತಕೋಶ",
- "Folder" : "ಕಡತಕೋಶ",
- "Upload" : "ವರ್ಗಾಯಿಸಿ",
"Cancel upload" : "ವರ್ಗಾವಣೆ ರದ್ದು ಮಾಡಿ",
"Select all" : "ಎಲ್ಲಾ ಆಯ್ಕೆ ಮಾಡಿ",
"Delete" : "ಅಳಿಸಿ",
diff --git a/apps/files/l10n/kn.json b/apps/files/l10n/kn.json
index d432dbdae33..803b1c87cf4 100644
--- a/apps/files/l10n/kn.json
+++ b/apps/files/l10n/kn.json
@@ -26,9 +26,6 @@
"Close" : "ಮುಚ್ಚು",
"Upload cancelled." : "ವರ್ಗಾವಣೆಯನ್ನು ರದ್ದು ಮಾಡಲಾಯಿತು.",
"Could not get result from server." : "ಪರಿಚಾರಕ ಕಣಕದಿಂದ ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.",
- "{new_name} already exists" : "ಈಗಾಗಲೇ {new_name} ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ",
- "Could not create file" : "ಕಡತ ರಚಿಸಲಾಗಲಿಲ್ಲ",
- "Could not create folder" : "ಕೋಶವನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ",
"Download" : "ಪ್ರತಿಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಉಳಿಸಿಕೊಳ್ಳಿ",
"Select" : "ಆಯ್ಕೆ ಮಾಡಿ",
"Pending" : "ಬಾಕಿ ಇದೆ",
@@ -36,7 +33,10 @@
"Error moving file." : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ.",
"Error moving file" : "ಕಡತದ ಸ್ಥಾನವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷವಾಗಿದೆ",
"Error" : "ತಪ್ಪಾಗಿದೆ",
+ "{new_name} already exists" : "ಈಗಾಗಲೇ {new_name} ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ",
"Could not rename file" : "ಕಡತ ಮರುಹೆಸರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ",
+ "Could not create file" : "ಕಡತ ರಚಿಸಲಾಗಲಿಲ್ಲ",
+ "Could not create folder" : "ಕೋಶವನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ",
"Error deleting file." : "ಕಡತವನ್ನು ಅಳಿಸುವಲ್ಲಿ ಲೋಪವಾದೆ",
"Name" : "ಹೆಸರು",
"Size" : " ಪ್ರಮಾಣ",
@@ -45,9 +45,14 @@
"_%n file_::_%n files_" : ["%n ಕಡತ"],
"You don’t have permission to upload or create files here" : "ನಿಮಗೆ ಇಲ್ಲಿ ಅಪ್ಲೋಡ್ ಅಥವಾ ಕಡತಗಳನ್ನು ರಚಿಸವ ಅನುಮತಿ ಇಲ್ಲ",
"_Uploading %n file_::_Uploading %n files_" : ["%n 'ನೆ ಕಡತವನ್ನು ವರ್ಗಾಯಿಸಲಾಗುತ್ತಿದೆ"],
+ "New" : "ಹೊಸ",
"File name cannot be empty." : "ಕಡತ ಹೆಸರು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.",
"Favorited" : "ಅಚ್ಚುಮೆಚ್ಚಿನವು",
"Favorite" : "ಅಚ್ಚುಮೆಚ್ಚಿನ",
+ "Upload" : "ವರ್ಗಾಯಿಸಿ",
+ "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ",
+ "Folder" : "ಕಡತಕೋಶ",
+ "New folder" : "ಹೊಸ ಕಡತಕೋಶ",
"Upload (max. %s)" : "ವರ್ಗಾವಣೆ (ಗರಿಷ್ಠ %s)",
"File handling" : "ಕಡತ ನಿರ್ವಹಣೆ",
"Maximum upload size" : "ಗರಿಷ್ಠ ವರ್ಗಾವಣೆ ಗಾತ್ರ",
@@ -55,12 +60,6 @@
"Save" : "ಉಳಿಸಿ",
"Settings" : "ಆಯ್ಕೆ",
"WebDAV" : "WebDAV",
- "New" : "ಹೊಸ",
- "New text file" : "ಹೊಸ ಸರಳಾಕ್ಷರದ ಕಡತ ",
- "Text file" : "ಸರಳಾಕ್ಷರದ ಕಡತ",
- "New folder" : "ಹೊಸ ಕಡತಕೋಶ",
- "Folder" : "ಕಡತಕೋಶ",
- "Upload" : "ವರ್ಗಾಯಿಸಿ",
"Cancel upload" : "ವರ್ಗಾವಣೆ ರದ್ದು ಮಾಡಿ",
"Select all" : "ಎಲ್ಲಾ ಆಯ್ಕೆ ಮಾಡಿ",
"Delete" : "ಅಳಿಸಿ",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 65ca5780d6f..50126226933 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "업로드가 취소되었습니다.",
"Could not get result from server." : "서버에서 결과를 가져올 수 없습니다.",
"File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
- "{new_name} already exists" : "{new_name}이(가) 이미 존재함",
- "Could not create file" : "파일을 만들 수 없음",
- "Could not create folder" : "폴더를 만들 수 없음",
"Actions" : "작업",
"Download" : "다운로드",
"Select" : "선택",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "파일 이동 오류.",
"Error moving file" : "파일 이동 오류",
"Error" : "오류",
+ "{new_name} already exists" : "{new_name}이(가) 이미 존재함",
"Could not rename file" : "이름을 변경할 수 없음",
+ "Could not create file" : "파일을 만들 수 없음",
+ "Could not create folder" : "폴더를 만들 수 없음",
"Error deleting file." : "파일 삭제 오류.",
"No entries in this folder match '{filter}'" : "이 폴더에 '{filter}'와(과) 일치하는 항목 없음",
"Name" : "이름",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} 그리고 {files}",
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
+ "New" : "새로 만들기",
"\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.",
"File name cannot be empty." : "파일 이름이 비어 있을 수 없습니다.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner}의 저장소가 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
@@ -69,6 +70,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["'{filter}'와(과) 일치"],
"Favorited" : "책갈피에 추가됨",
"Favorite" : "즐겨찾기",
+ "Upload" : "업로드",
+ "Text file" : "텍스트 파일",
+ "Folder" : "폴더",
+ "New folder" : "새 폴더",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
"A file or folder has been <strong>changed</strong>" : "파일이나 폴더가 <strong>변경됨</strong>",
@@ -95,12 +100,6 @@ OC.L10N.register(
"Settings" : "설정",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "WebDAV로 파일에 접근하려면 <a href=\"%s\" target=\"_blank\">이 주소를 사용하십시오</a>",
- "New" : "새로 만들기",
- "New text file" : "새 텍스트 파일",
- "Text file" : "텍스트 파일",
- "New folder" : "새 폴더",
- "Folder" : "폴더",
- "Upload" : "업로드",
"Cancel upload" : "업로드 취소",
"No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 9139e78c0ac..95601323bd1 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "업로드가 취소되었습니다.",
"Could not get result from server." : "서버에서 결과를 가져올 수 없습니다.",
"File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
- "{new_name} already exists" : "{new_name}이(가) 이미 존재함",
- "Could not create file" : "파일을 만들 수 없음",
- "Could not create folder" : "폴더를 만들 수 없음",
"Actions" : "작업",
"Download" : "다운로드",
"Select" : "선택",
@@ -47,7 +44,10 @@
"Error moving file." : "파일 이동 오류.",
"Error moving file" : "파일 이동 오류",
"Error" : "오류",
+ "{new_name} already exists" : "{new_name}이(가) 이미 존재함",
"Could not rename file" : "이름을 변경할 수 없음",
+ "Could not create file" : "파일을 만들 수 없음",
+ "Could not create folder" : "폴더를 만들 수 없음",
"Error deleting file." : "파일 삭제 오류.",
"No entries in this folder match '{filter}'" : "이 폴더에 '{filter}'와(과) 일치하는 항목 없음",
"Name" : "이름",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} 그리고 {files}",
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
+ "New" : "새로 만들기",
"\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.",
"File name cannot be empty." : "파일 이름이 비어 있을 수 없습니다.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner}의 저장소가 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
@@ -67,6 +68,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["'{filter}'와(과) 일치"],
"Favorited" : "책갈피에 추가됨",
"Favorite" : "즐겨찾기",
+ "Upload" : "업로드",
+ "Text file" : "텍스트 파일",
+ "Folder" : "폴더",
+ "New folder" : "새 폴더",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
"A file or folder has been <strong>changed</strong>" : "파일이나 폴더가 <strong>변경됨</strong>",
@@ -93,12 +98,6 @@
"Settings" : "설정",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "WebDAV로 파일에 접근하려면 <a href=\"%s\" target=\"_blank\">이 주소를 사용하십시오</a>",
- "New" : "새로 만들기",
- "New text file" : "새 텍스트 파일",
- "Text file" : "텍스트 파일",
- "New folder" : "새 폴더",
- "Folder" : "폴더",
- "Upload" : "업로드",
"Cancel upload" : "업로드 취소",
"No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
diff --git a/apps/files/l10n/ku_IQ.js b/apps/files/l10n/ku_IQ.js
index 4e676ceaa81..32af16b3673 100644
--- a/apps/files/l10n/ku_IQ.js
+++ b/apps/files/l10n/ku_IQ.js
@@ -8,9 +8,9 @@ OC.L10N.register(
"Select" : "دیاریکردنی",
"Error" : "هه‌ڵه",
"Name" : "ناو",
- "Save" : "پاشکه‌وتکردن",
- "Settings" : "ڕێکخستنه‌کان",
+ "Upload" : "بارکردن",
"Folder" : "بوخچه",
- "Upload" : "بارکردن"
+ "Save" : "پاشکه‌وتکردن",
+ "Settings" : "ڕێکخستنه‌کان"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/ku_IQ.json b/apps/files/l10n/ku_IQ.json
index 3a42444a605..4f1068bbb04 100644
--- a/apps/files/l10n/ku_IQ.json
+++ b/apps/files/l10n/ku_IQ.json
@@ -6,9 +6,9 @@
"Select" : "دیاریکردنی",
"Error" : "هه‌ڵه",
"Name" : "ناو",
- "Save" : "پاشکه‌وتکردن",
- "Settings" : "ڕێکخستنه‌کان",
+ "Upload" : "بارکردن",
"Folder" : "بوخچه",
- "Upload" : "بارکردن"
+ "Save" : "پاشکه‌وتکردن",
+ "Settings" : "ڕێکخستنه‌کان"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js
index f6f28c15a77..513d802c1e4 100644
--- a/apps/files/l10n/lb.js
+++ b/apps/files/l10n/lb.js
@@ -20,16 +20,16 @@ OC.L10N.register(
"Name" : "Numm",
"Size" : "Gréisst",
"Modified" : "Geännert",
+ "New" : "Nei",
+ "Upload" : "Eroplueden",
+ "Text file" : "Text Fichier",
+ "Folder" : "Dossier",
+ "New folder" : "Neien Dossier",
"File handling" : "Fichier handling",
"Maximum upload size" : "Maximum Upload Gréisst ",
"max. possible: " : "max. méiglech:",
"Save" : "Späicheren",
"Settings" : "Astellungen",
- "New" : "Nei",
- "Text file" : "Text Fichier",
- "New folder" : "Neien Dossier",
- "Folder" : "Dossier",
- "Upload" : "Eroplueden",
"Cancel upload" : "Upload ofbriechen",
"No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Select all" : "All auswielen",
diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json
index 07363a6ab6c..fb586a90991 100644
--- a/apps/files/l10n/lb.json
+++ b/apps/files/l10n/lb.json
@@ -18,16 +18,16 @@
"Name" : "Numm",
"Size" : "Gréisst",
"Modified" : "Geännert",
+ "New" : "Nei",
+ "Upload" : "Eroplueden",
+ "Text file" : "Text Fichier",
+ "Folder" : "Dossier",
+ "New folder" : "Neien Dossier",
"File handling" : "Fichier handling",
"Maximum upload size" : "Maximum Upload Gréisst ",
"max. possible: " : "max. méiglech:",
"Save" : "Späicheren",
"Settings" : "Astellungen",
- "New" : "Nei",
- "Text file" : "Text Fichier",
- "New folder" : "Neien Dossier",
- "Folder" : "Dossier",
- "Upload" : "Eroplueden",
"Cancel upload" : "Upload ofbriechen",
"No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Select all" : "All auswielen",
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index 272a92f99c4..26fb351f50d 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Įkėlimas atšauktas.",
"Could not get result from server." : "Nepavyko gauti rezultato iš serverio.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Failo įkėlimas pradėtas. Jei paliksite šį puslapį, įkėlimas nutrūks.",
- "{new_name} already exists" : "{new_name} jau egzistuoja",
- "Could not create file" : "Neįmanoma sukurti failo",
- "Could not create folder" : "Neįmanoma sukurti aplanko",
"Actions" : "Veiksmai",
"Download" : "Atsisiųsti",
"Select" : "Pasirinkiti",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Klaida perkeliant failą.",
"Error moving file" : "Klaida perkeliant failą",
"Error" : "Klaida",
+ "{new_name} already exists" : "{new_name} jau egzistuoja",
"Could not rename file" : "Neįmanoma pervadinti failo",
+ "Could not create file" : "Neįmanoma sukurti failo",
+ "Could not create folder" : "Neįmanoma sukurti aplanko",
"Error deleting file." : "Klaida trinant failą.",
"No entries in this folder match '{filter}'" : "Nėra įrašų šiame aplanko atitikmeniui „{filter}“",
"Name" : "Pavadinimas",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} ir {files}",
"You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus",
"_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"],
+ "New" : "Naujas",
"\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.",
"File name cannot be empty." : "Failo pavadinimas negali būti tuščias.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
@@ -69,6 +70,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["atitikmuo „{filter}“","atitikmenys „{filter}“","atitikmenų „{filter}“"],
"Favorited" : "Pažymėta mėgstamu",
"Favorite" : "Mėgiamas",
+ "Upload" : "Įkelti",
+ "Text file" : "Teksto failas",
+ "Folder" : "Katalogas",
+ "New folder" : "Naujas aplankas",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>",
"A file or folder has been <strong>changed</strong>" : "Failas ar aplankas buvo <strong>pakeistas</strong>",
@@ -95,12 +100,6 @@ OC.L10N.register(
"Settings" : "Nustatymai",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Naudokite šį adresą, kad <a href=\"%s\" target=\"_blank\">pasiektumėte savo failus per WebDAV</a>",
- "New" : "Naujas",
- "New text file" : "Naujas tekstinis failas",
- "Text file" : "Teksto failas",
- "New folder" : "Naujas aplankas",
- "Folder" : "Katalogas",
- "Upload" : "Įkelti",
"Cancel upload" : "Atšaukti siuntimą",
"No files in here" : "Čia nėra failų",
"Upload some content or sync with your devices!" : "Įkelkite kokį nors turinį, arba sinchronizuokite su savo įrenginiais!",
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index 65103d0cc03..ee8fb0480c2 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Įkėlimas atšauktas.",
"Could not get result from server." : "Nepavyko gauti rezultato iš serverio.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Failo įkėlimas pradėtas. Jei paliksite šį puslapį, įkėlimas nutrūks.",
- "{new_name} already exists" : "{new_name} jau egzistuoja",
- "Could not create file" : "Neįmanoma sukurti failo",
- "Could not create folder" : "Neįmanoma sukurti aplanko",
"Actions" : "Veiksmai",
"Download" : "Atsisiųsti",
"Select" : "Pasirinkiti",
@@ -47,7 +44,10 @@
"Error moving file." : "Klaida perkeliant failą.",
"Error moving file" : "Klaida perkeliant failą",
"Error" : "Klaida",
+ "{new_name} already exists" : "{new_name} jau egzistuoja",
"Could not rename file" : "Neįmanoma pervadinti failo",
+ "Could not create file" : "Neįmanoma sukurti failo",
+ "Could not create folder" : "Neįmanoma sukurti aplanko",
"Error deleting file." : "Klaida trinant failą.",
"No entries in this folder match '{filter}'" : "Nėra įrašų šiame aplanko atitikmeniui „{filter}“",
"Name" : "Pavadinimas",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} ir {files}",
"You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus",
"_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"],
+ "New" : "Naujas",
"\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.",
"File name cannot be empty." : "Failo pavadinimas negali būti tuščias.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
@@ -67,6 +68,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["atitikmuo „{filter}“","atitikmenys „{filter}“","atitikmenų „{filter}“"],
"Favorited" : "Pažymėta mėgstamu",
"Favorite" : "Mėgiamas",
+ "Upload" : "Įkelti",
+ "Text file" : "Teksto failas",
+ "Folder" : "Katalogas",
+ "New folder" : "Naujas aplankas",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>",
"A file or folder has been <strong>changed</strong>" : "Failas ar aplankas buvo <strong>pakeistas</strong>",
@@ -93,12 +98,6 @@
"Settings" : "Nustatymai",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Naudokite šį adresą, kad <a href=\"%s\" target=\"_blank\">pasiektumėte savo failus per WebDAV</a>",
- "New" : "Naujas",
- "New text file" : "Naujas tekstinis failas",
- "Text file" : "Teksto failas",
- "New folder" : "Naujas aplankas",
- "Folder" : "Katalogas",
- "Upload" : "Įkelti",
"Cancel upload" : "Atšaukti siuntimą",
"No files in here" : "Čia nėra failų",
"Upload some content or sync with your devices!" : "Įkelkite kokį nors turinį, arba sinchronizuokite su savo įrenginiais!",
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index b5963af978b..e86b2d335e7 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Augšupielāde ir atcelta.",
"Could not get result from server." : "Nevar saņemt rezultātus no servera",
"File upload is in progress. Leaving the page now will cancel the upload." : "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.",
- "{new_name} already exists" : "{new_name} jau eksistē",
- "Could not create file" : "Neizdevās izveidot datni",
- "Could not create folder" : "Neizdevās izveidot mapi",
"Actions" : "Darbības",
"Download" : "Lejupielādēt",
"Select" : "Norādīt",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Kļūda, pārvietojot datni.",
"Error moving file" : "Kļūda, pārvietojot datni",
"Error" : "Kļūda",
+ "{new_name} already exists" : "{new_name} jau eksistē",
"Could not rename file" : "Neizdevās pārsaukt datni",
+ "Could not create file" : "Neizdevās izveidot datni",
+ "Could not create folder" : "Neizdevās izveidot mapi",
"Error deleting file." : "Kļūda, dzēšot datni.",
"No entries in this folder match '{filter}'" : "Šajā mapē nekas nav atrasts, meklējot pēc '{filter}'",
"Name" : "Nosaukums",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} un {files}",
"You don’t have permission to upload or create files here" : "Jums nav tiesību, augšupielādēt vai veidot, šeit datnes",
"_Uploading %n file_::_Uploading %n files_" : ["%n","Augšupielāde %n failu","Augšupielāde %n failus"],
+ "New" : "Jauna",
"\"{name}\" is an invalid file name." : "\"{name}\" ir nepareizs datnes nosaukums.",
"File name cannot be empty." : "Datnes nosaukums nevar būt tukšs.",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsu krātuve ir pilna, datnes vairs nevar augšupielādēt vai sinhronizēt!",
@@ -65,6 +66,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["atrasts pēc '{filter}'","atrasts pēc '{filter}'","atrasti pēc '{filter}'"],
"Favorited" : "Favorīti",
"Favorite" : "Iecienītais",
+ "Upload" : "Augšupielādēt",
+ "Text file" : "Teksta datne",
+ "Folder" : "Mape",
+ "New folder" : "Jauna mape",
"An error occurred while trying to update the tags" : "Atjaunojot atzīmes notika kļūda",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidots</strong> jauns fails vai mape",
"A file or folder has been <strong>changed</strong>" : "<strong>Izmainīts</strong> fails vai mape",
@@ -89,12 +94,6 @@ OC.L10N.register(
"Settings" : "Iestatījumi",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Izmantojot šo adresi, <a href=\"%s\" target=\"_blank\">piekļūstiet saviem failiem, izmantojot WebDAV</a>",
- "New" : "Jauna",
- "New text file" : "Jauna teksta datne",
- "Text file" : "Teksta datne",
- "New folder" : "Jauna mape",
- "Folder" : "Mape",
- "Upload" : "Augšupielādēt",
"Cancel upload" : "Atcelt augšupielādi",
"Upload some content or sync with your devices!" : "Augšupielādē kaut ko vai sinhronizē saturu ar savām ierīcēm!",
"No entries found in this folder" : "Šajā mapē nekas nav atrasts",
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 5e9498ee6f7..7a5a53c1305 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Augšupielāde ir atcelta.",
"Could not get result from server." : "Nevar saņemt rezultātus no servera",
"File upload is in progress. Leaving the page now will cancel the upload." : "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.",
- "{new_name} already exists" : "{new_name} jau eksistē",
- "Could not create file" : "Neizdevās izveidot datni",
- "Could not create folder" : "Neizdevās izveidot mapi",
"Actions" : "Darbības",
"Download" : "Lejupielādēt",
"Select" : "Norādīt",
@@ -45,7 +42,10 @@
"Error moving file." : "Kļūda, pārvietojot datni.",
"Error moving file" : "Kļūda, pārvietojot datni",
"Error" : "Kļūda",
+ "{new_name} already exists" : "{new_name} jau eksistē",
"Could not rename file" : "Neizdevās pārsaukt datni",
+ "Could not create file" : "Neizdevās izveidot datni",
+ "Could not create folder" : "Neizdevās izveidot mapi",
"Error deleting file." : "Kļūda, dzēšot datni.",
"No entries in this folder match '{filter}'" : "Šajā mapē nekas nav atrasts, meklējot pēc '{filter}'",
"Name" : "Nosaukums",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} un {files}",
"You don’t have permission to upload or create files here" : "Jums nav tiesību, augšupielādēt vai veidot, šeit datnes",
"_Uploading %n file_::_Uploading %n files_" : ["%n","Augšupielāde %n failu","Augšupielāde %n failus"],
+ "New" : "Jauna",
"\"{name}\" is an invalid file name." : "\"{name}\" ir nepareizs datnes nosaukums.",
"File name cannot be empty." : "Datnes nosaukums nevar būt tukšs.",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsu krātuve ir pilna, datnes vairs nevar augšupielādēt vai sinhronizēt!",
@@ -63,6 +64,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["atrasts pēc '{filter}'","atrasts pēc '{filter}'","atrasti pēc '{filter}'"],
"Favorited" : "Favorīti",
"Favorite" : "Iecienītais",
+ "Upload" : "Augšupielādēt",
+ "Text file" : "Teksta datne",
+ "Folder" : "Mape",
+ "New folder" : "Jauna mape",
"An error occurred while trying to update the tags" : "Atjaunojot atzīmes notika kļūda",
"A new file or folder has been <strong>created</strong>" : "<strong>Izveidots</strong> jauns fails vai mape",
"A file or folder has been <strong>changed</strong>" : "<strong>Izmainīts</strong> fails vai mape",
@@ -87,12 +92,6 @@
"Settings" : "Iestatījumi",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Izmantojot šo adresi, <a href=\"%s\" target=\"_blank\">piekļūstiet saviem failiem, izmantojot WebDAV</a>",
- "New" : "Jauna",
- "New text file" : "Jauna teksta datne",
- "Text file" : "Teksta datne",
- "New folder" : "Jauna mape",
- "Folder" : "Mape",
- "Upload" : "Augšupielādēt",
"Cancel upload" : "Atcelt augšupielādi",
"Upload some content or sync with your devices!" : "Augšupielādē kaut ko vai sinhronizē saturu ar savām ierīcēm!",
"No entries found in this folder" : "Šajā mapē nekas nav atrasts",
diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js
index 6246b5b192b..b9225ac6708 100644
--- a/apps/files/l10n/mk.js
+++ b/apps/files/l10n/mk.js
@@ -26,23 +26,28 @@ OC.L10N.register(
"Upload cancelled." : "Преземањето е прекинато.",
"Could not get result from server." : "Не можам да добијам резултат од серверот.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Подигање на датотека е во тек. Напуштење на страницата ќе го прекине.",
- "{new_name} already exists" : "{new_name} веќе постои",
- "Could not create file" : "Не множам да креирам датотека",
- "Could not create folder" : "Не можам да креирам папка",
"Actions" : "Акции",
"Download" : "Преземи",
"Select" : "Избери",
"Pending" : "Чека",
"Error moving file" : "Грешка при префрлање на датотека",
"Error" : "Грешка",
+ "{new_name} already exists" : "{new_name} веќе постои",
"Could not rename file" : "Не можам да ја преименувам датотеката",
+ "Could not create file" : "Не множам да креирам датотека",
+ "Could not create folder" : "Не можам да креирам папка",
"Name" : "Име",
"Size" : "Големина",
"Modified" : "Променето",
"{dirs} and {files}" : "{dirs} и {files}",
+ "New" : "Ново",
"File name cannot be empty." : "Името на датотеката не може да биде празно.",
"Your storage is full, files can not be updated or synced anymore!" : "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!",
"Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)",
+ "Upload" : "Подигни",
+ "Text file" : "Текстуална датотека",
+ "Folder" : "Папка",
+ "New folder" : "Нова папка",
"You created %1$s" : "Вие креиравте %1$s",
"%2$s created %1$s" : "%2$s креирано %1$s",
"You changed %1$s" : "Вие изменивте %1$s",
@@ -57,11 +62,6 @@ OC.L10N.register(
"Save" : "Сними",
"Settings" : "Подесувања",
"WebDAV" : "WebDAV",
- "New" : "Ново",
- "Text file" : "Текстуална датотека",
- "New folder" : "Нова папка",
- "Folder" : "Папка",
- "Upload" : "Подигни",
"Cancel upload" : "Откажи прикачување",
"Delete" : "Избриши",
"Upload too large" : "Фајлот кој се вчитува е преголем",
diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json
index 9ad1ea0706c..e6ce76ecb45 100644
--- a/apps/files/l10n/mk.json
+++ b/apps/files/l10n/mk.json
@@ -24,23 +24,28 @@
"Upload cancelled." : "Преземањето е прекинато.",
"Could not get result from server." : "Не можам да добијам резултат од серверот.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Подигање на датотека е во тек. Напуштење на страницата ќе го прекине.",
- "{new_name} already exists" : "{new_name} веќе постои",
- "Could not create file" : "Не множам да креирам датотека",
- "Could not create folder" : "Не можам да креирам папка",
"Actions" : "Акции",
"Download" : "Преземи",
"Select" : "Избери",
"Pending" : "Чека",
"Error moving file" : "Грешка при префрлање на датотека",
"Error" : "Грешка",
+ "{new_name} already exists" : "{new_name} веќе постои",
"Could not rename file" : "Не можам да ја преименувам датотеката",
+ "Could not create file" : "Не множам да креирам датотека",
+ "Could not create folder" : "Не можам да креирам папка",
"Name" : "Име",
"Size" : "Големина",
"Modified" : "Променето",
"{dirs} and {files}" : "{dirs} и {files}",
+ "New" : "Ново",
"File name cannot be empty." : "Името на датотеката не може да биде празно.",
"Your storage is full, files can not be updated or synced anymore!" : "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!",
"Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)",
+ "Upload" : "Подигни",
+ "Text file" : "Текстуална датотека",
+ "Folder" : "Папка",
+ "New folder" : "Нова папка",
"You created %1$s" : "Вие креиравте %1$s",
"%2$s created %1$s" : "%2$s креирано %1$s",
"You changed %1$s" : "Вие изменивте %1$s",
@@ -55,11 +60,6 @@
"Save" : "Сними",
"Settings" : "Подесувања",
"WebDAV" : "WebDAV",
- "New" : "Ново",
- "Text file" : "Текстуална датотека",
- "New folder" : "Нова папка",
- "Folder" : "Папка",
- "Upload" : "Подигни",
"Cancel upload" : "Откажи прикачување",
"Delete" : "Избриши",
"Upload too large" : "Фајлот кој се вчитува е преголем",
diff --git a/apps/files/l10n/mn.js b/apps/files/l10n/mn.js
index d55fa0c2b29..994f002b48c 100644
--- a/apps/files/l10n/mn.js
+++ b/apps/files/l10n/mn.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"files",
{
"Files" : "Файлууд",
+ "Upload" : "Байршуулах",
"A new file or folder has been <strong>created</strong>" : "Файл эсвэл хавтас амжилттай <strong>үүсгэгдлээ</strong>",
"A file or folder has been <strong>changed</strong>" : "Файл эсвэл хавтас амжилттай <strong>солигдлоо</strong>",
"A file or folder has been <strong>deleted</strong>" : "Файл эсвэл хавтас амжилттай <strong>устгагдлаа</strong>",
@@ -16,7 +17,6 @@ OC.L10N.register(
"You restored %1$s" : "Та %1$s-ийг сэргээлээ",
"%2$s restored %1$s" : "%2$s %1$s-ийг сэргээлээ",
"Save" : "Хадгалах",
- "Settings" : "Тохиргоо",
- "Upload" : "Байршуулах"
+ "Settings" : "Тохиргоо"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/mn.json b/apps/files/l10n/mn.json
index d2ff8f5fa4a..f1b58c7e13f 100644
--- a/apps/files/l10n/mn.json
+++ b/apps/files/l10n/mn.json
@@ -1,5 +1,6 @@
{ "translations": {
"Files" : "Файлууд",
+ "Upload" : "Байршуулах",
"A new file or folder has been <strong>created</strong>" : "Файл эсвэл хавтас амжилттай <strong>үүсгэгдлээ</strong>",
"A file or folder has been <strong>changed</strong>" : "Файл эсвэл хавтас амжилттай <strong>солигдлоо</strong>",
"A file or folder has been <strong>deleted</strong>" : "Файл эсвэл хавтас амжилттай <strong>устгагдлаа</strong>",
@@ -14,7 +15,6 @@
"You restored %1$s" : "Та %1$s-ийг сэргээлээ",
"%2$s restored %1$s" : "%2$s %1$s-ийг сэргээлээ",
"Save" : "Хадгалах",
- "Settings" : "Тохиргоо",
- "Upload" : "Байршуулах"
+ "Settings" : "Тохиргоо"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ms_MY.js b/apps/files/l10n/ms_MY.js
index bffc265c0fe..0bbbe400b28 100644
--- a/apps/files/l10n/ms_MY.js
+++ b/apps/files/l10n/ms_MY.js
@@ -18,6 +18,10 @@ OC.L10N.register(
"Name" : "Nama",
"Size" : "Saiz",
"Modified" : "Dimodifikasi",
+ "New" : "Baru",
+ "Upload" : "Muat naik",
+ "Text file" : "Fail teks",
+ "Folder" : "Folder",
"You created %1$s" : "Anda telah membina %1$s",
"%2$s created %1$s" : "%2$s membina %1$s",
"You changed %1$s" : "Anda menukar %1$s",
@@ -26,10 +30,6 @@ OC.L10N.register(
"max. possible: " : "maksimum:",
"Save" : "Simpan",
"Settings" : "Tetapan",
- "New" : "Baru",
- "Text file" : "Fail teks",
- "Folder" : "Folder",
- "Upload" : "Muat naik",
"Cancel upload" : "Batal muat naik",
"Delete" : "Padam",
"Upload too large" : "Muatnaik terlalu besar",
diff --git a/apps/files/l10n/ms_MY.json b/apps/files/l10n/ms_MY.json
index 30b8777b035..071fab23194 100644
--- a/apps/files/l10n/ms_MY.json
+++ b/apps/files/l10n/ms_MY.json
@@ -16,6 +16,10 @@
"Name" : "Nama",
"Size" : "Saiz",
"Modified" : "Dimodifikasi",
+ "New" : "Baru",
+ "Upload" : "Muat naik",
+ "Text file" : "Fail teks",
+ "Folder" : "Folder",
"You created %1$s" : "Anda telah membina %1$s",
"%2$s created %1$s" : "%2$s membina %1$s",
"You changed %1$s" : "Anda menukar %1$s",
@@ -24,10 +28,6 @@
"max. possible: " : "maksimum:",
"Save" : "Simpan",
"Settings" : "Tetapan",
- "New" : "Baru",
- "Text file" : "Fail teks",
- "Folder" : "Folder",
- "Upload" : "Muat naik",
"Cancel upload" : "Batal muat naik",
"Delete" : "Padam",
"Upload too large" : "Muatnaik terlalu besar",
diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js
index 2dec11dd26a..6c7653d05e6 100644
--- a/apps/files/l10n/nb_NO.js
+++ b/apps/files/l10n/nb_NO.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Opplasting avbrutt.",
"Could not get result from server." : "Fikk ikke resultat fra serveren.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
- "{new_name} already exists" : "{new_name} finnes allerede",
- "Could not create file" : "Klarte ikke å opprette fil",
- "Could not create folder" : "Klarte ikke å opprette mappe",
"Actions" : "Handlinger",
"Download" : "Last ned",
"Select" : "Velg",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Feil ved flytting av fil.",
"Error moving file" : "Feil ved flytting av fil",
"Error" : "Feil",
+ "{new_name} already exists" : "{new_name} finnes allerede",
"Could not rename file" : "Klarte ikke å gi nytt navn til fil",
+ "Could not create file" : "Klarte ikke å opprette fil",
+ "Could not create folder" : "Klarte ikke å opprette mappe",
"Error deleting file." : "Feil ved sletting av fil.",
"No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'",
"Name" : "Navn",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} og {files}",
"You don’t have permission to upload or create files here" : "Du har ikke tillatelse til å laste opp eller opprette filer her",
"_Uploading %n file_::_Uploading %n files_" : ["Laster opp %n fil","Laster opp %n filer"],
+ "New" : "Ny",
"\"{name}\" is an invalid file name." : "\"{name}\" er et uglydig filnavn.",
"File name cannot be empty." : "Filnavn kan ikke være tomt.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagringsplass for {owner} er full, filer kan ikke oppdateres eller synkroniseres lenger!",
@@ -69,6 +70,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : [" stemmer med '{filter}'"," stemmer med '{filter}'"],
"Favorited" : "Er favoritt",
"Favorite" : "Gjør til favoritt",
+ "Upload" : "Last opp",
+ "Text file" : "Tekstfil",
+ "Folder" : "Mappe",
+ "New folder" : "Ny mappe",
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av taggene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>",
@@ -95,12 +100,6 @@ OC.L10N.register(
"Settings" : "Innstillinger",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk denne adressen for å <a href=\"%s\" target=\"_blank\">få tilgang til filene dine via WebDAV</a>",
- "New" : "Ny",
- "New text file" : "Ny tekstfil",
- "Text file" : "Tekstfil",
- "New folder" : "Ny mappe",
- "Folder" : "Mappe",
- "Upload" : "Last opp",
"Cancel upload" : "Avbryt opplasting",
"No files in here" : "Ingen filer her",
"Upload some content or sync with your devices!" : "Last opp noe innhold eller synkroniser med enhetene dine!",
diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json
index f5adc80f138..f75d26d6d1d 100644
--- a/apps/files/l10n/nb_NO.json
+++ b/apps/files/l10n/nb_NO.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Opplasting avbrutt.",
"Could not get result from server." : "Fikk ikke resultat fra serveren.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
- "{new_name} already exists" : "{new_name} finnes allerede",
- "Could not create file" : "Klarte ikke å opprette fil",
- "Could not create folder" : "Klarte ikke å opprette mappe",
"Actions" : "Handlinger",
"Download" : "Last ned",
"Select" : "Velg",
@@ -47,7 +44,10 @@
"Error moving file." : "Feil ved flytting av fil.",
"Error moving file" : "Feil ved flytting av fil",
"Error" : "Feil",
+ "{new_name} already exists" : "{new_name} finnes allerede",
"Could not rename file" : "Klarte ikke å gi nytt navn til fil",
+ "Could not create file" : "Klarte ikke å opprette fil",
+ "Could not create folder" : "Klarte ikke å opprette mappe",
"Error deleting file." : "Feil ved sletting av fil.",
"No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'",
"Name" : "Navn",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} og {files}",
"You don’t have permission to upload or create files here" : "Du har ikke tillatelse til å laste opp eller opprette filer her",
"_Uploading %n file_::_Uploading %n files_" : ["Laster opp %n fil","Laster opp %n filer"],
+ "New" : "Ny",
"\"{name}\" is an invalid file name." : "\"{name}\" er et uglydig filnavn.",
"File name cannot be empty." : "Filnavn kan ikke være tomt.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagringsplass for {owner} er full, filer kan ikke oppdateres eller synkroniseres lenger!",
@@ -67,6 +68,10 @@
"_matches '{filter}'_::_match '{filter}'_" : [" stemmer med '{filter}'"," stemmer med '{filter}'"],
"Favorited" : "Er favoritt",
"Favorite" : "Gjør til favoritt",
+ "Upload" : "Last opp",
+ "Text file" : "Tekstfil",
+ "Folder" : "Mappe",
+ "New folder" : "Ny mappe",
"An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av taggene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>",
@@ -93,12 +98,6 @@
"Settings" : "Innstillinger",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk denne adressen for å <a href=\"%s\" target=\"_blank\">få tilgang til filene dine via WebDAV</a>",
- "New" : "Ny",
- "New text file" : "Ny tekstfil",
- "Text file" : "Tekstfil",
- "New folder" : "Ny mappe",
- "Folder" : "Mappe",
- "Upload" : "Last opp",
"Cancel upload" : "Avbryt opplasting",
"No files in here" : "Ingen filer her",
"Upload some content or sync with your devices!" : "Last opp noe innhold eller synkroniser med enhetene dine!",
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index 8392da4c2eb..3470d011dc6 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Uploaden geannuleerd.",
"Could not get result from server." : "Kon het resultaat van de server niet terugkrijgen.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
- "{new_name} already exists" : "{new_name} bestaat al",
- "Could not create file" : "Kon bestand niet creëren",
- "Could not create folder" : "Kon niet creëren map",
"Actions" : "Acties",
"Download" : "Downloaden",
"Select" : "Selecteer",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Fout bij verplaatsen bestand.",
"Error moving file" : "Fout bij verplaatsen bestand",
"Error" : "Fout",
+ "{new_name} already exists" : "{new_name} bestaat al",
"Could not rename file" : "Kon de naam van het bestand niet wijzigen",
+ "Could not create file" : "Kon bestand niet creëren",
+ "Could not create folder" : "Kon niet creëren map",
"Error deleting file." : "Fout bij verwijderen bestand.",
"No entries in this folder match '{filter}'" : "Niets in deze map komt overeen met '{filter}'",
"Name" : "Naam",
@@ -59,6 +59,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} en {files}",
"You don’t have permission to upload or create files here" : "U hebt geen toestemming om hier te uploaden of bestanden te maken",
"_Uploading %n file_::_Uploading %n files_" : ["%n bestand aan het uploaden","%n bestanden aan het uploaden"],
+ "New" : "Nieuw",
"\"{name}\" is an invalid file name." : "\"{name}\" is een ongeldige bestandsnaam.",
"File name cannot be empty." : "Bestandsnaam kan niet leeg zijn.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Opslagruimte van {owner} zit vol, bestanden kunnen niet meer worden ge-upload of gesynchroniseerd!",
@@ -70,6 +71,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Favoriet",
"Favorite" : "Favoriet",
+ "{newname} already exists" : "{newname} bestaat al",
+ "Upload" : "Uploaden",
+ "Text file" : "Tekstbestand",
+ "New text file.txt" : "Nieuw tekstbestand.txt",
+ "Folder" : "Map",
+ "New folder" : "Nieuwe map",
"An error occurred while trying to update the tags" : "Er trad een fout op bij uw poging de tags bij te werken",
"A new file or folder has been <strong>created</strong>" : "Een nieuw bestand of map is <strong>aangemaakt</strong>",
"A file or folder has been <strong>changed</strong>" : "Een bestand of map is <strong>gewijzigd</strong>",
@@ -97,12 +104,6 @@ OC.L10N.register(
"Settings" : "Instellingen",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\">om uw bestanden via WebDAV te benaderen</a>",
- "New" : "Nieuw",
- "New text file" : "Nieuw tekstbestand",
- "Text file" : "Tekstbestand",
- "New folder" : "Nieuwe map",
- "Folder" : "Map",
- "Upload" : "Uploaden",
"Cancel upload" : "Upload afbreken",
"No files in here" : "Hier geen bestanden",
"Upload some content or sync with your devices!" : "Upload bestanden of synchroniseer met uw apparaten!",
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 532905c9c4a..04c0b7916b5 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Uploaden geannuleerd.",
"Could not get result from server." : "Kon het resultaat van de server niet terugkrijgen.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
- "{new_name} already exists" : "{new_name} bestaat al",
- "Could not create file" : "Kon bestand niet creëren",
- "Could not create folder" : "Kon niet creëren map",
"Actions" : "Acties",
"Download" : "Downloaden",
"Select" : "Selecteer",
@@ -47,7 +44,10 @@
"Error moving file." : "Fout bij verplaatsen bestand.",
"Error moving file" : "Fout bij verplaatsen bestand",
"Error" : "Fout",
+ "{new_name} already exists" : "{new_name} bestaat al",
"Could not rename file" : "Kon de naam van het bestand niet wijzigen",
+ "Could not create file" : "Kon bestand niet creëren",
+ "Could not create folder" : "Kon niet creëren map",
"Error deleting file." : "Fout bij verwijderen bestand.",
"No entries in this folder match '{filter}'" : "Niets in deze map komt overeen met '{filter}'",
"Name" : "Naam",
@@ -57,6 +57,7 @@
"{dirs} and {files}" : "{dirs} en {files}",
"You don’t have permission to upload or create files here" : "U hebt geen toestemming om hier te uploaden of bestanden te maken",
"_Uploading %n file_::_Uploading %n files_" : ["%n bestand aan het uploaden","%n bestanden aan het uploaden"],
+ "New" : "Nieuw",
"\"{name}\" is an invalid file name." : "\"{name}\" is een ongeldige bestandsnaam.",
"File name cannot be empty." : "Bestandsnaam kan niet leeg zijn.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Opslagruimte van {owner} zit vol, bestanden kunnen niet meer worden ge-upload of gesynchroniseerd!",
@@ -68,6 +69,12 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Favoriet",
"Favorite" : "Favoriet",
+ "{newname} already exists" : "{newname} bestaat al",
+ "Upload" : "Uploaden",
+ "Text file" : "Tekstbestand",
+ "New text file.txt" : "Nieuw tekstbestand.txt",
+ "Folder" : "Map",
+ "New folder" : "Nieuwe map",
"An error occurred while trying to update the tags" : "Er trad een fout op bij uw poging de tags bij te werken",
"A new file or folder has been <strong>created</strong>" : "Een nieuw bestand of map is <strong>aangemaakt</strong>",
"A file or folder has been <strong>changed</strong>" : "Een bestand of map is <strong>gewijzigd</strong>",
@@ -95,12 +102,6 @@
"Settings" : "Instellingen",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Gebruik deze link <a href=\"%s\" target=\"_blank\">om uw bestanden via WebDAV te benaderen</a>",
- "New" : "Nieuw",
- "New text file" : "Nieuw tekstbestand",
- "Text file" : "Tekstbestand",
- "New folder" : "Nieuwe map",
- "Folder" : "Map",
- "Upload" : "Uploaden",
"Cancel upload" : "Upload afbreken",
"No files in here" : "Hier geen bestanden",
"Upload some content or sync with your devices!" : "Upload bestanden of synchroniseer met uw apparaten!",
diff --git a/apps/files/l10n/nn_NO.js b/apps/files/l10n/nn_NO.js
index b7523a465d9..cc993f5ca6d 100644
--- a/apps/files/l10n/nn_NO.js
+++ b/apps/files/l10n/nn_NO.js
@@ -26,12 +26,12 @@ OC.L10N.register(
"Upload cancelled." : "Opplasting avbroten.",
"Could not get result from server." : "Klarte ikkje å henta resultat frå tenaren.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fila lastar no opp. Viss du forlèt sida no vil opplastinga verta avbroten.",
- "{new_name} already exists" : "{new_name} finst allereie",
"Actions" : "Handlingar",
"Download" : "Last ned",
"Pending" : "Under vegs",
"Error moving file" : "Feil ved flytting av fil",
"Error" : "Feil",
+ "{new_name} already exists" : "{new_name} finst allereie",
"Name" : "Namn",
"Size" : "Storleik",
"Modified" : "Endra",
@@ -39,10 +39,15 @@ OC.L10N.register(
"_%n file_::_%n files_" : ["%n fil","%n filer"],
"{dirs} and {files}" : "{dirs} og {files}",
"_Uploading %n file_::_Uploading %n files_" : ["Lastar opp %n fil","Lastar opp %n filer"],
+ "New" : "Ny",
"File name cannot be empty." : "Filnamnet kan ikkje vera tomt.",
"Your storage is full, files can not be updated or synced anymore!" : "Lagringa di er full, kan ikkje lenger oppdatera eller synkronisera!",
"Your storage is almost full ({usedSpacePercent}%)" : "Lagringa di er nesten full ({usedSpacePercent} %)",
"Favorite" : "Favoritt",
+ "Upload" : "Last opp",
+ "Text file" : "Tekst fil",
+ "Folder" : "Mappe",
+ "New folder" : "Ny mappe",
"A new file or folder has been <strong>created</strong>" : "Ei ny fil eller mappe er <strong>oppretta</strong>",
"A file or folder has been <strong>changed</strong>" : "Ei fil eller mappe er <strong>endra</strong>",
"A file or folder has been <strong>deleted</strong>" : "Ei fil eller mappe er <strong>sletta</strong>",
@@ -60,11 +65,6 @@ OC.L10N.register(
"Save" : "Lagre",
"Settings" : "Innstillingar",
"WebDAV" : "WebDAV",
- "New" : "Ny",
- "Text file" : "Tekst fil",
- "New folder" : "Ny mappe",
- "Folder" : "Mappe",
- "Upload" : "Last opp",
"Cancel upload" : "Avbryt opplasting",
"Delete" : "Slett",
"Upload too large" : "For stor opplasting",
diff --git a/apps/files/l10n/nn_NO.json b/apps/files/l10n/nn_NO.json
index 05bef4cb9d2..62d1cfb2c50 100644
--- a/apps/files/l10n/nn_NO.json
+++ b/apps/files/l10n/nn_NO.json
@@ -24,12 +24,12 @@
"Upload cancelled." : "Opplasting avbroten.",
"Could not get result from server." : "Klarte ikkje å henta resultat frå tenaren.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fila lastar no opp. Viss du forlèt sida no vil opplastinga verta avbroten.",
- "{new_name} already exists" : "{new_name} finst allereie",
"Actions" : "Handlingar",
"Download" : "Last ned",
"Pending" : "Under vegs",
"Error moving file" : "Feil ved flytting av fil",
"Error" : "Feil",
+ "{new_name} already exists" : "{new_name} finst allereie",
"Name" : "Namn",
"Size" : "Storleik",
"Modified" : "Endra",
@@ -37,10 +37,15 @@
"_%n file_::_%n files_" : ["%n fil","%n filer"],
"{dirs} and {files}" : "{dirs} og {files}",
"_Uploading %n file_::_Uploading %n files_" : ["Lastar opp %n fil","Lastar opp %n filer"],
+ "New" : "Ny",
"File name cannot be empty." : "Filnamnet kan ikkje vera tomt.",
"Your storage is full, files can not be updated or synced anymore!" : "Lagringa di er full, kan ikkje lenger oppdatera eller synkronisera!",
"Your storage is almost full ({usedSpacePercent}%)" : "Lagringa di er nesten full ({usedSpacePercent} %)",
"Favorite" : "Favoritt",
+ "Upload" : "Last opp",
+ "Text file" : "Tekst fil",
+ "Folder" : "Mappe",
+ "New folder" : "Ny mappe",
"A new file or folder has been <strong>created</strong>" : "Ei ny fil eller mappe er <strong>oppretta</strong>",
"A file or folder has been <strong>changed</strong>" : "Ei fil eller mappe er <strong>endra</strong>",
"A file or folder has been <strong>deleted</strong>" : "Ei fil eller mappe er <strong>sletta</strong>",
@@ -58,11 +63,6 @@
"Save" : "Lagre",
"Settings" : "Innstillingar",
"WebDAV" : "WebDAV",
- "New" : "Ny",
- "Text file" : "Tekst fil",
- "New folder" : "Ny mappe",
- "Folder" : "Mappe",
- "Upload" : "Last opp",
"Cancel upload" : "Avbryt opplasting",
"Delete" : "Slett",
"Upload too large" : "For stor opplasting",
diff --git a/apps/files/l10n/oc.js b/apps/files/l10n/oc.js
index a362dde52be..75bceacac3b 100644
--- a/apps/files/l10n/oc.js
+++ b/apps/files/l10n/oc.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Mandadís anullat.",
"Could not get result from server." : "Pòt pas recebre los resultats del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Lo mandadís del fichièr es en cors. Quitar aquesta pagina ara anullarà lo mandadís del fichièr.",
- "{new_name} already exists" : "{new_name} existís ja",
- "Could not create file" : "Impossible de crear lo fichièr",
- "Could not create folder" : "Impossible de crear lo dorsièr",
"Actions" : "Accions",
"Download" : "Telecargar",
"Select" : "Seleccionar",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Error al moment del desplaçament del fichièr.",
"Error moving file" : "Error al moment del desplaçament del fichièr",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} existís ja",
"Could not rename file" : "Impossible de renomenar lo fichièr",
+ "Could not create file" : "Impossible de crear lo fichièr",
+ "Could not create folder" : "Impossible de crear lo dorsièr",
"Error deleting file." : "Error pendent la supression del fichièr.",
"No entries in this folder match '{filter}'" : "Cap d'entrada d'aqueste dorsièr correspond pas a '{filter}'",
"Name" : "Nom",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Avètz pas la permission d'apondre de fichièrs aicí",
"_Uploading %n file_::_Uploading %n files_" : ["Mandadís de %n fichièr","Mandadís de %n fichièrs"],
+ "New" : "Novèl",
"\"{name}\" is an invalid file name." : "\"{name}\" es pas un nom de fichièr valid.",
"File name cannot be empty." : "Lo nom de fichièr pòt pas èsser void.",
"Your storage is full, files can not be updated or synced anymore!" : "Vòstre espaci d'emmagazinatge es plen, los fichièrs pòdon pas mai èsser aponduts o sincronizats !",
@@ -65,6 +66,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["correspond a '{filter}'","correspondon a '{filter}'"],
"Favorited" : "Marcat coma favorit",
"Favorite" : "Favorit",
+ "Upload" : "Cargament",
+ "Text file" : "Fichièr tèxte",
+ "Folder" : "Dorsièr",
+ "New folder" : "Novèl dorsièr",
"An error occurred while trying to update the tags" : "Una error s'es produsida al moment de la mesa a jorn de las etiquetas",
"A new file or folder has been <strong>created</strong>" : "Un novèl fichièr o repertòri es estat <strong>creat</strong>",
"A file or folder has been <strong>changed</strong>" : "Un fichièr o un repertòri es estat <strong>modificat</strong>",
@@ -91,12 +96,6 @@ OC.L10N.register(
"Settings" : "Paramètres",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizatz aquesta adreça per <a href=\"%s\" target=\"_blank\">accedir a vòstres fichièrs per WebDAV</a>",
- "New" : "Novèl",
- "New text file" : "Novèl fichièr tèxte",
- "Text file" : "Fichièr tèxte",
- "New folder" : "Novèl dorsièr",
- "Folder" : "Dorsièr",
- "Upload" : "Cargament",
"Cancel upload" : "Anullar lo mandadís",
"No files in here" : "Pas cap de fichièr aicí",
"Upload some content or sync with your devices!" : "Depausatz de contengut o sincronizatz vòstres aparelhs !",
diff --git a/apps/files/l10n/oc.json b/apps/files/l10n/oc.json
index 3b89728ce9c..20b690a2ed8 100644
--- a/apps/files/l10n/oc.json
+++ b/apps/files/l10n/oc.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Mandadís anullat.",
"Could not get result from server." : "Pòt pas recebre los resultats del servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Lo mandadís del fichièr es en cors. Quitar aquesta pagina ara anullarà lo mandadís del fichièr.",
- "{new_name} already exists" : "{new_name} existís ja",
- "Could not create file" : "Impossible de crear lo fichièr",
- "Could not create folder" : "Impossible de crear lo dorsièr",
"Actions" : "Accions",
"Download" : "Telecargar",
"Select" : "Seleccionar",
@@ -45,7 +42,10 @@
"Error moving file." : "Error al moment del desplaçament del fichièr.",
"Error moving file" : "Error al moment del desplaçament del fichièr",
"Error" : "Error",
+ "{new_name} already exists" : "{new_name} existís ja",
"Could not rename file" : "Impossible de renomenar lo fichièr",
+ "Could not create file" : "Impossible de crear lo fichièr",
+ "Could not create folder" : "Impossible de crear lo dorsièr",
"Error deleting file." : "Error pendent la supression del fichièr.",
"No entries in this folder match '{filter}'" : "Cap d'entrada d'aqueste dorsièr correspond pas a '{filter}'",
"Name" : "Nom",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Avètz pas la permission d'apondre de fichièrs aicí",
"_Uploading %n file_::_Uploading %n files_" : ["Mandadís de %n fichièr","Mandadís de %n fichièrs"],
+ "New" : "Novèl",
"\"{name}\" is an invalid file name." : "\"{name}\" es pas un nom de fichièr valid.",
"File name cannot be empty." : "Lo nom de fichièr pòt pas èsser void.",
"Your storage is full, files can not be updated or synced anymore!" : "Vòstre espaci d'emmagazinatge es plen, los fichièrs pòdon pas mai èsser aponduts o sincronizats !",
@@ -63,6 +64,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["correspond a '{filter}'","correspondon a '{filter}'"],
"Favorited" : "Marcat coma favorit",
"Favorite" : "Favorit",
+ "Upload" : "Cargament",
+ "Text file" : "Fichièr tèxte",
+ "Folder" : "Dorsièr",
+ "New folder" : "Novèl dorsièr",
"An error occurred while trying to update the tags" : "Una error s'es produsida al moment de la mesa a jorn de las etiquetas",
"A new file or folder has been <strong>created</strong>" : "Un novèl fichièr o repertòri es estat <strong>creat</strong>",
"A file or folder has been <strong>changed</strong>" : "Un fichièr o un repertòri es estat <strong>modificat</strong>",
@@ -89,12 +94,6 @@
"Settings" : "Paramètres",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilizatz aquesta adreça per <a href=\"%s\" target=\"_blank\">accedir a vòstres fichièrs per WebDAV</a>",
- "New" : "Novèl",
- "New text file" : "Novèl fichièr tèxte",
- "Text file" : "Fichièr tèxte",
- "New folder" : "Novèl dorsièr",
- "Folder" : "Dorsièr",
- "Upload" : "Cargament",
"Cancel upload" : "Anullar lo mandadís",
"No files in here" : "Pas cap de fichièr aicí",
"Upload some content or sync with your devices!" : "Depausatz de contengut o sincronizatz vòstres aparelhs !",
diff --git a/apps/files/l10n/pa.js b/apps/files/l10n/pa.js
index 8f7fafa6e32..c92f4473ccb 100644
--- a/apps/files/l10n/pa.js
+++ b/apps/files/l10n/pa.js
@@ -5,8 +5,8 @@ OC.L10N.register(
"Files" : "ਫਾਇਲਾਂ",
"Download" : "ਡਾਊਨਲੋਡ",
"Error" : "ਗਲਤੀ",
- "Settings" : "ਸੈਟਿੰਗ",
"Upload" : "ਅੱਪਲੋਡ",
+ "Settings" : "ਸੈਟਿੰਗ",
"Cancel upload" : "ਅੱਪਲੋਡ ਰੱਦ ਕਰੋ",
"Delete" : "ਹਟਾਓ"
},
diff --git a/apps/files/l10n/pa.json b/apps/files/l10n/pa.json
index b14ece73520..438a0cdb313 100644
--- a/apps/files/l10n/pa.json
+++ b/apps/files/l10n/pa.json
@@ -3,8 +3,8 @@
"Files" : "ਫਾਇਲਾਂ",
"Download" : "ਡਾਊਨਲੋਡ",
"Error" : "ਗਲਤੀ",
- "Settings" : "ਸੈਟਿੰਗ",
"Upload" : "ਅੱਪਲੋਡ",
+ "Settings" : "ਸੈਟਿੰਗ",
"Cancel upload" : "ਅੱਪਲੋਡ ਰੱਦ ਕਰੋ",
"Delete" : "ਹਟਾਓ"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 28ffe4444e8..c64f9c97d60 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Wczytywanie anulowane.",
"Could not get result from server." : "Nie można uzyskać wyniku z serwera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.",
- "{new_name} already exists" : "{new_name} już istnieje",
- "Could not create file" : "Nie można utworzyć pliku",
- "Could not create folder" : "Nie można utworzyć folderu",
"Actions" : "Akcje",
"Download" : "Pobierz",
"Select" : "Wybierz",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Błąd podczas przenoszenia pliku.",
"Error moving file" : "Błąd prz przenoszeniu pliku",
"Error" : "Błąd",
+ "{new_name} already exists" : "{new_name} już istnieje",
"Could not rename file" : "Nie można zmienić nazwy pliku",
+ "Could not create file" : "Nie można utworzyć pliku",
+ "Could not create folder" : "Nie można utworzyć folderu",
"Error deleting file." : "Błąd podczas usuwania pliku",
"No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'",
"Name" : "Nazwa",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Nie masz uprawnień do wczytywania lub tworzenia plików w tym miejscu",
"_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików"],
+ "New" : "Nowy",
"\"{name}\" is an invalid file name." : "\"{name}\" jest nieprawidłową nazwą pliku.",
"File name cannot be empty." : "Nazwa pliku nie może być pusta.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Brak wolnego miejsca {owner}, pliki nie mogą zostać zaktualizowane lub synchronizowane! ",
@@ -66,6 +67,10 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)",
"Favorited" : "Ulubione",
"Favorite" : "Ulubione",
+ "Upload" : "Wyślij",
+ "Text file" : "Plik tekstowy",
+ "Folder" : "Folder",
+ "New folder" : "Nowy folder",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
"A file or folder has been <strong>changed</strong>" : "Plik lub folder został <strong>zmieniony</strong>",
"A file or folder has been <strong>deleted</strong>" : "Plik lub folder został <strong>usunięty</strong>",
@@ -89,12 +94,6 @@ OC.L10N.register(
"Settings" : "Ustawienia",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu do <a href=\"%s\" target=\"_blank\">dostępu do twoich plików przez WebDAV</a>",
- "New" : "Nowy",
- "New text file" : "Nowy plik tekstowy",
- "Text file" : "Plik tekstowy",
- "New folder" : "Nowy folder",
- "Folder" : "Folder",
- "Upload" : "Wyślij",
"Cancel upload" : "Anuluj wysyłanie",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Select all" : "Wybierz wszystko",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index c2d49274c6b..d5a3c33e698 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Wczytywanie anulowane.",
"Could not get result from server." : "Nie można uzyskać wyniku z serwera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.",
- "{new_name} already exists" : "{new_name} już istnieje",
- "Could not create file" : "Nie można utworzyć pliku",
- "Could not create folder" : "Nie można utworzyć folderu",
"Actions" : "Akcje",
"Download" : "Pobierz",
"Select" : "Wybierz",
@@ -45,7 +42,10 @@
"Error moving file." : "Błąd podczas przenoszenia pliku.",
"Error moving file" : "Błąd prz przenoszeniu pliku",
"Error" : "Błąd",
+ "{new_name} already exists" : "{new_name} już istnieje",
"Could not rename file" : "Nie można zmienić nazwy pliku",
+ "Could not create file" : "Nie można utworzyć pliku",
+ "Could not create folder" : "Nie można utworzyć folderu",
"Error deleting file." : "Błąd podczas usuwania pliku",
"No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'",
"Name" : "Nazwa",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Nie masz uprawnień do wczytywania lub tworzenia plików w tym miejscu",
"_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików"],
+ "New" : "Nowy",
"\"{name}\" is an invalid file name." : "\"{name}\" jest nieprawidłową nazwą pliku.",
"File name cannot be empty." : "Nazwa pliku nie może być pusta.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Brak wolnego miejsca {owner}, pliki nie mogą zostać zaktualizowane lub synchronizowane! ",
@@ -64,6 +65,10 @@
"Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)",
"Favorited" : "Ulubione",
"Favorite" : "Ulubione",
+ "Upload" : "Wyślij",
+ "Text file" : "Plik tekstowy",
+ "Folder" : "Folder",
+ "New folder" : "Nowy folder",
"A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>",
"A file or folder has been <strong>changed</strong>" : "Plik lub folder został <strong>zmieniony</strong>",
"A file or folder has been <strong>deleted</strong>" : "Plik lub folder został <strong>usunięty</strong>",
@@ -87,12 +92,6 @@
"Settings" : "Ustawienia",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu do <a href=\"%s\" target=\"_blank\">dostępu do twoich plików przez WebDAV</a>",
- "New" : "Nowy",
- "New text file" : "Nowy plik tekstowy",
- "Text file" : "Plik tekstowy",
- "New folder" : "Nowy folder",
- "Folder" : "Folder",
- "Upload" : "Wyślij",
"Cancel upload" : "Anuluj wysyłanie",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Select all" : "Wybierz wszystko",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 81378cdef4c..7f154cbbf5e 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Envio cancelado.",
"Could not get result from server." : "Não foi possível obter o resultado do servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.",
- "{new_name} already exists" : "{new_name} já existe",
- "Could not create file" : "Não foi possível criar o arquivo",
- "Could not create folder" : "Não foi possível criar a pasta",
"Actions" : "Ações",
"Download" : "Baixar",
"Select" : "Selecionar",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Erro movendo o arquivo.",
"Error moving file" : "Erro movendo o arquivo",
"Error" : "Erro",
+ "{new_name} already exists" : "{new_name} já existe",
"Could not rename file" : "Não foi possível renomear o arquivo",
+ "Could not create file" : "Não foi possível criar o arquivo",
+ "Could not create folder" : "Não foi possível criar a pasta",
"Error deleting file." : "Erro eliminando o arquivo.",
"No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'",
"Name" : "Nome",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui",
"_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" é um nome de arquivo inválido.",
"File name cannot be empty." : "O nome do arquivo não pode estar vazio.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Armazenamento do {owner} está cheio, os arquivos não podem ser mais atualizados ou sincronizados!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Favorito",
"Favorite" : "Favorito",
+ "{newname} already exists" : "{newname} já existe",
+ "Upload" : "Enviar",
+ "Text file" : "Arquivo texto",
+ "New text file.txt" : "Novo texto file.txt",
+ "Folder" : "Pasta",
+ "New folder" : "Nova pasta",
"An error occurred while trying to update the tags" : "Ocorreu um erro enquanto tentava atualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>",
"A file or folder has been <strong>changed</strong>" : "Um arquivo ou pasta foi <strong>modificado</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "Configurações",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use este endereço <a href=\"%s\" target=\"_blank\">para ter acesso aos seus Arquivos via WebDAV</a>",
- "New" : "Novo",
- "New text file" : "Novo arquivo texto",
- "Text file" : "Arquivo texto",
- "New folder" : "Nova pasta",
- "Folder" : "Pasta",
- "Upload" : "Enviar",
"Cancel upload" : "Cancelar envio",
"No files in here" : "Nenhum arquivo aqui",
"Upload some content or sync with your devices!" : "Carregue algum conteúdo ou sincronize com seus dispositivos!",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 1cdb7969af7..81c76bb2b84 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Envio cancelado.",
"Could not get result from server." : "Não foi possível obter o resultado do servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.",
- "{new_name} already exists" : "{new_name} já existe",
- "Could not create file" : "Não foi possível criar o arquivo",
- "Could not create folder" : "Não foi possível criar a pasta",
"Actions" : "Ações",
"Download" : "Baixar",
"Select" : "Selecionar",
@@ -47,7 +44,10 @@
"Error moving file." : "Erro movendo o arquivo.",
"Error moving file" : "Erro movendo o arquivo",
"Error" : "Erro",
+ "{new_name} already exists" : "{new_name} já existe",
"Could not rename file" : "Não foi possível renomear o arquivo",
+ "Could not create file" : "Não foi possível criar o arquivo",
+ "Could not create folder" : "Não foi possível criar a pasta",
"Error deleting file." : "Erro eliminando o arquivo.",
"No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'",
"Name" : "Nome",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui",
"_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" é um nome de arquivo inválido.",
"File name cannot be empty." : "O nome do arquivo não pode estar vazio.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Armazenamento do {owner} está cheio, os arquivos não podem ser mais atualizados ou sincronizados!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Favorited" : "Favorito",
"Favorite" : "Favorito",
+ "{newname} already exists" : "{newname} já existe",
+ "Upload" : "Enviar",
+ "Text file" : "Arquivo texto",
+ "New text file.txt" : "Novo texto file.txt",
+ "Folder" : "Pasta",
+ "New folder" : "Nova pasta",
"An error occurred while trying to update the tags" : "Ocorreu um erro enquanto tentava atualizar as etiquetas",
"A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>",
"A file or folder has been <strong>changed</strong>" : "Um arquivo ou pasta foi <strong>modificado</strong>",
@@ -96,12 +103,6 @@
"Settings" : "Configurações",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Use este endereço <a href=\"%s\" target=\"_blank\">para ter acesso aos seus Arquivos via WebDAV</a>",
- "New" : "Novo",
- "New text file" : "Novo arquivo texto",
- "Text file" : "Arquivo texto",
- "New folder" : "Nova pasta",
- "Folder" : "Pasta",
- "Upload" : "Enviar",
"Cancel upload" : "Cancelar envio",
"No files in here" : "Nenhum arquivo aqui",
"Upload some content or sync with your devices!" : "Carregue algum conteúdo ou sincronize com seus dispositivos!",
diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js
index 07817ecf79d..32f7dee7d43 100644
--- a/apps/files/l10n/pt_PT.js
+++ b/apps/files/l10n/pt_PT.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Envio cancelado.",
"Could not get result from server." : "Não foi possível obter o resultado do servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Envio de ficheiro em progresso. Se deixar a página agora, irá cancelar o envio.",
- "{new_name} already exists" : "O nome {new_name} já existe",
- "Could not create file" : "Não pôde criar ficheiro",
- "Could not create folder" : "Não pôde criar pasta",
"Actions" : "Ações",
"Download" : "Descarregar",
"Select" : "Selecionar",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Erro a mover o ficheiro.",
"Error moving file" : "Erro ao mover o ficheiro",
"Error" : "Erro",
+ "{new_name} already exists" : "O nome {new_name} já existe",
"Could not rename file" : "Não pôde renomear o ficheiro",
+ "Could not create file" : "Não pôde criar ficheiro",
+ "Could not create folder" : "Não pôde criar pasta",
"Error deleting file." : "Erro ao apagar o ficheiro.",
"No entries in this folder match '{filter}'" : "Nenhumas entradas nesta pasta correspondem a '{filter}'",
"Name" : "Nome",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar ficheiros aqui",
"_Uploading %n file_::_Uploading %n files_" : ["A carregar %n ficheiro","A carregar %n ficheiros"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" é um nome de ficheiro inválido.",
"File name cannot be empty." : "O nome do ficheiro não pode estar em branco.",
"Your storage is full, files can not be updated or synced anymore!" : "O seu armazenamento está cheio, os ficheiros já não podem ser atualizados ou sincronizados.",
@@ -65,6 +66,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["corresponde a '{filter}'","correspondem a '{filter}'"],
"Favorited" : "Assinalado como Favorito",
"Favorite" : "Favorito",
+ "Upload" : "Enviar",
+ "Text file" : "Ficheiro de Texto",
+ "Folder" : "Pasta",
+ "New folder" : "Nova Pasta",
"An error occurred while trying to update the tags" : "Ocorreu um erro ao tentar atualizar as tags",
"A new file or folder has been <strong>created</strong>" : "Foi <strong>criado</strong> um novo ficheiro ou pasta",
"A file or folder has been <strong>changed</strong>" : "Foi <strong>alterado</strong> um ficheiro ou pasta",
@@ -91,12 +96,6 @@ OC.L10N.register(
"Settings" : "Definições",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilize esta ligação para <a href=\"%s\" target=\"_blank\">aceder aos seus ficheiros via WebDAV</a>",
- "New" : "Novo",
- "New text file" : "Novo ficheiro de texto",
- "Text file" : "Ficheiro de Texto",
- "New folder" : "Nova Pasta",
- "Folder" : "Pasta",
- "Upload" : "Enviar",
"Cancel upload" : "Cancelar o envio",
"No files in here" : "Nenhuns ficheiros aqui",
"Upload some content or sync with your devices!" : "Carregue algum conteúdo ou sincronize com os seus aparelhos!",
diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json
index cca3e42bc72..5c6a8aececa 100644
--- a/apps/files/l10n/pt_PT.json
+++ b/apps/files/l10n/pt_PT.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Envio cancelado.",
"Could not get result from server." : "Não foi possível obter o resultado do servidor.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Envio de ficheiro em progresso. Se deixar a página agora, irá cancelar o envio.",
- "{new_name} already exists" : "O nome {new_name} já existe",
- "Could not create file" : "Não pôde criar ficheiro",
- "Could not create folder" : "Não pôde criar pasta",
"Actions" : "Ações",
"Download" : "Descarregar",
"Select" : "Selecionar",
@@ -45,7 +42,10 @@
"Error moving file." : "Erro a mover o ficheiro.",
"Error moving file" : "Erro ao mover o ficheiro",
"Error" : "Erro",
+ "{new_name} already exists" : "O nome {new_name} já existe",
"Could not rename file" : "Não pôde renomear o ficheiro",
+ "Could not create file" : "Não pôde criar ficheiro",
+ "Could not create folder" : "Não pôde criar pasta",
"Error deleting file." : "Erro ao apagar o ficheiro.",
"No entries in this folder match '{filter}'" : "Nenhumas entradas nesta pasta correspondem a '{filter}'",
"Name" : "Nome",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} e {files}",
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar ficheiros aqui",
"_Uploading %n file_::_Uploading %n files_" : ["A carregar %n ficheiro","A carregar %n ficheiros"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" é um nome de ficheiro inválido.",
"File name cannot be empty." : "O nome do ficheiro não pode estar em branco.",
"Your storage is full, files can not be updated or synced anymore!" : "O seu armazenamento está cheio, os ficheiros já não podem ser atualizados ou sincronizados.",
@@ -63,6 +64,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["corresponde a '{filter}'","correspondem a '{filter}'"],
"Favorited" : "Assinalado como Favorito",
"Favorite" : "Favorito",
+ "Upload" : "Enviar",
+ "Text file" : "Ficheiro de Texto",
+ "Folder" : "Pasta",
+ "New folder" : "Nova Pasta",
"An error occurred while trying to update the tags" : "Ocorreu um erro ao tentar atualizar as tags",
"A new file or folder has been <strong>created</strong>" : "Foi <strong>criado</strong> um novo ficheiro ou pasta",
"A file or folder has been <strong>changed</strong>" : "Foi <strong>alterado</strong> um ficheiro ou pasta",
@@ -89,12 +94,6 @@
"Settings" : "Definições",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilize esta ligação para <a href=\"%s\" target=\"_blank\">aceder aos seus ficheiros via WebDAV</a>",
- "New" : "Novo",
- "New text file" : "Novo ficheiro de texto",
- "Text file" : "Ficheiro de Texto",
- "New folder" : "Nova Pasta",
- "Folder" : "Pasta",
- "Upload" : "Enviar",
"Cancel upload" : "Cancelar o envio",
"No files in here" : "Nenhuns ficheiros aqui",
"Upload some content or sync with your devices!" : "Carregue algum conteúdo ou sincronize com os seus aparelhos!",
diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js
index 1d571ea8f67..35753e97da8 100644
--- a/apps/files/l10n/ro.js
+++ b/apps/files/l10n/ro.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Încărcare anulată.",
"Could not get result from server." : "Nu se poate obține rezultatul de la server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fișierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.",
- "{new_name} already exists" : "{new_name} există deja",
- "Could not create file" : "Nu s-a putut crea fisierul",
- "Could not create folder" : "Nu s-a putut crea folderul",
"Actions" : "Acțiuni",
"Download" : "Descarcă",
"Select" : "Alege",
@@ -46,7 +43,10 @@ OC.L10N.register(
"Error moving file." : "Eroare la mutarea fișierului.",
"Error moving file" : "Eroare la mutarea fișierului",
"Error" : "Eroare",
+ "{new_name} already exists" : "{new_name} există deja",
"Could not rename file" : "Nu s-a putut redenumi fișierul",
+ "Could not create file" : "Nu s-a putut crea fisierul",
+ "Could not create folder" : "Nu s-a putut crea folderul",
"Error deleting file." : "Eroare la ștergerea fișierului.",
"Name" : "Nume",
"Size" : "Mărime",
@@ -56,11 +56,16 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} și {files}",
"You don’t have permission to upload or create files here" : "Nu aveți permisiunea de a încărca sau crea fișiere aici",
"_Uploading %n file_::_Uploading %n files_" : ["Se încarcă %n fișier.","Se încarcă %n fișiere.","Se încarcă %n fișiere."],
+ "New" : "Nou",
"\"{name}\" is an invalid file name." : "\"{name}\" este un nume de fișier nevalid.",
"File name cannot be empty." : "Numele fișierului nu poate rămâne gol.",
"Your storage is full, files can not be updated or synced anymore!" : "Spațiul de stocare este plin, fișierele nu mai pot fi actualizate sau sincronizate!",
"Your storage is almost full ({usedSpacePercent}%)" : "Spațiul de stocare este aproape plin ({usedSpacePercent}%)",
"Favorite" : "Favorit",
+ "Upload" : "Încărcă",
+ "Text file" : "Fișier text",
+ "Folder" : "Dosar",
+ "New folder" : "Un nou dosar",
"A new file or folder has been <strong>created</strong>" : "Un nou fișier sau dosar a fost <strong>creat</strong>",
"A file or folder has been <strong>changed</strong>" : "Un nou fișier sau dosar a fost <strong>modificat</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un nou fișier sau dosar a fost <strong>șters</strong>",
@@ -84,12 +89,6 @@ OC.L10N.register(
"Settings" : "Setări",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Folosește această adresă <a href=\"%s\" target=\"_blank\">pentru acces la fișierele tale folosind WebDAV</a>",
- "New" : "Nou",
- "New text file" : "Un nou fișier text",
- "Text file" : "Fișier text",
- "New folder" : "Un nou dosar",
- "Folder" : "Dosar",
- "Upload" : "Încărcă",
"Cancel upload" : "Anulează încărcarea",
"Select all" : "Selectează tot",
"Delete" : "Șterge",
diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json
index d0152c340ab..22d66f8dbf0 100644
--- a/apps/files/l10n/ro.json
+++ b/apps/files/l10n/ro.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Încărcare anulată.",
"Could not get result from server." : "Nu se poate obține rezultatul de la server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fișierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.",
- "{new_name} already exists" : "{new_name} există deja",
- "Could not create file" : "Nu s-a putut crea fisierul",
- "Could not create folder" : "Nu s-a putut crea folderul",
"Actions" : "Acțiuni",
"Download" : "Descarcă",
"Select" : "Alege",
@@ -44,7 +41,10 @@
"Error moving file." : "Eroare la mutarea fișierului.",
"Error moving file" : "Eroare la mutarea fișierului",
"Error" : "Eroare",
+ "{new_name} already exists" : "{new_name} există deja",
"Could not rename file" : "Nu s-a putut redenumi fișierul",
+ "Could not create file" : "Nu s-a putut crea fisierul",
+ "Could not create folder" : "Nu s-a putut crea folderul",
"Error deleting file." : "Eroare la ștergerea fișierului.",
"Name" : "Nume",
"Size" : "Mărime",
@@ -54,11 +54,16 @@
"{dirs} and {files}" : "{dirs} și {files}",
"You don’t have permission to upload or create files here" : "Nu aveți permisiunea de a încărca sau crea fișiere aici",
"_Uploading %n file_::_Uploading %n files_" : ["Se încarcă %n fișier.","Se încarcă %n fișiere.","Se încarcă %n fișiere."],
+ "New" : "Nou",
"\"{name}\" is an invalid file name." : "\"{name}\" este un nume de fișier nevalid.",
"File name cannot be empty." : "Numele fișierului nu poate rămâne gol.",
"Your storage is full, files can not be updated or synced anymore!" : "Spațiul de stocare este plin, fișierele nu mai pot fi actualizate sau sincronizate!",
"Your storage is almost full ({usedSpacePercent}%)" : "Spațiul de stocare este aproape plin ({usedSpacePercent}%)",
"Favorite" : "Favorit",
+ "Upload" : "Încărcă",
+ "Text file" : "Fișier text",
+ "Folder" : "Dosar",
+ "New folder" : "Un nou dosar",
"A new file or folder has been <strong>created</strong>" : "Un nou fișier sau dosar a fost <strong>creat</strong>",
"A file or folder has been <strong>changed</strong>" : "Un nou fișier sau dosar a fost <strong>modificat</strong>",
"A file or folder has been <strong>deleted</strong>" : "Un nou fișier sau dosar a fost <strong>șters</strong>",
@@ -82,12 +87,6 @@
"Settings" : "Setări",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Folosește această adresă <a href=\"%s\" target=\"_blank\">pentru acces la fișierele tale folosind WebDAV</a>",
- "New" : "Nou",
- "New text file" : "Un nou fișier text",
- "Text file" : "Fișier text",
- "New folder" : "Un nou dosar",
- "Folder" : "Dosar",
- "Upload" : "Încărcă",
"Cancel upload" : "Anulează încărcarea",
"Select all" : "Selectează tot",
"Delete" : "Șterge",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 87116553e40..962698709c3 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Загрузка отменена.",
"Could not get result from server." : "Не удалось получить ответ от сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
- "{new_name} already exists" : "{new_name} уже существует",
- "Could not create file" : "Не удалось создать файл",
- "Could not create folder" : "Не удалось создать каталог",
"Actions" : "Действия",
"Download" : "Скачать",
"Select" : "Выбрать",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Ошибка при перемещении файла.",
"Error moving file" : "Ошибка при перемещении файла",
"Error" : "Ошибка",
+ "{new_name} already exists" : "{new_name} уже существует",
"Could not rename file" : "Не удалось переименовать файл",
+ "Could not create file" : "Не удалось создать файл",
+ "Could not create folder" : "Не удалось создать каталог",
"Error deleting file." : "Ошибка при удалении файла.",
"No entries in this folder match '{filter}'" : "В данном каталоге нет элементов соответствующих '{filter}'",
"Name" : "Имя",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} и {files}",
"You don’t have permission to upload or create files here" : "У вас нет прав для загрузки или создания файлов здесь.",
"_Uploading %n file_::_Uploading %n files_" : ["Закачка %n файла","Закачка %n файлов","Закачка %n файлов","Закачка %n файлов"],
+ "New" : "Новый",
"\"{name}\" is an invalid file name." : "\"{name}\" это неправильное имя файла.",
"File name cannot be empty." : "Имя файла не может быть пустым.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Хранилище {owner} переполнено, файлы больше не могут быть обновлены или синхронизированы!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"],
"Favorited" : "Избранное",
"Favorite" : "Избранное",
+ "Upload" : "Загрузить",
+ "Text file" : "Текстовый файл",
+ "Folder" : "Каталог",
+ "New folder" : "Новый каталог",
"An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
"A file or folder has been <strong>changed</strong>" : "<strong>Изменён</strong> файл или каталог",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "Настройки",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\">доступа файлам через WebDAV</a>",
- "New" : "Новый",
- "New text file" : "Новый текстовый файл",
- "Text file" : "Текстовый файл",
- "New folder" : "Новый каталог",
- "Folder" : "Каталог",
- "Upload" : "Загрузить",
"Cancel upload" : "Отменить загрузку",
"No files in here" : "Здесь нет файлов",
"Upload some content or sync with your devices!" : "Загрузите что-нибудь или синхронизируйте со своими устройствами!",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 8880ec6f5aa..410ef1d9cbe 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Загрузка отменена.",
"Could not get result from server." : "Не удалось получить ответ от сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
- "{new_name} already exists" : "{new_name} уже существует",
- "Could not create file" : "Не удалось создать файл",
- "Could not create folder" : "Не удалось создать каталог",
"Actions" : "Действия",
"Download" : "Скачать",
"Select" : "Выбрать",
@@ -47,7 +44,10 @@
"Error moving file." : "Ошибка при перемещении файла.",
"Error moving file" : "Ошибка при перемещении файла",
"Error" : "Ошибка",
+ "{new_name} already exists" : "{new_name} уже существует",
"Could not rename file" : "Не удалось переименовать файл",
+ "Could not create file" : "Не удалось создать файл",
+ "Could not create folder" : "Не удалось создать каталог",
"Error deleting file." : "Ошибка при удалении файла.",
"No entries in this folder match '{filter}'" : "В данном каталоге нет элементов соответствующих '{filter}'",
"Name" : "Имя",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} и {files}",
"You don’t have permission to upload or create files here" : "У вас нет прав для загрузки или создания файлов здесь.",
"_Uploading %n file_::_Uploading %n files_" : ["Закачка %n файла","Закачка %n файлов","Закачка %n файлов","Закачка %n файлов"],
+ "New" : "Новый",
"\"{name}\" is an invalid file name." : "\"{name}\" это неправильное имя файла.",
"File name cannot be empty." : "Имя файла не может быть пустым.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Хранилище {owner} переполнено, файлы больше не могут быть обновлены или синхронизированы!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"],
"Favorited" : "Избранное",
"Favorite" : "Избранное",
+ "Upload" : "Загрузить",
+ "Text file" : "Текстовый файл",
+ "Folder" : "Каталог",
+ "New folder" : "Новый каталог",
"An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка",
"A new file or folder has been <strong>created</strong>" : "<strong>Создан</strong> новый файл или каталог",
"A file or folder has been <strong>changed</strong>" : "<strong>Изменён</strong> файл или каталог",
@@ -96,12 +101,6 @@
"Settings" : "Настройки",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Используйте этот адрес для <a href=\"%s\" target=\"_blank\">доступа файлам через WebDAV</a>",
- "New" : "Новый",
- "New text file" : "Новый текстовый файл",
- "Text file" : "Текстовый файл",
- "New folder" : "Новый каталог",
- "Folder" : "Каталог",
- "Upload" : "Загрузить",
"Cancel upload" : "Отменить загрузку",
"No files in here" : "Здесь нет файлов",
"Upload some content or sync with your devices!" : "Загрузите что-нибудь или синхронизируйте со своими устройствами!",
diff --git a/apps/files/l10n/si_LK.js b/apps/files/l10n/si_LK.js
index 5c43bdd9be7..ea63cda82dc 100644
--- a/apps/files/l10n/si_LK.js
+++ b/apps/files/l10n/si_LK.js
@@ -19,6 +19,10 @@ OC.L10N.register(
"Name" : "නම",
"Size" : "ප්‍රමාණය",
"Modified" : "වෙනස් කළ",
+ "New" : "නව",
+ "Upload" : "උඩුගත කරන්න",
+ "Text file" : "පෙළ ගොනුව",
+ "Folder" : "ෆෝල්ඩරය",
"A new file or folder has been <strong>created</strong>" : "නව ගොනුවක් හෝ බහාලුමක් <strong> නිර්මාණය කර ඇත</ strong> ",
"A file or folder has been <strong>changed</strong>" : "ගොනුවක් හෝ ෆෝල්ඩරයක් <strong>වෙනස්</strong> වී ඇත",
"A file or folder has been <strong>deleted</strong>" : "ගොනුවක් හෝ ෆෝල්ඩරයක් <strong>මකා දමා</strong> ඇත",
@@ -28,10 +32,6 @@ OC.L10N.register(
"max. possible: " : "හැකි උපරිමය:",
"Save" : "සුරකින්න",
"Settings" : "සිටුවම්",
- "New" : "නව",
- "Text file" : "පෙළ ගොනුව",
- "Folder" : "ෆෝල්ඩරය",
- "Upload" : "උඩුගත කරන්න",
"Cancel upload" : "උඩුගත කිරීම අත් හරින්න",
"Delete" : "මකා දමන්න",
"Upload too large" : "උඩුගත කිරීම විශාල වැඩිය",
diff --git a/apps/files/l10n/si_LK.json b/apps/files/l10n/si_LK.json
index 6fbac44938e..6cfbe30ff4a 100644
--- a/apps/files/l10n/si_LK.json
+++ b/apps/files/l10n/si_LK.json
@@ -17,6 +17,10 @@
"Name" : "නම",
"Size" : "ප්‍රමාණය",
"Modified" : "වෙනස් කළ",
+ "New" : "නව",
+ "Upload" : "උඩුගත කරන්න",
+ "Text file" : "පෙළ ගොනුව",
+ "Folder" : "ෆෝල්ඩරය",
"A new file or folder has been <strong>created</strong>" : "නව ගොනුවක් හෝ බහාලුමක් <strong> නිර්මාණය කර ඇත</ strong> ",
"A file or folder has been <strong>changed</strong>" : "ගොනුවක් හෝ ෆෝල්ඩරයක් <strong>වෙනස්</strong> වී ඇත",
"A file or folder has been <strong>deleted</strong>" : "ගොනුවක් හෝ ෆෝල්ඩරයක් <strong>මකා දමා</strong> ඇත",
@@ -26,10 +30,6 @@
"max. possible: " : "හැකි උපරිමය:",
"Save" : "සුරකින්න",
"Settings" : "සිටුවම්",
- "New" : "නව",
- "Text file" : "පෙළ ගොනුව",
- "Folder" : "ෆෝල්ඩරය",
- "Upload" : "උඩුගත කරන්න",
"Cancel upload" : "උඩුගත කිරීම අත් හරින්න",
"Delete" : "මකා දමන්න",
"Upload too large" : "උඩුගත කිරීම විශාල වැඩිය",
diff --git a/apps/files/l10n/sk_SK.js b/apps/files/l10n/sk_SK.js
index ebb328e5a41..ebe1973a9ed 100644
--- a/apps/files/l10n/sk_SK.js
+++ b/apps/files/l10n/sk_SK.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Odosielanie je zrušené.",
"Could not get result from server." : "Nepodarilo sa dostať výsledky zo servera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
- "{new_name} already exists" : "{new_name} už existuje",
- "Could not create file" : "Nemožno vytvoriť súbor",
- "Could not create folder" : "Nemožno vytvoriť priečinok",
"Actions" : "Akcie",
"Download" : "Sťahovanie",
"Select" : "Vybrať",
@@ -48,7 +45,10 @@ OC.L10N.register(
"Error moving file." : "Chyba pri presune súboru.",
"Error moving file" : "Chyba pri presúvaní súboru",
"Error" : "Chyba",
+ "{new_name} already exists" : "{new_name} už existuje",
"Could not rename file" : "Nemožno premenovať súbor",
+ "Could not create file" : "Nemožno vytvoriť súbor",
+ "Could not create folder" : "Nemožno vytvoriť priečinok",
"Error deleting file." : "Chyba pri mazaní súboru.",
"No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'",
"Name" : "Názov",
@@ -59,6 +59,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} a {files}",
"You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory",
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"],
+ "New" : "Nový",
"\"{name}\" is an invalid file name." : "\"{name}\" je neplatné meno súboru.",
"File name cannot be empty." : "Meno súboru nemôže byť prázdne",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!",
@@ -66,6 +67,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"],
"Favorited" : "Pridané k obľúbeným",
"Favorite" : "Obľúbené",
+ "Upload" : "Nahrať",
+ "Text file" : "Textový súbor",
+ "Folder" : "Priečinok",
+ "New folder" : "Nový priečinok",
"An error occurred while trying to update the tags" : "Pri pokuse o aktualizáciu štítkov došlo k chybe",
"A new file or folder has been <strong>created</strong>" : "Nový súbor alebo priečinok bol <strong>vytvorený</strong>",
"A file or folder has been <strong>changed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong>",
@@ -90,12 +95,6 @@ OC.L10N.register(
"Settings" : "Nastavenia",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použite túto linku <a href=\"%s\" target=\"_blank\">pre prístup k vašim súborom cez WebDAV</a>",
- "New" : "Nový",
- "New text file" : "Nový textový súbor",
- "Text file" : "Textový súbor",
- "New folder" : "Nový priečinok",
- "Folder" : "Priečinok",
- "Upload" : "Nahrať",
"Cancel upload" : "Zrušiť nahrávanie",
"No files in here" : "Nie sú tu žiadne súbory",
"Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!",
diff --git a/apps/files/l10n/sk_SK.json b/apps/files/l10n/sk_SK.json
index 0595e921535..ccd7a045699 100644
--- a/apps/files/l10n/sk_SK.json
+++ b/apps/files/l10n/sk_SK.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Odosielanie je zrušené.",
"Could not get result from server." : "Nepodarilo sa dostať výsledky zo servera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
- "{new_name} already exists" : "{new_name} už existuje",
- "Could not create file" : "Nemožno vytvoriť súbor",
- "Could not create folder" : "Nemožno vytvoriť priečinok",
"Actions" : "Akcie",
"Download" : "Sťahovanie",
"Select" : "Vybrať",
@@ -46,7 +43,10 @@
"Error moving file." : "Chyba pri presune súboru.",
"Error moving file" : "Chyba pri presúvaní súboru",
"Error" : "Chyba",
+ "{new_name} already exists" : "{new_name} už existuje",
"Could not rename file" : "Nemožno premenovať súbor",
+ "Could not create file" : "Nemožno vytvoriť súbor",
+ "Could not create folder" : "Nemožno vytvoriť priečinok",
"Error deleting file." : "Chyba pri mazaní súboru.",
"No entries in this folder match '{filter}'" : "V tomto priečinku nič nezodpovedá '{filter}'",
"Name" : "Názov",
@@ -57,6 +57,7 @@
"{dirs} and {files}" : "{dirs} a {files}",
"You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory",
"_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"],
+ "New" : "Nový",
"\"{name}\" is an invalid file name." : "\"{name}\" je neplatné meno súboru.",
"File name cannot be empty." : "Meno súboru nemôže byť prázdne",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!",
@@ -64,6 +65,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"],
"Favorited" : "Pridané k obľúbeným",
"Favorite" : "Obľúbené",
+ "Upload" : "Nahrať",
+ "Text file" : "Textový súbor",
+ "Folder" : "Priečinok",
+ "New folder" : "Nový priečinok",
"An error occurred while trying to update the tags" : "Pri pokuse o aktualizáciu štítkov došlo k chybe",
"A new file or folder has been <strong>created</strong>" : "Nový súbor alebo priečinok bol <strong>vytvorený</strong>",
"A file or folder has been <strong>changed</strong>" : "Súbor alebo priečinok bol <strong>zmenený</strong>",
@@ -88,12 +93,6 @@
"Settings" : "Nastavenia",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Použite túto linku <a href=\"%s\" target=\"_blank\">pre prístup k vašim súborom cez WebDAV</a>",
- "New" : "Nový",
- "New text file" : "Nový textový súbor",
- "Text file" : "Textový súbor",
- "New folder" : "Nový priečinok",
- "Folder" : "Priečinok",
- "Upload" : "Nahrať",
"Cancel upload" : "Zrušiť nahrávanie",
"No files in here" : "Nie sú tu žiadne súbory",
"Upload some content or sync with your devices!" : "Nahrajte nejaký obsah alebo synchronizujte zo svojimi zariadeniami!",
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index 17cbdb1470c..2d296468d69 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Pošiljanje je preklicano.",
"Could not get result from server." : "Ni mogoče pridobiti podatkov s strežnika.",
"File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
- "{new_name} already exists" : "{new_name} že obstaja",
- "Could not create file" : "Ni mogoče ustvariti datoteke",
- "Could not create folder" : "Ni mogoče ustvariti mape",
"Actions" : "Dejanja",
"Download" : "Prejmi",
"Select" : "Izberi",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Napaka premikanja datoteke.",
"Error moving file" : "Napaka premikanja datoteke",
"Error" : "Napaka",
+ "{new_name} already exists" : "{new_name} že obstaja",
"Could not rename file" : "Ni mogoče preimenovati datoteke",
+ "Could not create file" : "Ni mogoče ustvariti datoteke",
+ "Could not create folder" : "Ni mogoče ustvariti mape",
"Error deleting file." : "Napaka brisanja datoteke.",
"No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'",
"Name" : "Ime",
@@ -58,6 +58,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} in {files}",
"You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje ali ustvarjanje datotek na tem mestu.",
"_Uploading %n file_::_Uploading %n files_" : ["Posodabljanje %n datoteke","Posodabljanje %n datotek","Posodabljanje %n datotek","Posodabljanje %n datotek"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" je neveljavno ime datoteke.",
"File name cannot be empty." : "Ime datoteke ne sme biti prazno polje.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Shramba uporabnika {owner} je polna, zato datotek ni več mogoče posodabljati in usklajevati!",
@@ -67,6 +68,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["se sklada s filtrom '{filter}'","se skladata s filtrom '{filter}'","se skladajo s filtrom '{filter}'","se skladajo s filtrom '{filter}'"],
"Favorited" : "Označeno kot priljubljeno",
"Favorite" : "Priljubljene",
+ "Upload" : "Pošlji",
+ "Text file" : "Besedilna datoteka",
+ "Folder" : "Mapa",
+ "New folder" : "Nova mapa",
"An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak",
"A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je <strong>ustvarjena</strong>",
"A file or folder has been <strong>changed</strong>" : "Datoteka ali mapa je <strong>spremenjena</strong>.",
@@ -93,12 +98,6 @@ OC.L10N.register(
"Settings" : "Nastavitve",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uporabite naslov <a href=\"%s\" target=\"_blank\"> za dostop do datotek peko sistema WebDAV</a>.",
- "New" : "Novo",
- "New text file" : "Nova besedilna datoteka",
- "Text file" : "Besedilna datoteka",
- "New folder" : "Nova mapa",
- "Folder" : "Mapa",
- "Upload" : "Pošlji",
"Cancel upload" : "Prekliči pošiljanje",
"No files in here" : "V mapi ni datotek",
"Upload some content or sync with your devices!" : "Uvozite vsebino ali pa omogočite usklajevanje z napravami!",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index 0e123f4e715..0cb69f5f7a1 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Pošiljanje je preklicano.",
"Could not get result from server." : "Ni mogoče pridobiti podatkov s strežnika.",
"File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
- "{new_name} already exists" : "{new_name} že obstaja",
- "Could not create file" : "Ni mogoče ustvariti datoteke",
- "Could not create folder" : "Ni mogoče ustvariti mape",
"Actions" : "Dejanja",
"Download" : "Prejmi",
"Select" : "Izberi",
@@ -45,7 +42,10 @@
"Error moving file." : "Napaka premikanja datoteke.",
"Error moving file" : "Napaka premikanja datoteke",
"Error" : "Napaka",
+ "{new_name} already exists" : "{new_name} že obstaja",
"Could not rename file" : "Ni mogoče preimenovati datoteke",
+ "Could not create file" : "Ni mogoče ustvariti datoteke",
+ "Could not create folder" : "Ni mogoče ustvariti mape",
"Error deleting file." : "Napaka brisanja datoteke.",
"No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'",
"Name" : "Ime",
@@ -56,6 +56,7 @@
"{dirs} and {files}" : "{dirs} in {files}",
"You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje ali ustvarjanje datotek na tem mestu.",
"_Uploading %n file_::_Uploading %n files_" : ["Posodabljanje %n datoteke","Posodabljanje %n datotek","Posodabljanje %n datotek","Posodabljanje %n datotek"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" je neveljavno ime datoteke.",
"File name cannot be empty." : "Ime datoteke ne sme biti prazno polje.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Shramba uporabnika {owner} je polna, zato datotek ni več mogoče posodabljati in usklajevati!",
@@ -65,6 +66,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["se sklada s filtrom '{filter}'","se skladata s filtrom '{filter}'","se skladajo s filtrom '{filter}'","se skladajo s filtrom '{filter}'"],
"Favorited" : "Označeno kot priljubljeno",
"Favorite" : "Priljubljene",
+ "Upload" : "Pošlji",
+ "Text file" : "Besedilna datoteka",
+ "Folder" : "Mapa",
+ "New folder" : "Nova mapa",
"An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak",
"A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je <strong>ustvarjena</strong>",
"A file or folder has been <strong>changed</strong>" : "Datoteka ali mapa je <strong>spremenjena</strong>.",
@@ -91,12 +96,6 @@
"Settings" : "Nastavitve",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Uporabite naslov <a href=\"%s\" target=\"_blank\"> za dostop do datotek peko sistema WebDAV</a>.",
- "New" : "Novo",
- "New text file" : "Nova besedilna datoteka",
- "Text file" : "Besedilna datoteka",
- "New folder" : "Nova mapa",
- "Folder" : "Mapa",
- "Upload" : "Pošlji",
"Cancel upload" : "Prekliči pošiljanje",
"No files in here" : "V mapi ni datotek",
"Upload some content or sync with your devices!" : "Uvozite vsebino ali pa omogočite usklajevanje z napravami!",
diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js
index c76819b7b8f..2b87c39d968 100644
--- a/apps/files/l10n/sq.js
+++ b/apps/files/l10n/sq.js
@@ -35,15 +35,15 @@ OC.L10N.register(
"Upload cancelled." : "Ngarkimi u anullua",
"Could not get result from server." : "Nuk mund të merret ndonjë rezultat nga serveri.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Skedari duke u ngarkuar. Largimi nga faqja do të anullojë ngarkimin",
- "{new_name} already exists" : "{new_name} është ekzistues ",
- "Could not create file" : "Skedari nuk mund të krijohet",
- "Could not create folder" : "I pamundur krijimi i kartelës",
"Download" : "Shkarko",
"Pending" : "Në vijim",
"Error moving file." : "Gabim në lëvizjen e skedarëve.",
"Error moving file" : "Gabim lëvizjen dokumentave",
"Error" : "Gabim",
+ "{new_name} already exists" : "{new_name} është ekzistues ",
"Could not rename file" : "Riemërtimi i skedarit nuk është i mundur",
+ "Could not create file" : "Skedari nuk mund të krijohet",
+ "Could not create folder" : "I pamundur krijimi i kartelës",
"Error deleting file." : "Gabim gjatë fshirjes së skedarit.",
"Name" : "Emri",
"Size" : "Madhësia",
@@ -53,10 +53,15 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} dhe {files}",
"You don’t have permission to upload or create files here" : "Ju nuk keni të drejta për të ngarkuar apo krijuar skedarë këtu",
"_Uploading %n file_::_Uploading %n files_" : ["Po ngarkoj %n skedar","Po ngarkoj %n skedarë"],
+ "New" : "E re",
"\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm.",
"File name cannot be empty." : "Emri i skedarit nuk mund të jetë bosh.",
"Your storage is full, files can not be updated or synced anymore!" : "Hapsira juaj e arkivimit është plot, skedarët nuk mund të përditësohen ose sinkronizohen!",
"Your storage is almost full ({usedSpacePercent}%)" : "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)",
+ "Upload" : "Ngarko",
+ "Text file" : "Skedar tekst",
+ "Folder" : "Dosje",
+ "New folder" : "Dosje e're",
"A new file or folder has been <strong>created</strong>" : "Një skedar ose një dosje e re është <strong>krijuar</strong>",
"A file or folder has been <strong>changed</strong>" : "Një skedar ose një dosje ka <strong>ndryshuar</strong>",
"A file or folder has been <strong>deleted</strong>" : "Një skedar ose një dosje është <strong>fshirë</strong>",
@@ -80,12 +85,6 @@ OC.L10N.register(
"Settings" : "Konfigurime",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Përdorni këtë adresë për <a href=\"%s\" target=\"_blank\">qasje në skedarët tuaj me anë të WebDAV</a>",
- "New" : "E re",
- "New text file" : "Skedar i ri tekst",
- "Text file" : "Skedar tekst",
- "New folder" : "Dosje e're",
- "Folder" : "Dosje",
- "Upload" : "Ngarko",
"Cancel upload" : "Anullo ngarkimin",
"Delete" : "Fshi",
"Upload too large" : "Ngarkimi shumë i madh",
diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json
index 619aaa79a56..1e755ee80f6 100644
--- a/apps/files/l10n/sq.json
+++ b/apps/files/l10n/sq.json
@@ -33,15 +33,15 @@
"Upload cancelled." : "Ngarkimi u anullua",
"Could not get result from server." : "Nuk mund të merret ndonjë rezultat nga serveri.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Skedari duke u ngarkuar. Largimi nga faqja do të anullojë ngarkimin",
- "{new_name} already exists" : "{new_name} është ekzistues ",
- "Could not create file" : "Skedari nuk mund të krijohet",
- "Could not create folder" : "I pamundur krijimi i kartelës",
"Download" : "Shkarko",
"Pending" : "Në vijim",
"Error moving file." : "Gabim në lëvizjen e skedarëve.",
"Error moving file" : "Gabim lëvizjen dokumentave",
"Error" : "Gabim",
+ "{new_name} already exists" : "{new_name} është ekzistues ",
"Could not rename file" : "Riemërtimi i skedarit nuk është i mundur",
+ "Could not create file" : "Skedari nuk mund të krijohet",
+ "Could not create folder" : "I pamundur krijimi i kartelës",
"Error deleting file." : "Gabim gjatë fshirjes së skedarit.",
"Name" : "Emri",
"Size" : "Madhësia",
@@ -51,10 +51,15 @@
"{dirs} and {files}" : "{dirs} dhe {files}",
"You don’t have permission to upload or create files here" : "Ju nuk keni të drejta për të ngarkuar apo krijuar skedarë këtu",
"_Uploading %n file_::_Uploading %n files_" : ["Po ngarkoj %n skedar","Po ngarkoj %n skedarë"],
+ "New" : "E re",
"\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm.",
"File name cannot be empty." : "Emri i skedarit nuk mund të jetë bosh.",
"Your storage is full, files can not be updated or synced anymore!" : "Hapsira juaj e arkivimit është plot, skedarët nuk mund të përditësohen ose sinkronizohen!",
"Your storage is almost full ({usedSpacePercent}%)" : "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)",
+ "Upload" : "Ngarko",
+ "Text file" : "Skedar tekst",
+ "Folder" : "Dosje",
+ "New folder" : "Dosje e're",
"A new file or folder has been <strong>created</strong>" : "Një skedar ose një dosje e re është <strong>krijuar</strong>",
"A file or folder has been <strong>changed</strong>" : "Një skedar ose një dosje ka <strong>ndryshuar</strong>",
"A file or folder has been <strong>deleted</strong>" : "Një skedar ose një dosje është <strong>fshirë</strong>",
@@ -78,12 +83,6 @@
"Settings" : "Konfigurime",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Përdorni këtë adresë për <a href=\"%s\" target=\"_blank\">qasje në skedarët tuaj me anë të WebDAV</a>",
- "New" : "E re",
- "New text file" : "Skedar i ri tekst",
- "Text file" : "Skedar tekst",
- "New folder" : "Dosje e're",
- "Folder" : "Dosje",
- "Upload" : "Ngarko",
"Cancel upload" : "Anullo ngarkimin",
"Delete" : "Fshi",
"Upload too large" : "Ngarkimi shumë i madh",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 2a6df1f9cd2..597389e15da 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Отпремање је отказано.",
"Could not get result from server." : "Не могу да добијем резултат са сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Отпремање фајла је у току. Ако сада напустите страницу, отказаћете отпремање.",
- "{new_name} already exists" : "{new_name} већ постоји",
- "Could not create file" : "Не могу да створим фајл",
- "Could not create folder" : "Не могу да створим фасциклу",
"Actions" : "Радње",
"Download" : "Преузми",
"Select" : "Изабери",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Грешка при премештању фајла.",
"Error moving file" : "Грешка при премештању фајла",
"Error" : "Грешка",
+ "{new_name} already exists" : "{new_name} већ постоји",
"Could not rename file" : "Не могу да преименујем фајл",
+ "Could not create file" : "Не могу да створим фајл",
+ "Could not create folder" : "Не могу да створим фасциклу",
"Error deleting file." : "Грешка при брисању фајла.",
"No entries in this folder match '{filter}'" : "У овој фасцикли ништа се не поклапа са '{filter}'",
"Name" : "Назив",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} и {files}",
"You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове",
"_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"],
+ "New" : "Ново",
"\"{name}\" is an invalid file name." : "\"{name}\" није исправан назив фајла.",
"File name cannot be empty." : "Назив фајла не може бити празан.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Складиште корисника {owner} је пуно. Фајлови се не могу ажурирати нити синхронизовати!",
@@ -69,6 +70,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["се поклапа са '{filter}'","се поклапају са '{filter}'","се поклапа са '{filter}'"],
"Favorited" : "Омиљено",
"Favorite" : "Омиљени",
+ "Upload" : "Отпреми",
+ "Text file" : "текстуални фајл",
+ "Folder" : "фасцикла",
+ "New folder" : "Нова фасцикла",
"An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака",
"A new file or folder has been <strong>created</strong>" : "Нови фајл или фасцикла су <strong>направљени</strong>",
"A file or folder has been <strong>changed</strong>" : "Фајл или фасцикла су <strong>измењени</strong>",
@@ -95,12 +100,6 @@ OC.L10N.register(
"Settings" : "Поставке",
"WebDAV" : "ВебДАВ",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Користите ову адресу да <a href=\"%s\" target=\"_blank\"> приступите фајловима преко ВебДАВ-а</a>",
- "New" : "Ново",
- "New text file" : "Нов текстуални фајл",
- "Text file" : "текстуални фајл",
- "New folder" : "Нова фасцикла",
- "Folder" : "фасцикла",
- "Upload" : "Отпреми",
"Cancel upload" : "Откажи отпремање",
"No files in here" : "Овде нема фајлова",
"Upload some content or sync with your devices!" : "Отпремите неки садржај или синхронизујте са вашим уређајима!",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index 09aabbb72e7..ec2fcc101e6 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Отпремање је отказано.",
"Could not get result from server." : "Не могу да добијем резултат са сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Отпремање фајла је у току. Ако сада напустите страницу, отказаћете отпремање.",
- "{new_name} already exists" : "{new_name} већ постоји",
- "Could not create file" : "Не могу да створим фајл",
- "Could not create folder" : "Не могу да створим фасциклу",
"Actions" : "Радње",
"Download" : "Преузми",
"Select" : "Изабери",
@@ -47,7 +44,10 @@
"Error moving file." : "Грешка при премештању фајла.",
"Error moving file" : "Грешка при премештању фајла",
"Error" : "Грешка",
+ "{new_name} already exists" : "{new_name} већ постоји",
"Could not rename file" : "Не могу да преименујем фајл",
+ "Could not create file" : "Не могу да створим фајл",
+ "Could not create folder" : "Не могу да створим фасциклу",
"Error deleting file." : "Грешка при брисању фајла.",
"No entries in this folder match '{filter}'" : "У овој фасцикли ништа се не поклапа са '{filter}'",
"Name" : "Назив",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} и {files}",
"You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове",
"_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"],
+ "New" : "Ново",
"\"{name}\" is an invalid file name." : "\"{name}\" није исправан назив фајла.",
"File name cannot be empty." : "Назив фајла не може бити празан.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Складиште корисника {owner} је пуно. Фајлови се не могу ажурирати нити синхронизовати!",
@@ -67,6 +68,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["се поклапа са '{filter}'","се поклапају са '{filter}'","се поклапа са '{filter}'"],
"Favorited" : "Омиљено",
"Favorite" : "Омиљени",
+ "Upload" : "Отпреми",
+ "Text file" : "текстуални фајл",
+ "Folder" : "фасцикла",
+ "New folder" : "Нова фасцикла",
"An error occurred while trying to update the tags" : "Дошло је до грешке при покушају ажурирања ознака",
"A new file or folder has been <strong>created</strong>" : "Нови фајл или фасцикла су <strong>направљени</strong>",
"A file or folder has been <strong>changed</strong>" : "Фајл или фасцикла су <strong>измењени</strong>",
@@ -93,12 +98,6 @@
"Settings" : "Поставке",
"WebDAV" : "ВебДАВ",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Користите ову адресу да <a href=\"%s\" target=\"_blank\"> приступите фајловима преко ВебДАВ-а</a>",
- "New" : "Ново",
- "New text file" : "Нов текстуални фајл",
- "Text file" : "текстуални фајл",
- "New folder" : "Нова фасцикла",
- "Folder" : "фасцикла",
- "Upload" : "Отпреми",
"Cancel upload" : "Откажи отпремање",
"No files in here" : "Овде нема фајлова",
"Upload some content or sync with your devices!" : "Отпремите неки садржај или синхронизујте са вашим уређајима!",
diff --git a/apps/files/l10n/sr@latin.js b/apps/files/l10n/sr@latin.js
index 28e317ff9be..b00575619e9 100644
--- a/apps/files/l10n/sr@latin.js
+++ b/apps/files/l10n/sr@latin.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Otpremanje je otkazano.",
"Could not get result from server." : "Ne mogu da dobijem rezultat sa servera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Otpremanje fajla je u toku. Ako sada napustite stranicu, otkazaćete otpremanje.",
- "{new_name} already exists" : "{new_name} već postoji",
- "Could not create file" : "Ne mogu da stvorim fajl",
- "Could not create folder" : "Ne mogu da stvorim fasciklu",
"Download" : "Preuzmi",
"Select" : "Izaberi",
"Pending" : "Na čekanju",
@@ -46,7 +43,10 @@ OC.L10N.register(
"Error moving file." : "Greška pri premeštanju fajla.",
"Error moving file" : "Greška pri premeštanju fajla",
"Error" : "Greška",
+ "{new_name} already exists" : "{new_name} već postoji",
"Could not rename file" : "Ne mogu da preimenujem fajl",
+ "Could not create file" : "Ne mogu da stvorim fajl",
+ "Could not create folder" : "Ne mogu da stvorim fasciklu",
"Error deleting file." : "Greška pri brisanju fajla.",
"No entries in this folder match '{filter}'" : "U ovoj fascikli ništa se ne poklapa sa '{filter}'",
"Name" : "Naziv",
@@ -57,6 +57,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Nemate dozvole da ovde otpremate ili stvarate fajlove",
"_Uploading %n file_::_Uploading %n files_" : ["Otpremam %n fajl","Otpremam %n fajla","Otpremam %n fajlova"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" nije ispravan naziv fajla.",
"File name cannot be empty." : "Naziv fajla ne može biti prazan.",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše skladište je puno. Fajlovi više ne mogu biti ažurirani ni sinhronizovani!",
@@ -64,6 +65,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["se poklapa sa '{filter}'","se poklapaju sa '{filter}'","se poklapa sa '{filter}'"],
"Favorited" : "Omiljeno",
"Favorite" : "Omiljeni",
+ "Upload" : "Otpremi",
+ "Text file" : "tekstualni fajl",
+ "Folder" : "fascikla",
+ "New folder" : "Nova fascikla",
"An error occurred while trying to update the tags" : "Došlo je do greške pri pokušaju ažuriranja oznaka",
"A new file or folder has been <strong>created</strong>" : "Novi fajl ili fascikla su <strong>napravljeni</strong>",
"A file or folder has been <strong>changed</strong>" : "Fajl ili fascikla su <strong>izmenjeni</strong>",
@@ -90,12 +95,6 @@ OC.L10N.register(
"Settings" : "Postavke",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Koristite ovu adresu da <a href=\"%s\" target=\"_blank\"> pristupite fajlovima preko WebDAV-a</a>",
- "New" : "Novo",
- "New text file" : "Nov tekstualni fajl",
- "Text file" : "tekstualni fajl",
- "New folder" : "Nova fascikla",
- "Folder" : "fascikla",
- "Upload" : "Otpremi",
"Cancel upload" : "Otkaži otpremanje",
"No files in here" : "Ovde nema fajlova",
"Upload some content or sync with your devices!" : "Otpremite neki sadržaj ili sinhronizujte sa vašim uređajima!",
diff --git a/apps/files/l10n/sr@latin.json b/apps/files/l10n/sr@latin.json
index 5f31ed2547c..b6ffda5aa6b 100644
--- a/apps/files/l10n/sr@latin.json
+++ b/apps/files/l10n/sr@latin.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Otpremanje je otkazano.",
"Could not get result from server." : "Ne mogu da dobijem rezultat sa servera.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Otpremanje fajla je u toku. Ako sada napustite stranicu, otkazaćete otpremanje.",
- "{new_name} already exists" : "{new_name} već postoji",
- "Could not create file" : "Ne mogu da stvorim fajl",
- "Could not create folder" : "Ne mogu da stvorim fasciklu",
"Download" : "Preuzmi",
"Select" : "Izaberi",
"Pending" : "Na čekanju",
@@ -44,7 +41,10 @@
"Error moving file." : "Greška pri premeštanju fajla.",
"Error moving file" : "Greška pri premeštanju fajla",
"Error" : "Greška",
+ "{new_name} already exists" : "{new_name} već postoji",
"Could not rename file" : "Ne mogu da preimenujem fajl",
+ "Could not create file" : "Ne mogu da stvorim fajl",
+ "Could not create folder" : "Ne mogu da stvorim fasciklu",
"Error deleting file." : "Greška pri brisanju fajla.",
"No entries in this folder match '{filter}'" : "U ovoj fascikli ništa se ne poklapa sa '{filter}'",
"Name" : "Naziv",
@@ -55,6 +55,7 @@
"{dirs} and {files}" : "{dirs} i {files}",
"You don’t have permission to upload or create files here" : "Nemate dozvole da ovde otpremate ili stvarate fajlove",
"_Uploading %n file_::_Uploading %n files_" : ["Otpremam %n fajl","Otpremam %n fajla","Otpremam %n fajlova"],
+ "New" : "Novo",
"\"{name}\" is an invalid file name." : "\"{name}\" nije ispravan naziv fajla.",
"File name cannot be empty." : "Naziv fajla ne može biti prazan.",
"Your storage is full, files can not be updated or synced anymore!" : "Vaše skladište je puno. Fajlovi više ne mogu biti ažurirani ni sinhronizovani!",
@@ -62,6 +63,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["se poklapa sa '{filter}'","se poklapaju sa '{filter}'","se poklapa sa '{filter}'"],
"Favorited" : "Omiljeno",
"Favorite" : "Omiljeni",
+ "Upload" : "Otpremi",
+ "Text file" : "tekstualni fajl",
+ "Folder" : "fascikla",
+ "New folder" : "Nova fascikla",
"An error occurred while trying to update the tags" : "Došlo je do greške pri pokušaju ažuriranja oznaka",
"A new file or folder has been <strong>created</strong>" : "Novi fajl ili fascikla su <strong>napravljeni</strong>",
"A file or folder has been <strong>changed</strong>" : "Fajl ili fascikla su <strong>izmenjeni</strong>",
@@ -88,12 +93,6 @@
"Settings" : "Postavke",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Koristite ovu adresu da <a href=\"%s\" target=\"_blank\"> pristupite fajlovima preko WebDAV-a</a>",
- "New" : "Novo",
- "New text file" : "Nov tekstualni fajl",
- "Text file" : "tekstualni fajl",
- "New folder" : "Nova fascikla",
- "Folder" : "fascikla",
- "Upload" : "Otpremi",
"Cancel upload" : "Otkaži otpremanje",
"No files in here" : "Ovde nema fajlova",
"Upload some content or sync with your devices!" : "Otpremite neki sadržaj ili sinhronizujte sa vašim uređajima!",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index c6b64eab029..5f9a08404d7 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Uppladdning avbruten.",
"Could not get result from server." : "Gick inte att hämta resultat från server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
- "{new_name} already exists" : "{new_name} finns redan",
- "Could not create file" : "Kunde ej skapa fil",
- "Could not create folder" : "Kunde ej skapa katalog",
"Actions" : "Åtgärder",
"Download" : "Ladda ner",
"Select" : "Välj",
@@ -47,7 +44,10 @@ OC.L10N.register(
"Error moving file." : "Fel vid flytt av fil.",
"Error moving file" : "Fel uppstod vid flyttning av fil",
"Error" : "Fel",
+ "{new_name} already exists" : "{new_name} finns redan",
"Could not rename file" : "Kan ej byta filnamn",
+ "Could not create file" : "Kunde ej skapa fil",
+ "Could not create folder" : "Kunde ej skapa katalog",
"Error deleting file." : "Kunde inte ta bort filen.",
"Name" : "Namn",
"Size" : "Storlek",
@@ -57,12 +57,17 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} och {files}",
"You don’t have permission to upload or create files here" : "Du har ej tillåtelse att ladda upp eller skapa filer här",
"_Uploading %n file_::_Uploading %n files_" : ["Laddar upp %n fil","Laddar upp %n filer"],
+ "New" : "Ny",
"\"{name}\" is an invalid file name." : "\"{name}\" är ett ogiltligt filnamn.",
"File name cannot be empty." : "Filnamn kan inte vara tomt.",
"Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Your storage is almost full ({usedSpacePercent}%)" : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Favorited" : "Favoritiserad",
"Favorite" : "Favorit",
+ "Upload" : "Ladda upp",
+ "Text file" : "Textfil",
+ "Folder" : "Mapp",
+ "New folder" : "Ny mapp",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
"A file or folder has been <strong>changed</strong>" : "En ny fil eller mapp har blivit <strong>ändrad</strong>",
"A file or folder has been <strong>deleted</strong>" : "En ny fil eller mapp har blivit <strong>raderad</strong>",
@@ -86,12 +91,6 @@ OC.L10N.register(
"Settings" : "Inställningar",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Använd denna adress till <a href=\"%s\" target=\"_blank\">nå dina Filer via WebDAV</a>",
- "New" : "Ny",
- "New text file" : "Ny textfil",
- "Text file" : "Textfil",
- "New folder" : "Ny mapp",
- "Folder" : "Mapp",
- "Upload" : "Ladda upp",
"Cancel upload" : "Avbryt uppladdning",
"Upload some content or sync with your devices!" : "Ladda upp innehåll eller synkronisera med dina enheter!",
"Select all" : "Välj allt",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index c752155dbb9..e6775948cf6 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Uppladdning avbruten.",
"Could not get result from server." : "Gick inte att hämta resultat från server.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
- "{new_name} already exists" : "{new_name} finns redan",
- "Could not create file" : "Kunde ej skapa fil",
- "Could not create folder" : "Kunde ej skapa katalog",
"Actions" : "Åtgärder",
"Download" : "Ladda ner",
"Select" : "Välj",
@@ -45,7 +42,10 @@
"Error moving file." : "Fel vid flytt av fil.",
"Error moving file" : "Fel uppstod vid flyttning av fil",
"Error" : "Fel",
+ "{new_name} already exists" : "{new_name} finns redan",
"Could not rename file" : "Kan ej byta filnamn",
+ "Could not create file" : "Kunde ej skapa fil",
+ "Could not create folder" : "Kunde ej skapa katalog",
"Error deleting file." : "Kunde inte ta bort filen.",
"Name" : "Namn",
"Size" : "Storlek",
@@ -55,12 +55,17 @@
"{dirs} and {files}" : "{dirs} och {files}",
"You don’t have permission to upload or create files here" : "Du har ej tillåtelse att ladda upp eller skapa filer här",
"_Uploading %n file_::_Uploading %n files_" : ["Laddar upp %n fil","Laddar upp %n filer"],
+ "New" : "Ny",
"\"{name}\" is an invalid file name." : "\"{name}\" är ett ogiltligt filnamn.",
"File name cannot be empty." : "Filnamn kan inte vara tomt.",
"Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Your storage is almost full ({usedSpacePercent}%)" : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Favorited" : "Favoritiserad",
"Favorite" : "Favorit",
+ "Upload" : "Ladda upp",
+ "Text file" : "Textfil",
+ "Folder" : "Mapp",
+ "New folder" : "Ny mapp",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mapp har blivit <strong>skapad</strong>",
"A file or folder has been <strong>changed</strong>" : "En ny fil eller mapp har blivit <strong>ändrad</strong>",
"A file or folder has been <strong>deleted</strong>" : "En ny fil eller mapp har blivit <strong>raderad</strong>",
@@ -84,12 +89,6 @@
"Settings" : "Inställningar",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Använd denna adress till <a href=\"%s\" target=\"_blank\">nå dina Filer via WebDAV</a>",
- "New" : "Ny",
- "New text file" : "Ny textfil",
- "Text file" : "Textfil",
- "New folder" : "Ny mapp",
- "Folder" : "Mapp",
- "Upload" : "Ladda upp",
"Cancel upload" : "Avbryt uppladdning",
"Upload some content or sync with your devices!" : "Ladda upp innehåll eller synkronisera med dina enheter!",
"Select all" : "Välj allt",
diff --git a/apps/files/l10n/ta_IN.js b/apps/files/l10n/ta_IN.js
index c12b3fc948e..c8453338084 100644
--- a/apps/files/l10n/ta_IN.js
+++ b/apps/files/l10n/ta_IN.js
@@ -2,6 +2,8 @@ OC.L10N.register(
"files",
{
"Files" : "கோப்புகள்",
+ "Upload" : "பதிவேற்று",
+ "New folder" : "புதிய கோப்புறை",
"A new file or folder has been <strong>created</strong>" : "ஒரு புதிய கோப்புறை அல்லது ஆவணம் <strong> உருவாக்கப்பட்டுள்ளது.</strong>",
"A file or folder has been <strong>changed</strong>" : "ஒரு கோப்புறை அல்லது ஆவணம் <strong>மாற்றம் செய்யப்பட்டுள்ளது.</strong>",
"A file or folder has been <strong>deleted</strong>" : "ஒரு கோப்புறை அல்லது ஆவணம் <strong> நீக்கப்பட்டுள்ளது. </strong>",
@@ -11,8 +13,6 @@ OC.L10N.register(
"%2$s changed %1$s" : "%2$s %1$s 'ல் மாற்றம் செய்துள்ளார். ",
"You deleted %1$s" : "நீங்கள் %1$s 'ஐ நீக்கி உள்ளீர்கள்.",
"%2$s deleted %1$s" : "%2$s , %1$s 'ஐ நீக்கியுள்ளார்.",
- "Settings" : "அமைப்புகள்",
- "New folder" : "புதிய கோப்புறை",
- "Upload" : "பதிவேற்று"
+ "Settings" : "அமைப்புகள்"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/ta_IN.json b/apps/files/l10n/ta_IN.json
index 086a3416614..392601a3756 100644
--- a/apps/files/l10n/ta_IN.json
+++ b/apps/files/l10n/ta_IN.json
@@ -1,5 +1,7 @@
{ "translations": {
"Files" : "கோப்புகள்",
+ "Upload" : "பதிவேற்று",
+ "New folder" : "புதிய கோப்புறை",
"A new file or folder has been <strong>created</strong>" : "ஒரு புதிய கோப்புறை அல்லது ஆவணம் <strong> உருவாக்கப்பட்டுள்ளது.</strong>",
"A file or folder has been <strong>changed</strong>" : "ஒரு கோப்புறை அல்லது ஆவணம் <strong>மாற்றம் செய்யப்பட்டுள்ளது.</strong>",
"A file or folder has been <strong>deleted</strong>" : "ஒரு கோப்புறை அல்லது ஆவணம் <strong> நீக்கப்பட்டுள்ளது. </strong>",
@@ -9,8 +11,6 @@
"%2$s changed %1$s" : "%2$s %1$s 'ல் மாற்றம் செய்துள்ளார். ",
"You deleted %1$s" : "நீங்கள் %1$s 'ஐ நீக்கி உள்ளீர்கள்.",
"%2$s deleted %1$s" : "%2$s , %1$s 'ஐ நீக்கியுள்ளார்.",
- "Settings" : "அமைப்புகள்",
- "New folder" : "புதிய கோப்புறை",
- "Upload" : "பதிவேற்று"
+ "Settings" : "அமைப்புகள்"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ta_LK.js b/apps/files/l10n/ta_LK.js
index ef41c862b4c..90a955e135b 100644
--- a/apps/files/l10n/ta_LK.js
+++ b/apps/files/l10n/ta_LK.js
@@ -14,25 +14,25 @@ OC.L10N.register(
"Close" : "மூடுக",
"Upload cancelled." : "பதிவேற்றல் இரத்து செய்யப்பட்டுள்ளது",
"File upload is in progress. Leaving the page now will cancel the upload." : "கோப்பு பதிவேற்றம் செயல்பாட்டில் உள்ளது. இந்தப் பக்கத்திலிருந்து வெறியேறுவதானது பதிவேற்றலை இரத்து செய்யும்.",
- "{new_name} already exists" : "{new_name} ஏற்கனவே உள்ளது",
"Actions" : "செயல்கள்",
"Download" : "பதிவிறக்குக",
"Select" : "தெரிக",
"Pending" : "நிலுவையிலுள்ள",
"Error" : "வழு",
+ "{new_name} already exists" : "{new_name} ஏற்கனவே உள்ளது",
"Name" : "பெயர்",
"Size" : "அளவு",
"Modified" : "மாற்றப்பட்டது",
+ "New" : "புதிய",
"Favorite" : "விருப்பமான",
+ "Upload" : "பதிவேற்றுக",
+ "Text file" : "கோப்பு உரை",
+ "Folder" : "கோப்புறை",
"File handling" : "கோப்பு கையாளுதல்",
"Maximum upload size" : "பதிவேற்றக்கூடிய ஆகக்கூடிய அளவு ",
"max. possible: " : "ஆகக் கூடியது:",
"Save" : "சேமிக்க ",
"Settings" : "அமைப்புகள்",
- "New" : "புதிய",
- "Text file" : "கோப்பு உரை",
- "Folder" : "கோப்புறை",
- "Upload" : "பதிவேற்றுக",
"Cancel upload" : "பதிவேற்றலை இரத்து செய்க",
"Delete" : "நீக்குக",
"Upload too large" : "பதிவேற்றல் மிகப்பெரியது",
diff --git a/apps/files/l10n/ta_LK.json b/apps/files/l10n/ta_LK.json
index a233c016cad..64220b86744 100644
--- a/apps/files/l10n/ta_LK.json
+++ b/apps/files/l10n/ta_LK.json
@@ -12,25 +12,25 @@
"Close" : "மூடுக",
"Upload cancelled." : "பதிவேற்றல் இரத்து செய்யப்பட்டுள்ளது",
"File upload is in progress. Leaving the page now will cancel the upload." : "கோப்பு பதிவேற்றம் செயல்பாட்டில் உள்ளது. இந்தப் பக்கத்திலிருந்து வெறியேறுவதானது பதிவேற்றலை இரத்து செய்யும்.",
- "{new_name} already exists" : "{new_name} ஏற்கனவே உள்ளது",
"Actions" : "செயல்கள்",
"Download" : "பதிவிறக்குக",
"Select" : "தெரிக",
"Pending" : "நிலுவையிலுள்ள",
"Error" : "வழு",
+ "{new_name} already exists" : "{new_name} ஏற்கனவே உள்ளது",
"Name" : "பெயர்",
"Size" : "அளவு",
"Modified" : "மாற்றப்பட்டது",
+ "New" : "புதிய",
"Favorite" : "விருப்பமான",
+ "Upload" : "பதிவேற்றுக",
+ "Text file" : "கோப்பு உரை",
+ "Folder" : "கோப்புறை",
"File handling" : "கோப்பு கையாளுதல்",
"Maximum upload size" : "பதிவேற்றக்கூடிய ஆகக்கூடிய அளவு ",
"max. possible: " : "ஆகக் கூடியது:",
"Save" : "சேமிக்க ",
"Settings" : "அமைப்புகள்",
- "New" : "புதிய",
- "Text file" : "கோப்பு உரை",
- "Folder" : "கோப்புறை",
- "Upload" : "பதிவேற்றுக",
"Cancel upload" : "பதிவேற்றலை இரத்து செய்க",
"Delete" : "நீக்குக",
"Upload too large" : "பதிவேற்றல் மிகப்பெரியது",
diff --git a/apps/files/l10n/te.js b/apps/files/l10n/te.js
index 481c994e301..51f6b1c5291 100644
--- a/apps/files/l10n/te.js
+++ b/apps/files/l10n/te.js
@@ -5,10 +5,10 @@ OC.L10N.register(
"Error" : "పొరపాటు",
"Name" : "పేరు",
"Size" : "పరిమాణం",
+ "Folder" : "సంచయం",
+ "New folder" : "కొత్త సంచయం",
"Save" : "భద్రపరచు",
"Settings" : "అమరికలు",
- "New folder" : "కొత్త సంచయం",
- "Folder" : "సంచయం",
"Delete" : "తొలగించు"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/te.json b/apps/files/l10n/te.json
index a836ec02fa8..fa7efa9d702 100644
--- a/apps/files/l10n/te.json
+++ b/apps/files/l10n/te.json
@@ -3,10 +3,10 @@
"Error" : "పొరపాటు",
"Name" : "పేరు",
"Size" : "పరిమాణం",
+ "Folder" : "సంచయం",
+ "New folder" : "కొత్త సంచయం",
"Save" : "భద్రపరచు",
"Settings" : "అమరికలు",
- "New folder" : "కొత్త సంచయం",
- "Folder" : "సంచయం",
"Delete" : "తొలగించు"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/th_TH.js b/apps/files/l10n/th_TH.js
index 2529d3e8ca8..2b092551a17 100644
--- a/apps/files/l10n/th_TH.js
+++ b/apps/files/l10n/th_TH.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "การอัพโหลดถูกยกเลิก",
"Could not get result from server." : "ไม่สามารถรับผลลัพธ์จากเซิร์ฟเวอร์",
"File upload is in progress. Leaving the page now will cancel the upload." : "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก",
- "{new_name} already exists" : "{new_name} มีอยู่แล้วในระบบ",
- "Could not create file" : "ไม่สามารถสร้างไฟล์",
- "Could not create folder" : "ไม่สามารถสร้างโฟลเดอร์",
"Actions" : "การกระทำ",
"Download" : "ดาวน์โหลด",
"Select" : "เลือก",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error moving file" : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error" : "ข้อผิดพลาด",
+ "{new_name} already exists" : "{new_name} มีอยู่แล้วในระบบ",
"Could not rename file" : "ไม่สามารถเปลี่ยนชื่อไฟล์",
+ "Could not create file" : "ไม่สามารถสร้างไฟล์",
+ "Could not create folder" : "ไม่สามารถสร้างโฟลเดอร์",
"Error deleting file." : "เกิดข้อผิดพลาดในการลบไฟล์",
"No entries in this folder match '{filter}'" : "ไม่มีรายการในโฟลเดอร์นี้ที่ตรงกับ '{filter}'",
"Name" : "ชื่อ",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} และ {files}",
"You don’t have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัพโหลดหรือสร้างไฟล์ที่นี่",
"_Uploading %n file_::_Uploading %n files_" : ["อัพโหลด %n ไฟล์"],
+ "New" : "ใหม่",
"\"{name}\" is an invalid file name." : "\"{name}\" เป็นชื่อไฟล์ที่ไม่ถูกต้อง",
"File name cannot be empty." : "ชื่อไฟล์ไม่สามารถเว้นว่างได้",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "พื้นที่จัดเก็บข้อมูลของ {owner} เต็มแล้ว ไฟล์ไม่สามารถอัพเดทหรือประสานข้อมูลได้อีก!",
@@ -71,6 +72,12 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n ไบต์"],
"Favorited" : "รายการโปรด",
"Favorite" : "รายการโปรด",
+ "{newname} already exists" : "{newname} ถูกใช้ไปแล้ว",
+ "Upload" : "อัพโหลด",
+ "Text file" : "ไฟล์ข้อความ",
+ "New text file.txt" : "ไฟล์ข้อความใหม่ .txt",
+ "Folder" : "แฟ้มเอกสาร",
+ "New folder" : "โฟลเดอร์ใหม่",
"An error occurred while trying to update the tags" : "เกิดข้อผิดพลาดขณะที่พยายามจะปรับปรุงแท็ก",
"A new file or folder has been <strong>created</strong>" : "มีไฟล์ใหม่หรือโฟลเดอร์ได้ถูก <strong>สร้างขึ้น!</strong>",
"A file or folder has been <strong>changed</strong>" : "มีไฟล์หรือโฟลเดอร์ได้ถูก <strong>เปลี่ยน!</strong>",
@@ -98,12 +105,6 @@ OC.L10N.register(
"Settings" : "ตั้งค่า",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "ใช้ที่อยู่นี้เพื่อ <a href=\"%s\" target=\"_blank\">เข้าถึงไฟล์ของคุณผ่าน WebDAV</a>",
- "New" : "ใหม่",
- "New text file" : "ไฟล์ข้อความใหม่",
- "Text file" : "ไฟล์ข้อความ",
- "New folder" : "โฟลเดอร์ใหม่",
- "Folder" : "แฟ้มเอกสาร",
- "Upload" : "อัพโหลด",
"Cancel upload" : "ยกเลิกการอัพโหลด",
"No files in here" : "ไม่มีไฟล์ที่นี่",
"Upload some content or sync with your devices!" : "อัพโหลดเนื้อหาบางส่วนหรือประสานข้อมูลกับอุปกรณ์ของคุณ! อีกครั้ง",
diff --git a/apps/files/l10n/th_TH.json b/apps/files/l10n/th_TH.json
index cf4fc24fc0a..3125adc820f 100644
--- a/apps/files/l10n/th_TH.json
+++ b/apps/files/l10n/th_TH.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "การอัพโหลดถูกยกเลิก",
"Could not get result from server." : "ไม่สามารถรับผลลัพธ์จากเซิร์ฟเวอร์",
"File upload is in progress. Leaving the page now will cancel the upload." : "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก",
- "{new_name} already exists" : "{new_name} มีอยู่แล้วในระบบ",
- "Could not create file" : "ไม่สามารถสร้างไฟล์",
- "Could not create folder" : "ไม่สามารถสร้างโฟลเดอร์",
"Actions" : "การกระทำ",
"Download" : "ดาวน์โหลด",
"Select" : "เลือก",
@@ -47,7 +44,10 @@
"Error moving file." : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error moving file" : "ข้อผิดพลาดในการเคลื่อนย้ายไฟล์",
"Error" : "ข้อผิดพลาด",
+ "{new_name} already exists" : "{new_name} มีอยู่แล้วในระบบ",
"Could not rename file" : "ไม่สามารถเปลี่ยนชื่อไฟล์",
+ "Could not create file" : "ไม่สามารถสร้างไฟล์",
+ "Could not create folder" : "ไม่สามารถสร้างโฟลเดอร์",
"Error deleting file." : "เกิดข้อผิดพลาดในการลบไฟล์",
"No entries in this folder match '{filter}'" : "ไม่มีรายการในโฟลเดอร์นี้ที่ตรงกับ '{filter}'",
"Name" : "ชื่อ",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} และ {files}",
"You don’t have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัพโหลดหรือสร้างไฟล์ที่นี่",
"_Uploading %n file_::_Uploading %n files_" : ["อัพโหลด %n ไฟล์"],
+ "New" : "ใหม่",
"\"{name}\" is an invalid file name." : "\"{name}\" เป็นชื่อไฟล์ที่ไม่ถูกต้อง",
"File name cannot be empty." : "ชื่อไฟล์ไม่สามารถเว้นว่างได้",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "พื้นที่จัดเก็บข้อมูลของ {owner} เต็มแล้ว ไฟล์ไม่สามารถอัพเดทหรือประสานข้อมูลได้อีก!",
@@ -69,6 +70,12 @@
"_%n byte_::_%n bytes_" : ["%n ไบต์"],
"Favorited" : "รายการโปรด",
"Favorite" : "รายการโปรด",
+ "{newname} already exists" : "{newname} ถูกใช้ไปแล้ว",
+ "Upload" : "อัพโหลด",
+ "Text file" : "ไฟล์ข้อความ",
+ "New text file.txt" : "ไฟล์ข้อความใหม่ .txt",
+ "Folder" : "แฟ้มเอกสาร",
+ "New folder" : "โฟลเดอร์ใหม่",
"An error occurred while trying to update the tags" : "เกิดข้อผิดพลาดขณะที่พยายามจะปรับปรุงแท็ก",
"A new file or folder has been <strong>created</strong>" : "มีไฟล์ใหม่หรือโฟลเดอร์ได้ถูก <strong>สร้างขึ้น!</strong>",
"A file or folder has been <strong>changed</strong>" : "มีไฟล์หรือโฟลเดอร์ได้ถูก <strong>เปลี่ยน!</strong>",
@@ -96,12 +103,6 @@
"Settings" : "ตั้งค่า",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "ใช้ที่อยู่นี้เพื่อ <a href=\"%s\" target=\"_blank\">เข้าถึงไฟล์ของคุณผ่าน WebDAV</a>",
- "New" : "ใหม่",
- "New text file" : "ไฟล์ข้อความใหม่",
- "Text file" : "ไฟล์ข้อความ",
- "New folder" : "โฟลเดอร์ใหม่",
- "Folder" : "แฟ้มเอกสาร",
- "Upload" : "อัพโหลด",
"Cancel upload" : "ยกเลิกการอัพโหลด",
"No files in here" : "ไม่มีไฟล์ที่นี่",
"Upload some content or sync with your devices!" : "อัพโหลดเนื้อหาบางส่วนหรือประสานข้อมูลกับอุปกรณ์ของคุณ! อีกครั้ง",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 2145fb5c9fc..157280b696c 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Yükleme iptal edildi.",
"Could not get result from server." : "Sunucudan sonuç alınamadı.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.",
- "{new_name} already exists" : "{new_name} zaten mevcut",
- "Could not create file" : "Dosya oluşturulamadı",
- "Could not create folder" : "Klasör oluşturulamadı",
"Actions" : "Eylemler",
"Download" : "İndir",
"Select" : "Seç",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "Dosya taşıma hatası.",
"Error moving file" : "Dosya taşıma hatası",
"Error" : "Hata",
+ "{new_name} already exists" : "{new_name} zaten mevcut",
"Could not rename file" : "Dosya adlandırılamadı",
+ "Could not create file" : "Dosya oluşturulamadı",
+ "Could not create folder" : "Klasör oluşturulamadı",
"Error deleting file." : "Dosya silinirken hata.",
"No entries in this folder match '{filter}'" : "Bu klasörde hiçbir girdi '{filter}' ile eşleşmiyor",
"Name" : "İsim",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} ve {files}",
"You don’t have permission to upload or create files here" : "Buraya dosya yükleme veya oluşturma izniniz yok",
"_Uploading %n file_::_Uploading %n files_" : ["%n dosya yükleniyor","%n dosya yükleniyor"],
+ "New" : "Yeni",
"\"{name}\" is an invalid file name." : "\"{name}\" geçersiz bir dosya adı.",
"File name cannot be empty." : "Dosya adı boş olamaz.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} depolama alanı dolu, artık dosyalar güncellenmeyecek yada eşitlenmeyecek.",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"],
"Favorited" : "Sık kullanılanlara eklendi",
"Favorite" : "Sık kullanılan",
+ "Upload" : "Yükle",
+ "Text file" : "Metin dosyası",
+ "Folder" : "Klasör",
+ "New folder" : "Yeni klasör",
"An error occurred while trying to update the tags" : "Etiketler güncellenmeye çalışılırken bir hata oluştu",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>",
"A file or folder has been <strong>changed</strong>" : "Bir dosya veya klasör <strong>değiştirildi</strong>",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "Ayarlar",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">Dosyalarınıza WebDAV aracılığıyla erişmek için</a> bu adresi kullanın",
- "New" : "Yeni",
- "New text file" : "Yeni metin dosyası",
- "Text file" : "Metin dosyası",
- "New folder" : "Yeni klasör",
- "Folder" : "Klasör",
- "Upload" : "Yükle",
"Cancel upload" : "Yüklemeyi iptal et",
"No files in here" : "Burada hiç dosya yok",
"Upload some content or sync with your devices!" : "Bir şeyler yükleyin veya aygıtlarınızla eşitleyin!",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 5a1e5f9ec7a..8a15f7ff315 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Yükleme iptal edildi.",
"Could not get result from server." : "Sunucudan sonuç alınamadı.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.",
- "{new_name} already exists" : "{new_name} zaten mevcut",
- "Could not create file" : "Dosya oluşturulamadı",
- "Could not create folder" : "Klasör oluşturulamadı",
"Actions" : "Eylemler",
"Download" : "İndir",
"Select" : "Seç",
@@ -47,7 +44,10 @@
"Error moving file." : "Dosya taşıma hatası.",
"Error moving file" : "Dosya taşıma hatası",
"Error" : "Hata",
+ "{new_name} already exists" : "{new_name} zaten mevcut",
"Could not rename file" : "Dosya adlandırılamadı",
+ "Could not create file" : "Dosya oluşturulamadı",
+ "Could not create folder" : "Klasör oluşturulamadı",
"Error deleting file." : "Dosya silinirken hata.",
"No entries in this folder match '{filter}'" : "Bu klasörde hiçbir girdi '{filter}' ile eşleşmiyor",
"Name" : "İsim",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} ve {files}",
"You don’t have permission to upload or create files here" : "Buraya dosya yükleme veya oluşturma izniniz yok",
"_Uploading %n file_::_Uploading %n files_" : ["%n dosya yükleniyor","%n dosya yükleniyor"],
+ "New" : "Yeni",
"\"{name}\" is an invalid file name." : "\"{name}\" geçersiz bir dosya adı.",
"File name cannot be empty." : "Dosya adı boş olamaz.",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} depolama alanı dolu, artık dosyalar güncellenmeyecek yada eşitlenmeyecek.",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"],
"Favorited" : "Sık kullanılanlara eklendi",
"Favorite" : "Sık kullanılan",
+ "Upload" : "Yükle",
+ "Text file" : "Metin dosyası",
+ "Folder" : "Klasör",
+ "New folder" : "Yeni klasör",
"An error occurred while trying to update the tags" : "Etiketler güncellenmeye çalışılırken bir hata oluştu",
"A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>",
"A file or folder has been <strong>changed</strong>" : "Bir dosya veya klasör <strong>değiştirildi</strong>",
@@ -96,12 +101,6 @@
"Settings" : "Ayarlar",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\">Dosyalarınıza WebDAV aracılığıyla erişmek için</a> bu adresi kullanın",
- "New" : "Yeni",
- "New text file" : "Yeni metin dosyası",
- "Text file" : "Metin dosyası",
- "New folder" : "Yeni klasör",
- "Folder" : "Klasör",
- "Upload" : "Yükle",
"Cancel upload" : "Yüklemeyi iptal et",
"No files in here" : "Burada hiç dosya yok",
"Upload some content or sync with your devices!" : "Bir şeyler yükleyin veya aygıtlarınızla eşitleyin!",
diff --git a/apps/files/l10n/ug.js b/apps/files/l10n/ug.js
index 8d8dbe886c9..8d6dabd50d7 100644
--- a/apps/files/l10n/ug.js
+++ b/apps/files/l10n/ug.js
@@ -14,23 +14,23 @@ OC.L10N.register(
"Close" : "ياپ",
"Upload cancelled." : "يۈكلەشتىن ۋاز كەچتى.",
"File upload is in progress. Leaving the page now will cancel the upload." : "ھۆججەت يۈكلەش مەشغۇلاتى ئېلىپ بېرىلىۋاتىدۇ. Leaving the page now will cancel the upload.",
- "{new_name} already exists" : "{new_name} مەۋجۇت",
"Actions" : "مەشغۇلاتلار",
"Download" : "چۈشۈر",
"Pending" : "كۈتۈۋاتىدۇ",
"Error" : "خاتالىق",
+ "{new_name} already exists" : "{new_name} مەۋجۇت",
"Name" : "ئاتى",
"Size" : "چوڭلۇقى",
"Modified" : "ئۆزگەرتكەن",
+ "New" : "يېڭى",
"Favorite" : "يىغقۇچ",
+ "Upload" : "يۈكلە",
+ "Text file" : "تېكىست ھۆججەت",
+ "Folder" : "قىسقۇچ",
+ "New folder" : "يېڭى قىسقۇچ",
"Save" : "ساقلا",
"Settings" : "تەڭشەكلەر",
"WebDAV" : "WebDAV",
- "New" : "يېڭى",
- "Text file" : "تېكىست ھۆججەت",
- "New folder" : "يېڭى قىسقۇچ",
- "Folder" : "قىسقۇچ",
- "Upload" : "يۈكلە",
"Cancel upload" : "يۈكلەشتىن ۋاز كەچ",
"Delete" : "ئۆچۈر",
"Upload too large" : "يۈكلەندىغىنى بەك چوڭ"
diff --git a/apps/files/l10n/ug.json b/apps/files/l10n/ug.json
index 0ace5900d0e..86bd8391af2 100644
--- a/apps/files/l10n/ug.json
+++ b/apps/files/l10n/ug.json
@@ -12,23 +12,23 @@
"Close" : "ياپ",
"Upload cancelled." : "يۈكلەشتىن ۋاز كەچتى.",
"File upload is in progress. Leaving the page now will cancel the upload." : "ھۆججەت يۈكلەش مەشغۇلاتى ئېلىپ بېرىلىۋاتىدۇ. Leaving the page now will cancel the upload.",
- "{new_name} already exists" : "{new_name} مەۋجۇت",
"Actions" : "مەشغۇلاتلار",
"Download" : "چۈشۈر",
"Pending" : "كۈتۈۋاتىدۇ",
"Error" : "خاتالىق",
+ "{new_name} already exists" : "{new_name} مەۋجۇت",
"Name" : "ئاتى",
"Size" : "چوڭلۇقى",
"Modified" : "ئۆزگەرتكەن",
+ "New" : "يېڭى",
"Favorite" : "يىغقۇچ",
+ "Upload" : "يۈكلە",
+ "Text file" : "تېكىست ھۆججەت",
+ "Folder" : "قىسقۇچ",
+ "New folder" : "يېڭى قىسقۇچ",
"Save" : "ساقلا",
"Settings" : "تەڭشەكلەر",
"WebDAV" : "WebDAV",
- "New" : "يېڭى",
- "Text file" : "تېكىست ھۆججەت",
- "New folder" : "يېڭى قىسقۇچ",
- "Folder" : "قىسقۇچ",
- "Upload" : "يۈكلە",
"Cancel upload" : "يۈكلەشتىن ۋاز كەچ",
"Delete" : "ئۆچۈر",
"Upload too large" : "يۈكلەندىغىنى بەك چوڭ"
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index f695cfb49e5..a06cc2f3d73 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "Вивантаження скасовано.",
"Could not get result from server." : "Не вдалося отримати результат від сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Виконується вивантаження файлу. Закриття цієї сторінки приведе до скасування вивантаження.",
- "{new_name} already exists" : "{new_name} вже існує",
- "Could not create file" : "Не вдалося створити файл",
- "Could not create folder" : "Не вдалося створити теку",
"Actions" : "Дії",
"Download" : "Завантажити",
"Select" : "Оберіть",
@@ -48,7 +45,10 @@ OC.L10N.register(
"Error moving file." : "Помилка переміщення файлу.",
"Error moving file" : "Помилка переміщення файлу",
"Error" : "Помилка",
+ "{new_name} already exists" : "{new_name} вже існує",
"Could not rename file" : "Неможливо перейменувати файл",
+ "Could not create file" : "Не вдалося створити файл",
+ "Could not create folder" : "Не вдалося створити теку",
"Error deleting file." : "Помилка видалення файлу.",
"No entries in this folder match '{filter}'" : "Нічого не знайдено в цій теці '{filter}'",
"Name" : "Ім'я",
@@ -59,6 +59,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} і {files}",
"You don’t have permission to upload or create files here" : "У вас недостатньо прав для вивантаження або створення тут файлів",
"_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів"],
+ "New" : "Створити",
"\"{name}\" is an invalid file name." : "\"{name}\" - некоректне ім'я файлу.",
"File name cannot be empty." : " Ім'я файлу не може бути порожнім.",
"Your storage is full, files can not be updated or synced anymore!" : "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !",
@@ -66,6 +67,10 @@ OC.L10N.register(
"_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"],
"Favorited" : "Улюблений",
"Favorite" : "Улюблений",
+ "Upload" : "Вивантажити",
+ "Text file" : "Текстовий файл",
+ "Folder" : "Тека",
+ "New folder" : "Нова тека",
"An error occurred while trying to update the tags" : "Виникла помилка при спробі оновити мітки",
"A new file or folder has been <strong>created</strong>" : "Новий файл або теку було <strong>створено</strong>",
"A file or folder has been <strong>changed</strong>" : "Файл або теку було <strong> змінено </strong>",
@@ -92,12 +97,6 @@ OC.L10N.register(
"Settings" : "Налаштування",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Для доступу до файлів через WebDAV використовуйте <a href=\"%s\" target=\"_blank\">це посилання</a>",
- "New" : "Створити",
- "New text file" : "Новий текстовий файл",
- "Text file" : "Текстовий файл",
- "New folder" : "Нова тека",
- "Folder" : "Тека",
- "Upload" : "Вивантажити",
"Cancel upload" : "Скасувати вивантаження",
"No files in here" : "Тут немає файлів",
"Upload some content or sync with your devices!" : "Вивантажте щось або синхронізуйте з пристроями!",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index adc124a267f..964ada95de1 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "Вивантаження скасовано.",
"Could not get result from server." : "Не вдалося отримати результат від сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Виконується вивантаження файлу. Закриття цієї сторінки приведе до скасування вивантаження.",
- "{new_name} already exists" : "{new_name} вже існує",
- "Could not create file" : "Не вдалося створити файл",
- "Could not create folder" : "Не вдалося створити теку",
"Actions" : "Дії",
"Download" : "Завантажити",
"Select" : "Оберіть",
@@ -46,7 +43,10 @@
"Error moving file." : "Помилка переміщення файлу.",
"Error moving file" : "Помилка переміщення файлу",
"Error" : "Помилка",
+ "{new_name} already exists" : "{new_name} вже існує",
"Could not rename file" : "Неможливо перейменувати файл",
+ "Could not create file" : "Не вдалося створити файл",
+ "Could not create folder" : "Не вдалося створити теку",
"Error deleting file." : "Помилка видалення файлу.",
"No entries in this folder match '{filter}'" : "Нічого не знайдено в цій теці '{filter}'",
"Name" : "Ім'я",
@@ -57,6 +57,7 @@
"{dirs} and {files}" : "{dirs} і {files}",
"You don’t have permission to upload or create files here" : "У вас недостатньо прав для вивантаження або створення тут файлів",
"_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів"],
+ "New" : "Створити",
"\"{name}\" is an invalid file name." : "\"{name}\" - некоректне ім'я файлу.",
"File name cannot be empty." : " Ім'я файлу не може бути порожнім.",
"Your storage is full, files can not be updated or synced anymore!" : "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !",
@@ -64,6 +65,10 @@
"_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"],
"Favorited" : "Улюблений",
"Favorite" : "Улюблений",
+ "Upload" : "Вивантажити",
+ "Text file" : "Текстовий файл",
+ "Folder" : "Тека",
+ "New folder" : "Нова тека",
"An error occurred while trying to update the tags" : "Виникла помилка при спробі оновити мітки",
"A new file or folder has been <strong>created</strong>" : "Новий файл або теку було <strong>створено</strong>",
"A file or folder has been <strong>changed</strong>" : "Файл або теку було <strong> змінено </strong>",
@@ -90,12 +95,6 @@
"Settings" : "Налаштування",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Для доступу до файлів через WebDAV використовуйте <a href=\"%s\" target=\"_blank\">це посилання</a>",
- "New" : "Створити",
- "New text file" : "Новий текстовий файл",
- "Text file" : "Текстовий файл",
- "New folder" : "Нова тека",
- "Folder" : "Тека",
- "Upload" : "Вивантажити",
"Cancel upload" : "Скасувати вивантаження",
"No files in here" : "Тут немає файлів",
"Upload some content or sync with your devices!" : "Вивантажте щось або синхронізуйте з пристроями!",
diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js
index b96c4fca63c..5e83c36abea 100644
--- a/apps/files/l10n/vi.js
+++ b/apps/files/l10n/vi.js
@@ -31,16 +31,16 @@ OC.L10N.register(
"Upload cancelled." : "Hủy tải lên",
"Could not get result from server." : "Không thể nhận được kết quả từ máy chủ.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Tập tin tải lên đang được xử lý. Nếu bạn rời khỏi trang bây giờ sẽ hủy quá trình này.",
- "{new_name} already exists" : "{new_name} đã tồn tại",
- "Could not create file" : "Không thể tạo file",
- "Could not create folder" : "Không thể tạo thư mục",
"Actions" : "Actions",
"Download" : "Tải về",
"Select" : "Chọn",
"Pending" : "Đang chờ",
"Error moving file" : "Lỗi di chuyển tập tin",
"Error" : "Lỗi",
+ "{new_name} already exists" : "{new_name} đã tồn tại",
"Could not rename file" : "Không thể đổi tên file",
+ "Could not create file" : "Không thể tạo file",
+ "Could not create folder" : "Không thể tạo thư mục",
"Error deleting file." : "Lỗi xóa file,",
"Name" : "Tên",
"Size" : "Kích cỡ",
@@ -50,10 +50,15 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} và {files}",
"You don’t have permission to upload or create files here" : "Bạn không có quyền upload hoặc tạo files ở đây",
"_Uploading %n file_::_Uploading %n files_" : ["Đang tải lên %n tập tin"],
+ "New" : "Tạo mới",
"File name cannot be empty." : "Tên file không được rỗng",
"Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!",
"Your storage is almost full ({usedSpacePercent}%)" : "Your storage is almost full ({usedSpacePercent}%)",
"Favorite" : "Ưu thích",
+ "Upload" : "Tải lên",
+ "Text file" : "Tập tin văn bản",
+ "Folder" : "Thư mục",
+ "New folder" : "Tạo thư mục",
"%s could not be renamed" : "%s không thể đổi tên",
"File handling" : "Xử lý tập tin",
"Maximum upload size" : "Kích thước tối đa ",
@@ -61,12 +66,6 @@ OC.L10N.register(
"Save" : "Lưu",
"Settings" : "Cài đặt",
"WebDAV" : "WebDAV",
- "New" : "Tạo mới",
- "New text file" : "File text mới",
- "Text file" : "Tập tin văn bản",
- "New folder" : "Tạo thư mục",
- "Folder" : "Thư mục",
- "Upload" : "Tải lên",
"Cancel upload" : "Hủy upload",
"No entries found in this folder" : "Chưa có mục nào trong thư mục",
"Select all" : "Chọn tất cả",
diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json
index 38e0e1c3846..285c0e39240 100644
--- a/apps/files/l10n/vi.json
+++ b/apps/files/l10n/vi.json
@@ -29,16 +29,16 @@
"Upload cancelled." : "Hủy tải lên",
"Could not get result from server." : "Không thể nhận được kết quả từ máy chủ.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Tập tin tải lên đang được xử lý. Nếu bạn rời khỏi trang bây giờ sẽ hủy quá trình này.",
- "{new_name} already exists" : "{new_name} đã tồn tại",
- "Could not create file" : "Không thể tạo file",
- "Could not create folder" : "Không thể tạo thư mục",
"Actions" : "Actions",
"Download" : "Tải về",
"Select" : "Chọn",
"Pending" : "Đang chờ",
"Error moving file" : "Lỗi di chuyển tập tin",
"Error" : "Lỗi",
+ "{new_name} already exists" : "{new_name} đã tồn tại",
"Could not rename file" : "Không thể đổi tên file",
+ "Could not create file" : "Không thể tạo file",
+ "Could not create folder" : "Không thể tạo thư mục",
"Error deleting file." : "Lỗi xóa file,",
"Name" : "Tên",
"Size" : "Kích cỡ",
@@ -48,10 +48,15 @@
"{dirs} and {files}" : "{dirs} và {files}",
"You don’t have permission to upload or create files here" : "Bạn không có quyền upload hoặc tạo files ở đây",
"_Uploading %n file_::_Uploading %n files_" : ["Đang tải lên %n tập tin"],
+ "New" : "Tạo mới",
"File name cannot be empty." : "Tên file không được rỗng",
"Your storage is full, files can not be updated or synced anymore!" : "Your storage is full, files can not be updated or synced anymore!",
"Your storage is almost full ({usedSpacePercent}%)" : "Your storage is almost full ({usedSpacePercent}%)",
"Favorite" : "Ưu thích",
+ "Upload" : "Tải lên",
+ "Text file" : "Tập tin văn bản",
+ "Folder" : "Thư mục",
+ "New folder" : "Tạo thư mục",
"%s could not be renamed" : "%s không thể đổi tên",
"File handling" : "Xử lý tập tin",
"Maximum upload size" : "Kích thước tối đa ",
@@ -59,12 +64,6 @@
"Save" : "Lưu",
"Settings" : "Cài đặt",
"WebDAV" : "WebDAV",
- "New" : "Tạo mới",
- "New text file" : "File text mới",
- "Text file" : "Tập tin văn bản",
- "New folder" : "Tạo thư mục",
- "Folder" : "Thư mục",
- "Upload" : "Tải lên",
"Cancel upload" : "Hủy upload",
"No entries found in this folder" : "Chưa có mục nào trong thư mục",
"Select all" : "Chọn tất cả",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 9633e2961a9..84b31368a14 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "上传已取消",
"Could not get result from server." : "不能从服务器得到结果",
"File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。",
- "{new_name} already exists" : "{new_name} 已存在",
- "Could not create file" : "不能创建文件",
- "Could not create folder" : "不能创建文件夹",
"Actions" : "动作",
"Download" : "下载",
"Select" : "选择",
@@ -49,7 +46,10 @@ OC.L10N.register(
"Error moving file." : "移动文件出错。",
"Error moving file" : "移动文件错误",
"Error" : "错误",
+ "{new_name} already exists" : "{new_name} 已存在",
"Could not rename file" : "不能重命名文件",
+ "Could not create file" : "不能创建文件",
+ "Could not create folder" : "不能创建文件夹",
"Error deleting file." : "删除文件出错。",
"No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”",
"Name" : "名称",
@@ -60,6 +60,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} 和 {files}",
"You don’t have permission to upload or create files here" : "您没有权限来上传湖州哦和创建文件",
"_Uploading %n file_::_Uploading %n files_" : ["上传 %n 个文件"],
+ "New" : "新建",
"\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
"File name cannot be empty." : "文件名不能为空。",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满,文件将无法更新或同步!",
@@ -71,6 +72,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n 字节"],
"Favorited" : "已收藏",
"Favorite" : "收藏",
+ "Upload" : "上传",
+ "Text file" : "文本文件",
+ "Folder" : "文件夹",
+ "New folder" : "增加文件夹",
"An error occurred while trying to update the tags" : "更新标签时出错",
"A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
"A file or folder has been <strong>changed</strong>" : "一个文件或文件夹已被<strong>修改</strong>",
@@ -98,12 +103,6 @@ OC.L10N.register(
"Settings" : "设置",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\">通过 WebDAV 访问您的文件</a>",
- "New" : "新建",
- "New text file" : "创建文本文件",
- "Text file" : "文本文件",
- "New folder" : "增加文件夹",
- "Folder" : "文件夹",
- "Upload" : "上传",
"Cancel upload" : "取消上传",
"No files in here" : "无文件",
"Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index b803908729f..4d9a3737a98 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "上传已取消",
"Could not get result from server." : "不能从服务器得到结果",
"File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。",
- "{new_name} already exists" : "{new_name} 已存在",
- "Could not create file" : "不能创建文件",
- "Could not create folder" : "不能创建文件夹",
"Actions" : "动作",
"Download" : "下载",
"Select" : "选择",
@@ -47,7 +44,10 @@
"Error moving file." : "移动文件出错。",
"Error moving file" : "移动文件错误",
"Error" : "错误",
+ "{new_name} already exists" : "{new_name} 已存在",
"Could not rename file" : "不能重命名文件",
+ "Could not create file" : "不能创建文件",
+ "Could not create folder" : "不能创建文件夹",
"Error deleting file." : "删除文件出错。",
"No entries in this folder match '{filter}'" : "此文件夹中无项目匹配“{filter}”",
"Name" : "名称",
@@ -58,6 +58,7 @@
"{dirs} and {files}" : "{dirs} 和 {files}",
"You don’t have permission to upload or create files here" : "您没有权限来上传湖州哦和创建文件",
"_Uploading %n file_::_Uploading %n files_" : ["上传 %n 个文件"],
+ "New" : "新建",
"\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。",
"File name cannot be empty." : "文件名不能为空。",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的存储空间已满,文件将无法更新或同步!",
@@ -69,6 +70,10 @@
"_%n byte_::_%n bytes_" : ["%n 字节"],
"Favorited" : "已收藏",
"Favorite" : "收藏",
+ "Upload" : "上传",
+ "Text file" : "文本文件",
+ "Folder" : "文件夹",
+ "New folder" : "增加文件夹",
"An error occurred while trying to update the tags" : "更新标签时出错",
"A new file or folder has been <strong>created</strong>" : "一个新的文件或文件夹已被<strong>创建</strong>",
"A file or folder has been <strong>changed</strong>" : "一个文件或文件夹已被<strong>修改</strong>",
@@ -96,12 +101,6 @@
"Settings" : "设置",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\">通过 WebDAV 访问您的文件</a>",
- "New" : "新建",
- "New text file" : "创建文本文件",
- "Text file" : "文本文件",
- "New folder" : "增加文件夹",
- "Folder" : "文件夹",
- "Upload" : "上传",
"Cancel upload" : "取消上传",
"No files in here" : "无文件",
"Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!",
diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js
index 02193710b4e..94f4397f23b 100644
--- a/apps/files/l10n/zh_HK.js
+++ b/apps/files/l10n/zh_HK.js
@@ -11,6 +11,10 @@ OC.L10N.register(
"Name" : "名稱",
"Size" : "大小",
"{dirs} and {files}" : "{dirs} 和 {files}",
+ "New" : "新增",
+ "Upload" : "上戴",
+ "Folder" : "資料夾",
+ "New folder" : "新資料夾",
"A new file or folder has been <strong>created</strong>" : "新檔案或資料夾已被 <strong> 新增 </strong>",
"A file or folder has been <strong>changed</strong>" : "檔案或資料夾已被 <strong> 變成 </strong>",
"A file or folder has been <strong>deleted</strong>" : "新檔案或資料夾已被 <strong> 刪除 </strong>",
@@ -23,10 +27,6 @@ OC.L10N.register(
"Save" : "儲存",
"Settings" : "設定",
"WebDAV" : "WebDAV",
- "New" : "新增",
- "New folder" : "新資料夾",
- "Folder" : "資料夾",
- "Upload" : "上戴",
"Cancel upload" : "取消上戴",
"Delete" : "刪除"
},
diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json
index 23f24afa0a6..63716aca559 100644
--- a/apps/files/l10n/zh_HK.json
+++ b/apps/files/l10n/zh_HK.json
@@ -9,6 +9,10 @@
"Name" : "名稱",
"Size" : "大小",
"{dirs} and {files}" : "{dirs} 和 {files}",
+ "New" : "新增",
+ "Upload" : "上戴",
+ "Folder" : "資料夾",
+ "New folder" : "新資料夾",
"A new file or folder has been <strong>created</strong>" : "新檔案或資料夾已被 <strong> 新增 </strong>",
"A file or folder has been <strong>changed</strong>" : "檔案或資料夾已被 <strong> 變成 </strong>",
"A file or folder has been <strong>deleted</strong>" : "新檔案或資料夾已被 <strong> 刪除 </strong>",
@@ -21,10 +25,6 @@
"Save" : "儲存",
"Settings" : "設定",
"WebDAV" : "WebDAV",
- "New" : "新增",
- "New folder" : "新資料夾",
- "Folder" : "資料夾",
- "Upload" : "上戴",
"Cancel upload" : "取消上戴",
"Delete" : "刪除"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index eeefcd95884..7c013533e2a 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -36,9 +36,6 @@ OC.L10N.register(
"Upload cancelled." : "上傳已取消",
"Could not get result from server." : "無法從伺服器取回結果",
"File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳。",
- "{new_name} already exists" : "{new_name} 已經存在",
- "Could not create file" : "無法建立檔案",
- "Could not create folder" : "無法建立資料夾",
"Actions" : "動作",
"Download" : "下載",
"Select" : "選擇",
@@ -48,7 +45,10 @@ OC.L10N.register(
"Error moving file." : "移動檔案發生錯誤",
"Error moving file" : "移動檔案失敗",
"Error" : "錯誤",
+ "{new_name} already exists" : "{new_name} 已經存在",
"Could not rename file" : "無法重新命名",
+ "Could not create file" : "無法建立檔案",
+ "Could not create folder" : "無法建立資料夾",
"Error deleting file." : "刪除檔案發生錯誤",
"No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符",
"Name" : "名稱",
@@ -59,6 +59,7 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} 和 {files}",
"You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案",
"_Uploading %n file_::_Uploading %n files_" : ["%n 個檔案正在上傳"],
+ "New" : "新增",
"\"{name}\" is an invalid file name." : "{name} 是無效的檔名",
"File name cannot be empty." : "檔名不能為空",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的儲存空間已滿,沒有辦法再更新或是同步檔案!",
@@ -69,6 +70,10 @@ OC.L10N.register(
"_%n byte_::_%n bytes_" : ["%n 位元組"],
"Favorited" : "已加入最愛",
"Favorite" : "我的最愛",
+ "Upload" : "上傳",
+ "Text file" : "文字檔",
+ "Folder" : "資料夾",
+ "New folder" : "新資料夾",
"An error occurred while trying to update the tags" : "更新標籤時發生錯誤",
"A new file or folder has been <strong>created</strong>" : "新的檔案或目錄已被 <strong>建立</strong>",
"A file or folder has been <strong>changed</strong>" : "檔案或目錄已被 <strong>變更</strong>",
@@ -93,12 +98,6 @@ OC.L10N.register(
"Settings" : "設定",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用這個地址<a href=\"%s\" target=\"_blank\">來透過 WebDAV 存取檔案</a>",
- "New" : "新增",
- "New text file" : "新文字檔",
- "Text file" : "文字檔",
- "New folder" : "新資料夾",
- "Folder" : "資料夾",
- "Upload" : "上傳",
"Cancel upload" : "取消上傳",
"No files in here" : "沒有任何檔案",
"Upload some content or sync with your devices!" : "在您的裝置中同步或上傳一些內容",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index 84af9fae39e..9d1aec9e4f2 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -34,9 +34,6 @@
"Upload cancelled." : "上傳已取消",
"Could not get result from server." : "無法從伺服器取回結果",
"File upload is in progress. Leaving the page now will cancel the upload." : "檔案上傳中,離開此頁面將會取消上傳。",
- "{new_name} already exists" : "{new_name} 已經存在",
- "Could not create file" : "無法建立檔案",
- "Could not create folder" : "無法建立資料夾",
"Actions" : "動作",
"Download" : "下載",
"Select" : "選擇",
@@ -46,7 +43,10 @@
"Error moving file." : "移動檔案發生錯誤",
"Error moving file" : "移動檔案失敗",
"Error" : "錯誤",
+ "{new_name} already exists" : "{new_name} 已經存在",
"Could not rename file" : "無法重新命名",
+ "Could not create file" : "無法建立檔案",
+ "Could not create folder" : "無法建立資料夾",
"Error deleting file." : "刪除檔案發生錯誤",
"No entries in this folder match '{filter}'" : "在此資料夾中沒有項目與 '{filter}' 相符",
"Name" : "名稱",
@@ -57,6 +57,7 @@
"{dirs} and {files}" : "{dirs} 和 {files}",
"You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案",
"_Uploading %n file_::_Uploading %n files_" : ["%n 個檔案正在上傳"],
+ "New" : "新增",
"\"{name}\" is an invalid file name." : "{name} 是無效的檔名",
"File name cannot be empty." : "檔名不能為空",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} 的儲存空間已滿,沒有辦法再更新或是同步檔案!",
@@ -67,6 +68,10 @@
"_%n byte_::_%n bytes_" : ["%n 位元組"],
"Favorited" : "已加入最愛",
"Favorite" : "我的最愛",
+ "Upload" : "上傳",
+ "Text file" : "文字檔",
+ "Folder" : "資料夾",
+ "New folder" : "新資料夾",
"An error occurred while trying to update the tags" : "更新標籤時發生錯誤",
"A new file or folder has been <strong>created</strong>" : "新的檔案或目錄已被 <strong>建立</strong>",
"A file or folder has been <strong>changed</strong>" : "檔案或目錄已被 <strong>變更</strong>",
@@ -91,12 +96,6 @@
"Settings" : "設定",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "使用這個地址<a href=\"%s\" target=\"_blank\">來透過 WebDAV 存取檔案</a>",
- "New" : "新增",
- "New text file" : "新文字檔",
- "Text file" : "文字檔",
- "New folder" : "新資料夾",
- "Folder" : "資料夾",
- "Upload" : "上傳",
"Cancel upload" : "取消上傳",
"No files in here" : "沒有任何檔案",
"Upload some content or sync with your devices!" : "在您的裝置中同步或上傳一些內容",
diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php
index 32651b261da..15af1970dc3 100644
--- a/apps/files/templates/list.php
+++ b/apps/files/templates/list.php
@@ -1,40 +1,16 @@
<div id="controls">
<div class="actions creatable hidden">
- <?php if(!isset($_['dirToken'])):?>
- <div id="new" class="button">
- <a><?php p($l->t('New'));?></a>
- <ul>
- <li class="icon-filetype-text svg"
- data-type="file" data-newname="<?php p($l->t('New text file')) ?>.txt">
- <p><?php p($l->t('Text file'));?></p>
- </li>
- <li class="icon-filetype-folder svg"
- data-type="folder" data-newname="<?php p($l->t('New folder')) ?>">
- <p><?php p($l->t('Folder'));?></p>
- </li>
- </ul>
- </div>
- <?php endif;?>
- <?php /* Note: the template attributes are here only for the public page. These are normally loaded
- through ajax instead (updateStorageStatistics).
- */ ?>
- <div id="upload" class="button"
+ <?php /*
+ Only show upload button for public page
+ */ ?>
+ <?php if(isset($_['dirToken'])):?>
+ <div id="upload" class="button upload"
title="<?php isset($_['uploadMaxHumanFilesize']) ? p($l->t('Upload (max. %s)', array($_['uploadMaxHumanFilesize']))) : '' ?>">
- <input type="hidden" id="max_upload" name="MAX_FILE_SIZE" value="<?php isset($_['uploadMaxFilesize']) ? p($_['uploadMaxFilesize']) : '' ?>">
- <input type="hidden" id="upload_limit" value="<?php isset($_['uploadLimit']) ? p($_['uploadLimit']) : '' ?>">
- <input type="hidden" id="free_space" value="<?php isset($_['freeSpace']) ? p($_['freeSpace']) : '' ?>">
- <?php if(isset($_['dirToken'])):?>
- <input type="hidden" id="publicUploadRequestToken" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
- <input type="hidden" id="dirToken" name="dirToken" value="<?php p($_['dirToken']) ?>" />
- <?php endif;?>
- <input type="hidden" class="max_human_file_size"
- value="(max <?php isset($_['uploadMaxHumanFilesize']) ? p($_['uploadMaxHumanFilesize']) : ''; ?>)">
- <input type="file" id="file_upload_start" name='files[]'
- data-url="<?php print_unescaped(OCP\Util::linkTo('files', 'ajax/upload.php')); ?>" />
<label for="file_upload_start" class="svg icon-upload">
<span class="hidden-visually"><?php p($l->t('Upload'))?></span>
</label>
</div>
+ <?php endif; ?>
<div id="uploadprogresswrapper">
<div id="uploadprogressbar"></div>
<button class="stop icon-close" style="display:none">
@@ -48,7 +24,19 @@
<div class="notCreatable notPublic hidden">
<?php p($l->t('You don’t have permission to upload or create files here'))?>
</div>
+ <?php /* Note: the template attributes are here only for the public page. These are normally loaded
+ through ajax instead (updateStorageStatistics).
+ */ ?>
<input type="hidden" name="permissions" value="" id="permissions">
+ <input type="hidden" id="max_upload" name="MAX_FILE_SIZE" value="<?php isset($_['uploadMaxFilesize']) ? p($_['uploadMaxFilesize']) : '' ?>">
+ <input type="hidden" id="upload_limit" value="<?php isset($_['uploadLimit']) ? p($_['uploadLimit']) : '' ?>">
+ <input type="hidden" id="free_space" value="<?php isset($_['freeSpace']) ? p($_['freeSpace']) : '' ?>">
+ <?php if(isset($_['dirToken'])):?>
+ <input type="hidden" id="publicUploadRequestToken" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
+ <input type="hidden" id="dirToken" name="dirToken" value="<?php p($_['dirToken']) ?>" />
+ <?php endif;?>
+ <input type="hidden" class="max_human_file_size"
+ value="(max <?php isset($_['uploadMaxHumanFilesize']) ? p($_['uploadMaxHumanFilesize']) : ''; ?>)">
</div>
<div id="emptycontent" class="hidden">
@@ -101,6 +89,10 @@
</tfoot>
</table>
<input type="hidden" name="dir" id="dir" value="" />
+<div class="hiddenuploadfield">
+ <input type="file" id="file_upload_start" class="hiddenuploadfield" name="files[]"
+ data-url="<?php print_unescaped(OCP\Util::linkTo('files', 'ajax/upload.php')); ?>" />
+</div>
<div id="editor"></div><!-- FIXME Do not use this div in your app! It is deprecated and will be removed in the future! -->
<div id="uploadsize-message" title="<?php p($l->t('Upload too large'))?>">
<p>
diff --git a/apps/files/tests/js/fileUploadSpec.js b/apps/files/tests/js/fileUploadSpec.js
index 817654c4fa9..cad8468d1c8 100644
--- a/apps/files/tests/js/fileUploadSpec.js
+++ b/apps/files/tests/js/fileUploadSpec.js
@@ -19,7 +19,6 @@
*
*/
-/* global OC */
describe('OC.Upload tests', function() {
var $dummyUploader;
var testFile;
@@ -118,54 +117,4 @@ describe('OC.Upload tests', function() {
);
});
});
- describe('New file', function() {
- var $input;
- var currentDirStub;
-
- beforeEach(function() {
- OC.Upload.init();
- $('#new>a').click();
- $('#new li[data-type=file]').click();
- $input = $('#new input[type=text]');
-
- currentDirStub = sinon.stub(FileList, 'getCurrentDirectory');
- currentDirStub.returns('testdir');
- });
- afterEach(function() {
- currentDirStub.restore();
- });
- it('sets default text in field', function() {
- expect($input.length).toEqual(1);
- expect($input.val()).toEqual('New text file.txt');
- });
- it('creates file when enter is pressed', function() {
- $input.val('somefile.txt');
- $input.trigger(new $.Event('keyup', {keyCode: 13}));
- $input.parent('form').submit();
- expect(fakeServer.requests.length).toEqual(2);
-
- var request = fakeServer.requests[1];
- expect(request.method).toEqual('POST');
- expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/newfile.php');
- var query = OC.parseQueryString(request.requestBody);
- expect(query).toEqual({
- dir: 'testdir',
- filename: 'somefile.txt'
- });
- });
- it('prevents entering invalid file names', function() {
- $input.val('..');
- $input.trigger(new $.Event('keyup', {keyCode: 13}));
- $input.parent('form').submit();
- expect(fakeServer.requests.length).toEqual(1);
- });
- it('prevents entering file names that already exist', function() {
- var inListStub = sinon.stub(FileList, 'inList').returns(true);
- $input.val('existing.txt');
- $input.trigger(new $.Event('keyup', {keyCode: 13}));
- $input.parent('form').submit();
- expect(fakeServer.requests.length).toEqual(1);
- inListStub.restore();
- });
- });
});
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index a6d72a88efd..c05e7c37214 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -2157,6 +2157,93 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.$fileList.find('tr').length).toEqual(5);
});
});
+ describe('create file', function() {
+ var deferredCreate;
+
+ beforeEach(function() {
+ deferredCreate = $.Deferred();
+ });
+
+ it('creates file with given name and adds it to the list', function() {
+ var deferred = fileList.createFile('test file.txt');
+ var successStub = sinon.stub();
+ var failureStub = sinon.stub();
+
+ deferred.done(successStub);
+ deferred.fail(failureStub);
+
+ expect(fakeServer.requests.length).toEqual(1);
+ expect(fakeServer.requests[0].url).toEqual(OC.generateUrl('/apps/files/ajax/newfile.php'));
+
+ var query = fakeServer.requests[0].requestBody;
+ expect(OC.parseQueryString(query)).toEqual({
+ dir: '/subdir',
+ filename: 'test file.txt'
+ });
+
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({
+ status: 'success',
+ data: {
+ path: '/subdir',
+ name: 'test file.txt',
+ mimetype: 'text/plain'
+ }
+ })
+ );
+
+ var $tr = fileList.findFileEl('test file.txt');
+ expect($tr.length).toEqual(1);
+ expect($tr.attr('data-mime')).toEqual('text/plain');
+
+ expect(successStub.calledOnce).toEqual(true);
+ expect(failureStub.notCalled).toEqual(true);
+ });
+ // TODO: error cases
+ // TODO: unique name cases
+ });
+ describe('create directory', function() {
+ it('creates directory with given name and adds it to the list', function() {
+ var deferred = fileList.createDirectory('test directory');
+ var successStub = sinon.stub();
+ var failureStub = sinon.stub();
+
+ deferred.done(successStub);
+ deferred.fail(failureStub);
+
+ expect(fakeServer.requests.length).toEqual(1);
+ expect(fakeServer.requests[0].url).toEqual(OC.generateUrl('/apps/files/ajax/newfolder.php'));
+ var query = fakeServer.requests[0].requestBody;
+ expect(OC.parseQueryString(query)).toEqual({
+ dir: '/subdir',
+ foldername: 'test directory'
+ });
+
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({
+ status: 'success',
+ data: {
+ path: '/subdir',
+ name: 'test directory',
+ mimetype: 'httpd/unix-directory'
+ }
+ })
+ );
+
+ var $tr = fileList.findFileEl('test directory');
+ expect($tr.length).toEqual(1);
+ expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
+
+ expect(successStub.calledOnce).toEqual(true);
+ expect(failureStub.notCalled).toEqual(true);
+ });
+ // TODO: error cases
+ // TODO: unique name cases
+ });
/**
* Test upload mostly by testing the code inside the event handlers
* that were registered on the magic upload object
@@ -2359,4 +2446,36 @@ describe('OCA.Files.FileList tests', function() {
expect(fileInfo.type).toEqual('file');
});
});
+ describe('new file menu', function() {
+ var newFileMenuStub;
+
+ beforeEach(function() {
+ newFileMenuStub = sinon.stub(OCA.Files.NewFileMenu.prototype, 'showAt');
+ });
+ afterEach(function() {
+ newFileMenuStub.restore();
+ })
+ it('renders new button when no legacy upload button exists', function() {
+ expect(fileList.$el.find('.button.upload').length).toEqual(0);
+ expect(fileList.$el.find('.button.new').length).toEqual(1);
+ });
+ it('does not render new button when no legacy upload button exists (public page)', function() {
+ fileList.destroy();
+ $('#controls').append('<input type="button" class="button upload" />');
+ fileList = new OCA.Files.FileList($('#app-content-files'));
+ expect(fileList.$el.find('.button.upload').length).toEqual(1);
+ expect(fileList.$el.find('.button.new').length).toEqual(0);
+ });
+ it('opens the new file menu when clicking on the "New" button', function() {
+ var $button = fileList.$el.find('.button.new');
+ $button.click();
+ expect(newFileMenuStub.calledOnce).toEqual(true);
+ });
+ it('does not open the new file menu when button is disabled', function() {
+ var $button = fileList.$el.find('.button.new');
+ $button.addClass('disabled');
+ $button.click();
+ expect(newFileMenuStub.notCalled).toEqual(true);
+ });
+ });
});
diff --git a/apps/files/tests/js/newfilemenuSpec.js b/apps/files/tests/js/newfilemenuSpec.js
new file mode 100644
index 00000000000..3d89a997eb2
--- /dev/null
+++ b/apps/files/tests/js/newfilemenuSpec.js
@@ -0,0 +1,119 @@
+/**
+* ownCloud
+*
+* @author Vincent Petry
+* @copyright 2015 Vincent Petry <pvince81@owncloud.com>
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Affero General Public
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+describe('OCA.Files.NewFileMenu', function() {
+ var FileList = OCA.Files.FileList;
+ var menu, fileList, $uploadField, $trigger;
+
+ beforeEach(function() {
+ // dummy upload button
+ var $container = $('<div id="app-content-files"></div>');
+ $uploadField = $('<input id="file_upload_start"></input>');
+ $trigger = $('<a href="#">Menu</a>');
+ $container.append($uploadField).append($trigger);
+ $('#testArea').append($container);
+
+ fileList = new FileList($container);
+ menu = new OCA.Files.NewFileMenu({
+ fileList: fileList
+ });
+ menu.showAt($trigger);
+ });
+ afterEach(function() {
+ OC.hideMenus();
+ fileList = null;
+ menu = null;
+ });
+
+ describe('rendering', function() {
+ it('renders menu items', function() {
+ var $items = menu.$el.find('.menuitem');
+ expect($items.length).toEqual(3);
+ // label points to the file_upload_start item
+ var $item = $items.eq(0);
+ expect($item.is('label')).toEqual(true);
+ expect($item.attr('for')).toEqual('file_upload_start');
+ });
+ });
+ describe('New file/folder', function() {
+ var $input;
+ var createFileStub;
+ var createDirectoryStub;
+
+ beforeEach(function() {
+ createFileStub = sinon.stub(FileList.prototype, 'createFile');
+ createDirectoryStub = sinon.stub(FileList.prototype, 'createDirectory');
+ menu.$el.find('.menuitem').eq(1).click();
+ $input = menu.$el.find('form.filenameform input');
+ });
+ afterEach(function() {
+ createFileStub.restore();
+ createDirectoryStub.restore();
+ });
+
+ it('sets default text in field', function() {
+ expect($input.length).toEqual(1);
+ expect($input.val()).toEqual('New text file.txt');
+ });
+ it('creates file when enter is pressed', function() {
+ $input.val('somefile.txt');
+ $input.trigger(new $.Event('keyup', {keyCode: 13}));
+ $input.parent('form').submit();
+
+ expect(createFileStub.calledOnce).toEqual(true);
+ expect(createFileStub.getCall(0).args[0]).toEqual('somefile.txt');
+ expect(createDirectoryStub.notCalled).toEqual(true);
+ });
+ it('prevents entering invalid file names', function() {
+ $input.val('..');
+ $input.trigger(new $.Event('keyup', {keyCode: 13}));
+ $input.closest('form').submit();
+
+ expect(createFileStub.notCalled).toEqual(true);
+ expect(createDirectoryStub.notCalled).toEqual(true);
+ });
+ it('prevents entering file names that already exist', function() {
+ var inListStub = sinon.stub(fileList, 'inList').returns(true);
+ $input.val('existing.txt');
+ $input.trigger(new $.Event('keyup', {keyCode: 13}));
+ $input.closest('form').submit();
+
+ expect(createFileStub.notCalled).toEqual(true);
+ expect(createDirectoryStub.notCalled).toEqual(true);
+ inListStub.restore();
+ });
+ it('switching fields removes the previous form', function() {
+ menu.$el.find('.menuitem').eq(2).click();
+ expect(menu.$el.find('form').length).toEqual(1);
+ });
+ it('creates directory when clicking on create directory field', function() {
+ menu.$el.find('.menuitem').eq(2).click();
+ $input = menu.$el.find('form.filenameform input');
+ $input.val('some folder');
+ $input.trigger(new $.Event('keyup', {keyCode: 13}));
+ $input.closest('form').submit();
+
+ expect(createDirectoryStub.calledOnce).toEqual(true);
+ expect(createDirectoryStub.getCall(0).args[0]).toEqual('some folder');
+ expect(createFileStub.notCalled).toEqual(true);
+ });
+ });
+});
diff --git a/apps/files/tests/js/tagspluginspec.js b/apps/files/tests/js/tagspluginspec.js
index 5309973cf4f..533aa63362c 100644
--- a/apps/files/tests/js/tagspluginspec.js
+++ b/apps/files/tests/js/tagspluginspec.js
@@ -79,12 +79,12 @@ describe('OCA.Files.TagsPlugin tests', function() {
it('sends request to server and updates icon', function() {
var request;
fileList.setFiles(testFiles);
- $tr = fileList.$el.find('tbody tr:first');
- $action = $tr.find('.action-favorite');
+ var $tr = fileList.findFileEl('One.txt');
+ var $action = $tr.find('.action-favorite');
$action.click();
expect(fakeServer.requests.length).toEqual(1);
- var request = fakeServer.requests[0];
+ request = fakeServer.requests[0];
expect(JSON.parse(request.requestBody)).toEqual({
tags: ['tag1', 'tag2', OC.TAG_FAVORITE]
});
@@ -92,12 +92,18 @@ describe('OCA.Files.TagsPlugin tests', function() {
tags: ['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]
}));
+ // re-read the element as it was re-inserted
+ $tr = fileList.findFileEl('One.txt');
+ $action = $tr.find('.action-favorite');
+
expect($tr.attr('data-favorite')).toEqual('true');
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3', OC.TAG_FAVORITE]);
expect($action.find('img').attr('src')).toEqual(OC.imagePath('core', 'actions/starred'));
$action.click();
+
+ expect(fakeServer.requests.length).toEqual(2);
request = fakeServer.requests[1];
expect(JSON.parse(request.requestBody)).toEqual({
tags: ['tag1', 'tag2', 'tag3']
@@ -106,10 +112,29 @@ describe('OCA.Files.TagsPlugin tests', function() {
tags: ['tag1', 'tag2', 'tag3']
}));
- expect($tr.attr('data-favorite')).toEqual('false');
+ // re-read the element as it was re-inserted
+ $tr = fileList.findFileEl('One.txt');
+ $action = $tr.find('.action-favorite');
+
+ expect($tr.attr('data-favorite')).toBeFalsy();
expect($tr.attr('data-tags').split('|')).toEqual(['tag1', 'tag2', 'tag3']);
expect(fileList.files[0].tags).toEqual(['tag1', 'tag2', 'tag3']);
expect($action.find('img').attr('src')).toEqual(OC.imagePath('core', 'actions/star'));
});
});
+ describe('elementToFile', function() {
+ it('returns tags', function() {
+ fileList.setFiles(testFiles);
+ var $tr = fileList.findFileEl('One.txt');
+ var data = fileList.elementToFile($tr);
+ expect(data.tags).toEqual(['tag1', 'tag2']);
+ });
+ it('returns empty array when no tags present', function() {
+ delete testFiles[0].tags;
+ fileList.setFiles(testFiles);
+ var $tr = fileList.findFileEl('One.txt');
+ var data = fileList.elementToFile($tr);
+ expect(data.tags).toEqual([]);
+ });
+ });
});
diff --git a/apps/files_external/appinfo/application.php b/apps/files_external/appinfo/application.php
index 1e43c737408..aa9e4fd913e 100644
--- a/apps/files_external/appinfo/application.php
+++ b/apps/files_external/appinfo/application.php
@@ -50,6 +50,11 @@ class Application extends App {
$this->loadBackends();
$this->loadAuthMechanisms();
+
+ // app developers: do NOT depend on this! it will disappear with oC 9.0!
+ \OC::$server->getEventDispatcher()->dispatch(
+ 'OCA\\Files_External::loadAdditionalBackends'
+ );
}
/**
diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index b542fe63d64..bf9981adabf 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -756,6 +756,13 @@ MountConfigListView.prototype = _.extend({
$tr.append(priorityEl);
$td.children().not('[type=hidden]').first().focus();
+ // FIXME default backend mount options
+ $tr.find('input.mountOptions').val(JSON.stringify({
+ 'encrypt': true,
+ 'previews': true,
+ 'filesystem_check_changes': 1
+ }));
+
$tr.find('td').last().attr('class', 'remove');
$tr.find('td.mountOptionsToggle').removeClass('hidden');
$tr.find('td').last().removeAttr('style');
diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js
index b39eef71eaa..ab352880b7c 100644
--- a/apps/files_external/l10n/cs_CZ.js
+++ b/apps/files_external/l10n/cs_CZ.js
@@ -1,6 +1,9 @@
OC.L10N.register(
"files_external",
{
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Získání přístupových tokenů selhalo. Ověřte že klíč aplikace a tajné heslo jsou správné.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Získání přístupových tokenů selhalo. Ověřte že klíč aplikace a tajné heslo jsou správné.",
+ "Please provide a valid app key and secret." : "Zadejte prosím platný klíč a tajné heslo aplikace.",
"Step 1 failed. Exception: %s" : "Selhal krok 1. Výjimka: %s",
"Step 2 failed. Exception: %s" : "Selhal krok 2. Výjimka: %s",
"External storage" : "Externí úložiště",
@@ -22,12 +25,15 @@ OC.L10N.register(
"SFTP with secret key login" : "SFTP login s tajným klíčem",
"Public key" : "Veřejný klíč",
"Storage with id \"%i\" not found" : "Úložiště s id \"%i\" nebylo nalezeno",
+ "Invalid backend or authentication mechanism class" : "Neplatný backend nebo třída ověřovacího mechanismu",
"Invalid mount point" : "Neplatný přípojný bod",
"Invalid storage backend \"%s\"" : "Neplatná služba úložiště \"%s\"",
"Personal" : "Osobní",
"System" : "Systém",
"Grant access" : "Povolit přístup",
"Access granted" : "Přístup povolen",
+ "Error configuring OAuth1" : "Chyba nastavení OAuth1",
+ "Error configuring OAuth2" : "Chyba nastavení OAuth2",
"Enable encryption" : "Povolit šifrování",
"Enable previews" : "Povolit náhledy",
"Check for changes" : "Zkontrolovat změny",
@@ -39,12 +45,18 @@ OC.L10N.register(
"Saved" : "Uloženo",
"Generate keys" : "Vytvořit klíče",
"Error generating key pair" : "Chyba při vytváření páru klíčů",
+ "Access key" : "Přístupový klíč",
+ "Secret key" : "Tajný klíč",
"None" : "Žádné",
+ "OAuth1" : "OAuth1",
"App key" : "Klíč aplikace",
"App secret" : "Tajemství aplikace",
+ "OAuth2" : "OAuth2",
"Client ID" : "Klientské ID",
"Client secret" : "Klientské tajemství",
+ "Username and password" : "Uživatelské jméno a heslo",
"Password" : "Heslo",
+ "Session credentials" : "Přihlašovací údaje sezení",
"Amazon S3" : "Amazon S3",
"Hostname" : "Hostname",
"Port" : "Port",
@@ -55,11 +67,15 @@ OC.L10N.register(
"URL" : "URL",
"Secure https://" : "Zabezpečené https://",
"Dropbox" : "Dropbox",
+ "FTP" : "FTP",
"Secure ftps://" : "Zabezpečené ftps://",
+ "Google Drive" : "Google Drive",
"Local" : "Místní",
"Location" : "Umístění",
"ownCloud" : "ownCloud",
+ "SFTP" : "SFTP",
"Root" : "Kořen",
+ "SMB / CIFS" : "SMB / CIFS",
"<b>Note:</b> " : "<b>Poznámka:</b>",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> cURL podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> FTP podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
@@ -71,6 +87,7 @@ OC.L10N.register(
"Scope" : "Rozsah",
"External Storage" : "Externí úložiště",
"Folder name" : "Název složky",
+ "Authentication" : "Ověření",
"Configuration" : "Nastavení",
"Available for" : "Dostupné pro",
"Advanced settings" : "Pokročilá nastavení",
diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json
index c014da7976f..03afeb48b8e 100644
--- a/apps/files_external/l10n/cs_CZ.json
+++ b/apps/files_external/l10n/cs_CZ.json
@@ -1,4 +1,7 @@
{ "translations": {
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Získání přístupových tokenů selhalo. Ověřte že klíč aplikace a tajné heslo jsou správné.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Získání přístupových tokenů selhalo. Ověřte že klíč aplikace a tajné heslo jsou správné.",
+ "Please provide a valid app key and secret." : "Zadejte prosím platný klíč a tajné heslo aplikace.",
"Step 1 failed. Exception: %s" : "Selhal krok 1. Výjimka: %s",
"Step 2 failed. Exception: %s" : "Selhal krok 2. Výjimka: %s",
"External storage" : "Externí úložiště",
@@ -20,12 +23,15 @@
"SFTP with secret key login" : "SFTP login s tajným klíčem",
"Public key" : "Veřejný klíč",
"Storage with id \"%i\" not found" : "Úložiště s id \"%i\" nebylo nalezeno",
+ "Invalid backend or authentication mechanism class" : "Neplatný backend nebo třída ověřovacího mechanismu",
"Invalid mount point" : "Neplatný přípojný bod",
"Invalid storage backend \"%s\"" : "Neplatná služba úložiště \"%s\"",
"Personal" : "Osobní",
"System" : "Systém",
"Grant access" : "Povolit přístup",
"Access granted" : "Přístup povolen",
+ "Error configuring OAuth1" : "Chyba nastavení OAuth1",
+ "Error configuring OAuth2" : "Chyba nastavení OAuth2",
"Enable encryption" : "Povolit šifrování",
"Enable previews" : "Povolit náhledy",
"Check for changes" : "Zkontrolovat změny",
@@ -37,12 +43,18 @@
"Saved" : "Uloženo",
"Generate keys" : "Vytvořit klíče",
"Error generating key pair" : "Chyba při vytváření páru klíčů",
+ "Access key" : "Přístupový klíč",
+ "Secret key" : "Tajný klíč",
"None" : "Žádné",
+ "OAuth1" : "OAuth1",
"App key" : "Klíč aplikace",
"App secret" : "Tajemství aplikace",
+ "OAuth2" : "OAuth2",
"Client ID" : "Klientské ID",
"Client secret" : "Klientské tajemství",
+ "Username and password" : "Uživatelské jméno a heslo",
"Password" : "Heslo",
+ "Session credentials" : "Přihlašovací údaje sezení",
"Amazon S3" : "Amazon S3",
"Hostname" : "Hostname",
"Port" : "Port",
@@ -53,11 +65,15 @@
"URL" : "URL",
"Secure https://" : "Zabezpečené https://",
"Dropbox" : "Dropbox",
+ "FTP" : "FTP",
"Secure ftps://" : "Zabezpečené ftps://",
+ "Google Drive" : "Google Drive",
"Local" : "Místní",
"Location" : "Umístění",
"ownCloud" : "ownCloud",
+ "SFTP" : "SFTP",
"Root" : "Kořen",
+ "SMB / CIFS" : "SMB / CIFS",
"<b>Note:</b> " : "<b>Poznámka:</b>",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> cURL podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> FTP podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
@@ -69,6 +85,7 @@
"Scope" : "Rozsah",
"External Storage" : "Externí úložiště",
"Folder name" : "Název složky",
+ "Authentication" : "Ověření",
"Configuration" : "Nastavení",
"Available for" : "Dostupné pro",
"Advanced settings" : "Pokročilá nastavení",
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index 42944b2f2fb..8ac5b1a4466 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -27,13 +27,17 @@ OC.L10N.register(
"Storage with id \"%i\" not found" : "Stockage avec l'id \"%i\" non trouvé",
"Invalid backend or authentication mechanism class" : "Système de stockage ou méthode d'authentification non valable",
"Invalid mount point" : "Point de montage non valide",
+ "Objectstore forbidden" : "\"Objectstore\" interdit",
"Invalid storage backend \"%s\"" : "Service de stockage non valide : \"%s\"",
+ "Unsatisfied backend parameters" : "Paramètres manquants pour le service",
"Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification",
"Admin-only storage backend \"%s\"" : "Service de stockage \"%s\" pour admins seulement",
"Personal" : "Personnel",
"System" : "Système",
"Grant access" : "Autoriser l'accès",
"Access granted" : "Accès autorisé",
+ "Error configuring OAuth1" : "Erreur lors de la configuration de OAuth1",
+ "Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2",
"Enable encryption" : "Activer le chiffrement",
"Enable previews" : "Activer les prévisualisations",
"Check for changes" : "Rechercher les modifications",
@@ -45,6 +49,9 @@ OC.L10N.register(
"Saved" : "Sauvegardé",
"Generate keys" : "Générer des clés",
"Error generating key pair" : "Erreur lors de la génération des clés",
+ "Access key" : "Clé d'accès",
+ "Secret key" : "Clé secrète",
+ "Builtin" : "inclus",
"None" : "Aucun",
"OAuth1" : "OAuth1",
"App key" : "App key",
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index ffc2de0ef53..67b8932202f 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -25,13 +25,17 @@
"Storage with id \"%i\" not found" : "Stockage avec l'id \"%i\" non trouvé",
"Invalid backend or authentication mechanism class" : "Système de stockage ou méthode d'authentification non valable",
"Invalid mount point" : "Point de montage non valide",
+ "Objectstore forbidden" : "\"Objectstore\" interdit",
"Invalid storage backend \"%s\"" : "Service de stockage non valide : \"%s\"",
+ "Unsatisfied backend parameters" : "Paramètres manquants pour le service",
"Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification",
"Admin-only storage backend \"%s\"" : "Service de stockage \"%s\" pour admins seulement",
"Personal" : "Personnel",
"System" : "Système",
"Grant access" : "Autoriser l'accès",
"Access granted" : "Accès autorisé",
+ "Error configuring OAuth1" : "Erreur lors de la configuration de OAuth1",
+ "Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2",
"Enable encryption" : "Activer le chiffrement",
"Enable previews" : "Activer les prévisualisations",
"Check for changes" : "Rechercher les modifications",
@@ -43,6 +47,9 @@
"Saved" : "Sauvegardé",
"Generate keys" : "Générer des clés",
"Error generating key pair" : "Erreur lors de la génération des clés",
+ "Access key" : "Clé d'accès",
+ "Secret key" : "Clé secrète",
+ "Builtin" : "inclus",
"None" : "Aucun",
"OAuth1" : "OAuth1",
"App key" : "App key",
diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js
index 44c542d596c..182eb7f17f1 100644
--- a/apps/files_external/l10n/pt_PT.js
+++ b/apps/files_external/l10n/pt_PT.js
@@ -1,6 +1,9 @@
OC.L10N.register(
"files_external",
{
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Não foi possível obter as senhas solicitadas. Verifique se o código e o segredo da sua app estão corretos.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Não foi possível obter as senhas de acesso. Verifique se o código e o segredo da sua app estão corretos.",
+ "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.",
"Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s",
"Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s",
"External storage" : "Armazenamento Externo",
@@ -10,34 +13,50 @@ OC.L10N.register(
"Region (optional for OpenStack Object Storage)" : "Região (opcional para OpenStack Object Storage)",
"API Key (required for Rackspace Cloud Files)" : "Chave API (necessário para Rackspace Cloud File)",
"Tenantname (required for OpenStack Object Storage)" : "Nome do Serviço (necessário para OpenStack Object Storage)",
- "Password (required for OpenStack Object Storage)" : "Senha (necessária para OpenStack Object Storage)",
+ "Password (required for OpenStack Object Storage)" : "Palavra-passe (necessária para OpenStack Object Storage)",
"Service Name (required for OpenStack Object Storage)" : "Nome do Serviço (necessário para OpenStack Object Storage)",
"URL of identity endpoint (required for OpenStack Object Storage)" : "Nome do Serviço (necessário para OpenStack Object Storage)",
- "Timeout of HTTP requests in seconds" : "Timeout de pedidos HTTP em segundos",
+ "Timeout of HTTP requests in seconds" : "Expiração de pedidos HTTP em segundos",
"SMB / CIFS using OC login" : "SMB / CIFS utilizando o início de sessão OC",
"Host" : "Anfitrião",
- "Username as share" : "Utilizar nome de utilizador como partilha",
+ "Username as share" : "Nome de utilizador como partilha",
"Share" : "Compartilhar",
"Remote subfolder" : "Subpasta remota ",
"Public key" : "Chave pública",
- "Storage with id \"%i\" not found" : "Armazenamento com ID \"%i\" não encontrado",
+ "Storage with id \"%i\" not found" : "Não foi encontrado o armazenamento com a id. \"%i\"",
"Invalid mount point" : "Ponto de montagem inválido",
"Invalid storage backend \"%s\"" : "Backend de armazenamento inválido \"%s\"",
+ "Unsatisfied authentication mechanism parameters" : "Parâmetros do mecanismo de autenticação inválidos",
"Personal" : "Pessoal",
"System" : "Sistema",
"Grant access" : "Conceder acesso",
"Access granted" : "Acesso autorizado",
+ "Error configuring OAuth1" : "Erro de configuração OAuth1",
+ "Error configuring OAuth2" : "Erro de configuração OAuth2",
+ "Enable encryption" : "Ative a encriptação",
+ "Enable previews" : "Ative as pré-visualizações",
+ "Check for changes" : "Verifique as suas alterações",
+ "Never" : "Nunca",
+ "Once every direct access" : "Uma vez em cada acesso direto",
+ "Every time the filesystem is used" : "De todas as vezes que o sistema de ficheiros é usado",
"All users. Type to select user or group." : "Todos os utilizadores. Digite para selecionar o utilizador ou grupo.",
"(group)" : "(grupo)",
"Saved" : "Guardado",
"Generate keys" : "Gerar chaves",
"Error generating key pair" : "Erro ao gerar chave par",
+ "Access key" : "Código de acesso",
+ "Secret key" : "Código secreto",
+ "Builtin" : "Integrado",
"None" : "Nenhum",
+ "OAuth1" : "OAuth1",
"App key" : "Chave da App",
- "App secret" : "Chave secreta da aplicação",
+ "App secret" : "Segredo da app",
+ "OAuth2" : "OAuth2",
"Client ID" : "Id. do Cliente",
- "Client secret" : "Segredo do cliente",
+ "Client secret" : "Segredo do cliente\\\\",
+ "Username and password" : "Nome de utilizador e palavra-passe",
"Password" : "Palavra-passe",
+ "Session credentials" : "Credenciais da sessão",
"Amazon S3" : "Amazon S3",
"Hostname" : "Nome do Anfitrião",
"Port" : "Porta",
@@ -48,11 +67,15 @@ OC.L10N.register(
"URL" : "URL",
"Secure https://" : "https:// Seguro",
"Dropbox" : "Dropbox",
+ "FTP" : "FTP",
"Secure ftps://" : "ftps:// Seguro",
+ "Google Drive" : "Google Drive",
"Local" : "Local",
"Location" : "Localização:",
"ownCloud" : "ownCloud",
- "Root" : "Raiz",
+ "SFTP" : "SFTP",
+ "Root" : "Root",
+ "SMB / CIFS" : "SMB / CIFS",
"<b>Note:</b> " : "<b>Nota:</b> ",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte cURL no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte FTP no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
@@ -64,6 +87,7 @@ OC.L10N.register(
"Scope" : "Âmbito",
"External Storage" : "Armazenamento Externo",
"Folder name" : "Nome da pasta",
+ "Authentication" : "Autenticação",
"Configuration" : "Configuração",
"Available for" : "Disponível para ",
"Advanced settings" : "Definições avançadas",
diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json
index cda3b0bbd07..0f3a9298057 100644
--- a/apps/files_external/l10n/pt_PT.json
+++ b/apps/files_external/l10n/pt_PT.json
@@ -1,4 +1,7 @@
{ "translations": {
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Não foi possível obter as senhas solicitadas. Verifique se o código e o segredo da sua app estão corretos.",
+ "Fetching access tokens failed. Verify that your app key and secret are correct." : "Não foi possível obter as senhas de acesso. Verifique se o código e o segredo da sua app estão corretos.",
+ "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.",
"Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s",
"Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s",
"External storage" : "Armazenamento Externo",
@@ -8,34 +11,50 @@
"Region (optional for OpenStack Object Storage)" : "Região (opcional para OpenStack Object Storage)",
"API Key (required for Rackspace Cloud Files)" : "Chave API (necessário para Rackspace Cloud File)",
"Tenantname (required for OpenStack Object Storage)" : "Nome do Serviço (necessário para OpenStack Object Storage)",
- "Password (required for OpenStack Object Storage)" : "Senha (necessária para OpenStack Object Storage)",
+ "Password (required for OpenStack Object Storage)" : "Palavra-passe (necessária para OpenStack Object Storage)",
"Service Name (required for OpenStack Object Storage)" : "Nome do Serviço (necessário para OpenStack Object Storage)",
"URL of identity endpoint (required for OpenStack Object Storage)" : "Nome do Serviço (necessário para OpenStack Object Storage)",
- "Timeout of HTTP requests in seconds" : "Timeout de pedidos HTTP em segundos",
+ "Timeout of HTTP requests in seconds" : "Expiração de pedidos HTTP em segundos",
"SMB / CIFS using OC login" : "SMB / CIFS utilizando o início de sessão OC",
"Host" : "Anfitrião",
- "Username as share" : "Utilizar nome de utilizador como partilha",
+ "Username as share" : "Nome de utilizador como partilha",
"Share" : "Compartilhar",
"Remote subfolder" : "Subpasta remota ",
"Public key" : "Chave pública",
- "Storage with id \"%i\" not found" : "Armazenamento com ID \"%i\" não encontrado",
+ "Storage with id \"%i\" not found" : "Não foi encontrado o armazenamento com a id. \"%i\"",
"Invalid mount point" : "Ponto de montagem inválido",
"Invalid storage backend \"%s\"" : "Backend de armazenamento inválido \"%s\"",
+ "Unsatisfied authentication mechanism parameters" : "Parâmetros do mecanismo de autenticação inválidos",
"Personal" : "Pessoal",
"System" : "Sistema",
"Grant access" : "Conceder acesso",
"Access granted" : "Acesso autorizado",
+ "Error configuring OAuth1" : "Erro de configuração OAuth1",
+ "Error configuring OAuth2" : "Erro de configuração OAuth2",
+ "Enable encryption" : "Ative a encriptação",
+ "Enable previews" : "Ative as pré-visualizações",
+ "Check for changes" : "Verifique as suas alterações",
+ "Never" : "Nunca",
+ "Once every direct access" : "Uma vez em cada acesso direto",
+ "Every time the filesystem is used" : "De todas as vezes que o sistema de ficheiros é usado",
"All users. Type to select user or group." : "Todos os utilizadores. Digite para selecionar o utilizador ou grupo.",
"(group)" : "(grupo)",
"Saved" : "Guardado",
"Generate keys" : "Gerar chaves",
"Error generating key pair" : "Erro ao gerar chave par",
+ "Access key" : "Código de acesso",
+ "Secret key" : "Código secreto",
+ "Builtin" : "Integrado",
"None" : "Nenhum",
+ "OAuth1" : "OAuth1",
"App key" : "Chave da App",
- "App secret" : "Chave secreta da aplicação",
+ "App secret" : "Segredo da app",
+ "OAuth2" : "OAuth2",
"Client ID" : "Id. do Cliente",
- "Client secret" : "Segredo do cliente",
+ "Client secret" : "Segredo do cliente\\\\",
+ "Username and password" : "Nome de utilizador e palavra-passe",
"Password" : "Palavra-passe",
+ "Session credentials" : "Credenciais da sessão",
"Amazon S3" : "Amazon S3",
"Hostname" : "Nome do Anfitrião",
"Port" : "Porta",
@@ -46,11 +65,15 @@
"URL" : "URL",
"Secure https://" : "https:// Seguro",
"Dropbox" : "Dropbox",
+ "FTP" : "FTP",
"Secure ftps://" : "ftps:// Seguro",
+ "Google Drive" : "Google Drive",
"Local" : "Local",
"Location" : "Localização:",
"ownCloud" : "ownCloud",
- "Root" : "Raiz",
+ "SFTP" : "SFTP",
+ "Root" : "Root",
+ "SMB / CIFS" : "SMB / CIFS",
"<b>Note:</b> " : "<b>Nota:</b> ",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte cURL no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Aviso:</b> O suporte FTP no PHP não está activo ou instalado. Não é possível montar %s. Peça ao seu administrador para instalar.",
@@ -62,6 +85,7 @@
"Scope" : "Âmbito",
"External Storage" : "Armazenamento Externo",
"Folder name" : "Nome da pasta",
+ "Authentication" : "Autenticação",
"Configuration" : "Configuração",
"Available for" : "Disponível para ",
"Advanced settings" : "Definições avançadas",
diff --git a/apps/files_external/lib/backend/amazons3.php b/apps/files_external/lib/backend/amazons3.php
index 880d47621f3..1cf62d7cb09 100644
--- a/apps/files_external/lib/backend/amazons3.php
+++ b/apps/files_external/lib/backend/amazons3.php
@@ -26,10 +26,14 @@ use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
use \OCA\Files_External\Service\BackendService;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
+
use \OCA\Files_External\Lib\Auth\AmazonS3\AccessKey;
class AmazonS3 extends Backend {
+ use LegacyDependencyCheckPolyfill;
+
public function __construct(IL10N $l, AccessKey $legacyAuth) {
$this
->setIdentifier('amazons3')
@@ -49,7 +53,6 @@ class AmazonS3 extends Backend {
(new DefinitionParameter('use_path_style', $l->t('Enable Path Style')))
->setType(DefinitionParameter::VALUE_BOOLEAN),
])
- ->setDependencyCheck('\OC\Files\Storage\AmazonS3::checkDependencies')
->addAuthScheme(AccessKey::SCHEME_AMAZONS3_ACCESSKEY)
->setLegacyAuthMechanism($legacyAuth)
;
diff --git a/apps/files_external/lib/backend/dav.php b/apps/files_external/lib/backend/dav.php
index 5ae6d122588..c4f446548e1 100644
--- a/apps/files_external/lib/backend/dav.php
+++ b/apps/files_external/lib/backend/dav.php
@@ -26,11 +26,14 @@ use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
use \OCA\Files_External\Service\BackendService;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
use \OCA\Files_External\Lib\Auth\Password\Password;
class DAV extends Backend {
+ use LegacyDependencyCheckPolyfill;
+
public function __construct(IL10N $l, Password $legacyAuth) {
$this
->setIdentifier('dav')
@@ -44,7 +47,6 @@ class DAV extends Backend {
(new DefinitionParameter('secure', $l->t('Secure https://')))
->setType(DefinitionParameter::VALUE_BOOLEAN),
])
- ->setDependencyCheck('\OC\Files\Storage\DAV::checkDependencies')
->addAuthScheme(AuthMechanism::SCHEME_PASSWORD)
->setLegacyAuthMechanism($legacyAuth)
;
diff --git a/apps/files_external/lib/backend/dropbox.php b/apps/files_external/lib/backend/dropbox.php
index bfd2e4cddc4..3e595cb0a9c 100644
--- a/apps/files_external/lib/backend/dropbox.php
+++ b/apps/files_external/lib/backend/dropbox.php
@@ -26,10 +26,14 @@ use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
use \OCA\Files_External\Service\BackendService;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
+
use \OCA\Files_External\Lib\Auth\OAuth1\OAuth1;
class Dropbox extends Backend {
+ use LegacyDependencyCheckPolyfill;
+
public function __construct(IL10N $l, OAuth1 $legacyAuth) {
$this
->setIdentifier('dropbox')
@@ -39,7 +43,6 @@ class Dropbox extends Backend {
->addParameters([
// all parameters handled in OAuth1 mechanism
])
- ->setDependencyCheck('\OC\Files\Storage\Dropbox::checkDependencies')
->addAuthScheme(AuthMechanism::SCHEME_OAUTH1)
->setLegacyAuthMechanism($legacyAuth)
;
diff --git a/apps/files_external/lib/backend/ftp.php b/apps/files_external/lib/backend/ftp.php
index df6ca37679e..1caf3a8fcb8 100644
--- a/apps/files_external/lib/backend/ftp.php
+++ b/apps/files_external/lib/backend/ftp.php
@@ -26,11 +26,14 @@ use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
use \OCA\Files_External\Service\BackendService;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
use \OCA\Files_External\Lib\Auth\Password\Password;
class FTP extends Backend {
+ use LegacyDependencyCheckPolyfill;
+
public function __construct(IL10N $l, Password $legacyAuth) {
$this
->setIdentifier('ftp')
@@ -44,7 +47,6 @@ class FTP extends Backend {
(new DefinitionParameter('secure', $l->t('Secure ftps://')))
->setType(DefinitionParameter::VALUE_BOOLEAN),
])
- ->setDependencyCheck('\OC\Files\Storage\FTP::checkDependencies')
->addAuthScheme(AuthMechanism::SCHEME_PASSWORD)
->setLegacyAuthMechanism($legacyAuth)
;
diff --git a/apps/files_external/lib/backend/google.php b/apps/files_external/lib/backend/google.php
index b46b2f653a6..bc0b52c464b 100644
--- a/apps/files_external/lib/backend/google.php
+++ b/apps/files_external/lib/backend/google.php
@@ -26,10 +26,14 @@ use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
use \OCA\Files_External\Service\BackendService;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
+
use \OCA\Files_External\Lib\Auth\OAuth2\OAuth2;
class Google extends Backend {
+ use LegacyDependencyCheckPolyfill;
+
public function __construct(IL10N $l, OAuth2 $legacyAuth) {
$this
->setIdentifier('googledrive')
@@ -39,7 +43,6 @@ class Google extends Backend {
->addParameters([
// all parameters handled in OAuth2 mechanism
])
- ->setDependencyCheck('\OC\Files\Storage\Google::checkDependencies')
->addAuthScheme(AuthMechanism::SCHEME_OAUTH2)
->setLegacyAuthMechanism($legacyAuth)
;
diff --git a/apps/files_external/lib/backend/legacybackend.php b/apps/files_external/lib/backend/legacybackend.php
index 0f60c2caa47..83a5b45940d 100644
--- a/apps/files_external/lib/backend/legacybackend.php
+++ b/apps/files_external/lib/backend/legacybackend.php
@@ -24,12 +24,21 @@ namespace OCA\Files_External\Lib\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\Auth\Builtin;
+use \OCA\Files_External\Lib\MissingDependency;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
/**
* Legacy compatibility for OC_Mount_Config::registerBackend()
*/
class LegacyBackend extends Backend {
+ use LegacyDependencyCheckPolyfill {
+ LegacyDependencyCheckPolyfill::checkDependencies as doCheckDependencies;
+ }
+
+ /** @var bool */
+ protected $hasDependencies = false;
+
/**
* @param string $class
* @param array $definition
@@ -78,8 +87,18 @@ class LegacyBackend extends Backend {
$this->setCustomJs($definition['custom']);
}
if (isset($definition['has_dependencies']) && $definition['has_dependencies']) {
- $this->setDependencyCheck($class . '::checkDependencies');
+ $this->hasDependencies = true;
+ }
+ }
+
+ /**
+ * @return MissingDependency[]
+ */
+ public function checkDependencies() {
+ if ($this->hasDependencies) {
+ return $this->doCheckDependencies();
}
+ return [];
}
}
diff --git a/apps/files_external/lib/backend/smb.php b/apps/files_external/lib/backend/smb.php
index 3d950a80c31..350eca1de34 100644
--- a/apps/files_external/lib/backend/smb.php
+++ b/apps/files_external/lib/backend/smb.php
@@ -26,11 +26,14 @@ use \OCA\Files_External\Lib\Backend\Backend;
use \OCA\Files_External\Lib\DefinitionParameter;
use \OCA\Files_External\Lib\Auth\AuthMechanism;
use \OCA\Files_External\Service\BackendService;
+use \OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
use \OCA\Files_External\Lib\Auth\Password\Password;
class SMB extends Backend {
+ use LegacyDependencyCheckPolyfill;
+
public function __construct(IL10N $l, Password $legacyAuth) {
$this
->setIdentifier('smb')
@@ -43,7 +46,6 @@ class SMB extends Backend {
(new DefinitionParameter('root', $l->t('Remote subfolder')))
->setFlag(DefinitionParameter::FLAG_OPTIONAL),
])
- ->setDependencyCheck('\OC\Files\Storage\SMB::checkDependencies')
->addAuthScheme(AuthMechanism::SCHEME_PASSWORD)
->setLegacyAuthMechanism($legacyAuth)
;
diff --git a/apps/files_external/lib/dependencytrait.php b/apps/files_external/lib/dependencytrait.php
index 116421eab14..f0d6d6080e5 100644
--- a/apps/files_external/lib/dependencytrait.php
+++ b/apps/files_external/lib/dependencytrait.php
@@ -28,58 +28,13 @@ use \OCA\Files_External\Lib\MissingDependency;
*/
trait DependencyTrait {
- /** @var callable|null dependency check */
- private $dependencyCheck = null;
-
- /**
- * @return bool
- */
- public function hasDependencies() {
- return !is_null($this->dependencyCheck);
- }
-
- /**
- * @param callable $dependencyCheck
- * @return self
- */
- public function setDependencyCheck(callable $dependencyCheck) {
- $this->dependencyCheck = $dependencyCheck;
- return $this;
- }
-
/**
* Check if object is valid for use
*
* @return MissingDependency[] Unsatisfied dependencies
*/
public function checkDependencies() {
- $ret = [];
-
- if ($this->hasDependencies()) {
- $result = call_user_func($this->dependencyCheck);
- if ($result !== true) {
- if (!is_array($result)) {
- $result = [$result];
- }
- foreach ($result as $key => $value) {
- if (!($value instanceof MissingDependency)) {
- $module = null;
- $message = null;
- if (is_numeric($key)) {
- $module = $value;
- } else {
- $module = $key;
- $message = $value;
- }
- $value = new MissingDependency($module, $this);
- $value->setMessage($message);
- }
- $ret[] = $value;
- }
- }
- }
-
- return $ret;
+ return []; // no dependencies by default
}
}
diff --git a/apps/files_external/lib/legacydependencycheckpolyfill.php b/apps/files_external/lib/legacydependencycheckpolyfill.php
new file mode 100644
index 00000000000..7bb137fb3e1
--- /dev/null
+++ b/apps/files_external/lib/legacydependencycheckpolyfill.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_External\Lib;
+
+use \OCA\Files_External\Lib\MissingDependency;
+
+/**
+ * Polyfill for checking dependencies using legacy Storage::checkDependencies()
+ */
+trait LegacyDependencyCheckPolyfill {
+
+ /**
+ * @return string
+ */
+ abstract public function getStorageClass();
+
+ /**
+ * Check if object is valid for use
+ *
+ * @return MissingDependency[] Unsatisfied dependencies
+ */
+ public function checkDependencies() {
+ $ret = [];
+
+ $result = call_user_func([$this->getStorageClass(), 'checkDependencies']);
+ if ($result !== true) {
+ if (!is_array($result)) {
+ $result = [$result];
+ }
+ foreach ($result as $key => $value) {
+ if (!($value instanceof MissingDependency)) {
+ $module = null;
+ $message = null;
+ if (is_numeric($key)) {
+ $module = $value;
+ } else {
+ $module = $key;
+ $message = $value;
+ }
+ $value = new MissingDependency($module, $this);
+ $value->setMessage($message);
+ }
+ $ret[] = $value;
+ }
+ }
+
+ return $ret;
+ }
+
+}
+
diff --git a/apps/files_external/tests/backend/legacybackendtest.php b/apps/files_external/tests/backend/legacybackendtest.php
index 44cb16a4986..d57810de29b 100644
--- a/apps/files_external/tests/backend/legacybackendtest.php
+++ b/apps/files_external/tests/backend/legacybackendtest.php
@@ -23,15 +23,25 @@ namespace OCA\Files_External\Tests\Backend;
use \OCA\Files_External\Lib\Backend\LegacyBackend;
use \OCA\Files_External\Lib\DefinitionParameter;
+use \OCA\Files_External\Lib\MissingDependency;
class LegacyBackendTest extends \Test\TestCase {
+ /**
+ * @return MissingDependency[]
+ */
+ public static function checkDependencies() {
+ return [
+ (new MissingDependency('abc'))->setMessage('foobar')
+ ];
+ }
+
public function testConstructor() {
$auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin')
->disableOriginalConstructor()
->getMock();
- $class = '\OC\Files\Storage\SMB';
+ $class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest';
$definition = [
'configuration' => [
'textfield' => 'Text field',
@@ -49,14 +59,18 @@ class LegacyBackendTest extends \Test\TestCase {
$backend = new LegacyBackend($class, $definition, $auth);
- $this->assertEquals('\OC\Files\Storage\SMB', $backend->getStorageClass());
+ $this->assertEquals('\OCA\Files_External\Tests\Backend\LegacyBackendTest', $backend->getStorageClass());
$this->assertEquals('Backend text', $backend->getText());
$this->assertEquals(123, $backend->getPriority());
$this->assertEquals('foo/bar.js', $backend->getCustomJs());
- $this->assertEquals(true, $backend->hasDependencies());
$this->assertArrayHasKey('builtin', $backend->getAuthSchemes());
$this->assertEquals($auth, $backend->getLegacyAuthMechanism());
+ $dependencies = $backend->checkDependencies();
+ $this->assertCount(1, $dependencies);
+ $this->assertEquals('abc', $dependencies[0]->getDependency());
+ $this->assertEquals('foobar', $dependencies[0]->getMessage());
+
$parameters = $backend->getParameters();
$this->assertEquals('Text field', $parameters['textfield']->getText());
$this->assertEquals(DefinitionParameter::VALUE_TEXT, $parameters['textfield']->getType());
@@ -78,4 +92,22 @@ class LegacyBackendTest extends \Test\TestCase {
$this->assertEquals(DefinitionParameter::FLAG_OPTIONAL, $parameters['optionalpassword']->getFlags());
}
+ public function testNoDependencies() {
+ $auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest';
+ $definition = [
+ 'configuration' => [
+ ],
+ 'backend' => 'Backend text',
+ ];
+
+ $backend = new LegacyBackend($class, $definition, $auth);
+
+ $dependencies = $backend->checkDependencies();
+ $this->assertCount(0, $dependencies);
+ }
+
}
diff --git a/apps/files_external/tests/dependencytraittest.php b/apps/files_external/tests/legacydependencycheckpolyfilltest.php
index 5706d97053d..49d825d77aa 100644
--- a/apps/files_external/tests/dependencytraittest.php
+++ b/apps/files_external/tests/legacydependencycheckpolyfilltest.php
@@ -23,16 +23,23 @@ namespace OCA\Files_External\Tests;
use \OCA\Files_External\Lib\MissingDependency;
-class DependencyTraitTest extends \Test\TestCase {
+class LegacyDependencyCheckPolyfillTest extends \Test\TestCase {
+
+ /**
+ * @return MissingDependency[]
+ */
+ public static function checkDependencies() {
+ return [
+ (new MissingDependency('dependency'))->setMessage('missing dependency'),
+ (new MissingDependency('program'))->setMessage('cannot find program'),
+ ];
+ }
public function testCheckDependencies() {
- $trait = $this->getMockForTrait('\OCA\Files_External\Lib\DependencyTrait');
- $trait->setDependencyCheck(function() {
- return [
- (new MissingDependency('dependency'))->setMessage('missing dependency'),
- (new MissingDependency('program'))->setMessage('cannot find program'),
- ];
- });
+ $trait = $this->getMockForTrait('\OCA\Files_External\Lib\LegacyDependencyCheckPolyfill');
+ $trait->expects($this->once())
+ ->method('getStorageClass')
+ ->willReturn('\OCA\Files_External\Tests\LegacyDependencyCheckPolyfillTest');
$dependencies = $trait->checkDependencies();
$this->assertCount(2, $dependencies);
diff --git a/apps/files_sharing/ajax/external.php b/apps/files_sharing/ajax/external.php
index d26a64d3aec..66cfd8e9d1a 100644
--- a/apps/files_sharing/ajax/external.php
+++ b/apps/files_sharing/ajax/external.php
@@ -52,6 +52,7 @@ $externalManager = new \OCA\Files_Sharing\External\Manager(
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
\OC::$server->getUserSession()->getUser()->getUID()
);
diff --git a/apps/files_sharing/api/remote.php b/apps/files_sharing/api/remote.php
index f6cb0a29d8b..0f6d2dc265a 100644
--- a/apps/files_sharing/api/remote.php
+++ b/apps/files_sharing/api/remote.php
@@ -38,6 +38,7 @@ class Remote {
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
\OC_User::getUser()
);
@@ -56,6 +57,7 @@ class Remote {
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
\OC_User::getUser()
);
@@ -78,6 +80,7 @@ class Remote {
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
\OC_User::getUser()
);
@@ -87,5 +90,4 @@ class Remote {
return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
}
-
}
diff --git a/apps/files_sharing/api/server2server.php b/apps/files_sharing/api/server2server.php
index 4328e3830ba..6ecaea20535 100644
--- a/apps/files_sharing/api/server2server.php
+++ b/apps/files_sharing/api/server2server.php
@@ -70,6 +70,7 @@ class Server2Server {
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
$shareWith
);
@@ -82,6 +83,28 @@ class Server2Server {
Activity::FILES_SHARING_APP, Activity::SUBJECT_REMOTE_SHARE_RECEIVED, array($user, trim($name, '/')), '', array(),
'', '', $shareWith, Activity::TYPE_REMOTE_SHARE, Activity::PRIORITY_LOW);
+ $urlGenerator = \OC::$server->getURLGenerator();
+
+ $notificationManager = \OC::$server->getNotificationManager();
+ $notification = $notificationManager->createNotification();
+ $notification->setApp('files_sharing')
+ ->setUser($shareWith)
+ ->setTimestamp(time())
+ ->setObject('remote_share', $remoteId)
+ ->setSubject('remote_share', [$user, trim($name, '/')]);
+
+ $acceptAction = $notification->createAction();
+ $acceptAction->setLabel('accept')
+ ->setLink($urlGenerator->getAbsoluteURL('/ocs/v1.php/apps/files_sharing/api/v1/remote_shares/' . $remoteId), 'POST');
+ $declineAction = $notification->createAction();
+ $declineAction->setLabel('decline')
+ ->setLink($urlGenerator->getAbsoluteURL('/ocs/v1.php/apps/files_sharing/api/v1/remote_shares/' . $remoteId), 'DELETE');
+
+ $notification->addAction($acceptAction)
+ ->addAction($declineAction);
+
+ $notificationManager->notify($notification);
+
return new \OC_OCS_Result();
} catch (\Exception $e) {
\OCP\Util::writeLog('files_sharing', 'server can not add remote share, ' . $e->getMessage(), \OCP\Util::ERROR);
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php
index 9000fafd8dd..20f1b046d35 100644
--- a/apps/files_sharing/appinfo/app.php
+++ b/apps/files_sharing/appinfo/app.php
@@ -58,10 +58,6 @@ $application->setupPropagation();
\OCP\Util::addScript('files_sharing', 'external');
\OCP\Util::addStyle('files_sharing', 'sharetabview');
-// FIXME: registering a job here will cause additional useless SQL queries
-// when the route is not cron.php, needs a better way
-\OC::$server->getJobList()->add('OCA\Files_sharing\Lib\DeleteOrphanedSharesJob');
-
\OC::$server->getActivityManager()->registerExtension(function() {
return new \OCA\Files_Sharing\Activity(
\OC::$server->query('L10NFactory'),
@@ -107,3 +103,10 @@ if ($config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes') {
}
}
}
+
+$manager = \OC::$server->getNotificationManager();
+$manager->registerNotifier(function() {
+ return new \OCA\Files_Sharing\Notifier(
+ \OC::$server->getL10NFactory()
+ );
+});
diff --git a/apps/files_sharing/appinfo/application.php b/apps/files_sharing/appinfo/application.php
index 530195c65fa..d0dcadb77e8 100644
--- a/apps/files_sharing/appinfo/application.php
+++ b/apps/files_sharing/appinfo/application.php
@@ -93,6 +93,7 @@ class Application extends App {
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
$server->getHTTPHelper(),
+ $server->getNotificationManager(),
$uid
);
});
diff --git a/apps/files_sharing/appinfo/install.php b/apps/files_sharing/appinfo/install.php
new file mode 100644
index 00000000000..f076a17e444
--- /dev/null
+++ b/apps/files_sharing/appinfo/install.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @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::$server->getJobList()->add('OCA\Files_sharing\Lib\DeleteOrphanedSharesJob');
diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index e98b60ea36d..66b8b78cacf 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -28,3 +28,4 @@ if (version_compare($installedVersion, '0.6.0', '<')) {
$m->addAcceptRow();
}
+\OC::$server->getJobList()->add('OCA\Files_sharing\Lib\DeleteOrphanedSharesJob');
diff --git a/apps/files_sharing/appinfo/version b/apps/files_sharing/appinfo/version
index b6160487433..844f6a91acb 100644
--- a/apps/files_sharing/appinfo/version
+++ b/apps/files_sharing/appinfo/version
@@ -1 +1 @@
-0.6.2
+0.6.3
diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js
index 7051d9e56db..c16b2c77e59 100644
--- a/apps/files_sharing/l10n/cs_CZ.js
+++ b/apps/files_sharing/l10n/cs_CZ.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
"You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
"Shares" : "Sdílení",
+ "Accept" : "Přijmout",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID, více na %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID",
"This share is password-protected" : "Toto sdílení je chráněno heslem",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Sdružený cloud",
"Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
"Share it:" : "Sdílet:",
- "Add it to your website:" : "Přidat na svou webovou stránku:",
"Share with me via ownCloud" : "Sdíleno se mnou přes ownCloud",
"HTML Code:" : "HTML kód:"
},
diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json
index c93886aa33c..208cc0fa24b 100644
--- a/apps/files_sharing/l10n/cs_CZ.json
+++ b/apps/files_sharing/l10n/cs_CZ.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s",
"You shared %1$s via link" : "Sdílíte %1$s přes odkaz",
"Shares" : "Sdílení",
+ "Accept" : "Přijmout",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID, více na %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #ownCloud sdruženého cloud ID",
"This share is password-protected" : "Toto sdílení je chráněno heslem",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Sdružený cloud",
"Your Federated Cloud ID:" : "Vaše sdružené cloud ID:",
"Share it:" : "Sdílet:",
- "Add it to your website:" : "Přidat na svou webovou stránku:",
"Share with me via ownCloud" : "Sdíleno se mnou přes ownCloud",
"HTML Code:" : "HTML kód:"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js
index 7e05b2ca442..2ab7513f139 100644
--- a/apps/files_sharing/l10n/da.js
+++ b/apps/files_sharing/l10n/da.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s delt %1$s med dig",
"You shared %1$s via link" : "Du delte %1$s via link",
"Shares" : "Delt",
+ "Accept" : "Acceptér",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med mig gennem min #ownCloud Federated Cloud ID, se %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Del med mig gennem min #ownCloud Federated Cloud ID",
"This share is password-protected" : "Delingen er beskyttet af kodeord",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Din Federated Cloud ID:",
"Share it:" : "Del:",
- "Add it to your website:" : "Tilføj den til din hjemmeside:",
+ "Add to your website" : "Tilføj til dit websted",
"Share with me via ownCloud" : "Del med mig gennem ownCloud",
"HTML Code:" : "HTMLkode:"
},
diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json
index d08dbdc4273..fe071e1d585 100644
--- a/apps/files_sharing/l10n/da.json
+++ b/apps/files_sharing/l10n/da.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s delt %1$s med dig",
"You shared %1$s via link" : "Du delte %1$s via link",
"Shares" : "Delt",
+ "Accept" : "Acceptér",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med mig gennem min #ownCloud Federated Cloud ID, se %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Del med mig gennem min #ownCloud Federated Cloud ID",
"This share is password-protected" : "Delingen er beskyttet af kodeord",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Din Federated Cloud ID:",
"Share it:" : "Del:",
- "Add it to your website:" : "Tilføj den til din hjemmeside:",
+ "Add to your website" : "Tilføj til dit websted",
"Share with me via ownCloud" : "Del med mig gennem ownCloud",
"HTML Code:" : "HTMLkode:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index f6dcf690b60..973aa0f15ac 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Dir geteilt",
"You shared %1$s via link" : "Du hast %1$s über einen Link freigegeben",
"Shares" : "Freigaben",
+ "Accept" : "Ok",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID",
"This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
- "Add it to your website:" : "Zum Hinzufügen zu Deiner Website:",
"Share with me via ownCloud" : "Teile mit mir über ownCloud",
"HTML Code:" : "HTML-Code:"
},
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 76f9b6d1155..5526be3b6bf 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Dir geteilt",
"You shared %1$s via link" : "Du hast %1$s über einen Link freigegeben",
"Shares" : "Freigaben",
+ "Accept" : "Ok",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID",
"This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
- "Add it to your website:" : "Zum Hinzufügen zu Deiner Website:",
"Share with me via ownCloud" : "Teile mit mir über ownCloud",
"HTML Code:" : "HTML-Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 3c1eccd4607..47243b8f81d 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt",
"You shared %1$s via link" : "Sie haben %1$s über einen Link geteilt",
"Shares" : "Geteiltes",
+ "Accept" : "Akzeptieren",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID",
"This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
- "Add it to your website:" : "Zum Hinzufügen zu Ihrer Website:",
"Share with me via ownCloud" : "Teilen Sie mit mir über ownCloud",
"HTML Code:" : "HTML-Code:"
},
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 08732c602ec..b63286de48d 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt",
"You shared %1$s via link" : "Sie haben %1$s über einen Link geteilt",
"Shares" : "Geteiltes",
+ "Accept" : "Akzeptieren",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID",
"This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:",
"Share it:" : "Zum Teilen:",
- "Add it to your website:" : "Zum Hinzufügen zu Ihrer Website:",
"Share with me via ownCloud" : "Teilen Sie mit mir über ownCloud",
"HTML Code:" : "HTML-Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js
index 6a88a675f75..037ddcd9d1d 100644
--- a/apps/files_sharing/l10n/el.js
+++ b/apps/files_sharing/l10n/el.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "Ο %2$s διαμοιράστηκε το %1$s με εσάς",
"You shared %1$s via link" : "Μοιραστήκατε το %1$s μέσω συνδέσμου",
"Shares" : "Κοινόχρηστοι φάκελοι",
+ "Accept" : "Αποδοχή",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου, δείτε %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου",
"This share is password-protected" : "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Federated σύννεφο",
"Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:",
"Share it:" : "Μοιραστείτε το:",
- "Add it to your website:" : "Προσθέστε το στην ιστοσελίδα σας:",
+ "Add to your website" : "Προσθήκη στην ιστοσελίδα σας",
"Share with me via ownCloud" : "Διαμοιρασμός με εμένα μέσω του ",
"HTML Code:" : "Κώδικας HTML:"
},
diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json
index 01b4e6d01b8..9eb19b2ba83 100644
--- a/apps/files_sharing/l10n/el.json
+++ b/apps/files_sharing/l10n/el.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "Ο %2$s διαμοιράστηκε το %1$s με εσάς",
"You shared %1$s via link" : "Μοιραστήκατε το %1$s μέσω συνδέσμου",
"Shares" : "Κοινόχρηστοι φάκελοι",
+ "Accept" : "Αποδοχή",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου, δείτε %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Διαμοιρασμός με εμένα μέσω του #ownCloud Federated Cloud ID μου",
"This share is password-protected" : "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Federated σύννεφο",
"Your Federated Cloud ID:" : "Το ID σας στο Federated Cloud:",
"Share it:" : "Μοιραστείτε το:",
- "Add it to your website:" : "Προσθέστε το στην ιστοσελίδα σας:",
+ "Add to your website" : "Προσθήκη στην ιστοσελίδα σας",
"Share with me via ownCloud" : "Διαμοιρασμός με εμένα μέσω του ",
"HTML Code:" : "Κώδικας HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js
index 40f80be5b61..424fe743088 100644
--- a/apps/files_sharing/l10n/en_GB.js
+++ b/apps/files_sharing/l10n/en_GB.js
@@ -40,6 +40,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s shared %1$s with you",
"You shared %1$s via link" : "You shared %1$s via link",
"Shares" : "Shares",
+ "Accept" : "Accept",
"This share is password-protected" : "This share is password-protected",
"The password is wrong. Try again." : "The password is wrong. Try again.",
"Password" : "Password",
diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json
index 5a70bee7212..4e41be946d1 100644
--- a/apps/files_sharing/l10n/en_GB.json
+++ b/apps/files_sharing/l10n/en_GB.json
@@ -38,6 +38,7 @@
"%2$s shared %1$s with you" : "%2$s shared %1$s with you",
"You shared %1$s via link" : "You shared %1$s via link",
"Shares" : "Shares",
+ "Accept" : "Accept",
"This share is password-protected" : "This share is password-protected",
"The password is wrong. Try again." : "The password is wrong. Try again.",
"Password" : "Password",
diff --git a/apps/files_sharing/l10n/eo.js b/apps/files_sharing/l10n/eo.js
index 6c78d555304..ef900774146 100644
--- a/apps/files_sharing/l10n/eo.js
+++ b/apps/files_sharing/l10n/eo.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"You shared %1$s with group %2$s" : "Vi kunhavigis %1$s kun la grupo %2$s",
"%2$s shared %1$s with you" : "%2$s kunhavigis %1$s kun vi",
"You shared %1$s via link" : "Vi kunhavigis %1$s per ligilo",
+ "Accept" : "Akcepti",
"This share is password-protected" : "Ĉi tiu kunhavigo estas protektata per pasvorto",
"The password is wrong. Try again." : "La pasvorto malĝustas. Provu denove.",
"Password" : "Pasvorto",
diff --git a/apps/files_sharing/l10n/eo.json b/apps/files_sharing/l10n/eo.json
index 8899e3021ca..cc648a7c60d 100644
--- a/apps/files_sharing/l10n/eo.json
+++ b/apps/files_sharing/l10n/eo.json
@@ -21,6 +21,7 @@
"You shared %1$s with group %2$s" : "Vi kunhavigis %1$s kun la grupo %2$s",
"%2$s shared %1$s with you" : "%2$s kunhavigis %1$s kun vi",
"You shared %1$s via link" : "Vi kunhavigis %1$s per ligilo",
+ "Accept" : "Akcepti",
"This share is password-protected" : "Ĉi tiu kunhavigo estas protektata per pasvorto",
"The password is wrong. Try again." : "La pasvorto malĝustas. Provu denove.",
"Password" : "Pasvorto",
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 7e5e48bbf78..ca1e8c430db 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s ha compartido %1$s con usted",
"You shared %1$s via link" : "Ha compartido %1$s vía enlace",
"Shares" : "Compartidos",
+ "Accept" : "Aceptar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud",
"This share is password-protected" : "Este elemento compartido está protegido por contraseña",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Nube Federada",
"Your Federated Cloud ID:" : "Su ID Nube Federada:",
"Share it:" : "Compartir:",
- "Add it to your website:" : "Agregarlo a su sitio de internet:",
+ "Add to your website" : "Añadir a su Website",
"Share with me via ownCloud" : "Compartirlo conmigo vía OwnCloud",
"HTML Code:" : "Código HTML:"
},
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 358330b80ac..4b300e1227f 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s ha compartido %1$s con usted",
"You shared %1$s via link" : "Ha compartido %1$s vía enlace",
"Shares" : "Compartidos",
+ "Accept" : "Aceptar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud",
"This share is password-protected" : "Este elemento compartido está protegido por contraseña",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Nube Federada",
"Your Federated Cloud ID:" : "Su ID Nube Federada:",
"Share it:" : "Compartir:",
- "Add it to your website:" : "Agregarlo a su sitio de internet:",
+ "Add to your website" : "Añadir a su Website",
"Share with me via ownCloud" : "Compartirlo conmigo vía OwnCloud",
"HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js
index 535608ad511..ada0a548162 100644
--- a/apps/files_sharing/l10n/et_EE.js
+++ b/apps/files_sharing/l10n/et_EE.js
@@ -4,13 +4,17 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Serverist serverisse jagamine pole antud serveris lubatud",
"The mountpoint name contains invalid characters." : "Ühenduspunkti nimes on vigaseid märke.",
"Invalid or untrusted SSL certificate" : "Vigane või tundmatu SSL sertifikaat",
+ "Storage not valid" : "Andmehoidla pole korrektne",
"Couldn't add remote share" : "Ei suutnud lisada kaugjagamist",
"Shared with you" : "Sinuga jagatud",
"Shared with others" : "Teistega jagatud",
"Shared by link" : "Jagatud lingiga",
"Nothing shared with you yet" : "Sinuga pole veel midagi jagatud",
+ "Files and folders others share with you will show up here" : "Siin näidatakse faile ja kaustasid, mida teised on sulle jaganud",
"Nothing shared yet" : "Midagi pole veel jagatud",
+ "Files and folders you share will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa oled teistega jaganud",
"No shared links" : "Jagatud linke pole",
+ "Files and folders you share by link will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa jagad lingiga",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisata kaugjagamise {name} asukohast {owner}@{remote}?",
"Remote share" : "Kaugjagamine",
"Remote share password" : "Kaugjagamise parool",
@@ -27,6 +31,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s jagas sinuga %1$s",
"You shared %1$s via link" : "Jagasid %1$s lingiga",
"Shares" : "Jagamised",
+ "Accept" : "Nõustu",
"This share is password-protected" : "See jagamine on parooliga kaitstud",
"The password is wrong. Try again." : "Parool on vale. Proovi uuesti.",
"Password" : "Parool",
@@ -47,7 +52,6 @@ OC.L10N.register(
"Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse",
"Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest",
"Share it:" : "Jaga seda:",
- "Add it to your website:" : "Lisa see oma veebisaidile:",
"Share with me via ownCloud" : "Jaga minuga läbi ownCloudiga",
"HTML Code:" : "HTML kood:"
},
diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json
index f894b06fc9e..afa7fc6884d 100644
--- a/apps/files_sharing/l10n/et_EE.json
+++ b/apps/files_sharing/l10n/et_EE.json
@@ -2,13 +2,17 @@
"Server to server sharing is not enabled on this server" : "Serverist serverisse jagamine pole antud serveris lubatud",
"The mountpoint name contains invalid characters." : "Ühenduspunkti nimes on vigaseid märke.",
"Invalid or untrusted SSL certificate" : "Vigane või tundmatu SSL sertifikaat",
+ "Storage not valid" : "Andmehoidla pole korrektne",
"Couldn't add remote share" : "Ei suutnud lisada kaugjagamist",
"Shared with you" : "Sinuga jagatud",
"Shared with others" : "Teistega jagatud",
"Shared by link" : "Jagatud lingiga",
"Nothing shared with you yet" : "Sinuga pole veel midagi jagatud",
+ "Files and folders others share with you will show up here" : "Siin näidatakse faile ja kaustasid, mida teised on sulle jaganud",
"Nothing shared yet" : "Midagi pole veel jagatud",
+ "Files and folders you share will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa oled teistega jaganud",
"No shared links" : "Jagatud linke pole",
+ "Files and folders you share by link will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa jagad lingiga",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisata kaugjagamise {name} asukohast {owner}@{remote}?",
"Remote share" : "Kaugjagamine",
"Remote share password" : "Kaugjagamise parool",
@@ -25,6 +29,7 @@
"%2$s shared %1$s with you" : "%2$s jagas sinuga %1$s",
"You shared %1$s via link" : "Jagasid %1$s lingiga",
"Shares" : "Jagamised",
+ "Accept" : "Nõustu",
"This share is password-protected" : "See jagamine on parooliga kaitstud",
"The password is wrong. Try again." : "Parool on vale. Proovi uuesti.",
"Password" : "Parool",
@@ -45,7 +50,6 @@
"Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse",
"Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest",
"Share it:" : "Jaga seda:",
- "Add it to your website:" : "Lisa see oma veebisaidile:",
"Share with me via ownCloud" : "Jaga minuga läbi ownCloudiga",
"HTML Code:" : "HTML kood:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/fi_FI.js b/apps/files_sharing/l10n/fi_FI.js
index 6ef1f741f6d..2a3f7937fdc 100644
--- a/apps/files_sharing/l10n/fi_FI.js
+++ b/apps/files_sharing/l10n/fi_FI.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s jakoi kohteen %1$s kanssasi",
"You shared %1$s via link" : "Jaoit kohteen %1$s linkin kautta",
"Shares" : "Jaot",
+ "Accept" : "Hyväksy",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta, katso %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta",
"This share is password-protected" : "Tämä jako on suojattu salasanalla",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Federoitu pilvi",
"Your Federated Cloud ID:" : "Federoidun pilvesi tunniste:",
"Share it:" : "Jaa se:",
- "Add it to your website:" : "Lisää verkkosivustollesi:",
+ "Add to your website" : "Lisää verkkosivuillesi",
"Share with me via ownCloud" : "Jaa kanssani ownCloudin kautta",
"HTML Code:" : "HTML-koodi:"
},
diff --git a/apps/files_sharing/l10n/fi_FI.json b/apps/files_sharing/l10n/fi_FI.json
index dfb9afb5a8b..d7809f57130 100644
--- a/apps/files_sharing/l10n/fi_FI.json
+++ b/apps/files_sharing/l10n/fi_FI.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s jakoi kohteen %1$s kanssasi",
"You shared %1$s via link" : "Jaoit kohteen %1$s linkin kautta",
"Shares" : "Jaot",
+ "Accept" : "Hyväksy",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta, katso %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Jaa kanssani käyttäen #ownCloud ja federoitua pilvitunnistetta",
"This share is password-protected" : "Tämä jako on suojattu salasanalla",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Federoitu pilvi",
"Your Federated Cloud ID:" : "Federoidun pilvesi tunniste:",
"Share it:" : "Jaa se:",
- "Add it to your website:" : "Lisää verkkosivustollesi:",
+ "Add to your website" : "Lisää verkkosivuillesi",
"Share with me via ownCloud" : "Jaa kanssani ownCloudin kautta",
"HTML Code:" : "HTML-koodi:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index e07b93c788b..a59409e008a 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous",
"You shared %1$s via link" : "Vous avez partagé %1$s par lien public",
"Shares" : "Partages",
+ "Accept" : "Accepter",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud",
"This share is password-protected" : "Ce partage est protégé par un mot de passe",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :",
"Share it:" : "Partager :",
- "Add it to your website:" : "Ajouter à votre site web :",
+ "Add to your website" : "Ajouter à votre site web",
"Share with me via ownCloud" : "Partagez avec moi via ownCloud",
"HTML Code:" : "Code HTML :"
},
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index e597d3100b4..0bb6f2b1b9e 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous",
"You shared %1$s via link" : "Vous avez partagé %1$s par lien public",
"Shares" : "Partages",
+ "Accept" : "Accepter",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #owncloud",
"This share is password-protected" : "Ce partage est protégé par un mot de passe",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :",
"Share it:" : "Partager :",
- "Add it to your website:" : "Ajouter à votre site web :",
+ "Add to your website" : "Ajouter à votre site web",
"Share with me via ownCloud" : "Partagez avec moi via ownCloud",
"HTML Code:" : "Code HTML :"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js
index 0e279172124..f2a2d528ffc 100644
--- a/apps/files_sharing/l10n/gl.js
+++ b/apps/files_sharing/l10n/gl.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s compartiu %1$s con vostede",
"You shared %1$s via link" : "Vostede compartiu %1$s mediante ligazón",
"Shares" : "Comparticións",
+ "Accept" : "Aceptar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Comparte comigo a través do meu ID da nube federada do #ownCloud , vexa %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Comparte comigo a través do meu ID da nube federada do #ownCloud",
"This share is password-protected" : "Esta compartición está protexida con contrasinal",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Nube federada",
"Your Federated Cloud ID:" : "ID da súa nube federada:",
"Share it:" : "Compártao:",
- "Add it to your website:" : "Engádao o seu sitio web:",
"Share with me via ownCloud" : "Comparte comigo a través do ownCloud",
"HTML Code:" : "Código HTML:"
},
diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json
index b4757ca2b2b..b9998a47a12 100644
--- a/apps/files_sharing/l10n/gl.json
+++ b/apps/files_sharing/l10n/gl.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s compartiu %1$s con vostede",
"You shared %1$s via link" : "Vostede compartiu %1$s mediante ligazón",
"Shares" : "Comparticións",
+ "Accept" : "Aceptar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Comparte comigo a través do meu ID da nube federada do #ownCloud , vexa %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Comparte comigo a través do meu ID da nube federada do #ownCloud",
"This share is password-protected" : "Esta compartición está protexida con contrasinal",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Nube federada",
"Your Federated Cloud ID:" : "ID da súa nube federada:",
"Share it:" : "Compártao:",
- "Add it to your website:" : "Engádao o seu sitio web:",
"Share with me via ownCloud" : "Comparte comigo a través do ownCloud",
"HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/hu_HU.js b/apps/files_sharing/l10n/hu_HU.js
index b374be1c317..c78bdce652d 100644
--- a/apps/files_sharing/l10n/hu_HU.js
+++ b/apps/files_sharing/l10n/hu_HU.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s megosztotta velem ezt: %1$s",
"You shared %1$s via link" : "Megosztottam link segítségével: %1$s",
"Shares" : "Megosztások",
+ "Accept" : "Elfogadás",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Ossza meg velem az #ownCloud Egyesített Felhő Azonosító segítségével, lásd %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Ossza meg velem az #ownCloud Egyesített Felhő Azonosító segítségével ",
"This share is password-protected" : "Ez egy jelszóval védett megosztás",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Egyesített felhő",
"Your Federated Cloud ID:" : "Egyesített felhő azonosító:",
"Share it:" : "Ossza meg:",
- "Add it to your website:" : "Adja hozzá a saját weboldalához:",
+ "Add to your website" : "Add hozzá saját weboldaladhoz",
"Share with me via ownCloud" : "Ossza meg velem ownCloud-on keresztül",
"HTML Code:" : "HTML Code:"
},
diff --git a/apps/files_sharing/l10n/hu_HU.json b/apps/files_sharing/l10n/hu_HU.json
index f140b98a57c..22cc1422eb7 100644
--- a/apps/files_sharing/l10n/hu_HU.json
+++ b/apps/files_sharing/l10n/hu_HU.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s megosztotta velem ezt: %1$s",
"You shared %1$s via link" : "Megosztottam link segítségével: %1$s",
"Shares" : "Megosztások",
+ "Accept" : "Elfogadás",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Ossza meg velem az #ownCloud Egyesített Felhő Azonosító segítségével, lásd %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Ossza meg velem az #ownCloud Egyesített Felhő Azonosító segítségével ",
"This share is password-protected" : "Ez egy jelszóval védett megosztás",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Egyesített felhő",
"Your Federated Cloud ID:" : "Egyesített felhő azonosító:",
"Share it:" : "Ossza meg:",
- "Add it to your website:" : "Adja hozzá a saját weboldalához:",
+ "Add to your website" : "Add hozzá saját weboldaladhoz",
"Share with me via ownCloud" : "Ossza meg velem ownCloud-on keresztül",
"HTML Code:" : "HTML Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/id.js b/apps/files_sharing/l10n/id.js
index 60b460da8e8..f30c0b53b47 100644
--- a/apps/files_sharing/l10n/id.js
+++ b/apps/files_sharing/l10n/id.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s membagikan %1$s dengan Anda",
"You shared %1$s via link" : "Anda membagikan %1$s via tautan",
"Shares" : "Dibagikan",
+ "Accept" : "Terima",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya, lihat %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya",
"This share is password-protected" : "Berbagi ini dilindungi sandi",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Federated Cloud ID Anda:",
"Share it:" : "Bagikan:",
- "Add it to your website:" : "Tambahkan ke situs web Anda:",
"Share with me via ownCloud" : "Dibagikan pada saya via ownCloud",
"HTML Code:" : "Kode HTML:"
},
diff --git a/apps/files_sharing/l10n/id.json b/apps/files_sharing/l10n/id.json
index c4ea5a5c56d..3b6f65c1a09 100644
--- a/apps/files_sharing/l10n/id.json
+++ b/apps/files_sharing/l10n/id.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s membagikan %1$s dengan Anda",
"You shared %1$s via link" : "Anda membagikan %1$s via tautan",
"Shares" : "Dibagikan",
+ "Accept" : "Terima",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya, lihat %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Dibagikan pada saya melalui #ownCloud Federated Cloud ID saya",
"This share is password-protected" : "Berbagi ini dilindungi sandi",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Federated Cloud",
"Your Federated Cloud ID:" : "Federated Cloud ID Anda:",
"Share it:" : "Bagikan:",
- "Add it to your website:" : "Tambahkan ke situs web Anda:",
"Share with me via ownCloud" : "Dibagikan pada saya via ownCloud",
"HTML Code:" : "Kode HTML:"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 8f89da9484d..bf041f2b9b6 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s ha condiviso %1$s con te",
"You shared %1$s via link" : "Hai condiviso %1$s tramite collegamento",
"Shares" : "Condivisioni",
+ "Accept" : "Accetta",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud",
"This share is password-protected" : "Questa condivione è protetta da password",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Cloud federata",
"Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
"Share it:" : "Condividilo:",
- "Add it to your website:" : "Aggiungilo al tuo sito web:",
+ "Add to your website" : "Aggiungilo al tuo sito web",
"Share with me via ownCloud" : "Condividi con me tramite ownCloud",
"HTML Code:" : "Codice HTML:"
},
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index cad5b0c7db0..34a10595f98 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s ha condiviso %1$s con te",
"You shared %1$s via link" : "Hai condiviso %1$s tramite collegamento",
"Shares" : "Condivisioni",
+ "Accept" : "Accetta",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud",
"This share is password-protected" : "Questa condivione è protetta da password",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Cloud federata",
"Your Federated Cloud ID:" : "Il tuo ID di cloud federata:",
"Share it:" : "Condividilo:",
- "Add it to your website:" : "Aggiungilo al tuo sito web:",
+ "Add to your website" : "Aggiungilo al tuo sito web",
"Share with me via ownCloud" : "Condividi con me tramite ownCloud",
"HTML Code:" : "Codice HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index 73174dfeb84..413f4a2ac8c 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s は %1$s をあなたと共有しました",
"You shared %1$s via link" : "リンク経由で %1$s を共有しています",
"Shares" : "共有",
+ "Accept" : "承諾",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud の「クラウド連携ID」で私と共有できます。こちらを見てください。%s",
"Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud の「クラウド連携ID」で私と共有できます。",
"This share is password-protected" : "この共有はパスワードで保護されています",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "クラウド連携",
"Your Federated Cloud ID:" : "あなたのクラウド連携ID:",
"Share it:" : "以下で共有:",
- "Add it to your website:" : "ウェブサイトに追加:",
"Share with me via ownCloud" : "OwnCloud経由で共有",
"HTML Code:" : "HTMLコード:"
},
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 79cd4f0bc36..65d762871de 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s は %1$s をあなたと共有しました",
"You shared %1$s via link" : "リンク経由で %1$s を共有しています",
"Shares" : "共有",
+ "Accept" : "承諾",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud の「クラウド連携ID」で私と共有できます。こちらを見てください。%s",
"Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud の「クラウド連携ID」で私と共有できます。",
"This share is password-protected" : "この共有はパスワードで保護されています",
@@ -64,7 +65,6 @@
"Federated Cloud" : "クラウド連携",
"Your Federated Cloud ID:" : "あなたのクラウド連携ID:",
"Share it:" : "以下で共有:",
- "Add it to your website:" : "ウェブサイトに追加:",
"Share with me via ownCloud" : "OwnCloud経由で共有",
"HTML Code:" : "HTMLコード:"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js
index 638f750b2ef..2ad6c0422b1 100644
--- a/apps/files_sharing/l10n/ko.js
+++ b/apps/files_sharing/l10n/ko.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s 님이 내게 %1$s을(를) 공유함",
"You shared %1$s via link" : "내가 %1$s을(를) 링크로 공유함",
"Shares" : "공유",
+ "Accept" : "수락",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "내 #ownCloud 연합 클라우드 ID를 통해서 공유됨, 더 알아보기: %s",
"Share with me through my #ownCloud Federated Cloud ID" : "내 #ownCloud 연합 클라우드 ID를 통해서 공유됨",
"This share is password-protected" : "이 공유는 암호로 보호되어 있습니다",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "연합 클라우드",
"Your Federated Cloud ID:" : "내 연합 클라우드 ID:",
"Share it:" : "공유하기:",
- "Add it to your website:" : "웹 사이트에 다음을 추가하십시오:",
"Share with me via ownCloud" : "ownCloud로 나와 공유하기",
"HTML Code:" : "HTML 코드:"
},
diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json
index 36d69b0f763..d31bf0060dd 100644
--- a/apps/files_sharing/l10n/ko.json
+++ b/apps/files_sharing/l10n/ko.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s 님이 내게 %1$s을(를) 공유함",
"You shared %1$s via link" : "내가 %1$s을(를) 링크로 공유함",
"Shares" : "공유",
+ "Accept" : "수락",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "내 #ownCloud 연합 클라우드 ID를 통해서 공유됨, 더 알아보기: %s",
"Share with me through my #ownCloud Federated Cloud ID" : "내 #ownCloud 연합 클라우드 ID를 통해서 공유됨",
"This share is password-protected" : "이 공유는 암호로 보호되어 있습니다",
@@ -64,7 +65,6 @@
"Federated Cloud" : "연합 클라우드",
"Your Federated Cloud ID:" : "내 연합 클라우드 ID:",
"Share it:" : "공유하기:",
- "Add it to your website:" : "웹 사이트에 다음을 추가하십시오:",
"Share with me via ownCloud" : "ownCloud로 나와 공유하기",
"HTML Code:" : "HTML 코드:"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/l10n/nb_NO.js b/apps/files_sharing/l10n/nb_NO.js
index 4b76dab034c..4df003d0e4d 100644
--- a/apps/files_sharing/l10n/nb_NO.js
+++ b/apps/files_sharing/l10n/nb_NO.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
"You shared %1$s via link" : "Du delte %1$s via lenke",
"Shares" : "Delinger",
+ "Accept" : "Aksepter",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky, se %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky",
"This share is password-protected" : "Denne delingen er passordbeskyttet",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Sammenknyttet sky",
"Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:",
"Share it:" : "Del den:",
- "Add it to your website:" : "Legg den på websiden din:",
"Share with me via ownCloud" : "Del med meg via ownCloud",
"HTML Code:" : "HTML-kode:"
},
diff --git a/apps/files_sharing/l10n/nb_NO.json b/apps/files_sharing/l10n/nb_NO.json
index c466d22e3de..079f1e854ac 100644
--- a/apps/files_sharing/l10n/nb_NO.json
+++ b/apps/files_sharing/l10n/nb_NO.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s delte %1$s med deg",
"You shared %1$s via link" : "Du delte %1$s via lenke",
"Shares" : "Delinger",
+ "Accept" : "Aksepter",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky, se %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Del med meg gjennom min #ownCloud ID for sammenknyttet sky",
"This share is password-protected" : "Denne delingen er passordbeskyttet",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Sammenknyttet sky",
"Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:",
"Share it:" : "Del den:",
- "Add it to your website:" : "Legg den på websiden din:",
"Share with me via ownCloud" : "Del med meg via ownCloud",
"HTML Code:" : "HTML-kode:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index f2541545680..7468819fda7 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s deelde %1$s met u",
"You shared %1$s via link" : "U deelde %1$s via link",
"Shares" : "Gedeeld",
+ "Accept" : "Accepteren",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Deel met mij via mijn #ownCloud federated Cloud ID, zie %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Deel met mij via mijn #ownCloud federated Cloud ID",
"This share is password-protected" : "Deze share is met een wachtwoord beveiligd",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Gefedereerde Cloud",
"Your Federated Cloud ID:" : "Uw Federated Cloud ID:",
"Share it:" : "Deel het:",
- "Add it to your website:" : "Voeg het toe aan uw website:",
+ "Add to your website" : "Toevoegen aan uw website",
"Share with me via ownCloud" : "Deel met mij via ownCloud",
"HTML Code:" : "HTML Code:"
},
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index 193f787b835..57df2d5c155 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s deelde %1$s met u",
"You shared %1$s via link" : "U deelde %1$s via link",
"Shares" : "Gedeeld",
+ "Accept" : "Accepteren",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Deel met mij via mijn #ownCloud federated Cloud ID, zie %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Deel met mij via mijn #ownCloud federated Cloud ID",
"This share is password-protected" : "Deze share is met een wachtwoord beveiligd",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Gefedereerde Cloud",
"Your Federated Cloud ID:" : "Uw Federated Cloud ID:",
"Share it:" : "Deel het:",
- "Add it to your website:" : "Voeg het toe aan uw website:",
+ "Add to your website" : "Toevoegen aan uw website",
"Share with me via ownCloud" : "Deel met mij via ownCloud",
"HTML Code:" : "HTML Code:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index a0efb5ff607..62b128844df 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -30,6 +30,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
"You shared %1$s via link" : "Udostępniasz %1$s przez link",
"Shares" : "Udziały",
+ "Accept" : "Akceptuj",
"This share is password-protected" : "Udział ten jest chroniony hasłem",
"The password is wrong. Try again." : "To hasło jest niewłaściwe. Spróbuj ponownie.",
"Password" : "Hasło",
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index 6ffad562b7f..76052b1dfb7 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -28,6 +28,7 @@
"%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
"You shared %1$s via link" : "Udostępniasz %1$s przez link",
"Shares" : "Udziały",
+ "Accept" : "Akceptuj",
"This share is password-protected" : "Udział ten jest chroniony hasłem",
"The password is wrong. Try again." : "To hasło jest niewłaściwe. Spróbuj ponownie.",
"Password" : "Hasło",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index d8b3bc9e81e..064e611e11e 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s compartilhou %1$s com você",
"You shared %1$s via link" : "Você compartilhou %1$s via link",
"Shares" : "Compartilhamentos",
+ "Accept" : "Aceitar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID, veja %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID",
"This share is password-protected" : "Este compartilhamento esta protegido por senha",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "Nuvem Conglomerada",
"Your Federated Cloud ID:" : "Seu Federados Nuvem ID:",
"Share it:" : "Compartilhe:",
- "Add it to your website:" : "Adicione ao seu site:",
+ "Add to your website" : "Adicione ao seu website",
"Share with me via ownCloud" : "Compartilhe comigo via ownCloud",
"HTML Code:" : "Código HTML:"
},
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index 80d75ebd647..c1b4c255912 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s compartilhou %1$s com você",
"You shared %1$s via link" : "Você compartilhou %1$s via link",
"Shares" : "Compartilhamentos",
+ "Accept" : "Aceitar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID, veja %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID",
"This share is password-protected" : "Este compartilhamento esta protegido por senha",
@@ -64,7 +65,7 @@
"Federated Cloud" : "Nuvem Conglomerada",
"Your Federated Cloud ID:" : "Seu Federados Nuvem ID:",
"Share it:" : "Compartilhe:",
- "Add it to your website:" : "Adicione ao seu site:",
+ "Add to your website" : "Adicione ao seu website",
"Share with me via ownCloud" : "Compartilhe comigo via ownCloud",
"HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js
index 8e9afdd0626..dc501ebe048 100644
--- a/apps/files_sharing/l10n/pt_PT.js
+++ b/apps/files_sharing/l10n/pt_PT.js
@@ -4,41 +4,46 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "A partilha entre servidores não se encontra disponível neste servidor",
"The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém carateres inválidos.",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável",
- "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar para partilha remota, a palavra-passe pode estar errada",
+ "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar para a partilha remota, a palavra-passe poderá estar errada",
"Storage not valid" : "Armazenamento inválido",
"Couldn't add remote share" : "Não foi possível adicionar a partilha remota",
"Shared with you" : "Partilhado consigo ",
"Shared with others" : "Partilhado com outros",
"Shared by link" : "Partilhado pela hiperligação",
"Nothing shared with you yet" : "Ainda não foi partilhado nada consigo",
- "Files and folders others share with you will show up here" : "Os ficheiros e pastas que os outros partilham consigo, serão mostradas aqui",
- "Nothing shared yet" : "Ainda não foi nada paratilhado",
- "Files and folders you share will show up here" : "Os ficheiros e pastas que você partilha serão mostrados aqui",
+ "Files and folders others share with you will show up here" : "Os ficheiros e pastas que os outros partilham consigo, serão mostradaos aqui",
+ "Nothing shared yet" : "Ainda não foi partilhado nada",
+ "Files and folders you share will show up here" : "Os ficheiros e as pastas que partilha serão mostrados aqui",
"No shared links" : "Sem hiperligações partilhadas",
- "Files and folders you share by link will show up here" : "Os ficheiros e pastas que você partilha por link serão mostrados aqui",
+ "Files and folders you share by link will show up here" : "Os ficheiros e as pastas que partilha com esta hiperligação, serão mostrados aqui",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Deseja adicionar a partilha remota {nome} de {proprietário}@{remoto}?",
"Remote share" : "Partilha remota",
"Remote share password" : "Senha da partilha remota",
"Cancel" : "Cancelar",
"Add remote share" : "Adicionar partilha remota",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nenhuma instalação do OwnCloud (7 ou superior) encontrada em {remote}",
+ "You can upload into this folder" : "Pode enviar para esta pasta",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Não foi encontrada nenhuma instalação OwnCloud (7 ou superior) em {remote}",
"Invalid ownCloud url" : "Url ownCloud inválido",
"Shared by" : "Partilhado por",
"Sharing" : "Partilha",
"A file or folder has been <strong>shared</strong>" : "Foi <strong>partilhado</strong> um ficheiro ou uma pasta",
"A file or folder was shared from <strong>another server</strong>" : "Um ficheiro ou pasta foi partilhado a partir de <strong>outro servidor</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "Um ficheiro ou pasta partilhada publicamente foi <strong>descarregado</strong>",
- "You received a new remote share from %s" : "Você recebeu uma nova partilha remota de %s",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Foi <strong>transferido</strong> um ficheiro ou pasta partilhada publicamente",
+ "You received a new remote share %2$s from %1$s" : "Recebeu uma nova partilha remota %2$s de %1$s",
+ "You received a new remote share from %s" : "Recebeu uma nova partilha remota de %s",
"%1$s accepted remote share %2$s" : "%1$s aceitou a partilha remota %2$s",
"%1$s declined remote share %2$s" : "%1$s rejeitou a partilha remota %2$s",
- "%1$s unshared %2$s from you" : "%1$s retirou a partilha %2$s contigo",
- "Public shared folder %1$s was downloaded" : "A pasta partilhada publicamente %1$s foi descarregada",
- "Public shared file %1$s was downloaded" : "O ficheiro partilhado publicamente %1$s foi descarregado",
+ "%1$s unshared %2$s from you" : "%1$s cancelou a partilha %2$s consigo",
+ "Public shared folder %1$s was downloaded" : "A pasta partilhada publicamente %1$s foi transferida",
+ "Public shared file %1$s was downloaded" : "Foi transferido o ficheiro %1$s partilhado publicamente",
"You shared %1$s with %2$s" : "Partilhou %1$s com %2$s",
"You shared %1$s with group %2$s" : "Partilhou %1$s com o grupo %2$s",
"%2$s shared %1$s with you" : "%2$s partilhou %1$s consigo",
"You shared %1$s via link" : "Partilhou %1$s através de uma hiperligação",
"Shares" : "Partilhas",
+ "Accept" : "Aceitar",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partilhe comigo através da minha Id. da Nuvem Federada #ownCloud, veja %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Partilhe comigo através da minha Id. da Nuvem Federada #ownCloud",
"This share is password-protected" : "Esta partilha está protegida por senha",
"The password is wrong. Try again." : "A senha está errada. Por favor, tente de novo.",
"Password" : "Senha",
@@ -55,10 +60,14 @@ OC.L10N.register(
"Download" : "Transferir",
"Download %s" : "Transferir %s",
"Direct link" : "Hiperligação direta",
- "Federated Cloud Sharing" : "Partilha de Cloud Federada",
+ "Federated Cloud Sharing" : "Partilha de Nuvem Federada",
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir utilizadores neste servidor para enviar as partilhas para outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores",
+ "Federated Cloud" : "Nuvem Federada",
+ "Your Federated Cloud ID:" : "A Sua Id. da Nuvem Federada",
+ "Share it:" : "Partilhe:",
+ "Add to your website" : "Adicione ao seu sítio da Web",
"Share with me via ownCloud" : "Partilhe comigo via ownCloud",
"HTML Code:" : "Código HTML:"
},
diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json
index 9a66c73a681..9c5bc14e610 100644
--- a/apps/files_sharing/l10n/pt_PT.json
+++ b/apps/files_sharing/l10n/pt_PT.json
@@ -2,41 +2,46 @@
"Server to server sharing is not enabled on this server" : "A partilha entre servidores não se encontra disponível neste servidor",
"The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém carateres inválidos.",
"Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável",
- "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar para partilha remota, a palavra-passe pode estar errada",
+ "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticar para a partilha remota, a palavra-passe poderá estar errada",
"Storage not valid" : "Armazenamento inválido",
"Couldn't add remote share" : "Não foi possível adicionar a partilha remota",
"Shared with you" : "Partilhado consigo ",
"Shared with others" : "Partilhado com outros",
"Shared by link" : "Partilhado pela hiperligação",
"Nothing shared with you yet" : "Ainda não foi partilhado nada consigo",
- "Files and folders others share with you will show up here" : "Os ficheiros e pastas que os outros partilham consigo, serão mostradas aqui",
- "Nothing shared yet" : "Ainda não foi nada paratilhado",
- "Files and folders you share will show up here" : "Os ficheiros e pastas que você partilha serão mostrados aqui",
+ "Files and folders others share with you will show up here" : "Os ficheiros e pastas que os outros partilham consigo, serão mostradaos aqui",
+ "Nothing shared yet" : "Ainda não foi partilhado nada",
+ "Files and folders you share will show up here" : "Os ficheiros e as pastas que partilha serão mostrados aqui",
"No shared links" : "Sem hiperligações partilhadas",
- "Files and folders you share by link will show up here" : "Os ficheiros e pastas que você partilha por link serão mostrados aqui",
+ "Files and folders you share by link will show up here" : "Os ficheiros e as pastas que partilha com esta hiperligação, serão mostrados aqui",
"Do you want to add the remote share {name} from {owner}@{remote}?" : "Deseja adicionar a partilha remota {nome} de {proprietário}@{remoto}?",
"Remote share" : "Partilha remota",
"Remote share password" : "Senha da partilha remota",
"Cancel" : "Cancelar",
"Add remote share" : "Adicionar partilha remota",
- "No ownCloud installation (7 or higher) found at {remote}" : "Nenhuma instalação do OwnCloud (7 ou superior) encontrada em {remote}",
+ "You can upload into this folder" : "Pode enviar para esta pasta",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Não foi encontrada nenhuma instalação OwnCloud (7 ou superior) em {remote}",
"Invalid ownCloud url" : "Url ownCloud inválido",
"Shared by" : "Partilhado por",
"Sharing" : "Partilha",
"A file or folder has been <strong>shared</strong>" : "Foi <strong>partilhado</strong> um ficheiro ou uma pasta",
"A file or folder was shared from <strong>another server</strong>" : "Um ficheiro ou pasta foi partilhado a partir de <strong>outro servidor</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "Um ficheiro ou pasta partilhada publicamente foi <strong>descarregado</strong>",
- "You received a new remote share from %s" : "Você recebeu uma nova partilha remota de %s",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Foi <strong>transferido</strong> um ficheiro ou pasta partilhada publicamente",
+ "You received a new remote share %2$s from %1$s" : "Recebeu uma nova partilha remota %2$s de %1$s",
+ "You received a new remote share from %s" : "Recebeu uma nova partilha remota de %s",
"%1$s accepted remote share %2$s" : "%1$s aceitou a partilha remota %2$s",
"%1$s declined remote share %2$s" : "%1$s rejeitou a partilha remota %2$s",
- "%1$s unshared %2$s from you" : "%1$s retirou a partilha %2$s contigo",
- "Public shared folder %1$s was downloaded" : "A pasta partilhada publicamente %1$s foi descarregada",
- "Public shared file %1$s was downloaded" : "O ficheiro partilhado publicamente %1$s foi descarregado",
+ "%1$s unshared %2$s from you" : "%1$s cancelou a partilha %2$s consigo",
+ "Public shared folder %1$s was downloaded" : "A pasta partilhada publicamente %1$s foi transferida",
+ "Public shared file %1$s was downloaded" : "Foi transferido o ficheiro %1$s partilhado publicamente",
"You shared %1$s with %2$s" : "Partilhou %1$s com %2$s",
"You shared %1$s with group %2$s" : "Partilhou %1$s com o grupo %2$s",
"%2$s shared %1$s with you" : "%2$s partilhou %1$s consigo",
"You shared %1$s via link" : "Partilhou %1$s através de uma hiperligação",
"Shares" : "Partilhas",
+ "Accept" : "Aceitar",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partilhe comigo através da minha Id. da Nuvem Federada #ownCloud, veja %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Partilhe comigo através da minha Id. da Nuvem Federada #ownCloud",
"This share is password-protected" : "Esta partilha está protegida por senha",
"The password is wrong. Try again." : "A senha está errada. Por favor, tente de novo.",
"Password" : "Senha",
@@ -53,10 +58,14 @@
"Download" : "Transferir",
"Download %s" : "Transferir %s",
"Direct link" : "Hiperligação direta",
- "Federated Cloud Sharing" : "Partilha de Cloud Federada",
+ "Federated Cloud Sharing" : "Partilha de Nuvem Federada",
"Open documentation" : "Abrir documentação",
"Allow users on this server to send shares to other servers" : "Permitir utilizadores neste servidor para enviar as partilhas para outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores",
+ "Federated Cloud" : "Nuvem Federada",
+ "Your Federated Cloud ID:" : "A Sua Id. da Nuvem Federada",
+ "Share it:" : "Partilhe:",
+ "Add to your website" : "Adicione ao seu sítio da Web",
"Share with me via ownCloud" : "Partilhe comigo via ownCloud",
"HTML Code:" : "Código HTML:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index df1ee8603b4..2d89b5e3102 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s поделился с вами %1$s",
"You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
"Shares" : "События обмена файлами",
+ "Accept" : "Принять",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ, смотрите %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ",
"This share is password-protected" : "Общий ресурс защищен паролем",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Объединение облачных хранилищ",
"Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
"Share it:" : "Поделись этим:",
- "Add it to your website:" : "Добавь это на свой сайт:",
"Share with me via ownCloud" : "Поделитесь мной через ownCloud",
"HTML Code:" : "HTML код:"
},
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index d533d01cb01..0f7a152f536 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s поделился с вами %1$s",
"You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки",
"Shares" : "События обмена файлами",
+ "Accept" : "Принять",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ, смотрите %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ",
"This share is password-protected" : "Общий ресурс защищен паролем",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Объединение облачных хранилищ",
"Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:",
"Share it:" : "Поделись этим:",
- "Add it to your website:" : "Добавь это на свой сайт:",
"Share with me via ownCloud" : "Поделитесь мной через ownCloud",
"HTML Code:" : "HTML код:"
},"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_sharing/l10n/sk_SK.js b/apps/files_sharing/l10n/sk_SK.js
index cfefda0ba8c..677b4f24e21 100644
--- a/apps/files_sharing/l10n/sk_SK.js
+++ b/apps/files_sharing/l10n/sk_SK.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s vám zdieľal %1$s",
"You shared %1$s via link" : "Zdieľate %1$s prostredníctvom odkazu",
"Shares" : "Zdieľanie",
+ "Accept" : "Schváliť",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Zdieľajte so mnou pomocou môjho #ownCloud Federated Cloud ID, viac n %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Zdieľajte so mnou pomocou môjho #ownCloud Federated Cloud ID",
"This share is password-protected" : "Toto zdieľanie je chránené heslom",
@@ -65,7 +66,6 @@ OC.L10N.register(
"Allow users on this server to receive shares from other servers" : "Povoliť používateľom z tohoto servera prijímať zdieľania z iných serverov",
"Your Federated Cloud ID:" : "Vaše združené Cloud ID",
"Share it:" : "Zdieľať:",
- "Add it to your website:" : "Pridať na svoju webstránku:",
"Share with me via ownCloud" : "Zdieľané so mnou cez ownCloud",
"HTML Code:" : "HTML kód:"
},
diff --git a/apps/files_sharing/l10n/sk_SK.json b/apps/files_sharing/l10n/sk_SK.json
index f9b51d1dd76..f4f6cc3798b 100644
--- a/apps/files_sharing/l10n/sk_SK.json
+++ b/apps/files_sharing/l10n/sk_SK.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s vám zdieľal %1$s",
"You shared %1$s via link" : "Zdieľate %1$s prostredníctvom odkazu",
"Shares" : "Zdieľanie",
+ "Accept" : "Schváliť",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Zdieľajte so mnou pomocou môjho #ownCloud Federated Cloud ID, viac n %s",
"Share with me through my #ownCloud Federated Cloud ID" : "Zdieľajte so mnou pomocou môjho #ownCloud Federated Cloud ID",
"This share is password-protected" : "Toto zdieľanie je chránené heslom",
@@ -63,7 +64,6 @@
"Allow users on this server to receive shares from other servers" : "Povoliť používateľom z tohoto servera prijímať zdieľania z iných serverov",
"Your Federated Cloud ID:" : "Vaše združené Cloud ID",
"Share it:" : "Zdieľať:",
- "Add it to your website:" : "Pridať na svoju webstránku:",
"Share with me via ownCloud" : "Zdieľané so mnou cez ownCloud",
"HTML Code:" : "HTML kód:"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index d613f169081..3b6622aedf2 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -39,6 +39,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "Uporabnik %2$s je omogočil souporabo %1$s",
"You shared %1$s via link" : "Omogočili ste souporabo %1$s preko povezave",
"Shares" : "Souporaba",
+ "Accept" : "Sprejmi",
"This share is password-protected" : "To mesto je zaščiteno z geslom.",
"The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.",
"Password" : "Geslo",
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index fb00547388b..2d443de13d9 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -37,6 +37,7 @@
"%2$s shared %1$s with you" : "Uporabnik %2$s je omogočil souporabo %1$s",
"You shared %1$s via link" : "Omogočili ste souporabo %1$s preko povezave",
"Shares" : "Souporaba",
+ "Accept" : "Sprejmi",
"This share is password-protected" : "To mesto je zaščiteno z geslom.",
"The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.",
"Password" : "Geslo",
diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js
index 5676cc5a00c..ddb15bd2183 100644
--- a/apps/files_sharing/l10n/sr.js
+++ b/apps/files_sharing/l10n/sr.js
@@ -40,6 +40,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s подели %1$s са вама",
"You shared %1$s via link" : "Поделили сте %1$s путем везе",
"Shares" : "Дељења",
+ "Accept" : "Прихвати",
"This share is password-protected" : "Дељење је заштићено лозинком",
"The password is wrong. Try again." : "Лозинка је погрешна. Покушајте поново.",
"Password" : "Лозинка",
diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json
index fca522a1039..dc44b1fbb60 100644
--- a/apps/files_sharing/l10n/sr.json
+++ b/apps/files_sharing/l10n/sr.json
@@ -38,6 +38,7 @@
"%2$s shared %1$s with you" : "%2$s подели %1$s са вама",
"You shared %1$s via link" : "Поделили сте %1$s путем везе",
"Shares" : "Дељења",
+ "Accept" : "Прихвати",
"This share is password-protected" : "Дељење је заштићено лозинком",
"The password is wrong. Try again." : "Лозинка је погрешна. Покушајте поново.",
"Password" : "Лозинка",
diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js
index 77b1171d9b2..9b1d9ccb591 100644
--- a/apps/files_sharing/l10n/sv.js
+++ b/apps/files_sharing/l10n/sv.js
@@ -36,6 +36,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s delade %1$s med dig",
"You shared %1$s via link" : "Du delade %1$s via länk",
"Shares" : "Delningar",
+ "Accept" : "Acceptera",
"This share is password-protected" : "Den här delningen är lösenordsskyddad",
"The password is wrong. Try again." : "Lösenordet är fel. Försök igen.",
"Password" : "Lösenord",
diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json
index a8bb9afd01f..0d13069dfba 100644
--- a/apps/files_sharing/l10n/sv.json
+++ b/apps/files_sharing/l10n/sv.json
@@ -34,6 +34,7 @@
"%2$s shared %1$s with you" : "%2$s delade %1$s med dig",
"You shared %1$s via link" : "Du delade %1$s via länk",
"Shares" : "Delningar",
+ "Accept" : "Acceptera",
"This share is password-protected" : "Den här delningen är lösenordsskyddad",
"The password is wrong. Try again." : "Lösenordet är fel. Försök igen.",
"Password" : "Lösenord",
diff --git a/apps/files_sharing/l10n/th_TH.js b/apps/files_sharing/l10n/th_TH.js
index 86175f5a627..ea3c8ac7296 100644
--- a/apps/files_sharing/l10n/th_TH.js
+++ b/apps/files_sharing/l10n/th_TH.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s ถูกแชร์ %1$s กับคุณ",
"You shared %1$s via link" : "คุณแชร์ %1$s ผ่านลิงค์",
"Shares" : "แชร์",
+ "Accept" : "ยอมรับ",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ สามารถดูได้ที่ %s",
"Share with me through my #ownCloud Federated Cloud ID" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ",
"This share is password-protected" : "นี้แชร์การป้องกันด้วยรหัสผ่าน",
@@ -66,7 +67,7 @@ OC.L10N.register(
"Federated Cloud" : "สหพันธ์คลาวด์",
"Your Federated Cloud ID:" : "ไอดีคลาวด์ของคุณ:",
"Share it:" : "แชร์มัน:",
- "Add it to your website:" : "เพิ่มไปยังเว็บไซต์ของคุณ:",
+ "Add to your website" : "เพิ่มไปยังเว็บไซต์",
"Share with me via ownCloud" : "แชร์ร่วมกับฉันผ่าน ownCloud",
"HTML Code:" : "โค้ด HTML:"
},
diff --git a/apps/files_sharing/l10n/th_TH.json b/apps/files_sharing/l10n/th_TH.json
index 5704a59336c..196c088abd7 100644
--- a/apps/files_sharing/l10n/th_TH.json
+++ b/apps/files_sharing/l10n/th_TH.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s ถูกแชร์ %1$s กับคุณ",
"You shared %1$s via link" : "คุณแชร์ %1$s ผ่านลิงค์",
"Shares" : "แชร์",
+ "Accept" : "ยอมรับ",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ สามารถดูได้ที่ %s",
"Share with me through my #ownCloud Federated Cloud ID" : "แชร์ร่วมกับฉันผ่าน #ownCloud ด้วยไอดีคลาวด์ในเครือ",
"This share is password-protected" : "นี้แชร์การป้องกันด้วยรหัสผ่าน",
@@ -64,7 +65,7 @@
"Federated Cloud" : "สหพันธ์คลาวด์",
"Your Federated Cloud ID:" : "ไอดีคลาวด์ของคุณ:",
"Share it:" : "แชร์มัน:",
- "Add it to your website:" : "เพิ่มไปยังเว็บไซต์ของคุณ:",
+ "Add to your website" : "เพิ่มไปยังเว็บไซต์",
"Share with me via ownCloud" : "แชร์ร่วมกับฉันผ่าน ownCloud",
"HTML Code:" : "โค้ด HTML:"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index ce96af88e1e..bb00dd4295a 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -41,6 +41,7 @@ OC.L10N.register(
"%2$s shared %1$s with you" : "%2$s sizinle %1$s dosyasını paylaştı",
"You shared %1$s via link" : "Bağlantı ile %1$s paylaşımını yaptınız",
"Shares" : "Paylaşımlar",
+ "Accept" : "Kabul et",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaşıldı, bkz %s",
"Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaşıldı",
"This share is password-protected" : "Bu paylaşım parola korumalı",
@@ -66,7 +67,6 @@ OC.L10N.register(
"Federated Cloud" : "Birleşmiş Bulut",
"Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:",
"Share it:" : "Paylaşın:",
- "Add it to your website:" : "Web sitenize ekleyin:",
"Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşıldı",
"HTML Code:" : "HTML Kodu:"
},
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index 8705219ab2e..1371bf37447 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -39,6 +39,7 @@
"%2$s shared %1$s with you" : "%2$s sizinle %1$s dosyasını paylaştı",
"You shared %1$s via link" : "Bağlantı ile %1$s paylaşımını yaptınız",
"Shares" : "Paylaşımlar",
+ "Accept" : "Kabul et",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "#ownCloud Birleşik Bulut kimliğim ile paylaşıldı, bkz %s",
"Share with me through my #ownCloud Federated Cloud ID" : "#ownCloud Birleşmiş Bulut kimliğim ile paylaşıldı",
"This share is password-protected" : "Bu paylaşım parola korumalı",
@@ -64,7 +65,6 @@
"Federated Cloud" : "Birleşmiş Bulut",
"Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:",
"Share it:" : "Paylaşın:",
- "Add it to your website:" : "Web sitenize ekleyin:",
"Share with me via ownCloud" : "Benimle ownCloud aracılığıyla paylaşıldı",
"HTML Code:" : "HTML Kodu:"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js
index 37c838b6aa4..80c28c8a936 100644
--- a/apps/files_sharing/l10n/uk.js
+++ b/apps/files_sharing/l10n/uk.js
@@ -61,7 +61,6 @@ OC.L10N.register(
"Allow users on this server to send shares to other servers" : "Дозволити користувачам цього сервера публікувати на інших серверах",
"Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів",
"Share it:" : "Поділитися цим:",
- "Add it to your website:" : "Додати до вашого сайту:",
"HTML Code:" : "HTML код:"
},
"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_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json
index b062a761fbb..0b5de75ac5a 100644
--- a/apps/files_sharing/l10n/uk.json
+++ b/apps/files_sharing/l10n/uk.json
@@ -59,7 +59,6 @@
"Allow users on this server to send shares to other servers" : "Дозволити користувачам цього сервера публікувати на інших серверах",
"Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів",
"Share it:" : "Поділитися цим:",
- "Add it to your website:" : "Додати до вашого сайту:",
"HTML Code:" : "HTML код:"
},"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_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index c25dc92409f..377c9f02253 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -47,6 +47,7 @@ class Shared_Cache extends Cache {
* @param \OC\Files\Storage\Shared $storage
*/
public function __construct($storage) {
+ parent::__construct($storage);
$this->storage = $storage;
}
@@ -94,6 +95,7 @@ class Shared_Cache extends Cache {
* @return array|false
*/
public function get($file) {
+ $mimetypeLoader = \OC::$server->getMimeTypeLoader();
if (is_string($file)) {
$cache = $this->getSourceCache($file);
if ($cache) {
@@ -130,8 +132,8 @@ class Shared_Cache extends Cache {
$data['mtime'] = (int)$data['mtime'];
$data['storage_mtime'] = (int)$data['storage_mtime'];
$data['encrypted'] = (bool)$data['encrypted'];
- $data['mimetype'] = $this->getMimetype($data['mimetype']);
- $data['mimepart'] = $this->getMimetype($data['mimepart']);
+ $data['mimetype'] = $mimetypeLoader->getMimetypeById($data['mimetype']);
+ $data['mimepart'] = $mimetypeLoader->getMimetypeById($data['mimepart']);
if ($data['storage_mtime'] === 0) {
$data['storage_mtime'] = $data['mtime'];
}
diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php
index 67a26c096c2..17142e95099 100644
--- a/apps/files_sharing/lib/external/manager.php
+++ b/apps/files_sharing/lib/external/manager.php
@@ -28,6 +28,7 @@ namespace OCA\Files_Sharing\External;
use OC\Files\Filesystem;
use OCP\Files;
+use OC\Notification\IManager;
class Manager {
const STORAGE = '\OCA\Files_Sharing\External\Storage';
@@ -58,19 +59,26 @@ class Manager {
private $httpHelper;
/**
+ * @var IManager
+ */
+ private $notificationManager;
+
+ /**
* @param \OCP\IDBConnection $connection
* @param \OC\Files\Mount\Manager $mountManager
* @param \OCP\Files\Storage\IStorageFactory $storageLoader
* @param \OC\HTTPHelper $httpHelper
+ * @param IManager $notificationManager
* @param string $uid
*/
public function __construct(\OCP\IDBConnection $connection, \OC\Files\Mount\Manager $mountManager,
- \OCP\Files\Storage\IStorageFactory $storageLoader, \OC\HTTPHelper $httpHelper, $uid) {
+ \OCP\Files\Storage\IStorageFactory $storageLoader, \OC\HTTPHelper $httpHelper, IManager $notificationManager, $uid) {
$this->connection = $connection;
$this->mountManager = $mountManager;
$this->storageLoader = $storageLoader;
$this->httpHelper = $httpHelper;
$this->uid = $uid;
+ $this->notificationManager = $notificationManager;
}
/**
@@ -206,6 +214,7 @@ class Manager {
$acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid));
$this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept');
+ $this->scrapNotification($share['remote_id']);
return true;
}
@@ -228,6 +237,7 @@ class Manager {
$removeShare->execute(array($id, $this->uid));
$this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline');
+ $this->scrapNotification($share['remote_id']);
return true;
}
@@ -235,6 +245,17 @@ class Manager {
}
/**
+ * @param int $remoteShare
+ */
+ protected function scrapNotification($remoteShare) {
+ $filter = $this->notificationManager->createNotification();
+ $filter->setApp('files_sharing')
+ ->setUser($this->uid)
+ ->setObject('remote_share', (int) $remoteShare);
+ $this->notificationManager->markProcessed($filter);
+ }
+
+ /**
* inform remote server whether server-to-server share was accepted/declined
*
* @param string $remote
@@ -265,6 +286,7 @@ class Manager {
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
$params['user']
);
diff --git a/apps/files_sharing/lib/hooks.php b/apps/files_sharing/lib/hooks.php
index 7dd04f2f4a0..1937010f390 100644
--- a/apps/files_sharing/lib/hooks.php
+++ b/apps/files_sharing/lib/hooks.php
@@ -33,6 +33,7 @@ class Hooks {
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
$params['uid']);
$manager->removeUserShares($params['uid']);
diff --git a/apps/files_sharing/lib/mountprovider.php b/apps/files_sharing/lib/mountprovider.php
index 3f59fd131d0..14a79625993 100644
--- a/apps/files_sharing/lib/mountprovider.php
+++ b/apps/files_sharing/lib/mountprovider.php
@@ -66,12 +66,6 @@ class MountProvider implements IMountProvider {
return $share['permissions'] > 0;
});
$shares = array_map(function ($share) use ($user, $storageFactory) {
- try {
- Filesystem::initMountPoints($share['uid_owner']);
- } catch(NoUserException $e) {
- \OC::$server->getLogger()->warning('The user \'' . $share['uid_owner'] . '\' of share with ID \'' . $share['id'] . '\' can\'t be retrieved.', array('app' => 'files_sharing'));
- return null;
- }
// for updating etags for the share owner when we make changes to this share.
$ownerPropagator = $this->propagationManager->getChangePropagator($share['uid_owner']);
diff --git a/apps/files_sharing/lib/notifier.php b/apps/files_sharing/lib/notifier.php
new file mode 100644
index 00000000000..cc2deb3f439
--- /dev/null
+++ b/apps/files_sharing/lib/notifier.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_Sharing;
+
+
+use OC\Notification\INotification;
+use OC\Notification\INotifier;
+
+class Notifier implements INotifier {
+ /** @var \OCP\L10N\IFactory */
+ protected $factory;
+
+ /**
+ * @param \OCP\L10N\IFactory $factory
+ */
+ public function __construct(\OCP\L10N\IFactory $factory) {
+ $this->factory = $factory;
+ }
+
+ /**
+ * @param INotification $notification
+ * @param string $languageCode The code of the language that should be used to prepare the notification
+ * @return INotification
+ */
+ public function prepare(INotification $notification, $languageCode) {
+ if ($notification->getApp() !== 'files_sharing') {
+ // Not my app => throw
+ throw new \InvalidArgumentException();
+ }
+
+ // Read the language from the notification
+ $l = $this->factory->get('files_sharing', $languageCode);
+
+ switch ($notification->getSubject()) {
+ // Deal with known subjects
+ case 'remote_share':
+ $params = $notification->getSubjectParameters();
+ $notification->setParsedSubject(
+ (string) $l->t('You received %s as a remote share from %s', $params)
+ );
+
+ // Deal with the actions for a known subject
+ foreach ($notification->getActions() as $action) {
+ switch ($action->getLabel()) {
+ case 'accept':
+ $action->setParsedLabel(
+ (string) $l->t('Accept')
+ );
+ break;
+
+ case 'decline':
+ $action->setParsedLabel(
+ (string) $l->t('Decline')
+ );
+ break;
+ }
+
+ $notification->addParsedAction($action);
+ }
+ return $notification;
+
+ default:
+ // Unknown subject => Unknown notification => throw
+ throw new \InvalidArgumentException();
+ }
+ }
+}
diff --git a/apps/files_sharing/lib/propagation/recipientpropagator.php b/apps/files_sharing/lib/propagation/recipientpropagator.php
index 11764106861..420cacb3d2f 100644
--- a/apps/files_sharing/lib/propagation/recipientpropagator.php
+++ b/apps/files_sharing/lib/propagation/recipientpropagator.php
@@ -126,7 +126,13 @@ class RecipientPropagator {
});
}
+ protected $propagatingIds = [];
+
public function propagateById($id) {
+ if (isset($this->propagatingIds[$id])) {
+ return;
+ }
+ $this->propagatingIds[$id] = true;
$shares = Share::getAllSharesForFileId($id);
foreach ($shares as $share) {
// propagate down the share tree
@@ -141,5 +147,7 @@ class RecipientPropagator {
$watcher->writeHook(['path' => $path]);
}
}
+
+ unset($this->propagatingIds[$id]);
}
}
diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php
index 2771e0415b0..9aa9bbf562b 100644
--- a/apps/files_sharing/lib/sharedmount.php
+++ b/apps/files_sharing/lib/sharedmount.php
@@ -81,7 +81,7 @@ class SharedMount extends MountPoint implements MoveableMount {
);
if ($newMountPoint !== $share['file_target']) {
- self::updateFileTarget($newMountPoint, $share);
+ $this->updateFileTarget($newMountPoint, $share);
$share['file_target'] = $newMountPoint;
$share['unique_name'] = true;
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index c7529df0617..1ac401f3cf8 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -55,6 +55,10 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
$this->ownerView = $arguments['ownerView'];
}
+ private function init() {
+ Filesystem::initMountPoints($this->share['uid_owner']);
+ }
+
/**
* get id of the mount point
*
@@ -80,6 +84,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
* @return array Returns array with the keys path, permissions, and owner or false if not found
*/
public function getFile($target) {
+ $this->init();
if (!isset($this->files[$target])) {
// Check for partial files
if (pathinfo($target, PATHINFO_EXTENSION) === 'part') {
@@ -319,7 +324,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
}
public function rename($path1, $path2) {
-
+ $this->init();
// we need the paths relative to data/user/files
$relPath1 = $this->getMountPoint() . '/' . $path1;
$relPath2 = $this->getMountPoint() . '/' . $path2;
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index 43c76125e16..cde28c80fc4 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -17,6 +17,7 @@ OCP\Util::addStyle('files', 'upload');
OCP\Util::addScript('files', 'filesummary');
OCP\Util::addScript('files', 'breadcrumb');
OCP\Util::addScript('files', 'fileinfomodel');
+OCP\Util::addScript('files', 'newfilemenu');
OCP\Util::addScript('files', 'files');
OCP\Util::addScript('files', 'filelist');
OCP\Util::addscript('files', 'keyboardshortcuts');
diff --git a/apps/files_sharing/tests/external/managertest.php b/apps/files_sharing/tests/external/managertest.php
index df01ea0f738..8e03c67a9a3 100644
--- a/apps/files_sharing/tests/external/managertest.php
+++ b/apps/files_sharing/tests/external/managertest.php
@@ -50,6 +50,7 @@ class ManagerTest extends TestCase {
$this->mountManager,
new StorageFactory(),
$httpHelper,
+ \OC::$server->getNotificationManager(),
$this->uid
);
}
diff --git a/apps/files_sharing/tests/server2server.php b/apps/files_sharing/tests/server2server.php
index a1c87d73393..a4cc8209a8e 100644
--- a/apps/files_sharing/tests/server2server.php
+++ b/apps/files_sharing/tests/server2server.php
@@ -154,6 +154,7 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase {
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
+ \OC::$server->getNotificationManager(),
$toDelete
);
diff --git a/apps/files_versions/ajax/getVersions.php b/apps/files_versions/ajax/getVersions.php
index 20d60240179..59bd30f434f 100644
--- a/apps/files_versions/ajax/getVersions.php
+++ b/apps/files_versions/ajax/getVersions.php
@@ -44,6 +44,6 @@ if( $versions ) {
} else {
- \OCP\JSON::success(array('data' => array('versions' => false, 'endReached' => true)));
+ \OCP\JSON::success(array('data' => array('versions' => [], 'endReached' => true)));
}
diff --git a/apps/files_versions/ajax/preview.php b/apps/files_versions/ajax/preview.php
index 8a9a5fba14c..2f33f0278ef 100644
--- a/apps/files_versions/ajax/preview.php
+++ b/apps/files_versions/ajax/preview.php
@@ -53,7 +53,10 @@ try {
$preview->setScalingUp($scalingUp);
$preview->showPreview();
-}catch(\Exception $e) {
+} catch (\OCP\Files\NotFoundException $e) {
+ \OC_Response::setStatus(404);
+ \OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::DEBUG);
+} catch (\Exception $e) {
\OC_Response::setStatus(500);
\OCP\Util::writeLog('core', $e->getmessage(), \OCP\Util::DEBUG);
}
diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php
index 3bad0d8a94d..967f2e73a34 100644
--- a/apps/files_versions/appinfo/app.php
+++ b/apps/files_versions/appinfo/app.php
@@ -19,7 +19,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
-OCP\Util::addscript('files_versions', 'versions');
OCP\Util::addStyle('files_versions', 'versions');
\OCA\Files_Versions\Hooks::connectHooks();
diff --git a/apps/files_versions/css/versions.css b/apps/files_versions/css/versions.css
index e3ccfc3c864..ec0f0cc9896 100644
--- a/apps/files_versions/css/versions.css
+++ b/apps/files_versions/css/versions.css
@@ -1,19 +1,18 @@
-#dropdown.drop-versions {
- width: 360px;
+.versionsTabView .clear-float {
+ clear: both;
}
-
-#found_versions li {
+.versionsTabView li {
width: 100%;
cursor: default;
height: 56px;
float: left;
border-bottom: 1px solid rgba(100,100,100,.1);
}
-#found_versions li:last-child {
+.versionsTabView li:last-child {
border-bottom: none;
}
-#found_versions li > * {
+.versionsTabView li > * {
padding: 7px;
float: left;
vertical-align: top;
@@ -22,34 +21,34 @@
opacity: .5;
}
-#found_versions li > a,
-#found_versions li > span {
+.versionsTabView li > a,
+.versionsTabView li > span {
padding: 17px 7px;
}
-#found_versions li > *:hover,
-#found_versions li > *:focus {
+.versionsTabView li > *:hover,
+.versionsTabView li > *:focus {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
opacity: 1;
}
-#found_versions img {
+.versionsTabView img {
cursor: pointer;
padding-right: 4px;
}
-#found_versions img.preview {
+.versionsTabView img.preview {
cursor: default;
opacity: 1;
}
-#found_versions .versionDate {
+.versionsTabView .versionDate {
min-width: 100px;
vertical-align: text-bottom;
}
-#found_versions .revertVersion {
+.versionsTabView .revertVersion {
cursor: pointer;
float: right;
max-width: 130px;
diff --git a/apps/files_versions/js/filesplugin.js b/apps/files_versions/js/filesplugin.js
new file mode 100644
index 00000000000..42075ce6462
--- /dev/null
+++ b/apps/files_versions/js/filesplugin.js
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+(function() {
+ OCA.Versions = OCA.Versions || {};
+
+ /**
+ * @namespace
+ */
+ OCA.Versions.Util = {
+ /**
+ * Initialize the versions plugin.
+ *
+ * @param {OCA.Files.FileList} fileList file list to be extended
+ */
+ attach: function(fileList) {
+ if (fileList.id === 'trashbin' || fileList.id === 'files.public') {
+ return;
+ }
+
+ fileList.registerTabView(new OCA.Versions.VersionsTabView('versionsTabView'));
+ }
+ };
+})();
+
+OC.Plugins.register('OCA.Files.FileList', OCA.Versions.Util);
+
diff --git a/apps/files_versions/js/versioncollection.js b/apps/files_versions/js/versioncollection.js
new file mode 100644
index 00000000000..3f8214cde8c
--- /dev/null
+++ b/apps/files_versions/js/versioncollection.js
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+(function() {
+ /**
+ * @memberof OCA.Versions
+ */
+ var VersionCollection = OC.Backbone.Collection.extend({
+ model: OCA.Versions.VersionModel,
+
+ /**
+ * @var OCA.Files.FileInfoModel
+ */
+ _fileInfo: null,
+
+ _endReached: false,
+ _currentIndex: 0,
+
+ 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);
+ },
+
+ setFileInfo: function(fileInfo) {
+ this._fileInfo = fileInfo;
+ // reset
+ this._endReached = false;
+ this._currentIndex = 0;
+ },
+
+ getFileInfo: function() {
+ return this._fileInfo;
+ },
+
+ hasMoreResults: function() {
+ return !this._endReached;
+ },
+
+ fetch: function(options) {
+ if (!options || options.remove) {
+ this._currentIndex = 0;
+ }
+ return OC.Backbone.Collection.prototype.fetch.apply(this, arguments);
+ },
+
+ /**
+ * 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});
+ },
+
+ parse: function(result) {
+ var results = _.map(result.data.versions, function(version) {
+ var revision = parseInt(version.version, 10);
+ return {
+ id: revision,
+ name: version.name,
+ fullPath: version.path,
+ timestamp: revision,
+ size: version.size
+ };
+ });
+ this._endReached = result.data.endReached;
+ this._currentIndex += results.length;
+ return results;
+ }
+ });
+
+ OCA.Versions = OCA.Versions || {};
+
+ OCA.Versions.VersionCollection = VersionCollection;
+})();
+
diff --git a/apps/files_versions/js/versionmodel.js b/apps/files_versions/js/versionmodel.js
new file mode 100644
index 00000000000..dc610fc2144
--- /dev/null
+++ b/apps/files_versions/js/versionmodel.js
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+(function() {
+ /**
+ * @memberof OCA.Versions
+ */
+ var VersionModel = OC.Backbone.Model.extend({
+
+ /**
+ * Restores the original file to this revision
+ */
+ 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);
+ }
+ }
+ });
+ },
+
+ getFullPath: function() {
+ return this.get('fullPath');
+ },
+
+ getPreviewUrl: function() {
+ var url = OC.generateUrl('/apps/files_versions/preview');
+ var params = {
+ file: this.get('fullPath'),
+ version: this.get('timestamp')
+ };
+ 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);
+ }
+ });
+
+ OCA.Versions = OCA.Versions || {};
+
+ OCA.Versions.VersionModel = VersionModel;
+})();
+
diff --git a/apps/files_versions/js/versions.js b/apps/files_versions/js/versions.js
deleted file mode 100644
index e86bb4c3307..00000000000
--- a/apps/files_versions/js/versions.js
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2014
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-/* global scanFiles, escapeHTML, formatDate */
-$(document).ready(function(){
-
- // TODO: namespace all this as OCA.FileVersions
-
- if ($('#isPublic').val()){
- // no versions actions in public mode
- // beware of https://github.com/owncloud/core/issues/4545
- // as enabling this might hang Chrome
- return;
- }
-
- if (OCA.Files) {
- // Add versions button to 'files/index.php'
- OCA.Files.fileActions.register(
- 'file',
- 'Versions',
- OC.PERMISSION_UPDATE,
- function() {
- // Specify icon for hitory button
- return OC.imagePath('core','actions/history');
- }, function(filename, context){
- // Action to perform when clicked
- if (scanFiles.scanning){return;}//workaround to prevent additional http request block scanning feedback
-
- var file = context.dir.replace(/(?!<=\/)$|\/$/, '/' + filename);
- var createDropDown = true;
- // Check if drop down is already visible for a different file
- if (($('#dropdown').length > 0) ) {
- if ( $('#dropdown').hasClass('drop-versions') && file == $('#dropdown').data('file')) {
- createDropDown = false;
- }
- $('#dropdown').slideUp(OC.menuSpeed);
- $('#dropdown').remove();
- $('tr').removeClass('mouseOver');
- }
-
- if(createDropDown === true) {
- createVersionsDropdown(filename, file, context.fileList);
- }
- }, t('files_versions', 'Versions')
- );
- }
-
- $(document).on("click", 'span[class="revertVersion"]', function() {
- var revision = $(this).attr('id');
- var file = $(this).attr('value');
- revertFile(file, revision);
- });
-
-});
-
-function revertFile(file, revision) {
-
- $.ajax({
- type: 'GET',
- url: OC.linkTo('files_versions', 'ajax/rollbackVersion.php'),
- dataType: 'json',
- data: {file: file, revision: revision},
- async: false,
- success: function(response) {
- if (response.status === 'error') {
- OC.Notification.show( t('files_version', 'Failed to revert {file} to revision {timestamp}.', {file:file, timestamp:formatDate(revision * 1000)}) );
- } else {
- $('#dropdown').slideUp(OC.menuSpeed, function() {
- $('#dropdown').closest('tr').find('.modified:first').html(relative_modified_date(revision));
- $('#dropdown').remove();
- $('tr').removeClass('mouseOver');
- });
- }
- }
- });
-
-}
-
-function goToVersionPage(url){
- window.location.assign(url);
-}
-
-function createVersionsDropdown(filename, files, fileList) {
-
- var start = 0;
- var fileEl;
-
- var html = '<div id="dropdown" class="drop drop-versions" data-file="'+escapeHTML(files)+'">';
- html += '<div id="private">';
- html += '<ul id="found_versions">';
- html += '</ul>';
- html += '</div>';
- html += '<input type="button" value="'+ t('files_versions', 'More versions...') + '" name="show-more-versions" id="show-more-versions" style="display: none;" />';
-
- if (filename) {
- fileEl = fileList.findFileEl(filename);
- fileEl.addClass('mouseOver');
- $(html).appendTo(fileEl.find('td.filename'));
- } else {
- $(html).appendTo($('thead .share'));
- }
-
- getVersions(start);
- start = start + 5;
-
- $("#show-more-versions").click(function() {
- //get more versions
- getVersions(start);
- start = start + 5;
- });
-
- function getVersions(start) {
- $.ajax({
- type: 'GET',
- url: OC.filePath('files_versions', 'ajax', 'getVersions.php'),
- dataType: 'json',
- data: {source: files, start: start},
- async: false,
- success: function(result) {
- var versions = result.data.versions;
- if (result.data.endReached === true) {
- $("#show-more-versions").css("display", "none");
- } else {
- $("#show-more-versions").css("display", "block");
- }
- if (versions) {
- $.each(versions, function(index, row) {
- addVersion(row);
- });
- } else {
- $('<div style="text-align:center;">'+ t('files_versions', 'No other versions available') + '</div>').appendTo('#dropdown');
- }
- $('#found_versions').change(function() {
- var revision = parseInt($(this).val());
- revertFile(files, revision);
- });
- }
- });
- }
-
- function addVersion( revision ) {
- var title = formatDate(revision.version*1000);
- var name ='<span class="versionDate" title="' + title + '">' + revision.humanReadableTimestamp + '</span>';
-
- var path = OC.filePath('files_versions', '', 'download.php');
-
- var preview = '<img class="preview" src="'+revision.preview+'"/>';
-
- var download ='<a href="' + path + "?file=" + encodeURIComponent(files) + '&revision=' + revision.version + '">';
- download+='<img';
- download+=' src="' + OC.imagePath('core', 'actions/download') + '"';
- download+=' name="downloadVersion" />';
- download+=name;
- download+='</a>';
-
- var revert='<span class="revertVersion"';
- revert+=' id="' + revision.version + '">';
- revert+='<img';
- revert+=' src="' + OC.imagePath('core', 'actions/history') + '"';
- revert+=' name="revertVersion"';
- revert+='/>'+t('files_versions', 'Restore')+'</span>';
-
- var version=$('<li/>');
- version.attr('value', revision.version);
- version.html(preview + download + revert);
- // add file here for proper name escaping
- version.find('span.revertVersion').attr('value', files);
-
- version.appendTo('#found_versions');
- }
-
- $('#dropdown').slideDown(1000);
-}
-
-$(this).click(
- function(event) {
- if ($('#dropdown').has(event.target).length === 0 && $('#dropdown').hasClass('drop-versions')) {
- $('#dropdown').slideUp(OC.menuSpeed, function() {
- $('#dropdown').remove();
- $('tr').removeClass('mouseOver');
- });
- }
-
-
- }
-);
diff --git a/apps/files_versions/js/versionstabview.js b/apps/files_versions/js/versionstabview.js
new file mode 100644
index 00000000000..1f84428e616
--- /dev/null
+++ b/apps/files_versions/js/versionstabview.js
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+(function() {
+ var TEMPLATE_ITEM =
+ '<li data-revision="{{timestamp}}">' +
+ '<img class="preview" src="{{previewUrl}}"/>' +
+ '<a href="{{downloadUrl}}" class="downloadVersion"><img src="{{downloadIconUrl}}" />' +
+ '<span class="versiondate has-tooltip" title="{{formattedTimestamp}}">{{relativeTimestamp}}</span>' +
+ '</a>' +
+ '<a href="#" class="revertVersion"><img src="{{revertIconUrl}}" />{{revertLabel}}</a>' +
+ '</li>';
+
+ var TEMPLATE =
+ '<ul class="versions"></ul>' +
+ '<div class="clear-float"></div>' +
+ '<div class="empty hidden">{{emptyResultLabel}}</div>' +
+ '<input type="button" class="showMoreVersions hidden" value="{{moreVersionsLabel}}"' +
+ ' name="show-more-versions" id="show-more-versions" />' +
+ '<div class="loading hidden" style="height: 50px"></div>';
+
+ /**
+ * @memberof OCA.Versions
+ */
+ var VersionsTabView = OCA.Files.DetailTabView.extend(
+ /** @lends OCA.Versions.VersionsTabView.prototype */ {
+ id: 'versionsTabView',
+ className: 'tab versionsTabView',
+
+ _template: null,
+
+ $versionsContainer: null,
+
+ events: {
+ 'click .revertVersion': '_onClickRevertVersion',
+ 'click .showMoreVersions': '_onClickShowMoreVersions'
+ },
+
+ initialize: function() {
+ this.collection = new OCA.Versions.VersionCollection();
+ this.collection.on('request', this._onRequest, this);
+ this.collection.on('sync', this._onEndRequest, this);
+ this.collection.on('update', this._onUpdate, this);
+ this.collection.on('error', this._onError, this);
+ this.collection.on('add', this._onAddModel, this);
+ },
+
+ getLabel: function() {
+ return t('files_versions', 'Versions');
+ },
+
+ nextPage: function() {
+ if (this._loading || !this.collection.hasMoreResults()) {
+ return;
+ }
+
+ if (this.collection.getFileInfo() && this.collection.getFileInfo().isDirectory()) {
+ return;
+ }
+ this.collection.fetchNext();
+ },
+
+ _onClickShowMoreVersions: function(ev) {
+ ev.preventDefault();
+ this.nextPage();
+ },
+
+ _onClickRevertVersion: function(ev) {
+ var self = this;
+ var $target = $(ev.target);
+ var fileInfoModel = this.collection.getFileInfo();
+ var revision;
+ if (!$target.is('li')) {
+ $target = $target.closest('li');
+ }
+
+ ev.preventDefault();
+ revision = $target.attr('data-revision');
+
+ var versionModel = this.collection.get(revision);
+ versionModel.revert({
+ success: function() {
+ // reset and re-fetch the updated collection
+ self.collection.setFileInfo(fileInfoModel);
+ self.collection.fetch();
+
+ // update original model
+ fileInfoModel.trigger('busy', fileInfoModel, false);
+ fileInfoModel.set({
+ size: versionModel.get('size'),
+ mtime: versionModel.get('timestamp') * 1000,
+ // temp dummy, until we can do a PROPFIND
+ etag: versionModel.get('id') + versionModel.get('timestamp')
+ });
+ },
+
+ error: function() {
+ OC.Notification.showTemporary(
+ t('files_version', 'Failed to revert {file} to revision {timestamp}.', {
+ file: versionModel.getFullPath(),
+ timestamp: OC.Util.formatDate(versionModel.get('timestamp') * 1000)
+ })
+ );
+ }
+ });
+
+ // spinner
+ this._toggleLoading(true);
+ fileInfoModel.trigger('busy', fileInfoModel, true);
+ },
+
+ _toggleLoading: function(state) {
+ this._loading = state;
+ this.$el.find('.loading').toggleClass('hidden', !state);
+ },
+
+ _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) {
+ this.$versionsContainer.append(this.itemTemplate(this._formatItem(model)));
+ },
+
+ template: function(data) {
+ if (!this._template) {
+ this._template = Handlebars.compile(TEMPLATE);
+ }
+
+ return this._template(data);
+ },
+
+ itemTemplate: function(data) {
+ if (!this._itemTemplate) {
+ this._itemTemplate = Handlebars.compile(TEMPLATE_ITEM);
+ }
+
+ return this._itemTemplate(data);
+ },
+
+ setFileInfo: function(fileInfo) {
+ if (fileInfo) {
+ this.render();
+ this.collection.setFileInfo(fileInfo);
+ this.collection.reset({silent: true});
+ this.nextPage();
+ } else {
+ this.render();
+ this.collection.reset();
+ }
+ },
+
+ _formatItem: function(version) {
+ var timestamp = version.get('timestamp') * 1000;
+ return _.extend({
+ formattedTimestamp: OC.Util.formatDate(timestamp),
+ relativeTimestamp: OC.Util.relativeModifiedDate(timestamp),
+ downloadUrl: version.getDownloadUrl(),
+ downloadIconUrl: OC.imagePath('core', 'actions/download'),
+ revertIconUrl: OC.imagePath('core', 'actions/history'),
+ previewUrl: version.getPreviewUrl(),
+ revertLabel: t('files_versions', 'Restore'),
+ }, version.attributes);
+ },
+
+ /**
+ * Renders this details view
+ */
+ render: function() {
+ this.$el.html(this.template({
+ emptyResultLabel: t('files_versions', 'No other versions available'),
+ moreVersionsLabel: t('files_versions', 'More versions...')
+ }));
+ this.$el.find('.has-tooltip').tooltip();
+ this.$versionsContainer = this.$el.find('ul.versions');
+ this.delegateEvents();
+ }
+ });
+
+ OCA.Versions = OCA.Versions || {};
+
+ OCA.Versions.VersionsTabView = VersionsTabView;
+})();
+
diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php
index ccd89a4a14f..5ef2cc3c7d0 100644
--- a/apps/files_versions/lib/hooks.php
+++ b/apps/files_versions/lib/hooks.php
@@ -43,6 +43,9 @@ class Hooks {
\OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Files_Versions\Hooks', 'copy_hook');
\OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Files_Versions\Hooks', 'pre_renameOrCopy_hook');
\OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Files_Versions\Hooks', 'pre_renameOrCopy_hook');
+
+ $eventDispatcher = \OC::$server->getEventDispatcher();
+ $eventDispatcher->addListener('OCA\Files::loadAdditionalScripts', ['OCA\Files_Versions\Hooks', 'onLoadFilesAppScripts']);
}
/**
@@ -154,4 +157,13 @@ class Hooks {
}
}
+ /**
+ * Load additional scripts when the files app is visible
+ */
+ public static function onLoadFilesAppScripts() {
+ \OCP\Util::addScript('files_versions', 'versionmodel');
+ \OCP\Util::addScript('files_versions', 'versioncollection');
+ \OCP\Util::addScript('files_versions', 'versionstabview');
+ \OCP\Util::addScript('files_versions', 'filesplugin');
+ }
}
diff --git a/apps/files_versions/tests/js/versioncollectionSpec.js b/apps/files_versions/tests/js/versioncollectionSpec.js
new file mode 100644
index 00000000000..87065fa1d36
--- /dev/null
+++ b/apps/files_versions/tests/js/versioncollectionSpec.js
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+describe('OCA.Versions.VersionCollection', function() {
+ var VersionCollection = OCA.Versions.VersionCollection;
+ var collection, fileInfoModel;
+
+ beforeEach(function() {
+ fileInfoModel = new OCA.Files.FileInfoModel({
+ path: '/subdir',
+ name: 'some file.txt'
+ });
+ collection = new VersionCollection();
+ collection.setFileInfo(fileInfoModel);
+ });
+ it('fetches the next page', 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',
+ 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);
+ });
+});
+
diff --git a/apps/files_versions/tests/js/versionmodelSpec.js b/apps/files_versions/tests/js/versionmodelSpec.js
new file mode 100644
index 00000000000..0f1c06581d5
--- /dev/null
+++ b/apps/files_versions/tests/js/versionmodelSpec.js
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+describe('OCA.Versions.VersionModel', function() {
+ var VersionModel = OCA.Versions.VersionModel;
+ var model;
+
+ beforeEach(function() {
+ model = new VersionModel({
+ id: 10000000,
+ timestamp: 10000000,
+ fullPath: '/subdir/some file.txt',
+ name: 'some file.txt',
+ size: 150
+ });
+ });
+
+ it('returns the full path', function() {
+ expect(model.getFullPath()).toEqual('/subdir/some file.txt');
+ });
+ it('returns the preview url', function() {
+ expect(model.getPreviewUrl())
+ .toEqual(OC.generateUrl('/apps/files_versions/preview') +
+ '?file=%2Fsubdir%2Fsome%20file.txt&version=10000000'
+ );
+ });
+ it('returns the download url', function() {
+ expect(model.getDownloadUrl())
+ .toEqual(OC.generateUrl('/apps/files_versions/download.php') +
+ '?file=%2Fsubdir%2Fsome%20file.txt&revision=10000000'
+ );
+ });
+ describe('reverting', function() {
+ var revertEventStub;
+ var successStub;
+ var errorStub;
+
+ beforeEach(function() {
+ revertEventStub = sinon.stub();
+ errorStub = sinon.stub();
+ successStub = sinon.stub();
+
+ model.on('revert', revertEventStub);
+ model.on('error', errorStub);
+ });
+ it('tells the server to revert when calling the revert method', function() {
+ model.revert({
+ success: successStub
+ });
+
+ expect(fakeServer.requests.length).toEqual(1);
+ expect(fakeServer.requests[0].url)
+ .toEqual(
+ OC.generateUrl('/apps/files_versions/ajax/rollbackVersion.php') +
+ '?file=%2Fsubdir%2Fsome+file.txt&revision=10000000'
+ );
+
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({
+ status: 'success',
+ })
+ );
+
+ expect(revertEventStub.calledOnce).toEqual(true);
+ expect(successStub.calledOnce).toEqual(true);
+ expect(errorStub.notCalled).toEqual(true);
+ });
+ it('triggers error event when server returns a failure', function() {
+ model.revert({
+ success: successStub
+ });
+
+ expect(fakeServer.requests.length).toEqual(1);
+ fakeServer.requests[0].respond(
+ 200,
+ { 'Content-Type': 'application/json' },
+ JSON.stringify({
+ status: 'error',
+ })
+ );
+
+ expect(revertEventStub.notCalled).toEqual(true);
+ expect(successStub.notCalled).toEqual(true);
+ expect(errorStub.calledOnce).toEqual(true);
+ });
+ });
+});
+
diff --git a/apps/files_versions/tests/js/versionstabviewSpec.js b/apps/files_versions/tests/js/versionstabviewSpec.js
new file mode 100644
index 00000000000..4435f38ef7e
--- /dev/null
+++ b/apps/files_versions/tests/js/versionstabviewSpec.js
@@ -0,0 +1,208 @@
+/*
+ * Copyright (c) 2015
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+describe('OCA.Versions.VersionsTabView', function() {
+ var VersionCollection = OCA.Versions.VersionCollection;
+ var VersionModel = OCA.Versions.VersionModel;
+ var VersionsTabView = OCA.Versions.VersionsTabView;
+
+ var fetchStub, fileInfoModel, tabView, testVersions, clock;
+
+ beforeEach(function() {
+ clock = sinon.useFakeTimers(Date.UTC(2015, 6, 17, 1, 2, 0, 3));
+ var time1 = Date.UTC(2015, 6, 17, 1, 2, 0, 3) / 1000;
+ var time2 = Date.UTC(2015, 6, 15, 1, 2, 0, 3) / 1000;
+
+ var version1 = new VersionModel({
+ id: time1,
+ timestamp: time1,
+ name: 'some file.txt',
+ size: 140,
+ fullPath: '/subdir/some file.txt'
+ });
+ var version2 = new VersionModel({
+ id: time2,
+ timestamp: time2,
+ name: 'some file.txt',
+ size: 150,
+ fullPath: '/subdir/some file.txt'
+ });
+
+ testVersions = [version1, version2];
+
+ fetchStub = sinon.stub(VersionCollection.prototype, 'fetch');
+ fileInfoModel = new OCA.Files.FileInfoModel({
+ id: 123,
+ name: 'test.txt'
+ });
+ tabView = new VersionsTabView();
+ tabView.render();
+ });
+
+ afterEach(function() {
+ fetchStub.restore();
+ tabView.remove();
+ clock.restore();
+ });
+
+ describe('rendering', function() {
+ it('reloads matching versions when setting file info model', function() {
+ tabView.setFileInfo(fileInfoModel);
+ expect(fetchStub.calledOnce).toEqual(true);
+ });
+
+ it('renders loading icon while fetching versions', function() {
+ tabView.setFileInfo(fileInfoModel);
+ tabView.collection.trigger('request');
+
+ expect(tabView.$el.find('.loading').length).toEqual(1);
+ expect(tabView.$el.find('.versions li').length).toEqual(0);
+ });
+
+ it('renders versions', function() {
+
+ tabView.setFileInfo(fileInfoModel);
+ tabView.collection.set(testVersions);
+
+ var version1 = testVersions[0];
+ var version2 = testVersions[1];
+ var $versions = tabView.$el.find('.versions>li');
+ expect($versions.length).toEqual(2);
+ var $item = $versions.eq(0);
+ expect($item.find('.downloadVersion').attr('href')).toEqual(version1.getDownloadUrl());
+ expect($item.find('.versiondate').text()).toEqual('a few seconds ago');
+ expect($item.find('.revertVersion').length).toEqual(1);
+ expect($item.find('.preview').attr('src')).toEqual(version1.getPreviewUrl());
+
+ $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(1);
+ expect($item.find('.preview').attr('src')).toEqual(version2.getPreviewUrl());
+ });
+ });
+
+ describe('More versions', function() {
+ var hasMoreResultsStub;
+
+ beforeEach(function() {
+ 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'
+ });
+
+ 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(version3.getPreviewUrl());
+ });
+ });
+
+ describe('Reverting', function() {
+ var revertStub;
+
+ beforeEach(function() {
+ revertStub = sinon.stub(VersionModel.prototype, 'revert');
+ tabView.setFileInfo(fileInfoModel);
+ tabView.collection.set(testVersions);
+ });
+
+ afterEach(function() {
+ revertStub.restore();
+ });
+
+ it('tells the model to revert when clicking "Revert"', function() {
+ tabView.$el.find('.revertVersion').eq(1).click();
+
+ expect(revertStub.calledOnce).toEqual(true);
+ });
+ it('triggers busy state during revert', function() {
+ var busyStub = sinon.stub();
+ fileInfoModel.on('busy', busyStub);
+
+ tabView.$el.find('.revertVersion').eq(1).click();
+
+ expect(busyStub.calledOnce).toEqual(true);
+ expect(busyStub.calledWith(fileInfoModel, true)).toEqual(true);
+
+ busyStub.reset();
+ revertStub.getCall(0).args[0].success();
+
+ expect(busyStub.calledOnce).toEqual(true);
+ expect(busyStub.calledWith(fileInfoModel, false)).toEqual(true);
+ });
+ it('updates the file info model with the information from the reverted revision', function() {
+ var changeStub = sinon.stub();
+ fileInfoModel.on('change', changeStub);
+
+ tabView.$el.find('.revertVersion').eq(1).click();
+
+ expect(changeStub.notCalled).toEqual(true);
+
+ revertStub.getCall(0).args[0].success();
+
+ expect(changeStub.calledOnce).toEqual(true);
+ var changes = changeStub.getCall(0).args[0].changed;
+ expect(changes.size).toEqual(150);
+ expect(changes.mtime).toEqual(testVersions[1].get('timestamp') * 1000);
+ expect(changes.etag).toBeDefined();
+ });
+ it('shows notification on revert error', function() {
+ var notificationStub = sinon.stub(OC.Notification, 'showTemporary');
+
+ tabView.$el.find('.revertVersion').eq(1).click();
+
+ revertStub.getCall(0).args[0].error();
+
+ expect(notificationStub.calledOnce).toEqual(true);
+
+ notificationStub.restore();
+ });
+ });
+});
+
diff --git a/apps/provisioning_api/lib/apps.php b/apps/provisioning_api/lib/apps.php
index 168f6f3cad8..80f6e7049c6 100644
--- a/apps/provisioning_api/lib/apps.php
+++ b/apps/provisioning_api/lib/apps.php
@@ -31,13 +31,20 @@ class Apps {
/** @var \OCP\App\IAppManager */
private $appManager;
+ /**
+ * @param \OCP\App\IAppManager $appManager
+ */
public function __construct(\OCP\App\IAppManager $appManager) {
$this->appManager = $appManager;
}
- public function getApps($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function getApps($parameters) {
$apps = OC_App::listAllApps();
- $list = array();
+ $list = [];
foreach($apps as $app) {
$list[] = $app['id'];
}
@@ -62,7 +69,11 @@ class Apps {
}
}
- public function getAppInfo($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function getAppInfo($parameters) {
$app = $parameters['appid'];
$info = \OCP\App::getAppInfo($app);
if(!is_null($info)) {
@@ -72,13 +83,21 @@ class Apps {
}
}
- public function enable($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function enable($parameters) {
$app = $parameters['appid'];
$this->appManager->enableApp($app);
return new OC_OCS_Result(null, 100);
}
- public function disable($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function disable($parameters) {
$app = $parameters['appid'];
$this->appManager->disableApp($app);
return new OC_OCS_Result(null, 100);
diff --git a/apps/provisioning_api/lib/groups.php b/apps/provisioning_api/lib/groups.php
index 91d0a1c6342..c6fbe12b34e 100644
--- a/apps/provisioning_api/lib/groups.php
+++ b/apps/provisioning_api/lib/groups.php
@@ -25,6 +25,8 @@ namespace OCA\Provisioning_API;
use \OC_OCS_Result;
use \OC_SubAdmin;
+use OCP\IGroup;
+use OCP\IUser;
class Groups{
@@ -39,21 +41,25 @@ class Groups{
* @param \OCP\IUserSession $userSession
*/
public function __construct(\OCP\IGroupManager $groupManager,
- \OCP\IUserSession $userSession) {
+ \OCP\IUserSession $userSession) {
$this->groupManager = $groupManager;
$this->userSession = $userSession;
}
/**
* returns a list of groups
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
- public function getGroups($parameters){
+ public function getGroups($parameters) {
$search = !empty($_GET['search']) ? $_GET['search'] : '';
$limit = !empty($_GET['limit']) ? $_GET['limit'] : null;
$offset = !empty($_GET['offset']) ? $_GET['offset'] : null;
$groups = $this->groupManager->search($search, $limit, $offset);
$groups = array_map(function($group) {
+ /** @var IGroup $group */
return $group->getGID();
}, $groups);
@@ -62,6 +68,9 @@ class Groups{
/**
* returns an array of users in the group specified
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
public function getGroup($parameters) {
// Check if user is logged in
@@ -71,7 +80,7 @@ class Groups{
}
// Check the group exists
- if(!$this->groupManager->groupExists($parameters['groupid'])){
+ if(!$this->groupManager->groupExists($parameters['groupid'])) {
return new OC_OCS_Result(null, \OCP\API::RESPOND_NOT_FOUND, 'The requested group could not be found');
}
// Check subadmin has access to this group
@@ -79,6 +88,7 @@ class Groups{
|| in_array($parameters['groupid'], \OC_SubAdmin::getSubAdminsGroups($user->getUID()))){
$users = $this->groupManager->get($parameters['groupid'])->getUsers();
$users = array_map(function($user) {
+ /** @var IUser $user */
return $user->getUID();
}, $users);
$users = array_values($users);
@@ -90,23 +100,30 @@ class Groups{
/**
* creates a new group
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
- public function addGroup($parameters){
+ public function addGroup($parameters) {
// Validate name
- $groupid = isset($_POST['groupid']) ? $_POST['groupid'] : '';
- if( preg_match( '/[^a-zA-Z0-9 _\.@\-]/', $groupid ) || empty($groupid)){
+ $groupId = isset($_POST['groupid']) ? $_POST['groupid'] : '';
+ if( preg_match( '/[^a-zA-Z0-9 _\.@\-]/', $groupId ) || empty($groupId)){
\OCP\Util::writeLog('provisioning_api', 'Attempt made to create group using invalid characters.', \OCP\Util::ERROR);
return new OC_OCS_Result(null, 101, 'Invalid group name');
}
// Check if it exists
- if($this->groupManager->groupExists($groupid)){
+ if($this->groupManager->groupExists($groupId)){
return new OC_OCS_Result(null, 102);
}
- $this->groupManager->createGroup($groupid);
+ $this->groupManager->createGroup($groupId);
return new OC_OCS_Result(null, 100);
}
- public function deleteGroup($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function deleteGroup($parameters) {
// Check it exists
if(!$this->groupManager->groupExists($parameters['groupid'])){
return new OC_OCS_Result(null, 101);
@@ -118,6 +135,10 @@ class Groups{
}
}
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
public function getSubAdminsOfGroup($parameters) {
$group = $parameters['groupid'];
// Check group exists
diff --git a/apps/provisioning_api/lib/users.php b/apps/provisioning_api/lib/users.php
index f5b201a55ea..617e50b403e 100644
--- a/apps/provisioning_api/lib/users.php
+++ b/apps/provisioning_api/lib/users.php
@@ -48,10 +48,10 @@ class Users {
* @param \OCP\IUserManager $userManager
* @param \OCP\IConfig $config
* @param \OCP\IGroupManager $groupManager
- * @param \OCP\IUserSession $user
+ * @param \OCP\IUserSession $userSession
*/
public function __construct(\OCP\IUserManager $userManager,
- \OCP\IConfig $config,
+ \OCP\IConfig $config,
\OCP\IGroupManager $groupManager,
\OCP\IUserSession $userSession) {
$this->userManager = $userManager;
@@ -62,8 +62,10 @@ class Users {
/**
* returns a list of users
+ *
+ * @return OC_OCS_Result
*/
- public function getUsers(){
+ public function getUsers() {
$search = !empty($_GET['search']) ? $_GET['search'] : '';
$limit = !empty($_GET['limit']) ? $_GET['limit'] : null;
$offset = !empty($_GET['offset']) ? $_GET['offset'] : null;
@@ -76,7 +78,10 @@ class Users {
]);
}
- public function addUser(){
+ /**
+ * @return OC_OCS_Result
+ */
+ public function addUser() {
$userId = isset($_POST['userid']) ? $_POST['userid'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
if($this->userManager->userExists($userId)) {
@@ -96,6 +101,9 @@ class Users {
/**
* gets user info
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
public function getUser($parameters){
$userId = $parameters['userid'];
@@ -150,8 +158,11 @@ class Users {
/**
* edit users
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
- public function editUser($parameters){
+ public function editUser($parameters) {
$userId = $parameters['userid'];
// Check if user is logged in
@@ -230,7 +241,11 @@ class Users {
return new OC_OCS_Result(null, 100);
}
- public function deleteUser($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function deleteUser($parameters) {
// Check if user is logged in
$user = $this->userSession->getUser();
if ($user === null) {
@@ -253,6 +268,10 @@ class Users {
}
}
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
public function getUsersGroups($parameters) {
// Check if user is logged in
$user = $this->userSession->getUser();
@@ -286,7 +305,11 @@ class Users {
}
- public function addToGroup($parameters){
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
+ public function addToGroup($parameters) {
// Check if user is logged in
$user = $this->userSession->getUser();
if ($user === null) {
@@ -317,6 +340,10 @@ class Users {
return new OC_OCS_Result(null, 100);
}
+ /**
+ * @param array $parameters
+ * @return OC_OCS_Result
+ */
public function removeFromGroup($parameters) {
// Check if user is logged in
$user = $this->userSession->getUser();
@@ -362,6 +389,9 @@ class Users {
/**
* Creates a subadmin
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
public function addSubAdmin($parameters) {
$group = $_POST['groupid'];
@@ -393,6 +423,9 @@ class Users {
/**
* Removes a subadmin from a group
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
public function removeSubAdmin($parameters) {
$group = $parameters['_delete']['groupid'];
@@ -414,7 +447,10 @@ class Users {
}
/**
- * @Get the groups a user is a subadmin of
+ * Get the groups a user is a subadmin of
+ *
+ * @param array $parameters
+ * @return OC_OCS_Result
*/
public function getUserSubAdminGroups($parameters) {
$user = $parameters['userid'];
@@ -431,8 +467,8 @@ class Users {
}
/**
- * @param $userId
- * @param $data
+ * @param string $userId
+ * @param array $data
* @return mixed
* @throws \OCP\Files\NotFoundException
*/
diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php
index 68fd1b698e0..60c2accdccb 100644
--- a/apps/user_ldap/appinfo/app.php
+++ b/apps/user_ldap/appinfo/app.php
@@ -59,9 +59,6 @@ if(count($configPrefixes) > 0) {
OC_Group::useBackend($groupBackend);
}
-OCP\Backgroundjob::registerJob('OCA\user_ldap\lib\Jobs');
-OCP\Backgroundjob::registerJob('\OCA\User_LDAP\Jobs\CleanUp');
-
\OCP\Util::connectHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',
diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php
index 0b3f84b8baf..f70eb746480 100644
--- a/apps/user_ldap/appinfo/install.php
+++ b/apps/user_ldap/appinfo/install.php
@@ -23,3 +23,6 @@ $state = OCP\Config::getSystemValue('ldapIgnoreNamingRules', 'doSet');
if($state === 'doSet') {
OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
}
+
+OCP\Backgroundjob::registerJob('OCA\user_ldap\lib\Jobs');
+OCP\Backgroundjob::registerJob('\OCA\User_LDAP\Jobs\CleanUp');
diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php
index 4907db0cdae..33a7219644b 100644
--- a/apps/user_ldap/appinfo/update.php
+++ b/apps/user_ldap/appinfo/update.php
@@ -34,3 +34,6 @@ if(version_compare($installedVersion, '0.6.2', '<')) {
\OC::$server->getConfig()->deleteAppValue('user_ldap', $prefix . "ldap_nocase");
}
}
+
+OCP\Backgroundjob::registerJob('OCA\user_ldap\lib\Jobs');
+OCP\Backgroundjob::registerJob('\OCA\User_LDAP\Jobs\CleanUp');
diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version
index b6160487433..844f6a91acb 100644
--- a/apps/user_ldap/appinfo/version
+++ b/apps/user_ldap/appinfo/version
@@ -1 +1 @@
-0.6.2
+0.6.3
diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php
index 6f2fdce1b5f..f6b123babd0 100644
--- a/apps/user_ldap/lib/connection.php
+++ b/apps/user_ldap/lib/connection.php
@@ -206,7 +206,7 @@ class Connection extends LDAPUtility {
}
$key = $this->getCacheKey($key);
- return unserialize(base64_decode($this->cache->get($key)));
+ return json_decode(base64_decode($this->cache->get($key)));
}
/**
@@ -240,7 +240,7 @@ class Connection extends LDAPUtility {
return null;
}
$key = $this->getCacheKey($key);
- $value = base64_encode(serialize($value));
+ $value = base64_encode(json_encode($value));
$this->cache->set($key, $value, $this->configuration->ldapCacheTTL);
}
diff --git a/apps/user_ldap/lib/proxy.php b/apps/user_ldap/lib/proxy.php
index ef01213990c..2a423cb0e4b 100644
--- a/apps/user_ldap/lib/proxy.php
+++ b/apps/user_ldap/lib/proxy.php
@@ -161,7 +161,7 @@ abstract class Proxy {
}
$key = $this->getCacheKey($key);
- return unserialize(base64_decode($this->cache->get($key)));
+ return json_decode(base64_decode($this->cache->get($key)));
}
/**
@@ -185,7 +185,7 @@ abstract class Proxy {
return;
}
$key = $this->getCacheKey($key);
- $value = base64_encode(serialize($value));
+ $value = base64_encode(json_encode($value));
$this->cache->set($key, $value, '2592000');
}
diff --git a/core/command/maintenance/mimetype/updatedb.php b/core/command/maintenance/mimetype/updatedb.php
new file mode 100644
index 00000000000..37c401c0338
--- /dev/null
+++ b/core/command/maintenance/mimetype/updatedb.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ */
+
+namespace OC\Core\Command\Maintenance\Mimetype;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Input\InputOption;
+
+use OCP\Files\IMimeTypeDetector;
+use OCP\Files\IMimeTypeLoader;
+
+class UpdateDB extends Command {
+
+ const DEFAULT_MIMETYPE = 'application/octet-stream';
+
+ /** @var IMimeTypeDetector */
+ protected $mimetypeDetector;
+
+ /** @var IMimeTypeLoader */
+ protected $mimetypeLoader;
+
+ public function __construct(
+ IMimeTypeDetector $mimetypeDetector,
+ IMimeTypeLoader $mimetypeLoader
+ ) {
+ parent::__construct();
+ $this->mimetypeDetector = $mimetypeDetector;
+ $this->mimetypeLoader = $mimetypeLoader;
+ }
+
+ protected function configure() {
+ $this
+ ->setName('maintenance:mimetype:update-db')
+ ->setDescription('Update database mimetypes and update filecache')
+ ->addOption(
+ 'repair-filecache',
+ null,
+ InputOption::VALUE_NONE,
+ 'Repair filecache for all mimetypes, not just new ones'
+ )
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $mappings = $this->mimetypeDetector->getAllMappings();
+
+ $totalFilecacheUpdates = 0;
+ $totalNewMimetypes = 0;
+
+ foreach ($mappings as $ext => $mimetypes) {
+ if ($ext[0] === '_') {
+ // comment
+ continue;
+ }
+ $mimetype = $mimetypes[0];
+ $existing = $this->mimetypeLoader->exists($mimetype);
+ // this will add the mimetype if it didn't exist
+ $mimetypeId = $this->mimetypeLoader->getId($mimetype);
+
+ if (!$existing) {
+ $output->writeln('Added mimetype "'.$mimetype.'" to database');
+ $totalNewMimetypes++;
+ }
+
+ if (!$existing || $input->getOption('repair-filecache')) {
+ $touchedFilecacheRows = $this->mimetypeLoader->updateFilecache($ext, $mimetypeId);
+ if ($touchedFilecacheRows > 0) {
+ $output->writeln('Updated '.$touchedFilecacheRows.' filecache rows for mimetype "'.$mimetype.'"');
+ }
+ $totalFilecacheUpdates += $touchedFilecacheRows;
+ }
+ }
+
+ $output->writeln('Added '.$totalNewMimetypes.' new mimetypes');
+ $output->writeln('Updated '.$totalFilecacheUpdates.' filecache rows');
+ }
+}
diff --git a/core/command/maintenance/mimetypesjs.php b/core/command/maintenance/mimetype/updatejs.php
index 8b01f0acf79..5de75d53a3f 100644
--- a/core/command/maintenance/mimetypesjs.php
+++ b/core/command/maintenance/mimetype/updatejs.php
@@ -18,27 +18,35 @@
*
*/
-namespace OC\Core\Command\Maintenance;
+namespace OC\Core\Command\Maintenance\Mimetype;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
-class MimeTypesJS extends Command {
+use OCP\Files\IMimeTypeDetector;
+
+class UpdateJS extends Command {
+
+ /** @var IMimeTypeDetector */
+ protected $mimetypeDetector;
+
+ public function __construct(
+ IMimeTypeDetector $mimetypeDetector
+ ) {
+ parent::__construct();
+ $this->mimetypeDetector = $mimetypeDetector;
+ }
+
protected function configure() {
$this
- ->setName('maintenance:mimetypesjs')
+ ->setName('maintenance:mimetype:update-js')
->setDescription('Update mimetypelist.js');
}
protected function execute(InputInterface $input, OutputInterface $output) {
// Fetch all the aliases
- $aliases = json_decode(file_get_contents(\OC::$SERVERROOT . '/config/mimetypealiases.dist.json'), true);
-
- if (file_exists(\OC::$SERVERROOT . '/config/mimetypealiases.json')) {
- $custom = get_object_vars(json_decode(file_get_contents(\OC::$SERVERROOT . '/config/mimetypealiases.json')));
- $aliases = array_merge($aliases, $custom);
- }
+ $aliases = $this->mimetypeDetector->getAllAliases();
// Remove comments
$keys = array_filter(array_keys($aliases), function($k) {
@@ -49,23 +57,22 @@ class MimeTypesJS extends Command {
}
// Fetch all files
- $dir = new \DirectoryIterator(dirname(__DIR__) . '/../img/filetypes');
+ $dir = new \DirectoryIterator(\OC::$SERVERROOT.'/core/img/filetypes');
$files = [];
foreach($dir as $fileInfo) {
- if ($fileInfo->isFile()) {
- $file = preg_replace('/.[^.]*$/', '', $fileInfo->getFilename());
- $files[] = $file;
- }
+ if ($fileInfo->isFile()) {
+ $file = preg_replace('/.[^.]*$/', '', $fileInfo->getFilename());
+ $files[] = $file;
+ }
}
//Remove duplicates
$files = array_values(array_unique($files));
-
// Fetch all themes!
$themes = [];
- $dirs = new \DirectoryIterator(dirname(__DIR__) . '/../../themes/');
+ $dirs = new \DirectoryIterator(\OC::$SERVERROOT.'/themes/');
foreach($dirs as $dir) {
//Valid theme dir
if ($dir->isFile() || $dir->isDot()) {
@@ -84,7 +91,7 @@ class MimeTypesJS extends Command {
$themeIt = new \DirectoryIterator($themeDir);
foreach ($themeIt as $fileInfo) {
if ($fileInfo->isFile()) {
- $file = preg_replace('/.[^.]*$/', '', $fileInfo->getFilename());
+ $file = preg_replace('/.[^.]*$/', '', $fileInfo->getFilename());
$themes[$theme][] = $file;
}
}
@@ -110,7 +117,7 @@ OC.MimeTypeList={
';
//Output the JS
- file_put_contents(dirname(__DIR__) . '/../js/mimetypelist.js', $js);
+ file_put_contents(\OC::$SERVERROOT.'/core/js/mimetypelist.js', $js);
$output->writeln('<info>mimetypelist.js is updated');
}
diff --git a/core/css/apps.css b/core/css/apps.css
index 4118e6ea668..0371f2bbde7 100644
--- a/core/css/apps.css
+++ b/core/css/apps.css
@@ -629,3 +629,68 @@ em {
.tabsContainer .tab {
padding: 15px;
}
+
+/* popover menu styles (use together with "bubble" class) */
+.popovermenu .menuitem,
+.popovermenu .menuitem>span {
+ cursor: pointer;
+}
+
+.popovermenu .menuitem {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+
+.popovermenu .menuitem:hover,
+.popovermenu .menuitem:focus {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ filter: alpha(opacity=100);
+ opacity: 1;
+}
+
+.popovermenu {
+ padding: 4px 12px;
+}
+
+.popovermenu li {
+ padding: 5px 0;
+}
+
+.popovermenu .menuitem img {
+ padding: initial;
+}
+
+.popovermenu a.menuitem,
+.popovermenu label.menuitem,
+.popovermenu .menuitem {
+ padding: 10px;
+ margin: -10px;
+}
+
+.popovermenu.hidden {
+ display: none;
+}
+
+.popovermenu .menuitem {
+ display: block;
+ line-height: 30px;
+ padding-left: 5px;
+ color: #000;
+ padding: 0;
+}
+
+.popovermenu .menuitem .icon,
+.popovermenu .menuitem .no-icon {
+ display: inline-block;
+ width: 16px;
+ margin-right: 10px;
+}
+
+.popovermenu .menuitem {
+ opacity: 0.5;
+}
+
+.popovermenu li:hover .menuitem {
+ opacity: 1;
+}
diff --git a/core/css/styles.css b/core/css/styles.css
index 020c2702a10..9219068dc38 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -667,7 +667,7 @@ label.infield {
position: absolute !important;
height: 20px;
width: 24px;
- background-image: url("../img/actions/toggle.png");
+ background-image: url('../img/actions/toggle.svg');
background-repeat: no-repeat;
background-position: center;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
@@ -955,6 +955,7 @@ a.bookmarklet { background-color:#ddd; border:1px solid #ccc; padding:5px;paddin
.ui-icon-circle-triangle-e{ background-image:url('../img/actions/play-next.svg'); }
.ui-icon-circle-triangle-w{ background-image:url('../img/actions/play-previous.svg'); }
+
.ui-datepicker-prev,.ui-datepicker-next{ border:1px solid #ddd; background:#fff; }
/* ---- DIALOGS ---- */
@@ -1142,3 +1143,12 @@ fieldset.warning legend + p, fieldset.update legend + p {
@-ms-viewport {
width: device-width;
}
+
+/* hidden input type=file field */
+.hiddenuploadfield {
+ width: 0;
+ height: 0;
+ opacity: 0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+}
+
diff --git a/core/img/filetypes/application-pdf.png b/core/img/filetypes/application-pdf.png
index 1c0b18e2f51..4029f8aead1 100644
--- a/core/img/filetypes/application-pdf.png
+++ b/core/img/filetypes/application-pdf.png
Binary files differ
diff --git a/core/img/filetypes/application-pdf.svg b/core/img/filetypes/application-pdf.svg
index 5646f4caaac..9a472dba84b 100644
--- a/core/img/filetypes/application-pdf.svg
+++ b/core/img/filetypes/application-pdf.svg
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <path style="color:#000000;block-progression:tb;text-transform:none;text-indent:0" d="m2.3496 1.002c-0.1975 0.0382-0.3531 0.2333-0.3496 0.4375v13.122c0.000005 0.22905 0.20608 0.43749 0.43164 0.4375h11.139c0.22556-0.000006 0.43163-0.20845 0.43164-0.4375v-10.143c-0.004-0.06684-0.02269-0.1329-0.05469-0.19141l-3.3125-3.1992c-0.043-0.0164-0.08876-0.025544-0.13477-0.027344h-8.0684c-0.02684-0.0026-0.055191-0.0026-0.082031 0z" fill="#dc5047"/>
- <path style="color:#000000;block-progression:tb;text-transform:none;text-indent:0" d="m7.3561 3h0.19315c0.18549 0 0.36359 0.065879 0.49263 0.1949 0.53227 0.5322 0.28209 1.8297 0.015948 2.9022-0.01613 0.048381-0.023832 0.089205-0.031897 0.11339 0.32259 0.91119 0.78197 1.6448 1.29 2.0641 0.20968 0.16127 0.44366 0.32261 0.70173 0.46775 0.36291-0.040318 0.70953-0.056697 1.0402-0.056697 1 0 1.6055 0.17735 1.8394 0.55634 0.08065 0.12902 0.11988 0.28168 0.09569 0.44295-0.0081 0.20159-0.07989 0.38817-0.22505 0.53331-0.1371 0.15321-0.37878 0.24096-0.73362 0.24096-0.61292 0-1.6141-0.18585-2.4206-0.59709-1.3871 0.15321-2.4193 0.33985-3.2499 0.60595-0.040323 0.01613-0.088854 0.03075-0.14531 0.05493-1 1.71-1.7408 2.477-2.394 2.477-0.1291 0-0.2594-0.032-0.3562-0.089l-0.3863-0.249-0.0248-0.041c-0.0565-0.145-0.073-0.283-0.0408-0.436 0.0887-0.427 0.5491-1.105 1.5169-1.71 0.1532-0.113 0.3951-0.242 0.7177-0.395 0.2419-0.4192 0.5001-0.9108 0.7744-1.451 0.4113-0.8306 0.6684-1.6522 0.87-2.3618v-0.00886c-0.2984-0.9757-0.4756-1.5639-0.1772-2.6364 0.0726-0.3064 0.3396-0.6219 0.638-0.6219zm0.1205 0.49965c-0.01613 0.024192-0.040576 0.065194-0.056705 0.097448-0.1371 0.33867-0.12878 0.92736 0.056705 1.6531l0.040757-0.031892c0.056453-0.25804 0.08097-0.48348 0.12936-0.66088l0.023036-0.12934c0.0806-0.4596 0.0644-0.6941-0.0727-0.8876zm0.065566 3.6463c-0.1856 0.5968-0.4523 1.2334-0.8152 1.9349-0.1613 0.3064-0.3395 0.5961-0.404 0.838l0.088602-0.0319c1.0242-0.3951 1.9936-0.6204 2.6952-0.7494-0.1209-0.0806-0.2346-0.17-0.3313-0.2587-0.4839-0.4112-0.9027-1.0071-1.2334-1.7328zm3.3616 2.2165c-0.05645 0-0.11171 0.0008653-0.18429 0.081503 0.58873 0.25804 1.1601 0.41106 1.531 0.41106 0.05645 0 0.10578-0.0079 0.15417-0.01595h0.0319c0.04032-0.01613 0.06459-0.02568 0.07266-0.10631-0.01614-0.0242-0.03234-0.05633-0.07266-0.08859-0.08065-0.08064-0.40375-0.28172-1.5328-0.28172zm-5.8622 1.4596c-0.16936 0.09677-0.30743 0.18531-0.38808 0.24982-0.5726 0.52414-0.9343 1.0561-0.97462 1.3625 0.36291-0.12095 0.83849-0.65276 1.3627-1.6123z" fill="#fff"/>
+ <path style="color:#000000;block-progression:tb;text-transform:none;text-indent:0" fill="#dc5047" d="m2.3496 1v0.002c-0.1975 0.0382-0.3531 0.2333-0.3496 0.4375v13.122c0 0.228 0.2061 0.436 0.4316 0.436h11.138c0.226 0 0.432-0.208 0.432-0.437v-10.143c-0.004-0.0669-0.023-0.1329-0.055-0.1914l-3.312-3.1993c-0.043-0.0164-0.089-0.0255-0.135-0.0273h-8.0684c-0.0268-0.0026-0.0552-0.0026-0.082 0zm5.0059 2h0.1933c0.1855 0 0.3632 0.0663 0.4922 0.1953 0.5323 0.5322 0.2837 1.8299 0.0176 2.9024-0.0161 0.0483-0.0251 0.0891-0.0332 0.1132 0.3226 0.9112 0.783 1.6452 1.291 2.0645 0.2097 0.1613 0.4431 0.3216 0.7016 0.4668 0.362-0.0403 0.71-0.0567 1.041-0.0567 1 0 1.604 0.1777 1.837 0.5567 0.081 0.129 0.12 0.2821 0.096 0.4433-0.008 0.2016-0.079 0.3885-0.224 0.5335-0.138 0.153-0.378 0.24-0.733 0.24-0.613 0-1.615-0.186-2.4217-0.5977-1.3871 0.1537-2.4194 0.3417-3.25 0.6077-0.0403 0.016-0.0881 0.03-0.1445 0.054-1 1.71-1.7414 2.477-2.3946 2.477-0.1291 0-0.2586-0.033-0.3554-0.09l-0.3868-0.248-0.0254-0.041c-0.0565-0.145-0.0732-0.282-0.041-0.435 0.0887-0.427 0.5498-1.106 1.5176-1.711 0.1532-0.113 0.3942-0.242 0.7168-0.395 0.2419-0.4191 0.5011-0.9109 0.7754-1.4511 0.4113-0.8306 0.6675-1.6517 0.8691-2.3613v-0.0098c-0.2984-0.9757-0.4741-1.5642-0.1757-2.6367 0.0726-0.3064 0.3383-0.6211 0.6367-0.6211zm0.1211 0.5c-0.0162 0.0242-0.0405 0.0654-0.0567 0.0977-0.1371 0.3386-0.1288 0.9266 0.0567 1.6523l0.041-0.0312c0.0564-0.2581 0.0805-0.4848 0.1289-0.6622l0.0234-0.1289c0.0806-0.4596 0.0649-0.6932-0.0722-0.8867l-0.1211-0.041zm0.0664 3.6465c-0.1856 0.5968-0.4535 1.2321-0.8164 1.9336-0.1613 0.3064-0.3398 0.596-0.4043 0.8379l0.0898-0.0313c1.0242-0.3951 1.9937-0.621 2.6953-0.75-0.1209-0.0806-0.2353-0.1691-0.332-0.2578-0.4839-0.4112-0.9017-1.0067-1.2324-1.7324zm3.361 2.2168c-0.056 0-0.113-0.0006-0.185 0.0801 0.588 0.258 1.16 0.4121 1.531 0.4121 0.056 0 0.106-0.0076 0.154-0.0157h0.034c0.04-0.0161 0.064-0.0267 0.072-0.1074-0.016-0.0242-0.032-0.0556-0.072-0.0879-0.081-0.0806-0.405-0.2812-1.534-0.2812zm-5.863 1.4587c-0.1693 0.097-0.3061 0.186-0.3867 0.25-0.5726 0.524-0.9343 1.055-0.9746 1.362 0.3629-0.121 0.8371-0.652 1.3613-1.612z"/>
</svg>
diff --git a/core/img/filetypes/application.png b/core/img/filetypes/application.png
index 43cc3abafe7..9be7361d1b6 100644
--- a/core/img/filetypes/application.png
+++ b/core/img/filetypes/application.png
Binary files differ
diff --git a/core/img/filetypes/audio.png b/core/img/filetypes/audio.png
index 32171285e8e..4eb8ab78e3f 100644
--- a/core/img/filetypes/audio.png
+++ b/core/img/filetypes/audio.png
Binary files differ
diff --git a/core/img/filetypes/file.png b/core/img/filetypes/file.png
index b56833a5763..3bd7463cfc9 100644
--- a/core/img/filetypes/file.png
+++ b/core/img/filetypes/file.png
Binary files differ
diff --git a/core/img/filetypes/folder-drag-accept.png b/core/img/filetypes/folder-drag-accept.png
index 58640b5cb5c..80ab53b72b9 100644
--- a/core/img/filetypes/folder-drag-accept.png
+++ b/core/img/filetypes/folder-drag-accept.png
Binary files differ
diff --git a/core/img/filetypes/folder-external.png b/core/img/filetypes/folder-external.png
index 56cb385a772..5262d72e627 100644
--- a/core/img/filetypes/folder-external.png
+++ b/core/img/filetypes/folder-external.png
Binary files differ
diff --git a/core/img/filetypes/folder-public.png b/core/img/filetypes/folder-public.png
index 4887ea6e767..17c3ee2a8d9 100644
--- a/core/img/filetypes/folder-public.png
+++ b/core/img/filetypes/folder-public.png
Binary files differ
diff --git a/core/img/filetypes/folder-shared.png b/core/img/filetypes/folder-shared.png
index 56c8ff36ed8..be5e59cbf28 100644
--- a/core/img/filetypes/folder-shared.png
+++ b/core/img/filetypes/folder-shared.png
Binary files differ
diff --git a/core/img/filetypes/folder-starred.png b/core/img/filetypes/folder-starred.png
index 09383b5e06b..b083a9d2d11 100644
--- a/core/img/filetypes/folder-starred.png
+++ b/core/img/filetypes/folder-starred.png
Binary files differ
diff --git a/core/img/filetypes/folder.png b/core/img/filetypes/folder.png
index 3dfb4391f2c..1dbb1154100 100644
--- a/core/img/filetypes/folder.png
+++ b/core/img/filetypes/folder.png
Binary files differ
diff --git a/core/img/filetypes/image.png b/core/img/filetypes/image.png
index 2a5441efdb7..0feaecf2830 100644
--- a/core/img/filetypes/image.png
+++ b/core/img/filetypes/image.png
Binary files differ
diff --git a/core/img/filetypes/package-x-generic.png b/core/img/filetypes/package-x-generic.png
index eb1470b0dff..287a1f18869 100644
--- a/core/img/filetypes/package-x-generic.png
+++ b/core/img/filetypes/package-x-generic.png
Binary files differ
diff --git a/core/img/filetypes/text-calendar.png b/core/img/filetypes/text-calendar.png
index dcb22b53e67..ff3ced62531 100644
--- a/core/img/filetypes/text-calendar.png
+++ b/core/img/filetypes/text-calendar.png
Binary files differ
diff --git a/core/img/filetypes/text-code.png b/core/img/filetypes/text-code.png
index 652ab3566ad..5505102f60e 100644
--- a/core/img/filetypes/text-code.png
+++ b/core/img/filetypes/text-code.png
Binary files differ
diff --git a/core/img/filetypes/text-vcard.png b/core/img/filetypes/text-vcard.png
index 81e7d3dc3b6..77ac138fe1c 100644
--- a/core/img/filetypes/text-vcard.png
+++ b/core/img/filetypes/text-vcard.png
Binary files differ
diff --git a/core/img/filetypes/text.png b/core/img/filetypes/text.png
index 13547961c76..5fca7cb69d7 100644
--- a/core/img/filetypes/text.png
+++ b/core/img/filetypes/text.png
Binary files differ
diff --git a/core/img/filetypes/video.png b/core/img/filetypes/video.png
index 5604a4a1891..308e81cca83 100644
--- a/core/img/filetypes/video.png
+++ b/core/img/filetypes/video.png
Binary files differ
diff --git a/core/img/filetypes/x-office-document.png b/core/img/filetypes/x-office-document.png
index 861ac965a7d..d9c5b890583 100644
--- a/core/img/filetypes/x-office-document.png
+++ b/core/img/filetypes/x-office-document.png
Binary files differ
diff --git a/core/img/filetypes/x-office-presentation.png b/core/img/filetypes/x-office-presentation.png
index fbe941e5c3f..5b3733b7121 100644
--- a/core/img/filetypes/x-office-presentation.png
+++ b/core/img/filetypes/x-office-presentation.png
Binary files differ
diff --git a/core/img/filetypes/x-office-spreadsheet.png b/core/img/filetypes/x-office-spreadsheet.png
index bf22ca23f09..5a20026ebdd 100644
--- a/core/img/filetypes/x-office-spreadsheet.png
+++ b/core/img/filetypes/x-office-spreadsheet.png
Binary files differ
diff --git a/core/img/places/picture.png b/core/img/places/picture.png
index b60da3b5fd8..171af526e9d 100644
--- a/core/img/places/picture.png
+++ b/core/img/places/picture.png
Binary files differ
diff --git a/core/img/places/picture.svg b/core/img/places/picture.svg
index b4c81b7a937..3e105dcd334 100644
--- a/core/img/places/picture.svg
+++ b/core/img/places/picture.svg
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m0.6875 4c-0.39495 0.0765-0.69461 0.4668-0.6875 0.875v22.25c0.00001 0.458 0.4239 0.875 0.875 0.875h30.25c0.4511-0.000012 0.87499-0.41692 0.875-0.875v-21.906c-0.001-0.6731-0.529-1.2229-1.031-1.219zm2.3125 3h26v10l-2-2-5 7-6.625-4-9.1875 7h-3.1875zm6 3c-1.6569 0-3 1.3431-3 3s1.3431 3 3 3 3-1.3431 3-3-1.3431-3-3-3z" fill="#fff"/>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <path style="color:#000000;block-progression:tb;text-transform:none;text-indent:0" fill="#fff" d="m2.6876 4c-0.395 0.0765-0.6946 0.4668-0.6875 0.875v22.25c0 0.46 0.424 0.876 0.875 0.876h26.25c0.4511-0.000012 0.87498-0.41692 0.875-0.875v-21.906c-0.001-0.6731-0.529-1.2229-1.031-1.219zm1.3124 1.9999 24 0.000014v10l-2-2-6 8-6-6-8 8h-2zm5.0002 2c-1.6569 0-3 1.3431-3 3s1.3431 3 3 3 3-1.3431 3-3-1.3431-3-3-3z"/>
</svg>
diff --git a/core/l10n/af_ZA.js b/core/l10n/af_ZA.js
index 7c95b0a0db4..a6f0448d1a5 100644
--- a/core/l10n/af_ZA.js
+++ b/core/l10n/af_ZA.js
@@ -109,6 +109,7 @@ OC.L10N.register(
"Database host" : "Databasis gasheer",
"Finish setup" : "Maak opstelling klaar",
"Log out" : "Teken uit",
+ "Log in" : "Teken aan",
"remember" : "onthou",
"Alternative Logins" : "Alternatiewe aantekeninge",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Halo daar,<br><br>wou jou net laat weet dat %s <strong>%s</strong> met jou gedeel het.<br><a href=\"%s\">Sien alles!</a><br><br>"
diff --git a/core/l10n/af_ZA.json b/core/l10n/af_ZA.json
index a040afc6962..d5b747b5a32 100644
--- a/core/l10n/af_ZA.json
+++ b/core/l10n/af_ZA.json
@@ -107,6 +107,7 @@
"Database host" : "Databasis gasheer",
"Finish setup" : "Maak opstelling klaar",
"Log out" : "Teken uit",
+ "Log in" : "Teken aan",
"remember" : "onthou",
"Alternative Logins" : "Alternatiewe aantekeninge",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Halo daar,<br><br>wou jou net laat weet dat %s <strong>%s</strong> met jou gedeel het.<br><a href=\"%s\">Sien alles!</a><br><br>"
diff --git a/core/l10n/bg_BG.js b/core/l10n/bg_BG.js
index 52fdcccf13b..e7914ca5714 100644
--- a/core/l10n/bg_BG.js
+++ b/core/l10n/bg_BG.js
@@ -211,6 +211,7 @@ OC.L10N.register(
"Search" : "Търсене",
"Server side authentication failed!" : "Удостоверяването от страна на сървъра е неуспешно!",
"Please contact your administrator." : "Моля, свържете се с администратора.",
+ "Log in" : "Вписване",
"remember" : "запомняне",
"Alternative Logins" : "Алтернативни методи на вписване",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Здрасти,<br><br>само да те уведомя, че %s сподели <strong>%s</strong> с теб.\n<br><a href=\"%s\">Разгледай го!</a><br><br>.",
diff --git a/core/l10n/bg_BG.json b/core/l10n/bg_BG.json
index 0d8b4a21a19..271cb44435b 100644
--- a/core/l10n/bg_BG.json
+++ b/core/l10n/bg_BG.json
@@ -209,6 +209,7 @@
"Search" : "Търсене",
"Server side authentication failed!" : "Удостоверяването от страна на сървъра е неуспешно!",
"Please contact your administrator." : "Моля, свържете се с администратора.",
+ "Log in" : "Вписване",
"remember" : "запомняне",
"Alternative Logins" : "Алтернативни методи на вписване",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Здрасти,<br><br>само да те уведомя, че %s сподели <strong>%s</strong> с теб.\n<br><a href=\"%s\">Разгледай го!</a><br><br>.",
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index a3133be76eb..1fa4f12a3e3 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -245,6 +245,7 @@ OC.L10N.register(
"Please contact your administrator." : "Contacteu amb l'administrador.",
"An internal error occured." : "S'ha produït un error intern.",
"Please try again or contact your administrator." : "Intenti-ho de nou o posi's en contacte amb el seu administrador.",
+ "Log in" : "Inici de sessió",
"Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?",
"remember" : "recorda'm",
"Alternative Logins" : "Acreditacions alternatives",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 8af4766eaa1..55962a25362 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -243,6 +243,7 @@
"Please contact your administrator." : "Contacteu amb l'administrador.",
"An internal error occured." : "S'ha produït un error intern.",
"Please try again or contact your administrator." : "Intenti-ho de nou o posi's en contacte amb el seu administrador.",
+ "Log in" : "Inici de sessió",
"Wrong password. Reset it?" : "Contrasenya incorrecta. Voleu restablir-la?",
"remember" : "recorda'm",
"Alternative Logins" : "Acreditacions alternatives",
diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js
index 8d57e0e76c0..54ed40e9a5b 100644
--- a/core/l10n/cs_CZ.js
+++ b/core/l10n/cs_CZ.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"core",
{
"Couldn't send mail to following users: %s " : "Nebylo možné odeslat email následujícím uživatelům: %s",
+ "Preparing update" : "Příprava na aktualizaci",
"Turned on maintenance mode" : "Zapnut režim údržby",
"Turned off maintenance mode" : "Vypnut režim údržby",
"Maintenance mode is kept active" : "Mód údržby je aktivní",
@@ -13,6 +14,7 @@ OC.L10N.register(
"Repair error: " : "Chyba opravy:",
"Following incompatible apps have been disabled: %s" : "Následující nekompatibilní aplikace byly zakázány: %s",
"Following apps have been disabled: %s" : "Následující aplikace byly vypnuty: %s",
+ "Already up to date" : "Je již aktuální",
"File is too big" : "Soubor je příliš velký",
"Invalid file provided" : "Zadán neplatný soubor",
"No image or file provided" : "Soubor nebo obrázek nebyl zadán",
@@ -244,6 +246,7 @@ OC.L10N.register(
"Please contact your administrator." : "Kontaktujte prosím svého správce systému.",
"An internal error occured." : "Nastala vnitřní chyba.",
"Please try again or contact your administrator." : "Prosím zkuste to znovu nebo kontaktujte vašeho správce.",
+ "Log in" : "Přihlásit",
"Wrong password. Reset it?" : "Nesprávné heslo. Resetovat?",
"remember" : "zapamatovat",
"Alternative Logins" : "Alternativní přihlášení",
diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json
index e9f52cfa46d..da343b7791a 100644
--- a/core/l10n/cs_CZ.json
+++ b/core/l10n/cs_CZ.json
@@ -1,5 +1,6 @@
{ "translations": {
"Couldn't send mail to following users: %s " : "Nebylo možné odeslat email následujícím uživatelům: %s",
+ "Preparing update" : "Příprava na aktualizaci",
"Turned on maintenance mode" : "Zapnut režim údržby",
"Turned off maintenance mode" : "Vypnut režim údržby",
"Maintenance mode is kept active" : "Mód údržby je aktivní",
@@ -11,6 +12,7 @@
"Repair error: " : "Chyba opravy:",
"Following incompatible apps have been disabled: %s" : "Následující nekompatibilní aplikace byly zakázány: %s",
"Following apps have been disabled: %s" : "Následující aplikace byly vypnuty: %s",
+ "Already up to date" : "Je již aktuální",
"File is too big" : "Soubor je příliš velký",
"Invalid file provided" : "Zadán neplatný soubor",
"No image or file provided" : "Soubor nebo obrázek nebyl zadán",
@@ -242,6 +244,7 @@
"Please contact your administrator." : "Kontaktujte prosím svého správce systému.",
"An internal error occured." : "Nastala vnitřní chyba.",
"Please try again or contact your administrator." : "Prosím zkuste to znovu nebo kontaktujte vašeho správce.",
+ "Log in" : "Přihlásit",
"Wrong password. Reset it?" : "Nesprávné heslo. Resetovat?",
"remember" : "zapamatovat",
"Alternative Logins" : "Alternativní přihlášení",
diff --git a/core/l10n/cy_GB.js b/core/l10n/cy_GB.js
index 5afe9c94ae5..27df5177fff 100644
--- a/core/l10n/cy_GB.js
+++ b/core/l10n/cy_GB.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"Finish setup" : "Gorffen sefydlu",
"Log out" : "Allgofnodi",
"Search" : "Chwilio",
+ "Log in" : "Mewngofnodi",
"remember" : "cofio",
"Alternative Logins" : "Mewngofnodiadau Amgen"
},
diff --git a/core/l10n/cy_GB.json b/core/l10n/cy_GB.json
index 1e37b240bc9..37f1aefb527 100644
--- a/core/l10n/cy_GB.json
+++ b/core/l10n/cy_GB.json
@@ -98,6 +98,7 @@
"Finish setup" : "Gorffen sefydlu",
"Log out" : "Allgofnodi",
"Search" : "Chwilio",
+ "Log in" : "Mewngofnodi",
"remember" : "cofio",
"Alternative Logins" : "Mewngofnodiadau Amgen"
},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 0482ceff99e..c8684b3483c 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Kontakt venligst din administrator",
"An internal error occured." : "Der skete en intern fejl.",
"Please try again or contact your administrator." : "Kontakt venligst din administrator.",
+ "Log in" : "Log ind",
"Wrong password. Reset it?" : "Forkert kodeord. Skal det nulstilles?",
"remember" : "husk",
"Alternative Logins" : "Alternative logins",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 2396b997877..067d5e6914d 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "Kontakt venligst din administrator",
"An internal error occured." : "Der skete en intern fejl.",
"Please try again or contact your administrator." : "Kontakt venligst din administrator.",
+ "Log in" : "Log ind",
"Wrong password. Reset it?" : "Forkert kodeord. Skal det nulstilles?",
"remember" : "husk",
"Alternative Logins" : "Alternative logins",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 2662e0d895f..495ea72c710 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -237,6 +237,7 @@ OC.L10N.register(
"Please contact your administrator." : "Bitte kontaktiere Deinen Administrator.",
"An internal error occured." : "Es ist ein interner Fehler aufgetreten.",
"Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere Deinen Administrator.",
+ "Log in" : "Anmelden",
"Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?",
"remember" : "merken",
"Alternative Logins" : "Alternative Logins",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 2da213c6116..fc826c7fde2 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -235,6 +235,7 @@
"Please contact your administrator." : "Bitte kontaktiere Deinen Administrator.",
"An internal error occured." : "Es ist ein interner Fehler aufgetreten.",
"Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere Deinen Administrator.",
+ "Log in" : "Anmelden",
"Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?",
"remember" : "merken",
"Alternative Logins" : "Alternative Logins",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 6a77c3952c3..0a4689261a6 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"core",
{
"Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail gesendet werden: %s",
+ "Preparing update" : "Update vorbereiten",
"Turned on maintenance mode" : "Wartungsmodus eingeschaltet ",
"Turned off maintenance mode" : "Wartungsmodus ausgeschaltet",
"Maintenance mode is kept active" : "Wartungsmodus wird aktiv gehalten",
@@ -13,6 +14,7 @@ OC.L10N.register(
"Repair error: " : "Reperaturfehler:",
"Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s",
"Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s",
+ "Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
"Invalid file provided" : "Ungültige Datei zur Verfügung gestellt",
"No image or file provided" : "Es wurde weder ein Bild noch eine Datei zur Verfügung gestellt",
@@ -36,6 +38,13 @@ OC.L10N.register(
"Thu." : "Do",
"Fri." : "Fr",
"Sat." : "Sa",
+ "Su" : "So",
+ "Mo" : "Mo",
+ "Tu" : "Di",
+ "We" : "Mi",
+ "Th" : "Do",
+ "Fr" : "Fr",
+ "Sa" : "Sa",
"January" : "Januar",
"February" : "Februar",
"March" : "März",
@@ -236,6 +245,7 @@ OC.L10N.register(
"Please contact your administrator." : "Bitte kontaktieren Sie Ihren Administrator.",
"An internal error occured." : "Es ist ein interner Fehler aufgetreten.",
"Please try again or contact your administrator." : "Bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator.",
+ "Log in" : "Einloggen",
"Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?",
"remember" : "merken",
"Alternative Logins" : "Alternative Logins",
@@ -248,6 +258,10 @@ OC.L10N.register(
"Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Bitte kontaktieren Sie Ihren Administrator. Wenn Sie Administrator dieser Instanz sind, konfigurieren Sie bitte die „trusted_domain“-Einstellung in config/config.php. Eine Beispielkonfiguration wird unter config/config.sample.php bereitgestellt.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Wenn es Ihre Konfiguration zulässt, können Sie als Administrator gegebenenfalls den Button unten benutzen, um diese Domain als vertrauenswürdig einzustufen.",
"Add \"%s\" as trusted domain" : "„%s“ als vertrauenswürdige Domain hinzufügen",
+ "App update required" : "App-Update notwendig",
+ "%s will be updated to version %s" : "%s wird auf Version %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.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Stellen Sie vor dem Fortsetzen bitte sicher, dass die Datenbank, der Konfigurationsordner und der Datenordner gesichert wurden.",
"Start update" : "Aktualisierung starten",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index fc6dc12aa17..a5f2d5857e3 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -1,5 +1,6 @@
{ "translations": {
"Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail gesendet werden: %s",
+ "Preparing update" : "Update vorbereiten",
"Turned on maintenance mode" : "Wartungsmodus eingeschaltet ",
"Turned off maintenance mode" : "Wartungsmodus ausgeschaltet",
"Maintenance mode is kept active" : "Wartungsmodus wird aktiv gehalten",
@@ -11,6 +12,7 @@
"Repair error: " : "Reperaturfehler:",
"Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s",
"Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s",
+ "Already up to date" : "Bereits aktuell",
"File is too big" : "Datei ist zu groß",
"Invalid file provided" : "Ungültige Datei zur Verfügung gestellt",
"No image or file provided" : "Es wurde weder ein Bild noch eine Datei zur Verfügung gestellt",
@@ -34,6 +36,13 @@
"Thu." : "Do",
"Fri." : "Fr",
"Sat." : "Sa",
+ "Su" : "So",
+ "Mo" : "Mo",
+ "Tu" : "Di",
+ "We" : "Mi",
+ "Th" : "Do",
+ "Fr" : "Fr",
+ "Sa" : "Sa",
"January" : "Januar",
"February" : "Februar",
"March" : "März",
@@ -234,6 +243,7 @@
"Please contact your administrator." : "Bitte kontaktieren Sie Ihren Administrator.",
"An internal error occured." : "Es ist ein interner Fehler aufgetreten.",
"Please try again or contact your administrator." : "Bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator.",
+ "Log in" : "Einloggen",
"Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?",
"remember" : "merken",
"Alternative Logins" : "Alternative Logins",
@@ -246,6 +256,10 @@
"Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Bitte kontaktieren Sie Ihren Administrator. Wenn Sie Administrator dieser Instanz sind, konfigurieren Sie bitte die „trusted_domain“-Einstellung in config/config.php. Eine Beispielkonfiguration wird unter config/config.sample.php bereitgestellt.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Wenn es Ihre Konfiguration zulässt, können Sie als Administrator gegebenenfalls den Button unten benutzen, um diese Domain als vertrauenswürdig einzustufen.",
"Add \"%s\" as trusted domain" : "„%s“ als vertrauenswürdige Domain hinzufügen",
+ "App update required" : "App-Update notwendig",
+ "%s will be updated to version %s" : "%s wird auf Version %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.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Stellen Sie vor dem Fortsetzen bitte sicher, dass die Datenbank, der Konfigurationsordner und der Datenordner gesichert wurden.",
"Start update" : "Aktualisierung starten",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index 03ecc018c05..28e9763e13c 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Παρακαλώ επικοινωνήστε με τον διαχειριστή.",
"An internal error occured." : "Παρουσιάστηκε εσωτερικό σφάλμα.",
"Please try again or contact your administrator." : "Παρακαλώ δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή σας.",
+ "Log in" : "Είσοδος",
"Wrong password. Reset it?" : "Λάθος Κωδικός. Επαναφορά;",
"remember" : "απομνημόνευση",
"Alternative Logins" : "Εναλλακτικές Συνδέσεις",
diff --git a/core/l10n/el.json b/core/l10n/el.json
index 4e901e6606b..6c68066738a 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "Παρακαλώ επικοινωνήστε με τον διαχειριστή.",
"An internal error occured." : "Παρουσιάστηκε εσωτερικό σφάλμα.",
"Please try again or contact your administrator." : "Παρακαλώ δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή σας.",
+ "Log in" : "Είσοδος",
"Wrong password. Reset it?" : "Λάθος Κωδικός. Επαναφορά;",
"remember" : "απομνημόνευση",
"Alternative Logins" : "Εναλλακτικές Συνδέσεις",
diff --git a/core/l10n/eo.js b/core/l10n/eo.js
index 78a571a798a..eee2a354958 100644
--- a/core/l10n/eo.js
+++ b/core/l10n/eo.js
@@ -129,6 +129,7 @@ OC.L10N.register(
"Log out" : "Elsaluti",
"Search" : "Serĉi",
"Please contact your administrator." : "Bonvolu kontakti vian administranton.",
+ "Log in" : "Ensaluti",
"remember" : "memori",
"Alternative Logins" : "Alternativaj ensalutoj",
"Thank you for your patience." : "Dankon pro via pacienco."
diff --git a/core/l10n/eo.json b/core/l10n/eo.json
index 401e9327560..fb1ad500032 100644
--- a/core/l10n/eo.json
+++ b/core/l10n/eo.json
@@ -127,6 +127,7 @@
"Log out" : "Elsaluti",
"Search" : "Serĉi",
"Please contact your administrator." : "Bonvolu kontakti vian administranton.",
+ "Log in" : "Ensaluti",
"remember" : "memori",
"Alternative Logins" : "Alternativaj ensalutoj",
"Thank you for your patience." : "Dankon pro via pacienco."
diff --git a/core/l10n/es_AR.js b/core/l10n/es_AR.js
index 5cc18198864..bddadc44c1a 100644
--- a/core/l10n/es_AR.js
+++ b/core/l10n/es_AR.js
@@ -149,6 +149,7 @@ OC.L10N.register(
"Search" : "Buscar",
"Server side authentication failed!" : "¡Falló la autenticación del servidor!",
"Please contact your administrator." : "Por favor, contacte a su administrador.",
+ "Log in" : "Iniciar sesión",
"remember" : "recordame",
"Alternative Logins" : "Nombre alternativos de usuarios",
"This ownCloud instance is currently in single user mode." : "Esta instancia de ownCloud está en modo de usuario único.",
diff --git a/core/l10n/es_AR.json b/core/l10n/es_AR.json
index 8ccb4cedb4b..93a5b815740 100644
--- a/core/l10n/es_AR.json
+++ b/core/l10n/es_AR.json
@@ -147,6 +147,7 @@
"Search" : "Buscar",
"Server side authentication failed!" : "¡Falló la autenticación del servidor!",
"Please contact your administrator." : "Por favor, contacte a su administrador.",
+ "Log in" : "Iniciar sesión",
"remember" : "recordame",
"Alternative Logins" : "Nombre alternativos de usuarios",
"This ownCloud instance is currently in single user mode." : "Esta instancia de ownCloud está en modo de usuario único.",
diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js
index 3e517277f53..df638a3d7ee 100644
--- a/core/l10n/et_EE.js
+++ b/core/l10n/et_EE.js
@@ -217,6 +217,7 @@ OC.L10N.register(
"Please contact your administrator." : "Palun kontakteeru oma süsteemihalduriga.",
"An internal error occured." : "Tekkis sisemine tõrge.",
"Please try again or contact your administrator." : "Palun proovi uuesti või võta ühendust oma administraatoriga.",
+ "Log in" : "Logi sisse",
"remember" : "pea meeles",
"Alternative Logins" : "Alternatiivsed sisselogimisviisid",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hei,<br><br>annan teada, et %s jagas sinuga <strong>%s</strong>. <a href=\"%s\">Vaata seda!</a><br><br>",
diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json
index 73839f889ca..edacdaedca9 100644
--- a/core/l10n/et_EE.json
+++ b/core/l10n/et_EE.json
@@ -215,6 +215,7 @@
"Please contact your administrator." : "Palun kontakteeru oma süsteemihalduriga.",
"An internal error occured." : "Tekkis sisemine tõrge.",
"Please try again or contact your administrator." : "Palun proovi uuesti või võta ühendust oma administraatoriga.",
+ "Log in" : "Logi sisse",
"remember" : "pea meeles",
"Alternative Logins" : "Alternatiivsed sisselogimisviisid",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hei,<br><br>annan teada, et %s jagas sinuga <strong>%s</strong>. <a href=\"%s\">Vaata seda!</a><br><br>",
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index e215b870125..88b75072356 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -199,6 +199,7 @@ OC.L10N.register(
"Search" : "Bilatu",
"Server side authentication failed!" : "Zerbitzari aldeko autentifikazioak huts egin du!",
"Please contact your administrator." : "Mesedez jarri harremetan zure administradorearekin.",
+ "Log in" : "Hasi saioa",
"remember" : "gogoratu",
"Alternative Logins" : "Beste erabiltzaile izenak",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Kaixo<br><br>%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s",
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index 9af46ca9cfb..51143f24767 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -197,6 +197,7 @@
"Search" : "Bilatu",
"Server side authentication failed!" : "Zerbitzari aldeko autentifikazioak huts egin du!",
"Please contact your administrator." : "Mesedez jarri harremetan zure administradorearekin.",
+ "Log in" : "Hasi saioa",
"remember" : "gogoratu",
"Alternative Logins" : "Beste erabiltzaile izenak",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Kaixo<br><br>%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s",
diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js
index 2893ce8ae2a..2c3c3c49617 100644
--- a/core/l10n/fi_FI.js
+++ b/core/l10n/fi_FI.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Ota yhteys ylläpitäjään.",
"An internal error occured." : "Tapahtui sisäinen virhe.",
"Please try again or contact your administrator." : "Yritä uudestaan tai ota yhteys ylläpitäjään.",
+ "Log in" : "Kirjaudu sisään",
"Wrong password. Reset it?" : "Väärä salasana. Haluatko palauttaa salasanan?",
"remember" : "muista",
"Alternative Logins" : "Vaihtoehtoiset kirjautumiset",
diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json
index 21316024e73..e0ac2410747 100644
--- a/core/l10n/fi_FI.json
+++ b/core/l10n/fi_FI.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "Ota yhteys ylläpitäjään.",
"An internal error occured." : "Tapahtui sisäinen virhe.",
"Please try again or contact your administrator." : "Yritä uudestaan tai ota yhteys ylläpitäjään.",
+ "Log in" : "Kirjaudu sisään",
"Wrong password. Reset it?" : "Väärä salasana. Haluatko palauttaa salasanan?",
"remember" : "muista",
"Alternative Logins" : "Vaihtoehtoiset kirjautumiset",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 2ed3872dffb..27bea200a63 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -14,6 +14,7 @@ OC.L10N.register(
"Repair error: " : "Erreur de réparation :",
"Following incompatible apps have been disabled: %s" : "Les applications incompatibles suivantes ont été désactivées : %s",
"Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s",
+ "Already up to date" : "Déjà à jour",
"File is too big" : "Fichier trop volumineux",
"Invalid file provided" : "Fichier non valide",
"No image or file provided" : "Aucun fichier fourni",
@@ -247,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Veuillez contacter votre administrateur.",
"An internal error occured." : "Une erreur interne est survenue.",
"Please try again or contact your administrator." : "Veuillez réessayer ou contacter votre administrateur.",
+ "Log in" : "Se connecter",
"Wrong password. Reset it?" : "Mot de passe incorrect. Réinitialiser ?",
"remember" : "se souvenir de moi",
"Alternative Logins" : "Identifiants alternatifs",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 761132e4bde..ac12a4673d5 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -12,6 +12,7 @@
"Repair error: " : "Erreur de réparation :",
"Following incompatible apps have been disabled: %s" : "Les applications incompatibles suivantes ont été désactivées : %s",
"Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s",
+ "Already up to date" : "Déjà à jour",
"File is too big" : "Fichier trop volumineux",
"Invalid file provided" : "Fichier non valide",
"No image or file provided" : "Aucun fichier fourni",
@@ -245,6 +246,7 @@
"Please contact your administrator." : "Veuillez contacter votre administrateur.",
"An internal error occured." : "Une erreur interne est survenue.",
"Please try again or contact your administrator." : "Veuillez réessayer ou contacter votre administrateur.",
+ "Log in" : "Se connecter",
"Wrong password. Reset it?" : "Mot de passe incorrect. Réinitialiser ?",
"remember" : "se souvenir de moi",
"Alternative Logins" : "Identifiants alternatifs",
diff --git a/core/l10n/gl.js b/core/l10n/gl.js
index f53866cdc08..583931d5068 100644
--- a/core/l10n/gl.js
+++ b/core/l10n/gl.js
@@ -243,6 +243,7 @@ OC.L10N.register(
"Please contact your administrator." : "Contacte co administrador.",
"An internal error occured." : "Produciuse un erro interno.",
"Please try again or contact your administrator." : "Ténteo de novo ou póñase en contacto co administrador.",
+ "Log in" : "Acceder",
"remember" : "lembrar",
"Alternative Logins" : "Accesos alternativos",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Ola,<br><br>só facerlle saber que %s compartiu <strong>%s</strong> con vostede.<br><a href=\"%s\">Véxao!</a><br><br>",
diff --git a/core/l10n/gl.json b/core/l10n/gl.json
index 1542d83210c..7d33ed6cc76 100644
--- a/core/l10n/gl.json
+++ b/core/l10n/gl.json
@@ -241,6 +241,7 @@
"Please contact your administrator." : "Contacte co administrador.",
"An internal error occured." : "Produciuse un erro interno.",
"Please try again or contact your administrator." : "Ténteo de novo ou póñase en contacto co administrador.",
+ "Log in" : "Acceder",
"remember" : "lembrar",
"Alternative Logins" : "Accesos alternativos",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Ola,<br><br>só facerlle saber que %s compartiu <strong>%s</strong> con vostede.<br><a href=\"%s\">Véxao!</a><br><br>",
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 4692495cccb..3285a569d34 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"Finish setup" : "סיום התקנה",
"Log out" : "התנתקות",
"Search" : "חיפוש",
+ "Log in" : "כניסה",
"remember" : "שמירת הססמה",
"Alternative Logins" : "כניסות אלטרנטיביות"
},
diff --git a/core/l10n/he.json b/core/l10n/he.json
index fe873e0b02c..5db9f156d09 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -101,6 +101,7 @@
"Finish setup" : "סיום התקנה",
"Log out" : "התנתקות",
"Search" : "חיפוש",
+ "Log in" : "כניסה",
"remember" : "שמירת הססמה",
"Alternative Logins" : "כניסות אלטרנטיביות"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/hr.js b/core/l10n/hr.js
index 9d0c1ddeb49..44d9fab7740 100644
--- a/core/l10n/hr.js
+++ b/core/l10n/hr.js
@@ -199,6 +199,7 @@ OC.L10N.register(
"Search" : "pretraži",
"Server side authentication failed!" : "Autentikacija na strani poslužitelja nije uspjela!",
"Please contact your administrator." : "Molimo kontaktirajte svog administratora.",
+ "Log in" : "Prijavite se",
"remember" : "Sjetite se",
"Alternative Logins" : "Alternativne prijave",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej, <br><br> vam upravo javlja da je %s podijelio <strong>%s</strong>s vama.<br><a href=\"%s\">POgledajte!</a><br><br>",
diff --git a/core/l10n/hr.json b/core/l10n/hr.json
index 1472b8aaa0d..7a6ce98346f 100644
--- a/core/l10n/hr.json
+++ b/core/l10n/hr.json
@@ -197,6 +197,7 @@
"Search" : "pretraži",
"Server side authentication failed!" : "Autentikacija na strani poslužitelja nije uspjela!",
"Please contact your administrator." : "Molimo kontaktirajte svog administratora.",
+ "Log in" : "Prijavite se",
"remember" : "Sjetite se",
"Alternative Logins" : "Alternativne prijave",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej, <br><br> vam upravo javlja da je %s podijelio <strong>%s</strong>s vama.<br><a href=\"%s\">POgledajte!</a><br><br>",
diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js
index b465daa4212..7be9e243e88 100644
--- a/core/l10n/hu_HU.js
+++ b/core/l10n/hu_HU.js
@@ -247,6 +247,7 @@ OC.L10N.register(
"Please contact your administrator." : "Kérjük, lépjen kapcsolatba a rendszergazdával.",
"An internal error occured." : "Belső hiba történt.",
"Please try again or contact your administrator." : "Kérem próbálja újra, vagy vegye fel a kapcsolatot a rendszergazdával.",
+ "Log in" : "Bejelentkezés",
"Wrong password. Reset it?" : "Hibás jelszó. Visszaállítja?",
"remember" : "emlékezzen",
"Alternative Logins" : "Alternatív bejelentkezés",
diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json
index e8b3e20c33e..63447a4038a 100644
--- a/core/l10n/hu_HU.json
+++ b/core/l10n/hu_HU.json
@@ -245,6 +245,7 @@
"Please contact your administrator." : "Kérjük, lépjen kapcsolatba a rendszergazdával.",
"An internal error occured." : "Belső hiba történt.",
"Please try again or contact your administrator." : "Kérem próbálja újra, vagy vegye fel a kapcsolatot a rendszergazdával.",
+ "Log in" : "Bejelentkezés",
"Wrong password. Reset it?" : "Hibás jelszó. Visszaállítja?",
"remember" : "emlékezzen",
"Alternative Logins" : "Alternatív bejelentkezés",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index c8fec41dc8f..64cc78ea048 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Vinsamlegast hafðu samband við kerfisstjóra.",
"An internal error occured." : "Innri villa kom upp.",
"Please try again or contact your administrator." : "Vinsamlegast reyndu aftur eða hafðu samband við kerfisstjóra.",
+ "Log in" : "Skrá inn",
"Wrong password. Reset it?" : "Rangt lykilorð. Endursetja?",
"remember" : "muna eftir mér",
"Alternative Logins" : "Aðrar Innskráningar",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index 638e5267ea0..b6255b1764e 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "Vinsamlegast hafðu samband við kerfisstjóra.",
"An internal error occured." : "Innri villa kom upp.",
"Please try again or contact your administrator." : "Vinsamlegast reyndu aftur eða hafðu samband við kerfisstjóra.",
+ "Log in" : "Skrá inn",
"Wrong password. Reset it?" : "Rangt lykilorð. Endursetja?",
"remember" : "muna eftir mér",
"Alternative Logins" : "Aðrar Innskráningar",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index fbdd112cb08..9c8d681f379 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -245,6 +245,7 @@ OC.L10N.register(
"Please contact your administrator." : "管理者に問い合わせてください。",
"An internal error occured." : "内部エラーが発生しました。",
"Please try again or contact your administrator." : "もう一度試してみるか、管理者に問い合わせてください。",
+ "Log in" : "ログイン",
"Wrong password. Reset it?" : "パスワードが間違っています。リセットしますか?",
"remember" : "パスワードを保存",
"Alternative Logins" : "代替ログイン",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index c31bd5aba9e..ad18b1f98ed 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -243,6 +243,7 @@
"Please contact your administrator." : "管理者に問い合わせてください。",
"An internal error occured." : "内部エラーが発生しました。",
"Please try again or contact your administrator." : "もう一度試してみるか、管理者に問い合わせてください。",
+ "Log in" : "ログイン",
"Wrong password. Reset it?" : "パスワードが間違っています。リセットしますか?",
"remember" : "パスワードを保存",
"Alternative Logins" : "代替ログイン",
diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js
index eef607f316d..d6ae525c861 100644
--- a/core/l10n/ka_GE.js
+++ b/core/l10n/ka_GE.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"Finish setup" : "კონფიგურაციის დასრულება",
"Log out" : "გამოსვლა",
"Search" : "ძებნა",
+ "Log in" : "შესვლა",
"remember" : "დამახსოვრება",
"Alternative Logins" : "ალტერნატიული Login–ი"
},
diff --git a/core/l10n/ka_GE.json b/core/l10n/ka_GE.json
index dad6746fe94..85fecffe0c0 100644
--- a/core/l10n/ka_GE.json
+++ b/core/l10n/ka_GE.json
@@ -100,6 +100,7 @@
"Finish setup" : "კონფიგურაციის დასრულება",
"Log out" : "გამოსვლა",
"Search" : "ძებნა",
+ "Log in" : "შესვლა",
"remember" : "დამახსოვრება",
"Alternative Logins" : "ალტერნატიული Login–ი"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/core/l10n/lb.js b/core/l10n/lb.js
index 6bbc675150e..4fa998c42f7 100644
--- a/core/l10n/lb.js
+++ b/core/l10n/lb.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"Finishing …" : "Schléissen of ...",
"Log out" : "Ofmellen",
"Search" : "Sichen",
+ "Log in" : "Umellen",
"remember" : "verhalen",
"Alternative Logins" : "Alternativ Umeldungen",
"Thank you for your patience." : "Merci fir deng Gedold."
diff --git a/core/l10n/lb.json b/core/l10n/lb.json
index 4a8fcce1136..0a201c98f1c 100644
--- a/core/l10n/lb.json
+++ b/core/l10n/lb.json
@@ -118,6 +118,7 @@
"Finishing …" : "Schléissen of ...",
"Log out" : "Ofmellen",
"Search" : "Sichen",
+ "Log in" : "Umellen",
"remember" : "verhalen",
"Alternative Logins" : "Alternativ Umeldungen",
"Thank you for your patience." : "Merci fir deng Gedold."
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index 41f012b6f07..f36b66dcf52 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -156,6 +156,7 @@ OC.L10N.register(
"Search" : "Ieškoti",
"Server side authentication failed!" : "Autentikacija serveryje nepavyko!",
"Please contact your administrator." : "Kreipkitės į savo sistemos administratorių.",
+ "Log in" : "Prisijungti",
"remember" : "prisiminti",
"Alternative Logins" : "Alternatyvūs prisijungimai",
"This ownCloud instance is currently in single user mode." : "Ši ownCloud sistema yra vieno naudotojo veiksenoje.",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 7b6ad9e4907..5261b7ee070 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -154,6 +154,7 @@
"Search" : "Ieškoti",
"Server side authentication failed!" : "Autentikacija serveryje nepavyko!",
"Please contact your administrator." : "Kreipkitės į savo sistemos administratorių.",
+ "Log in" : "Prisijungti",
"remember" : "prisiminti",
"Alternative Logins" : "Alternatyvūs prisijungimai",
"This ownCloud instance is currently in single user mode." : "Ši ownCloud sistema yra vieno naudotojo veiksenoje.",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 526ef6846c0..d7905ef30a7 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -119,6 +119,7 @@ OC.L10N.register(
"Finish setup" : "Pabeigt iestatīšanu",
"Log out" : "Izrakstīties",
"Search" : "Meklēt",
+ "Log in" : "Ierakstīties",
"remember" : "atcerēties",
"Alternative Logins" : "Alternatīvās pieteikšanās"
},
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index c40bb4757d8..49188f77e89 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -117,6 +117,7 @@
"Finish setup" : "Pabeigt iestatīšanu",
"Log out" : "Izrakstīties",
"Search" : "Meklēt",
+ "Log in" : "Ierakstīties",
"remember" : "atcerēties",
"Alternative Logins" : "Alternatīvās pieteikšanās"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
diff --git a/core/l10n/mk.js b/core/l10n/mk.js
index bbc073bce0b..e960bb4b7f6 100644
--- a/core/l10n/mk.js
+++ b/core/l10n/mk.js
@@ -168,6 +168,7 @@ OC.L10N.register(
"Search" : "Барај",
"Server side authentication failed!" : "Автентификацијата на серверската страна е неуспешна!",
"Please contact your administrator." : "Ве молиме контактирајте го вашиот администратор.",
+ "Log in" : "Најава",
"remember" : "запамти",
"Alternative Logins" : "Алтернативни најавувања",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте го вашиот систем администратор до колку оваа порака продолжи да се појавува или пак се појавува ненадејно.",
diff --git a/core/l10n/mk.json b/core/l10n/mk.json
index 88a4ee81934..722af208b2c 100644
--- a/core/l10n/mk.json
+++ b/core/l10n/mk.json
@@ -166,6 +166,7 @@
"Search" : "Барај",
"Server side authentication failed!" : "Автентификацијата на серверската страна е неуспешна!",
"Please contact your administrator." : "Ве молиме контактирајте го вашиот администратор.",
+ "Log in" : "Најава",
"remember" : "запамти",
"Alternative Logins" : "Алтернативни најавувања",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте го вашиот систем администратор до колку оваа порака продолжи да се појавува или пак се појавува ненадејно.",
diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js
index 352a0ce78a9..2dc995b2a98 100644
--- a/core/l10n/nb_NO.js
+++ b/core/l10n/nb_NO.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"core",
{
"Couldn't send mail to following users: %s " : "Klarte ikke å sende mail til følgende brukere: %s",
+ "Preparing update" : "Forbereder oppdatering",
"Turned on maintenance mode" : "Slo på vedlikeholdsmodus",
"Turned off maintenance mode" : "Slo av vedlikeholdsmodus",
"Maintenance mode is kept active" : "Vedlikeholdsmodus blir beholdt aktiv",
@@ -13,6 +14,8 @@ OC.L10N.register(
"Repair error: " : "Feil ved reparering: ",
"Following incompatible apps have been disabled: %s" : "Følgende inkompatible apper har blitt deaktivert: %s",
"Following apps have been disabled: %s" : "Følgende apper har blitt deaktivert: %s",
+ "Already up to date" : "Allerede oppdatert",
+ "File is too big" : "Filen er for stor",
"Invalid file provided" : "Ugyldig fil oppgitt",
"No image or file provided" : "Bilde eller fil ikke angitt",
"Unknown filetype" : "Ukjent filtype",
@@ -35,6 +38,13 @@ OC.L10N.register(
"Thu." : "To.",
"Fri." : "Fr.",
"Sat." : "Lø.",
+ "Su" : "Sø",
+ "Mo" : "Ma",
+ "Tu" : "Ti",
+ "We" : "On",
+ "Th" : "To",
+ "Fr" : "Fr",
+ "Sa" : "Lø",
"January" : "Januar",
"February" : "Februar",
"March" : "Mars",
@@ -94,6 +104,8 @@ OC.L10N.register(
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Vi anbefaler sterkt at du konfigurerer web-serveren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av web-serverens dokumentrot.",
"No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.",
+ "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a href=\"{docLink}\">dokumentasjonen</a>.",
"Error occurred while checking server setup" : "Feil oppstod ved sjekking av server-oppsett",
"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 \"{header}\" er ikke konfigurert lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP header \"Strict-Transport-Security\" er ikke konfigurert til minst \"{seconds}\" sekunder. For beste sikkerhet anbefaler vi at HSTS aktiveres som beskrevet i <a href=\"{docUrl}\">sikkerhetstips</a>.",
@@ -162,6 +174,7 @@ OC.L10N.register(
"The update was successful. There were warnings." : "Oppdateringen var vellykket. Det oppstod advarsler.",
"The update was successful. Redirecting you to ownCloud now." : "Oppdateringen var vellykket. Du omdirigeres nå til ownCloud.",
"Couldn't reset password because the token is invalid" : "Klarte ikke å tilbakestille passordet fordi token er ugyldig.",
+ "Couldn't reset password because the token is expired" : "Klarte ikke å tilbakestille passordet fordi token er utløpt.",
"Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke å sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.",
"Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke å sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.",
"%s password reset" : "%s tilbakestilling av passord",
@@ -235,6 +248,8 @@ OC.L10N.register(
"Please contact your administrator." : "Vennligst kontakt administratoren din.",
"An internal error occured." : "Det oppstod en intern feil.",
"Please try again or contact your administrator." : "Prøv igjen eller kontakt en administrator.",
+ "Log in" : "Logg inn",
+ "Wrong password. Reset it?" : "Feil passord. Nullstille det?",
"remember" : "husk",
"Alternative Logins" : "Alternative innlogginger",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hei,<br><br>Dette er en beskjed om at %s delte <strong>%s</strong> med deg.<br><a href=\"%s\">Vis den!</a><br><br>",
@@ -246,6 +261,10 @@ OC.L10N.register(
"Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Vennligst kontakt administratoren. Hvis du er administrator for denne instansen, konfigurer innstillingen \"trusted_domain\" i config/config.php. En eksempelkonfigurasjon er gitt i config/config.sample.php.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Avhengig av konfigurasjonen kan du, som administrator, kanskje også bruke kanppen nedenfor til å stole på dette domenet.",
"Add \"%s\" as trusted domain" : "Legg til \"%s\" som et tiltrodd domene",
+ "App update required" : "App-oppdatering kreves",
+ "%s will be updated to version %s" : "%s vil bli oppdatert til versjon %s",
+ "These apps will be updated:" : "Disse appene vil bli oppdatert:",
+ "These incompatible apps will be disabled:" : "Disse ikke-kompatible appene vil bli deaktivert:",
"The theme %s has been disabled." : "Temaet %s har blitt deaktivert.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Forsikre deg om at databasen, config-mappen og datamappen er blitt sikkerhetskopiert før du fortsetter.",
"Start update" : "Start oppdatering",
diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json
index 22afa2b9c92..528913e424a 100644
--- a/core/l10n/nb_NO.json
+++ b/core/l10n/nb_NO.json
@@ -1,5 +1,6 @@
{ "translations": {
"Couldn't send mail to following users: %s " : "Klarte ikke å sende mail til følgende brukere: %s",
+ "Preparing update" : "Forbereder oppdatering",
"Turned on maintenance mode" : "Slo på vedlikeholdsmodus",
"Turned off maintenance mode" : "Slo av vedlikeholdsmodus",
"Maintenance mode is kept active" : "Vedlikeholdsmodus blir beholdt aktiv",
@@ -11,6 +12,8 @@
"Repair error: " : "Feil ved reparering: ",
"Following incompatible apps have been disabled: %s" : "Følgende inkompatible apper har blitt deaktivert: %s",
"Following apps have been disabled: %s" : "Følgende apper har blitt deaktivert: %s",
+ "Already up to date" : "Allerede oppdatert",
+ "File is too big" : "Filen er for stor",
"Invalid file provided" : "Ugyldig fil oppgitt",
"No image or file provided" : "Bilde eller fil ikke angitt",
"Unknown filetype" : "Ukjent filtype",
@@ -33,6 +36,13 @@
"Thu." : "To.",
"Fri." : "Fr.",
"Sat." : "Lø.",
+ "Su" : "Sø",
+ "Mo" : "Ma",
+ "Tu" : "Ti",
+ "We" : "On",
+ "Th" : "To",
+ "Fr" : "Fr",
+ "Sa" : "Lø",
"January" : "Januar",
"February" : "Februar",
"March" : "Mars",
@@ -92,6 +102,8 @@
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Vi anbefaler sterkt at du konfigurerer web-serveren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av web-serverens dokumentrot.",
"No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.",
+ "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a href=\"{docLink}\">dokumentasjonen</a>.",
"Error occurred while checking server setup" : "Feil oppstod ved sjekking av server-oppsett",
"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 \"{header}\" er ikke konfigurert lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP header \"Strict-Transport-Security\" er ikke konfigurert til minst \"{seconds}\" sekunder. For beste sikkerhet anbefaler vi at HSTS aktiveres som beskrevet i <a href=\"{docUrl}\">sikkerhetstips</a>.",
@@ -160,6 +172,7 @@
"The update was successful. There were warnings." : "Oppdateringen var vellykket. Det oppstod advarsler.",
"The update was successful. Redirecting you to ownCloud now." : "Oppdateringen var vellykket. Du omdirigeres nå til ownCloud.",
"Couldn't reset password because the token is invalid" : "Klarte ikke å tilbakestille passordet fordi token er ugyldig.",
+ "Couldn't reset password because the token is expired" : "Klarte ikke å tilbakestille passordet fordi token er utløpt.",
"Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke å sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.",
"Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke å sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.",
"%s password reset" : "%s tilbakestilling av passord",
@@ -233,6 +246,8 @@
"Please contact your administrator." : "Vennligst kontakt administratoren din.",
"An internal error occured." : "Det oppstod en intern feil.",
"Please try again or contact your administrator." : "Prøv igjen eller kontakt en administrator.",
+ "Log in" : "Logg inn",
+ "Wrong password. Reset it?" : "Feil passord. Nullstille det?",
"remember" : "husk",
"Alternative Logins" : "Alternative innlogginger",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hei,<br><br>Dette er en beskjed om at %s delte <strong>%s</strong> med deg.<br><a href=\"%s\">Vis den!</a><br><br>",
@@ -244,6 +259,10 @@
"Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Vennligst kontakt administratoren. Hvis du er administrator for denne instansen, konfigurer innstillingen \"trusted_domain\" i config/config.php. En eksempelkonfigurasjon er gitt i config/config.sample.php.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Avhengig av konfigurasjonen kan du, som administrator, kanskje også bruke kanppen nedenfor til å stole på dette domenet.",
"Add \"%s\" as trusted domain" : "Legg til \"%s\" som et tiltrodd domene",
+ "App update required" : "App-oppdatering kreves",
+ "%s will be updated to version %s" : "%s vil bli oppdatert til versjon %s",
+ "These apps will be updated:" : "Disse appene vil bli oppdatert:",
+ "These incompatible apps will be disabled:" : "Disse ikke-kompatible appene vil bli deaktivert:",
"The theme %s has been disabled." : "Temaet %s har blitt deaktivert.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Forsikre deg om at databasen, config-mappen og datamappen er blitt sikkerhetskopiert før du fortsetter.",
"Start update" : "Start oppdatering",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index a26c2b1e2bd..3eda4c2ed9d 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -206,6 +206,7 @@ OC.L10N.register(
"Server side authentication failed!" : "Uwierzytelnianie po stronie serwera nie powiodło się!",
"Please contact your administrator." : "Skontaktuj się z administratorem",
"Please try again or contact your administrator." : "Spróbuj ponownie lub skontaktuj się z administratorem.",
+ "Log in" : "Zaloguj",
"remember" : "pamiętaj",
"Alternative Logins" : "Alternatywne loginy",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Witam, <br><br>informuję, że %s udostępnianych zasobów <strong>%s</strong> jest z Tobą.<br><a href=\"%s\">Zobacz!</a><br><br>",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 0c3524c5cc4..94001147b74 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -204,6 +204,7 @@
"Server side authentication failed!" : "Uwierzytelnianie po stronie serwera nie powiodło się!",
"Please contact your administrator." : "Skontaktuj się z administratorem",
"Please try again or contact your administrator." : "Spróbuj ponownie lub skontaktuj się z administratorem.",
+ "Log in" : "Zaloguj",
"remember" : "pamiętaj",
"Alternative Logins" : "Alternatywne loginy",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Witam, <br><br>informuję, że %s udostępnianych zasobów <strong>%s</strong> jest z Tobą.<br><a href=\"%s\">Zobacz!</a><br><br>",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index ad5cf69a798..8f1a2878aaa 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Por favor, contate o administrador.",
"An internal error occured." : "Ocorreu um erro interno.",
"Please try again or contact your administrator." : "Por favor tente novamente ou faça contato com o seu administrador.",
+ "Log in" : "Entrar",
"Wrong password. Reset it?" : "Senha incorreta. Redefini-la?",
"remember" : "lembrar",
"Alternative Logins" : "Logins Alternativos",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index bcc3522c430..d07686e7bdd 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "Por favor, contate o administrador.",
"An internal error occured." : "Ocorreu um erro interno.",
"Please try again or contact your administrator." : "Por favor tente novamente ou faça contato com o seu administrador.",
+ "Log in" : "Entrar",
"Wrong password. Reset it?" : "Senha incorreta. Redefini-la?",
"remember" : "lembrar",
"Alternative Logins" : "Logins Alternativos",
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index 537efc34728..a5c899a5986 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"core",
{
"Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s",
+ "Preparing update" : "A preparar atualização",
"Turned on maintenance mode" : "Ativado o modo de manutenção",
"Turned off maintenance mode" : "Desativado o modo de manutenção",
"Maintenance mode is kept active" : "O modo de manutenção é mantido ativo",
@@ -13,6 +14,7 @@ OC.L10N.register(
"Repair error: " : "Corrija o erro:",
"Following incompatible apps have been disabled: %s" : "As seguintes apps incompatíveis foram desativadas: %s",
"Following apps have been disabled: %s" : "As seguintes apps foram desativadas: %s",
+ "Already up to date" : "Já está atualizado",
"File is too big" : "O ficheiro é muito grande",
"Invalid file provided" : "Ficheiro indicado inválido",
"No image or file provided" : "Não foi fornecido nenhum ficheiro ou imagem",
@@ -36,6 +38,13 @@ OC.L10N.register(
"Thu." : "Qui.",
"Fri." : "Sex.",
"Sat." : "Sáb.",
+ "Su" : "Dom",
+ "Mo" : "Seg",
+ "Tu" : "Ter",
+ "We" : "Qua",
+ "Th" : "Qui",
+ "Fr" : "Sex",
+ "Sa" : "Sáb",
"January" : "Janeiro",
"February" : "Fevereiro",
"March" : "Março",
@@ -159,6 +168,7 @@ OC.L10N.register(
"The update was successful. There were warnings." : "A atualização foi bem sucedida. Tem alguns avisos.",
"The update was successful. Redirecting you to ownCloud now." : "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.",
"Couldn't reset password because the token is invalid" : "Não foi possível repor a palavra-passe porque a senha é inválida",
+ "Couldn't reset password because the token is expired" : "Não foi possível repor a palavra-passe porque a senha expirou",
"Couldn't send reset email. Please make sure your username is correct." : "Ocorreu um problema com o envio do e-mail, por favor confirme o seu utilizador.",
"Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ocorreu um problema com o envio do e-mail, por favor contacte o administrador.",
"%s password reset" : "%s reposição da palavra-passe",
@@ -232,6 +242,7 @@ OC.L10N.register(
"Please contact your administrator." : "Por favor contacte o administrador.",
"An internal error occured." : "Ocorreu um erro interno.",
"Please try again or contact your administrator." : "Por favor tente de novo ou contacte o administrador.",
+ "Log in" : "Iniciar Sessão",
"Wrong password. Reset it?" : "Senha errada. Repô-la?",
"remember" : "lembrar",
"Alternative Logins" : "Contas de acesso alternativas",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index 17c5b5dd587..736490eb273 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -1,5 +1,6 @@
{ "translations": {
"Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s",
+ "Preparing update" : "A preparar atualização",
"Turned on maintenance mode" : "Ativado o modo de manutenção",
"Turned off maintenance mode" : "Desativado o modo de manutenção",
"Maintenance mode is kept active" : "O modo de manutenção é mantido ativo",
@@ -11,6 +12,7 @@
"Repair error: " : "Corrija o erro:",
"Following incompatible apps have been disabled: %s" : "As seguintes apps incompatíveis foram desativadas: %s",
"Following apps have been disabled: %s" : "As seguintes apps foram desativadas: %s",
+ "Already up to date" : "Já está atualizado",
"File is too big" : "O ficheiro é muito grande",
"Invalid file provided" : "Ficheiro indicado inválido",
"No image or file provided" : "Não foi fornecido nenhum ficheiro ou imagem",
@@ -34,6 +36,13 @@
"Thu." : "Qui.",
"Fri." : "Sex.",
"Sat." : "Sáb.",
+ "Su" : "Dom",
+ "Mo" : "Seg",
+ "Tu" : "Ter",
+ "We" : "Qua",
+ "Th" : "Qui",
+ "Fr" : "Sex",
+ "Sa" : "Sáb",
"January" : "Janeiro",
"February" : "Fevereiro",
"March" : "Março",
@@ -157,6 +166,7 @@
"The update was successful. There were warnings." : "A atualização foi bem sucedida. Tem alguns avisos.",
"The update was successful. Redirecting you to ownCloud now." : "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.",
"Couldn't reset password because the token is invalid" : "Não foi possível repor a palavra-passe porque a senha é inválida",
+ "Couldn't reset password because the token is expired" : "Não foi possível repor a palavra-passe porque a senha expirou",
"Couldn't send reset email. Please make sure your username is correct." : "Ocorreu um problema com o envio do e-mail, por favor confirme o seu utilizador.",
"Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ocorreu um problema com o envio do e-mail, por favor contacte o administrador.",
"%s password reset" : "%s reposição da palavra-passe",
@@ -230,6 +240,7 @@
"Please contact your administrator." : "Por favor contacte o administrador.",
"An internal error occured." : "Ocorreu um erro interno.",
"Please try again or contact your administrator." : "Por favor tente de novo ou contacte o administrador.",
+ "Log in" : "Iniciar Sessão",
"Wrong password. Reset it?" : "Senha errada. Repô-la?",
"remember" : "lembrar",
"Alternative Logins" : "Contas de acesso alternativas",
diff --git a/core/l10n/si_LK.js b/core/l10n/si_LK.js
index be29a54e7b4..9be2cb088a6 100644
--- a/core/l10n/si_LK.js
+++ b/core/l10n/si_LK.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"Finish setup" : "ස්ථාපනය කිරීම අවසන් කරන්න",
"Log out" : "නික්මීම",
"Search" : "සොයන්න",
+ "Log in" : "ප්‍රවේශවන්න",
"remember" : "මතක තබාගන්න"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/si_LK.json b/core/l10n/si_LK.json
index 68638609324..7626f55acb1 100644
--- a/core/l10n/si_LK.json
+++ b/core/l10n/si_LK.json
@@ -80,6 +80,7 @@
"Finish setup" : "ස්ථාපනය කිරීම අවසන් කරන්න",
"Log out" : "නික්මීම",
"Search" : "සොයන්න",
+ "Log in" : "ප්‍රවේශවන්න",
"remember" : "මතක තබාගන්න"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js
index a08bc9d09f3..2953bc7e0c6 100644
--- a/core/l10n/sk_SK.js
+++ b/core/l10n/sk_SK.js
@@ -227,6 +227,7 @@ OC.L10N.register(
"Please contact your administrator." : "Kontaktujte prosím vášho administrátora.",
"An internal error occured." : "Vyskytla sa vnútorná chyba.",
"Please try again or contact your administrator." : "Skúste to znovu, alebo sa obráťte na vášho administrátora.",
+ "Log in" : "Prihlásiť sa",
"remember" : "zapamätať",
"Alternative Logins" : "Alternatívne prihlásenie",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Dobrý deň,<br><br>Používateľ %s zdieľa s vami súbor, alebo priečinok s názvom »%s«.<br><a href=\"%s\">Pre zobrazenie kliknite na túto linku!</a><br><br>",
diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json
index fcb358cdf9c..f39e14ed02a 100644
--- a/core/l10n/sk_SK.json
+++ b/core/l10n/sk_SK.json
@@ -225,6 +225,7 @@
"Please contact your administrator." : "Kontaktujte prosím vášho administrátora.",
"An internal error occured." : "Vyskytla sa vnútorná chyba.",
"Please try again or contact your administrator." : "Skúste to znovu, alebo sa obráťte na vášho administrátora.",
+ "Log in" : "Prihlásiť sa",
"remember" : "zapamätať",
"Alternative Logins" : "Alternatívne prihlásenie",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Dobrý deň,<br><br>Používateľ %s zdieľa s vami súbor, alebo priečinok s názvom »%s«.<br><a href=\"%s\">Pre zobrazenie kliknite na túto linku!</a><br><br>",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index a5a7895b2cc..27c1255f65b 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -201,6 +201,7 @@ OC.L10N.register(
"Search" : "Sök",
"Server side authentication failed!" : "Servern misslyckades med autentisering!",
"Please contact your administrator." : "Kontakta din administratör.",
+ "Log in" : "Logga in",
"remember" : "kom ihåg",
"Alternative Logins" : "Alternativa inloggningar",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej där,<br><br>ville bara informera dig om att %s delade <strong>%s</strong> med dig.<br><a href=\"%s\">Visa den!</a><br><br>",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 307fd6afc78..befc73dfc44 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -199,6 +199,7 @@
"Search" : "Sök",
"Server side authentication failed!" : "Servern misslyckades med autentisering!",
"Please contact your administrator." : "Kontakta din administratör.",
+ "Log in" : "Logga in",
"remember" : "kom ihåg",
"Alternative Logins" : "Alternativa inloggningar",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej där,<br><br>ville bara informera dig om att %s delade <strong>%s</strong> med dig.<br><a href=\"%s\">Visa den!</a><br><br>",
diff --git a/core/l10n/ta_LK.js b/core/l10n/ta_LK.js
index 21025db2fa0..c58dea8366e 100644
--- a/core/l10n/ta_LK.js
+++ b/core/l10n/ta_LK.js
@@ -93,6 +93,7 @@ OC.L10N.register(
"Finish setup" : "அமைப்பை முடிக்க",
"Log out" : "விடுபதிகை செய்க",
"Search" : "தேடுதல்",
+ "Log in" : "புகுபதிகை",
"remember" : "ஞாபகப்படுத்துக"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/ta_LK.json b/core/l10n/ta_LK.json
index a7f28999023..60ff565dbf2 100644
--- a/core/l10n/ta_LK.json
+++ b/core/l10n/ta_LK.json
@@ -91,6 +91,7 @@
"Finish setup" : "அமைப்பை முடிக்க",
"Log out" : "விடுபதிகை செய்க",
"Search" : "தேடுதல்",
+ "Log in" : "புகுபதிகை",
"remember" : "ஞாபகப்படுத்துக"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js
index 142895dd1d0..f72fa3ee38b 100644
--- a/core/l10n/th_TH.js
+++ b/core/l10n/th_TH.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "กรุณาติดต่อผู้ดูแลระบบ",
"An internal error occured." : "เกิดข้อผิดพลาดภายใน",
"Please try again or contact your administrator." : "โปรดลองอีกครั้งหรือติดต่อผู้ดูแลระบบ",
+ "Log in" : "เข้าสู่ระบบ",
"Wrong password. Reset it?" : "รหัสผ่านผิด ตั้งค่าใหม่?",
"remember" : "จดจำฉัน",
"Alternative Logins" : "ทางเลือกการเข้าสู่ระบบ",
diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json
index 88c74d1eb4c..d808685898d 100644
--- a/core/l10n/th_TH.json
+++ b/core/l10n/th_TH.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "กรุณาติดต่อผู้ดูแลระบบ",
"An internal error occured." : "เกิดข้อผิดพลาดภายใน",
"Please try again or contact your administrator." : "โปรดลองอีกครั้งหรือติดต่อผู้ดูแลระบบ",
+ "Log in" : "เข้าสู่ระบบ",
"Wrong password. Reset it?" : "รหัสผ่านผิด ตั้งค่าใหม่?",
"remember" : "จดจำฉัน",
"Alternative Logins" : "ทางเลือกการเข้าสู่ระบบ",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index 2b319a8f8fe..c250f919892 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "Lütfen sistem yöneticiniz ile iletişime geçin.",
"An internal error occured." : "Dahili bir hata oluştu.",
"Please try again or contact your administrator." : "Lütfen yeniden deneyin veya yöneticinizle iletişim kurun.",
+ "Log in" : "Giriş yap",
"Wrong password. Reset it?" : "Hatalı parola. Sıfırlansın mı?",
"remember" : "hatırla",
"Alternative Logins" : "Alternatif Girişler",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 26f831b9262..6fa7aa63c1e 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "Lütfen sistem yöneticiniz ile iletişime geçin.",
"An internal error occured." : "Dahili bir hata oluştu.",
"Please try again or contact your administrator." : "Lütfen yeniden deneyin veya yöneticinizle iletişim kurun.",
+ "Log in" : "Giriş yap",
"Wrong password. Reset it?" : "Hatalı parola. Sıfırlansın mı?",
"remember" : "hatırla",
"Alternative Logins" : "Alternatif Girişler",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index ab5689e64f1..e73f854f5e1 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -229,6 +229,7 @@ OC.L10N.register(
"Please contact your administrator." : "Будь ласка, зверніться до вашого Адміністратора.",
"An internal error occured." : "Виникла внутрішня помилка.",
"Please try again or contact your administrator." : "Будь ласка, спробуйте ще раз або зверніться до адміністратора.",
+ "Log in" : "Увійти",
"remember" : "запам'ятати",
"Alternative Logins" : "Альтернативні імена користувача",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Агов,<br><br>просто повідомляємо вам, що %s поділився »%s« з вами.<br><a href=\"%s\">Перегляньте!</a><br><br>",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index 7d92acb3cc9..09326dcf44e 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -227,6 +227,7 @@
"Please contact your administrator." : "Будь ласка, зверніться до вашого Адміністратора.",
"An internal error occured." : "Виникла внутрішня помилка.",
"Please try again or contact your administrator." : "Будь ласка, спробуйте ще раз або зверніться до адміністратора.",
+ "Log in" : "Увійти",
"remember" : "запам'ятати",
"Alternative Logins" : "Альтернативні імена користувача",
"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Агов,<br><br>просто повідомляємо вам, що %s поділився »%s« з вами.<br><a href=\"%s\">Перегляньте!</a><br><br>",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index c51c1563fe4..229a99b2c29 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -141,6 +141,7 @@ OC.L10N.register(
"Search" : "Tìm kiếm",
"Server side authentication failed!" : "Xác thực phía máy chủ không thành công!",
"Please contact your administrator." : "Vui lòng liên hệ với quản trị viên.",
+ "Log in" : "Đăng nhập",
"remember" : "ghi nhớ",
"Alternative Logins" : "Đăng nhập khác",
"This ownCloud instance is currently in single user mode." : "OwnCloud trong trường hợp này đang ở chế độ người dùng duy nhất.",
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index ba8015cafb4..e2f6e5a7ecc 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -139,6 +139,7 @@
"Search" : "Tìm kiếm",
"Server side authentication failed!" : "Xác thực phía máy chủ không thành công!",
"Please contact your administrator." : "Vui lòng liên hệ với quản trị viên.",
+ "Log in" : "Đăng nhập",
"remember" : "ghi nhớ",
"Alternative Logins" : "Đăng nhập khác",
"This ownCloud instance is currently in single user mode." : "OwnCloud trong trường hợp này đang ở chế độ người dùng duy nhất.",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 4af50e61c13..e8f87ff5900 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -248,6 +248,7 @@ OC.L10N.register(
"Please contact your administrator." : "请联系你的管理员。",
"An internal error occured." : "发生了内部错误。",
"Please try again or contact your administrator." : "请重试或联系管理员。",
+ "Log in" : "登录",
"Wrong password. Reset it?" : "密码错误。要重置么?",
"remember" : "记住",
"Alternative Logins" : "其他登录方式",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index b485c703e36..7bed1beaa9c 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -246,6 +246,7 @@
"Please contact your administrator." : "请联系你的管理员。",
"An internal error occured." : "发生了内部错误。",
"Please try again or contact your administrator." : "请重试或联系管理员。",
+ "Log in" : "登录",
"Wrong password. Reset it?" : "密码错误。要重置么?",
"remember" : "记住",
"Alternative Logins" : "其他登录方式",
diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js
index fc1bef316a9..2766bd30007 100644
--- a/core/l10n/zh_HK.js
+++ b/core/l10n/zh_HK.js
@@ -68,6 +68,7 @@ OC.L10N.register(
"Database name" : "資料庫名稱",
"Log out" : "登出",
"Search" : "尋找",
+ "Log in" : "登入",
"remember" : "記住"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json
index 2a6230797c1..0029a47794e 100644
--- a/core/l10n/zh_HK.json
+++ b/core/l10n/zh_HK.json
@@ -66,6 +66,7 @@
"Database name" : "資料庫名稱",
"Log out" : "登出",
"Search" : "尋找",
+ "Log in" : "登入",
"remember" : "記住"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/register_command.php b/core/register_command.php
index 72c7b28e9ae..d3c04ad0671 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -79,7 +79,8 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
);
$application->add(new OC\Core\Command\Encryption\ShowKeyStorageRoot($util));
- $application->add(new OC\Core\Command\Maintenance\MimeTypesJS());
+ $application->add(new OC\Core\Command\Maintenance\Mimetype\UpdateDB(\OC::$server->getMimeTypeDetector(), \OC::$server->getMimeTypeLoader()));
+ $application->add(new OC\Core\Command\Maintenance\Mimetype\UpdateJS(\OC::$server->getMimeTypeDetector()));
$application->add(new OC\Core\Command\Maintenance\Mode(\OC::$server->getConfig()));
$application->add(new OC\Core\Command\Maintenance\Repair(new \OC\Repair(\OC\Repair::getRepairSteps()), \OC::$server->getConfig()));
$application->add(new OC\Core\Command\Maintenance\SingleUser(\OC::$server->getConfig()));
diff --git a/core/templates/installation.php b/core/templates/installation.php
index 8db55e4bdab..716cb1af6af 100644
--- a/core/templates/installation.php
+++ b/core/templates/installation.php
@@ -53,7 +53,7 @@ script('core', [
<label for="adminpass" class="infield"><?php p($l->t( 'Password' )); ?></label>
<img class="svg" id="adminpass-icon" src="<?php print_unescaped(image_path('', 'actions/password.svg')); ?>" alt="">
<input type="checkbox" id="show" name="show">
- <label for="show"></label>
+ <label for="show" class="svg"></label>
<div class="strengthify-wrapper"></div>
</p>
</fieldset>
@@ -149,7 +149,7 @@ script('core', [
</fieldset>
<?php endif; ?>
<?php endif; ?>
-
+
<div class="icon-loading-dark float-spinner">&nbsp;</div>
<?php if(!$_['dbIsSet'] OR count($_['errors']) > 0): ?>
diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php
index 43d692c0364..b01820a05bb 100644
--- a/core/templates/layout.base.php
+++ b/core/templates/layout.base.php
@@ -8,6 +8,7 @@
<?php p($theme->getTitle()); ?>
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="referrer" content="never">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
<meta name="theme-color" content="<?php p($theme->getMailHeaderColor()); ?>">
<link rel="shortcut icon" type="image/png" href="<?php print_unescaped(image_path('', 'favicon.png')); ?>">
diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php
index 0fd7521271d..56b762d3266 100644
--- a/core/templates/layout.guest.php
+++ b/core/templates/layout.guest.php
@@ -8,6 +8,7 @@
<?php p($theme->getTitle()); ?>
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="referrer" content="never">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-itunes-app" content="app-id=<?php p($theme->getiTunesAppId()); ?>">
<meta name="theme-color" content="<?php p($theme->getMailHeaderColor()); ?>">
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 59fced353d1..0910047032d 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -15,6 +15,7 @@
?>
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="referrer" content="never">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-itunes-app" content="app-id=<?php p($theme->getiTunesAppId()); ?>">
<meta name="apple-mobile-web-app-capable" content="yes">
diff --git a/lib/autoloader.php b/lib/autoloader.php
index d7649781ea1..41a040b3f54 100644
--- a/lib/autoloader.php
+++ b/lib/autoloader.php
@@ -27,6 +27,8 @@
namespace OC;
+use \OCP\AutoloadNotAllowedException;
+
class Autoloader {
private $useGlobalClassPath = true;
@@ -58,7 +60,7 @@ class Autoloader {
* @param string $root
*/
public function addValidRoot($root) {
- $this->validRoots[] = $root;
+ $this->validRoots[] = stream_resolve_include_path($root);
}
/**
@@ -129,7 +131,7 @@ class Autoloader {
return true;
}
}
- throw new \Exception('Path not allowed: '. $fullPath);
+ throw new AutoloadNotAllowedException($fullPath);
}
/**
diff --git a/lib/base.php b/lib/base.php
index 9cf0228bbd9..a4b5e9e01bf 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -540,7 +540,7 @@ class OC {
// setup 3rdparty autoloader
$vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php';
if (!file_exists($vendorAutoLoad)) {
- throw new \RuntimeException('Composer autoloader not found, unable to continue. Check the folder "3rdparty".');
+ throw new \RuntimeException('Composer autoloader not found, unable to continue. Check the folder "3rdparty". Running "git submodule update --init" will initialize the git submodule that handles the subfolder "3rdparty".');
}
require_once $vendorAutoLoad;
@@ -552,10 +552,6 @@ class OC {
exit();
}
- foreach(OC::$APPSROOTS as $appRoot) {
- self::$loader->addValidRoot($appRoot['path']);
- }
-
// setup the basic server
self::$server = new \OC\Server(\OC::$WEBROOT);
\OC::$server->getEventLogger()->log('autoloader', 'Autoloader', $loaderStart, $loaderEnd);
@@ -674,7 +670,7 @@ class OC {
self::registerCacheHooks();
self::registerFilesystemHooks();
- if (\OC::$server->getSystemConfig()->getValue('enable_previews', true)) {
+ if ($systemConfig->getValue('enable_previews', true)) {
self::registerPreviewHooks();
}
self::registerShareHooks();
diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js
index 8885ecd6e10..715b834d2bf 100644
--- a/lib/l10n/cs_CZ.js
+++ b/lib/l10n/cs_CZ.js
@@ -49,6 +49,7 @@ OC.L10N.register(
"Can't read file" : "Nelze přečíst soubor",
"App directory already exists" : "Adresář aplikace již existuje",
"Can't create app folder. Please fix permissions. %s" : "Nelze vytvořit složku aplikace. Opravte práva souborů. %s",
+ "Archive does not contain a directory named %s" : "Archiv neobsahuje adresář pojmenovaný %s",
"No source specified when installing app" : "Nebyl zadán zdroj při instalaci aplikace",
"No href specified when installing app from http" : "Nebyl zadán odkaz pro instalaci aplikace z HTTP",
"No path specified when installing app from local file" : "Nebyla zadána cesta pro instalaci aplikace z místního souboru",
diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json
index c5f50a73848..891b30850ab 100644
--- a/lib/l10n/cs_CZ.json
+++ b/lib/l10n/cs_CZ.json
@@ -47,6 +47,7 @@
"Can't read file" : "Nelze přečíst soubor",
"App directory already exists" : "Adresář aplikace již existuje",
"Can't create app folder. Please fix permissions. %s" : "Nelze vytvořit složku aplikace. Opravte práva souborů. %s",
+ "Archive does not contain a directory named %s" : "Archiv neobsahuje adresář pojmenovaný %s",
"No source specified when installing app" : "Nebyl zadán zdroj při instalaci aplikace",
"No href specified when installing app from http" : "Nebyl zadán odkaz pro instalaci aplikace z HTTP",
"No path specified when installing app from local file" : "Nebyla zadána cesta pro instalaci aplikace z místního souboru",
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index 42f367d21c2..d644d7d3426 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Der skete en fejl ved deling af %s, brugeren %s eksistere ikke",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Der skete en fejl ved deling af %s, brugeren %s er ikke medlem af nogle grupper som %s er medlem af",
"Sharing %s failed, because this item is already shared with %s" : "Der skete en fejl ved deling af %s, objektet er allerede delt med %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Deling af %s mislykkedes, fordi dette element allerede er delt med brugeren %s",
"Sharing %s failed, because the group %s does not exist" : "Der skete en fejl ved deling af %s, gruppen %s eksistere ikke",
"Sharing %s failed, because %s is not a member of the group %s" : "Der skete en fejl ved deling af %s, fordi %s ikke er medlem af gruppen %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du skal angive et kodeord for at oprette et offentligt link - kun beskyttede links er tilladt",
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index 0e20adc31bf..d57ea2a92ae 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -89,6 +89,7 @@
"Sharing %s failed, because the user %s does not exist" : "Der skete en fejl ved deling af %s, brugeren %s eksistere ikke",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Der skete en fejl ved deling af %s, brugeren %s er ikke medlem af nogle grupper som %s er medlem af",
"Sharing %s failed, because this item is already shared with %s" : "Der skete en fejl ved deling af %s, objektet er allerede delt med %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Deling af %s mislykkedes, fordi dette element allerede er delt med brugeren %s",
"Sharing %s failed, because the group %s does not exist" : "Der skete en fejl ved deling af %s, gruppen %s eksistere ikke",
"Sharing %s failed, because %s is not a member of the group %s" : "Der skete en fejl ved deling af %s, fordi %s ikke er medlem af gruppen %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Du skal angive et kodeord for at oprette et offentligt link - kun beskyttede links er tilladt",
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index b47cc7e36d2..ee9ad8efd42 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -88,6 +88,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν υπάρχει",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %s είναι μέλος",
"Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Αποτυχία διαμοιρασμού με %s, διότι αυτό το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %s",
"Sharing %s failed, because the group %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί η ομάδα χρηστών %s δεν υπάρχει",
"Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index d82aec00129..d0235598f7e 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -86,6 +86,7 @@
"Sharing %s failed, because the user %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν υπάρχει",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %s είναι μέλος",
"Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Αποτυχία διαμοιρασμού με %s, διότι αυτό το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %s",
"Sharing %s failed, because the group %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί η ομάδα χρηστών %s δεν υπάρχει",
"Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index e08ed66f1b5..3f1d751fc1e 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Se ha fallado al compartir %s, ya que el usuario %s no existe",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se ha fallado al compartir %s, ya que el usuario %s no es miembro de ningún grupo del que %s sea miembro",
"Sharing %s failed, because this item is already shared with %s" : "Se falló al compartir %s, ya que este elemento ya está compartido con %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Compartiendo %s falló, porque este objeto ya se comparte con el usuario %s",
"Sharing %s failed, because the group %s does not exist" : "Se falló al compartir %s, ya que el grupo %s no existe",
"Sharing %s failed, because %s is not a member of the group %s" : "Se falló al compartir %s, ya que %s no es miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index f9bca103231..75b8060b819 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -89,6 +89,7 @@
"Sharing %s failed, because the user %s does not exist" : "Se ha fallado al compartir %s, ya que el usuario %s no existe",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se ha fallado al compartir %s, ya que el usuario %s no es miembro de ningún grupo del que %s sea miembro",
"Sharing %s failed, because this item is already shared with %s" : "Se falló al compartir %s, ya que este elemento ya está compartido con %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Compartiendo %s falló, porque este objeto ya se comparte con el usuario %s",
"Sharing %s failed, because the group %s does not exist" : "Se falló al compartir %s, ya que el grupo %s no existe",
"Sharing %s failed, because %s is not a member of the group %s" : "Se falló al compartir %s, ya que %s no es miembro del grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js
index d82d26645db..6960162e0ab 100644
--- a/lib/l10n/fi_FI.js
+++ b/lib/l10n/fi_FI.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s is the item owner" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s on kohteen omistaja",
"Sharing %s failed, because the user %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska käyttäjää %s ei ole olemassa",
"Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
+ "Sharing %s failed, because this item is already shared with user %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
"Sharing %s failed, because the group %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska ryhmää %s ei ole olemassa",
"Sharing %s failed, because %s is not a member of the group %s" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s ei ole ryhmän %s jäsen",
"You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja",
diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json
index de6d474e467..7d23189b358 100644
--- a/lib/l10n/fi_FI.json
+++ b/lib/l10n/fi_FI.json
@@ -80,6 +80,7 @@
"Sharing %s failed, because the user %s is the item owner" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s on kohteen omistaja",
"Sharing %s failed, because the user %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska käyttäjää %s ei ole olemassa",
"Sharing %s failed, because this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
+ "Sharing %s failed, because this item is already shared with user %s" : "Kohteen %s jakaminen epäonnistui, koska kohde on jo jaettu käyttäjän %s kanssa",
"Sharing %s failed, because the group %s does not exist" : "Kohteen %s jakaminen epäonnistui, koska ryhmää %s ei ole olemassa",
"Sharing %s failed, because %s is not a member of the group %s" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s ei ole ryhmän %s jäsen",
"You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 873abd44ad0..d0abd693e0c 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -90,6 +90,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Le partage de %s a échoué car l'utilisateur %s n'existe pas",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Le partage de %s a échoué car l'utilisateur %s n'est membre d'aucun groupe auquel %s appartient",
"Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet objet est déjà partagé avec %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec l'utilisateur %s",
"Sharing %s failed, because the group %s does not exist" : "Le partage de %s a échoué car le groupe %s n'existe pas",
"Sharing %s failed, because %s is not a member of the group %s" : "Le partage de %s a échoué car %s n'est pas membre du groupe %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 440f2ddd84d..d0a90797df9 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -88,6 +88,7 @@
"Sharing %s failed, because the user %s does not exist" : "Le partage de %s a échoué car l'utilisateur %s n'existe pas",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Le partage de %s a échoué car l'utilisateur %s n'est membre d'aucun groupe auquel %s appartient",
"Sharing %s failed, because this item is already shared with %s" : "Le partage de %s a échoué car cet objet est déjà partagé avec %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Le partage de %s a échoué car cet élément est déjà partagé avec l'utilisateur %s",
"Sharing %s failed, because the group %s does not exist" : "Le partage de %s a échoué car le groupe %s n'existe pas",
"Sharing %s failed, because %s is not a member of the group %s" : "Le partage de %s a échoué car %s n'est pas membre du groupe %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index d0c0022fd06..d0cf725013b 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Condivisione di %s non riuscita, poiché l'utente %s non esiste",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Condivisione di %s non riuscita, poiché l'utente %s non appartiene ad alcun gruppo di cui %s è membro",
"Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con l'utente %s",
"Sharing %s failed, because the group %s does not exist" : "Condivisione di %s non riuscita, poiché il gruppo %s non esiste",
"Sharing %s failed, because %s is not a member of the group %s" : "Condivisione di %s non riuscita, poiché %s non appartiene al gruppo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 1183b588eb2..81038c0e425 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -89,6 +89,7 @@
"Sharing %s failed, because the user %s does not exist" : "Condivisione di %s non riuscita, poiché l'utente %s non esiste",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Condivisione di %s non riuscita, poiché l'utente %s non appartiene ad alcun gruppo di cui %s è membro",
"Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con l'utente %s",
"Sharing %s failed, because the group %s does not exist" : "Condivisione di %s non riuscita, poiché il gruppo %s non esiste",
"Sharing %s failed, because %s is not a member of the group %s" : "Condivisione di %s non riuscita, poiché %s non appartiene al gruppo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index d08e8294dfb..5abae786d34 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Delen van %s is mislukt, omdat gebruiker %s niet bestaat",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Delen van %s is mislukt, omdat gebruiker %s geen lid is van een groep waar %s lid van is",
"Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met gebruiker %s",
"Sharing %s failed, because the group %s does not exist" : "Delen van %s is mislukt, omdat groep %s niet bestaat",
"Sharing %s failed, because %s is not a member of the group %s" : "Delen van %s is mislukt, omdat %s geen lid is van groep %s",
"You need to provide a password to create a public link, only protected links are allowed" : "U moet een wachtwoord verstrekken om een openbare koppeling te maken, alleen beschermde links zijn toegestaan",
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index 8d0b5dc7169..4e4eaf8b52a 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -89,6 +89,7 @@
"Sharing %s failed, because the user %s does not exist" : "Delen van %s is mislukt, omdat gebruiker %s niet bestaat",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Delen van %s is mislukt, omdat gebruiker %s geen lid is van een groep waar %s lid van is",
"Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met gebruiker %s",
"Sharing %s failed, because the group %s does not exist" : "Delen van %s is mislukt, omdat groep %s niet bestaat",
"Sharing %s failed, because %s is not a member of the group %s" : "Delen van %s is mislukt, omdat %s geen lid is van groep %s",
"You need to provide a password to create a public link, only protected links are allowed" : "U moet een wachtwoord verstrekken om een openbare koppeling te maken, alleen beschermde links zijn toegestaan",
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index a53e5f01a16..402a7cbc51a 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "Compartilhamento %s falhou, porque o usuário %s não existe",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Compartilhamento %s falhou, porque o usuário %s não é membro de nenhum grupo que o usuário %s pertença",
"Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou, porque este ítem já está compartilhado com %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Compartilhamento de %s falhou, porque esse item já é compartilhada com o usuário %s",
"Sharing %s failed, because the group %s does not exist" : "Compartilhamento %s falhou, porque o grupo %s não existe",
"Sharing %s failed, because %s is not a member of the group %s" : "Compartilhamento %s falhou, porque %s não é membro do grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index cef167c2098..255272b8cb8 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -89,6 +89,7 @@
"Sharing %s failed, because the user %s does not exist" : "Compartilhamento %s falhou, porque o usuário %s não existe",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Compartilhamento %s falhou, porque o usuário %s não é membro de nenhum grupo que o usuário %s pertença",
"Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou, porque este ítem já está compartilhado com %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Compartilhamento de %s falhou, porque esse item já é compartilhada com o usuário %s",
"Sharing %s failed, because the group %s does not exist" : "Compartilhamento %s falhou, porque o grupo %s não existe",
"Sharing %s failed, because %s is not a member of the group %s" : "Compartilhamento %s falhou, porque %s não é membro do grupo %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
diff --git a/lib/l10n/th_TH.js b/lib/l10n/th_TH.js
index 2ff86f599e9..6092f348cb5 100644
--- a/lib/l10n/th_TH.js
+++ b/lib/l10n/th_TH.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s does not exist" : "การแชร์ %s ล้มเหลวเนื่องจากไม่ได้มีผู้ใช้ %s อยู่",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "การแชร์ %s ล้มเหลวเนื่องจากผู้ใช้ %s ไม่ได้เป็นสมาชิกของกลุ่มใดๆ %s เป็นสมาชิกของ",
"Sharing %s failed, because this item is already shared with %s" : "การแชร์ %s ล้มเหลวเพราะรายการนี้ถูกแชร์กับ %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "%s ที่กำลังแชร์ล้มเหลว เพราะรายการนี้ได้ถูกแชร์กับผู้ใช้ %s",
"Sharing %s failed, because the group %s does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีกลุ่ม %s อยู่",
"Sharing %s failed, because %s is not a member of the group %s" : "การแชร์ %s ล้มเหลวเพราะ %s ไม่ได้เป็นสมาชิกของกลุ่ม %s",
"You need to provide a password to create a public link, only protected links are allowed" : "คุณจำเป็นต้องระบุรหัสผ่านเพื่อสร้างลิงค์สาธารณะ, ลิงค์ที่มีการป้องกันเท่านั้นที่ได้รับอนุญาต",
diff --git a/lib/l10n/th_TH.json b/lib/l10n/th_TH.json
index a215b67a180..a872236a70d 100644
--- a/lib/l10n/th_TH.json
+++ b/lib/l10n/th_TH.json
@@ -89,6 +89,7 @@
"Sharing %s failed, because the user %s does not exist" : "การแชร์ %s ล้มเหลวเนื่องจากไม่ได้มีผู้ใช้ %s อยู่",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "การแชร์ %s ล้มเหลวเนื่องจากผู้ใช้ %s ไม่ได้เป็นสมาชิกของกลุ่มใดๆ %s เป็นสมาชิกของ",
"Sharing %s failed, because this item is already shared with %s" : "การแชร์ %s ล้มเหลวเพราะรายการนี้ถูกแชร์กับ %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "%s ที่กำลังแชร์ล้มเหลว เพราะรายการนี้ได้ถูกแชร์กับผู้ใช้ %s",
"Sharing %s failed, because the group %s does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีกลุ่ม %s อยู่",
"Sharing %s failed, because %s is not a member of the group %s" : "การแชร์ %s ล้มเหลวเพราะ %s ไม่ได้เป็นสมาชิกของกลุ่ม %s",
"You need to provide a password to create a public link, only protected links are allowed" : "คุณจำเป็นต้องระบุรหัสผ่านเพื่อสร้างลิงค์สาธารณะ, ลิงค์ที่มีการป้องกันเท่านั้นที่ได้รับอนุญาต",
diff --git a/lib/private/app.php b/lib/private/app.php
index f1a1d27ae66..f6a81f9945f 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -105,7 +105,6 @@ class OC_App {
ob_start();
foreach ($apps as $app) {
if ((is_null($types) or self::isType($app, $types)) && !in_array($app, self::$loadedApps)) {
- self::$loadedApps[] = $app;
self::loadApp($app);
}
}
@@ -122,6 +121,8 @@ class OC_App {
* @throws \OC\NeedsUpdateException
*/
public static function loadApp($app, $checkUpgrade = true) {
+ self::$loadedApps[] = $app;
+ \OC::$loader->addValidRoot(self::getAppPath($app));
if (is_file(self::getAppPath($app) . '/appinfo/app.php')) {
\OC::$server->getEventLogger()->start('load_app_' . $app, 'Load app: ' . $app);
if ($checkUpgrade and self::shouldUpgrade($app)) {
diff --git a/lib/private/appconfig.php b/lib/private/appconfig.php
index b88df10dddd..7ee64980fd0 100644
--- a/lib/private/appconfig.php
+++ b/lib/private/appconfig.php
@@ -28,23 +28,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
-/*
- *
- * The following SQL statement is just a help for developers and will not be
- * executed!
- *
- * CREATE TABLE `appconfig` (
- * `appid` VARCHAR( 255 ) NOT NULL ,
- * `configkey` VARCHAR( 255 ) NOT NULL ,
- * `configvalue` VARCHAR( 255 ) NOT NULL
- * )
- *
- */
namespace OC;
-use OC\DB\Connection;
use OCP\IAppConfig;
+use OCP\IDBConnection;
/**
* This class provides an easy way for apps to store config values in the
@@ -52,54 +40,32 @@ use OCP\IAppConfig;
*/
class AppConfig implements IAppConfig {
/**
- * @var \OC\DB\Connection $conn
+ * @var \OCP\IDBConnection $conn
*/
protected $conn;
private $cache = array();
- private $appsLoaded = array();
-
- /**
- * @var string[]
- */
- private $apps = null;
-
/**
- * @param Connection $conn
+ * @param IDBConnection $conn
*/
- public function __construct(Connection $conn) {
+ public function __construct(IDBConnection $conn) {
$this->conn = $conn;
+ $this->configLoaded = false;
}
/**
* @param string $app
- * @return string[]
- */
- private function getAppCache($app) {
- if (!isset($this->cache[$app])) {
- $this->cache[$app] = array();
- }
- return $this->cache[$app];
- }
-
- /**
- * @param string $app
- * @return \string[]
+ * @return array
*/
private function getAppValues($app) {
- $appCache = $this->getAppCache($app);
- if (array_search($app, $this->appsLoaded) === false) {
- $query = 'SELECT `configvalue`, `configkey` FROM `*PREFIX*appconfig`'
- . ' WHERE `appid` = ?';
- $result = $this->conn->executeQuery($query, array($app));
- while ($row = $result->fetch()) {
- $appCache[$row['configkey']] = $row['configvalue'];
- }
- $this->appsLoaded[] = $app;
+ $this->loadConfigValues();
+
+ if (isset($this->cache[$app])) {
+ return $this->cache[$app];
}
- $this->cache[$app] = $appCache;
- return $appCache;
+
+ return [];
}
/**
@@ -111,18 +77,9 @@ class AppConfig implements IAppConfig {
* entry in the appconfig table.
*/
public function getApps() {
- if (is_array($this->apps)) {
- return $this->apps;
- }
- $query = 'SELECT DISTINCT `appid` FROM `*PREFIX*appconfig` ORDER BY `appid`';
- $result = $this->conn->executeQuery($query);
+ $this->loadConfigValues();
- $apps = array();
- while ($appid = $result->fetchColumn()) {
- $apps[] = $appid;
- }
- $this->apps = $apps;
- return $apps;
+ return $this->getSortedKeys($this->cache);
}
/**
@@ -135,8 +92,17 @@ class AppConfig implements IAppConfig {
* not returned.
*/
public function getKeys($app) {
- $values = $this->getAppValues($app);
- $keys = array_keys($values);
+ $this->loadConfigValues();
+
+ if (isset($this->cache[$app])) {
+ return $this->getSortedKeys($this->cache[$app]);
+ }
+
+ return [];
+ }
+
+ public function getSortedKeys($data) {
+ $keys = array_keys($data);
sort($keys);
return $keys;
}
@@ -153,12 +119,13 @@ class AppConfig implements IAppConfig {
* not exist the default value will be returned
*/
public function getValue($app, $key, $default = null) {
- $values = $this->getAppValues($app);
- if (isset($values[$key])) {
- return $values[$key];
- } else {
- return $default;
+ $this->loadConfigValues();
+
+ if ($this->hasKey($app, $key)) {
+ return $this->cache[$app][$key];
}
+
+ return $default;
}
/**
@@ -169,8 +136,9 @@ class AppConfig implements IAppConfig {
* @return bool
*/
public function hasKey($app, $key) {
- $values = $this->getAppValues($app);
- return array_key_exists($key, $values);
+ $this->loadConfigValues();
+
+ return isset($this->cache[$app][$key]);
}
/**
@@ -179,11 +147,9 @@ class AppConfig implements IAppConfig {
* @param string $app app
* @param string $key key
* @param string $value value
- * @return void
+ * @return bool True if the value was inserted or updated, false if the value was the same
*/
public function setValue($app, $key, $value) {
- $inserted = false;
- // Does the key exist? no: insert, yes: update.
if (!$this->hasKey($app, $key)) {
$inserted = (bool) $this->conn->insertIfNotExist('*PREFIX*appconfig', [
'appid' => $app,
@@ -193,29 +159,32 @@ class AppConfig implements IAppConfig {
'appid',
'configkey',
]);
- }
- if (!$inserted) {
- $oldValue = $this->getValue($app, $key);
- if($oldValue === strval($value)) {
- return;
+ if ($inserted) {
+ if (!isset($this->cache[$app])) {
+ $this->cache[$app] = [];
+ }
+
+ $this->cache[$app][$key] = $value;
+ return true;
}
- $data = array(
- 'configvalue' => $value,
- );
- $where = array(
- 'appid' => $app,
- 'configkey' => $key,
- );
- $this->conn->update('*PREFIX*appconfig', $data, $where);
- }
- if (!isset($this->cache[$app])) {
- $this->cache[$app] = array();
- }
- if (is_array($this->apps) and array_search($app, $this->apps) === false) {
- $this->apps[$app] = $app;
}
+
+ $sql = $this->conn->getQueryBuilder();
+ $sql->update('appconfig')
+ ->set('configvalue', $sql->createParameter('configvalue'))
+ ->where($sql->expr()->eq('appid', $sql->createParameter('app')))
+ ->andWhere($sql->expr()->eq('configkey', $sql->createParameter('configkey')))
+ ->andWhere($sql->expr()->neq('configvalue', $sql->createParameter('configvalue')))
+ ->setParameter('configvalue', $value)
+ ->setParameter('app', $app)
+ ->setParameter('configkey', $key)
+ ->setParameter('configvalue', $value);
+ $changedRow = (bool) $sql->execute();
+
$this->cache[$app][$key] = $value;
+
+ return $changedRow;
}
/**
@@ -226,14 +195,17 @@ class AppConfig implements IAppConfig {
* @return boolean|null
*/
public function deleteKey($app, $key) {
- $where = array(
- 'appid' => $app,
- 'configkey' => $key,
- );
- $this->conn->delete('*PREFIX*appconfig', $where);
- if (isset($this->cache[$app]) and isset($this->cache[$app][$key])) {
- unset($this->cache[$app][$key]);
- }
+ $this->loadConfigValues();
+
+ $sql = $this->conn->getQueryBuilder();
+ $sql->delete('appconfig')
+ ->where($sql->expr()->eq('appid', $sql->createParameter('app')))
+ ->andWhere($sql->expr()->eq('configkey', $sql->createParameter('configkey')))
+ ->setParameter('app', $app)
+ ->setParameter('configkey', $key);
+ $sql->execute();
+
+ unset($this->cache[$app][$key]);
}
/**
@@ -245,38 +217,65 @@ class AppConfig implements IAppConfig {
* Removes all keys in appconfig belonging to the app.
*/
public function deleteApp($app) {
- $where = array(
- 'appid' => $app,
- );
- $this->conn->delete('*PREFIX*appconfig', $where);
+ $this->loadConfigValues();
+
+ $sql = $this->conn->getQueryBuilder();
+ $sql->delete('appconfig')
+ ->where($sql->expr()->eq('appid', $sql->createParameter('app')))
+ ->setParameter('app', $app);
+ $sql->execute();
+
unset($this->cache[$app]);
- unset($this->apps[$app]);
}
/**
- * get multiply values, either the app or key can be used as wildcard by setting it to false
+ * get multiple values, either the app or key can be used as wildcard by setting it to false
*
* @param string|false $app
* @param string|false $key
* @return array|false
*/
public function getValues($app, $key) {
- if (($app !== false) == ($key !== false)) {
+ if (($app !== false) === ($key !== false)) {
return false;
}
- if ($app !== false) {
+ if ($key === false) {
return $this->getAppValues($app);
} else {
- $query = 'SELECT `configvalue`, `appid` FROM `*PREFIX*appconfig` WHERE `configkey` = ?';
- $result = $this->conn->executeQuery($query, array($key));
+ $configs = [];
+ foreach ($this->getApps() as $appId) {
+ if ($this->hasKey($appId, $key)) {
+ $configs[$appId] = $this->getValue($appId, $key);
+ }
+ }
+
+ return $configs;
+ }
+ }
- $values = array();
- while ($row = $result->fetch((\PDO::FETCH_ASSOC))) {
- $values[$row['appid']] = $row['configvalue'];
+ /**
+ * Load all the app config values
+ */
+ protected function loadConfigValues() {
+ if ($this->configLoaded) return;
+
+ $this->cache = [];
+
+ $sql = $this->conn->getQueryBuilder();
+ $sql->select('*')
+ ->from('appconfig');
+ $result = $sql->execute();
+
+ while ($row = $result->fetch()) {
+ if (!isset($this->cache[$row['appid']])) {
+ $this->cache[$row['appid']] = [];
}
- return $values;
+ $this->cache[$row['appid']][$row['configkey']] = $row['configvalue'];
}
+ $result->closeCursor();
+
+ $this->configLoaded = true;
}
}
diff --git a/lib/private/backgroundjob/joblist.php b/lib/private/backgroundjob/joblist.php
index f297bccbc7d..deadadfb77e 100644
--- a/lib/private/backgroundjob/joblist.php
+++ b/lib/private/backgroundjob/joblist.php
@@ -26,6 +26,7 @@
namespace OC\BackgroundJob;
use OCP\BackgroundJob\IJobList;
+use OCP\AutoloadNotAllowedException;
class JobList implements IJobList {
/**
@@ -185,15 +186,20 @@ class JobList implements IJobList {
/**
* @var Job $job
*/
- if (!class_exists($class)) {
- // job from disabled app or old version of an app, no need to do anything
- return null;
+ try {
+ if (!class_exists($class)) {
+ // job from disabled app or old version of an app, no need to do anything
+ return null;
+ }
+ $job = new $class();
+ $job->setId($row['id']);
+ $job->setLastRun($row['last_run']);
+ $job->setArgument(json_decode($row['argument'], true));
+ return $job;
+ } catch (AutoloadNotAllowedException $e) {
+ // job is from a disabled app, ignore
}
- $job = new $class();
- $job->setId($row['id']);
- $job->setLastRun($row['last_run']);
- $job->setArgument(json_decode($row['argument'], true));
- return $job;
+ return null;
}
/**
diff --git a/lib/private/eventsource.php b/lib/private/eventsource.php
index c69671c1a75..e2be808e726 100644
--- a/lib/private/eventsource.php
+++ b/lib/private/eventsource.php
@@ -59,6 +59,17 @@ class OC_EventSource implements \OCP\IEventSource {
$this->fallback = isset($_GET['fallback']) and $_GET['fallback'] == 'true';
if ($this->fallback) {
$this->fallBackId = (int)$_GET['fallback_id'];
+ /**
+ * FIXME: The default content-security-policy of ownCloud forbids inline
+ * JavaScript for security reasons. IE starting on Windows 10 will
+ * however also obey the CSP which will break the event source fallback.
+ *
+ * As a workaround thus we set a custom policy which allows the execution
+ * of inline JavaScript.
+ *
+ * @link https://github.com/owncloud/core/issues/14286
+ */
+ header("Content-Security-Policy: default-src 'none'; script-src 'unsafe-inline'");
header("Content-Type: text/html");
echo str_repeat('<span></span>' . PHP_EOL, 10); //dummy data to keep IE happy
} else {
diff --git a/lib/private/files.php b/lib/private/files.php
index 6268bf8a129..0172f1ca6af 100644
--- a/lib/private/files.php
+++ b/lib/private/files.php
@@ -86,15 +86,6 @@ class OC_Files {
*/
public static function get($dir, $files, $only_header = false) {
$view = \OC\Files\Filesystem::getView();
- $xsendfile = false;
- if (\OC::$server->getLockingProvider() instanceof NoopLockingProvider) {
- if (isset($_SERVER['MOD_X_SENDFILE_ENABLED']) ||
- isset($_SERVER['MOD_X_SENDFILE2_ENABLED']) ||
- isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])
- ) {
- $xsendfile = true;
- }
- }
if (is_array($files) && count($files) === 1) {
$files = $files[0];
@@ -129,9 +120,6 @@ class OC_Files {
if ($get_type === self::FILE) {
$zip = false;
- if ($xsendfile && \OC::$server->getEncryptionManager()->isEnabled()) {
- $xsendfile = false;
- }
} else {
$zip = new ZipStreamer(false);
}
@@ -176,17 +164,7 @@ class OC_Files {
$zip->finalize();
set_time_limit($executionTime);
} else {
- if ($xsendfile) {
- /** @var $storage \OC\Files\Storage\Storage */
- list($storage) = $view->resolvePath($filename);
- if ($storage->isLocal()) {
- self::addSendfileHeader($filename);
- } else {
- \OC\Files\Filesystem::readfile($filename);
- }
- } else {
- \OC\Files\Filesystem::readfile($filename);
- }
+ \OC\Files\Filesystem::readfile($filename);
}
if ($get_type === self::FILE) {
$view->unlockFile($filename, ILockingProvider::LOCK_SHARED);
@@ -203,40 +181,6 @@ class OC_Files {
}
/**
- * @param false|string $filename
- */
- private static function addSendfileHeader($filename) {
- if (isset($_SERVER['MOD_X_SENDFILE_ENABLED'])) {
- $filename = \OC\Files\Filesystem::getLocalFile($filename);
- header("X-Sendfile: " . $filename);
- }
- if (isset($_SERVER['MOD_X_SENDFILE2_ENABLED'])) {
- $filename = \OC\Files\Filesystem::getLocalFile($filename);
- if (isset($_SERVER['HTTP_RANGE']) &&
- preg_match("/^bytes=([0-9]+)-([0-9]*)$/", $_SERVER['HTTP_RANGE'], $range)) {
- $filelength = filesize($filename);
- if ($range[2] === "") {
- $range[2] = $filelength - 1;
- }
- header("Content-Range: bytes $range[1]-$range[2]/" . $filelength);
- header("HTTP/1.1 206 Partial content");
- header("X-Sendfile2: " . str_replace(",", "%2c", rawurlencode($filename)) . " $range[1]-$range[2]");
- } else {
- header("X-Sendfile: " . $filename);
- }
- }
-
- if (isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])) {
- if (isset($_SERVER['MOD_X_ACCEL_REDIRECT_PREFIX'])) {
- $filename = $_SERVER['MOD_X_ACCEL_REDIRECT_PREFIX'] . \OC\Files\Filesystem::getLocalFile($filename);
- } else {
- $filename = \OC::$WEBROOT . '/data' . \OC\Files\Filesystem::getRoot() . $filename;
- }
- header("X-Accel-Redirect: " . $filename);
- }
- }
-
- /**
* @param string $dir
* @param ZipStreamer $zip
* @param string $internalDir
diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php
index 8cf097421d4..5c04da1f0d5 100644
--- a/lib/private/files/cache/cache.php
+++ b/lib/private/files/cache/cache.php
@@ -35,6 +35,8 @@
namespace OC\Files\Cache;
+use \OCP\Files\IMimeTypeLoader;
+
/**
* Metadata cache for a storage
*
@@ -66,8 +68,8 @@ class Cache {
*/
protected $storageCache;
- protected static $mimetypeIds = array();
- protected static $mimetypes = array();
+ /** @var IMimeTypeLoader */
+ protected $mimetypeLoader;
/**
* @param \OC\Files\Storage\Storage|string $storage
@@ -83,6 +85,7 @@ class Cache {
}
$this->storageCache = new Storage($storage);
+ $this->mimetypeLoader = \OC::$server->getMimeTypeLoader();
}
/**
@@ -95,72 +98,6 @@ class Cache {
}
/**
- * Get the numeric id for a mimetype
- *
- * Mimetypes are stored as integers in the cache to prevent duplicated data of the (usually) fairly limited amount of unique mimetypes
- * If the supplied mimetype does not yet have a numeric id a new one will be generated
- *
- * @param string $mime
- * @return int
- */
- public function getMimetypeId($mime) {
- if (empty($mime)) {
- // Can not insert empty string into Oracle NOT NULL column.
- $mime = 'application/octet-stream';
- }
- if (empty(self::$mimetypeIds)) {
- $this->loadMimetypes();
- }
-
- if (!isset(self::$mimetypeIds[$mime])) {
- try {
- $connection = \OC_DB::getConnection();
- $connection->insertIfNotExist('*PREFIX*mimetypes', [
- 'mimetype' => $mime,
- ]);
- $this->loadMimetypes();
- } catch (\Doctrine\DBAL\DBALException $e) {
- \OCP\Util::writeLog('core', 'Exception during mimetype insertion: ' . $e->getmessage(), \OCP\Util::DEBUG);
- return -1;
- }
- }
-
- return self::$mimetypeIds[$mime];
- }
-
-
- /**
- * Get the mimetype (as string) from a mimetype id
- *
- * @param int $id
- * @return string | null the mimetype for the id or null if the id is not known
- */
- public function getMimetype($id) {
- if (empty(self::$mimetypes)) {
- $this->loadMimetypes();
- }
-
- return isset(self::$mimetypes[$id]) ? self::$mimetypes[$id] : null;
- }
-
- /**
- * Load all known mimetypes and mimetype ids from the database
- *
- * @throws \OC\DatabaseException
- */
- public function loadMimetypes() {
- self::$mimetypeIds = self::$mimetypes = array();
-
- $result = \OC_DB::executeAudited('SELECT `id`, `mimetype` FROM `*PREFIX*mimetypes`', array());
- if ($result) {
- while ($row = $result->fetchRow()) {
- self::$mimetypeIds[$row['mimetype']] = $row['id'];
- self::$mimetypes[$row['id']] = $row['mimetype'];
- }
- }
- }
-
- /**
* get the stored metadata of a file or folder
*
* the returned cache entry contains at least the following values:
@@ -222,8 +159,8 @@ class Cache {
$data['storage_mtime'] = (int)$data['storage_mtime'];
$data['encrypted'] = (bool)$data['encrypted'];
$data['storage'] = $this->storageId;
- $data['mimetype'] = $this->getMimetype($data['mimetype']);
- $data['mimepart'] = $this->getMimetype($data['mimepart']);
+ $data['mimetype'] = $this->mimetypeLoader->getMimetypeById($data['mimetype']);
+ $data['mimepart'] = $this->mimetypeLoader->getMimetypeById($data['mimepart']);
if ($data['storage_mtime'] == 0) {
$data['storage_mtime'] = $data['mtime'];
}
@@ -258,8 +195,8 @@ class Cache {
$result = \OC_DB::executeAudited($sql, array($fileId));
$files = $result->fetchAll();
foreach ($files as &$file) {
- $file['mimetype'] = $this->getMimetype($file['mimetype']);
- $file['mimepart'] = $this->getMimetype($file['mimepart']);
+ $file['mimetype'] = $this->mimetypeLoader->getMimetypeById($file['mimetype']);
+ $file['mimepart'] = $this->mimetypeLoader->getMimetypeById($file['mimepart']);
if ($file['storage_mtime'] == 0) {
$file['storage_mtime'] = $file['mtime'];
}
@@ -385,9 +322,9 @@ class Cache {
$params[] = md5($value);
$queryParts[] = '`path_hash`';
} elseif ($name === 'mimetype') {
- $params[] = $this->getMimetypeId(substr($value, 0, strpos($value, '/')));
+ $params[] = $this->mimetypeLoader->getId(substr($value, 0, strpos($value, '/')));
$queryParts[] = '`mimepart`';
- $value = $this->getMimetypeId($value);
+ $value = $this->mimetypeLoader->getId($value);
} elseif ($name === 'storage_mtime') {
if (!isset($data['mtime'])) {
$params[] = $value;
@@ -613,7 +550,6 @@ class Cache {
* @return array an array of cache entries where the name matches the search pattern
*/
public function search($pattern) {
-
// normalize pattern
$pattern = $this->normalize($pattern);
@@ -630,8 +566,8 @@ class Cache {
$files = array();
while ($row = $result->fetchRow()) {
- $row['mimetype'] = $this->getMimetype($row['mimetype']);
- $row['mimepart'] = $this->getMimetype($row['mimepart']);
+ $row['mimetype'] = $this->mimetypeLoader->getMimetypeById($row['mimetype']);
+ $row['mimepart'] = $this->mimetypeLoader->getMimetypeById($row['mimepart']);
$files[] = $row;
}
return $files;
@@ -652,12 +588,12 @@ class Cache {
}
$sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `etag`, `permissions`
FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `storage` = ?';
- $mimetype = $this->getMimetypeId($mimetype);
+ $mimetype = $this->mimetypeLoader->getId($mimetype);
$result = \OC_DB::executeAudited($sql, array($mimetype, $this->getNumericStorageId()));
$files = array();
while ($row = $result->fetchRow()) {
- $row['mimetype'] = $this->getMimetype($row['mimetype']);
- $row['mimepart'] = $this->getMimetype($row['mimepart']);
+ $row['mimetype'] = $this->mimetypeLoader->getMimetypeById($row['mimetype']);
+ $row['mimepart'] = $this->mimetypeLoader->getMimetypeById($row['mimepart']);
$files[] = $row;
}
return $files;
diff --git a/lib/private/files/type/detection.php b/lib/private/files/type/detection.php
index ba286637df3..3dc3975fb2a 100644
--- a/lib/private/files/type/detection.php
+++ b/lib/private/files/type/detection.php
@@ -6,6 +6,7 @@
* @author Robin Appelman <icewind@owncloud.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Tanghus <thomas@tanghus.net>
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -101,16 +102,23 @@ class Detection implements IMimeTypeDetector {
return;
}
- $file = file_get_contents($this->configDir . '/mimetypealiases.dist.json');
- $this->mimeTypeAlias = get_object_vars(json_decode($file));
+ $this->mimeTypeAlias = json_decode(file_get_contents($this->configDir . '/mimetypealiases.dist.json'), true);
if (file_exists($this->configDir . '/mimetypealiases.json')) {
- $custom = get_object_vars(json_decode(file_get_contents($this->configDir . '/mimetypealiases.json')));
+ $custom = json_decode(file_get_contents($this->configDir . '/mimetypealiases.json'), true);
$this->mimeTypeAlias = array_merge($this->mimeTypeAlias, $custom);
}
}
/**
+ * @return array
+ */
+ public function getAllAliases() {
+ $this->loadAliases();
+ return $this->mimeTypeAlias;
+ }
+
+ /**
* Add mimetype mappings if they are not yet present
*/
private function loadMappings() {
@@ -118,20 +126,26 @@ class Detection implements IMimeTypeDetector {
return;
}
- $dist = file_get_contents($this->configDir . '/mimetypemapping.dist.json');
- $mimetypemapping = get_object_vars(json_decode($dist));
+ $mimetypemapping = json_decode(file_get_contents($this->configDir . '/mimetypemapping.dist.json'), true);
//Check if need to load custom mappings
if (file_exists($this->configDir . '/mimetypemapping.json')) {
- $custom = file_get_contents($this->configDir . '/mimetypemapping.json');
- $custom_mapping = get_object_vars(json_decode($custom));
- $mimetypemapping = array_merge($mimetypemapping, $custom_mapping);
+ $custom = json_decode(file_get_contents($this->configDir . '/mimetypemapping.json'), true);
+ $mimetypemapping = array_merge($mimetypemapping, $custom);
}
$this->registerTypeArray($mimetypemapping);
}
/**
+ * @return array
+ */
+ public function getAllMappings() {
+ $this->loadMappings();
+ return $this->mimetypes;
+ }
+
+ /**
* detect mimetype only based on filename, content of file is not used
*
* @param string $path
diff --git a/lib/private/files/type/loader.php b/lib/private/files/type/loader.php
new file mode 100644
index 00000000000..df893306615
--- /dev/null
+++ b/lib/private/files/type/loader.php
@@ -0,0 +1,165 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Files\Type;
+
+use OCP\Files\IMimeTypeLoader;
+use OCP\IDBConnection;
+
+use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
+
+/**
+ * Mimetype database loader
+ *
+ * @package OC\Files\Type
+ */
+class Loader implements IMimeTypeLoader {
+
+ /** @var IDBConnection */
+ private $dbConnection;
+
+ /** @var array [id => mimetype] */
+ protected $mimetypes;
+
+ /** @var array [mimetype => id] */
+ protected $mimetypeIds;
+
+ /**
+ * @param IDBConnection $dbConnection
+ */
+ public function __construct(IDBConnection $dbConnection) {
+ $this->dbConnection = $dbConnection;
+ $this->mimetypes = [];
+ $this->mimetypeIds = [];
+ }
+
+ /**
+ * Get a mimetype from its ID
+ *
+ * @param int $id
+ * @return string|null
+ */
+ public function getMimetypeById($id) {
+ if (!$this->mimetypes) {
+ $this->loadMimetypes();
+ }
+ if (isset($this->mimetypes[$id])) {
+ return $this->mimetypes[$id];
+ }
+ return null;
+ }
+
+ /**
+ * Get a mimetype ID, adding the mimetype to the DB if it does not exist
+ *
+ * @param string $mimetype
+ * @return int
+ */
+ public function getId($mimetype) {
+ if (!$this->mimetypeIds) {
+ $this->loadMimetypes();
+ }
+ if (isset($this->mimetypeIds[$mimetype])) {
+ return $this->mimetypeIds[$mimetype];
+ }
+ return $this->store($mimetype);
+ }
+
+ /**
+ * Test if a mimetype exists in the database
+ *
+ * @param string $mimetype
+ * @return bool
+ */
+ public function exists($mimetype) {
+ if (!$this->mimetypeIds) {
+ $this->loadMimetypes();
+ }
+ return isset($this->mimetypeIds[$mimetype]);
+ }
+
+ /**
+ * Store a mimetype in the DB
+ *
+ * @param string $mimetype
+ * @param int inserted ID
+ */
+ protected function store($mimetype) {
+ try {
+ $qb = $this->dbConnection->getQueryBuilder();
+ $qb->insert('mimetypes')
+ ->values([
+ 'mimetype' => $qb->createNamedParameter($mimetype)
+ ]);
+ $qb->execute();
+ } catch (UniqueConstraintViolationException $e) {
+ // something inserted it before us
+ }
+
+ $fetch = $this->dbConnection->getQueryBuilder();
+ $fetch->select('id')
+ ->from('mimetypes')
+ ->where(
+ $fetch->expr()->eq('mimetype', $fetch->createNamedParameter($mimetype)
+ ));
+ $row = $fetch->execute()->fetch();
+
+ $this->mimetypes[$row['id']] = $mimetype;
+ $this->mimetypeIds[$mimetype] = $row['id'];
+ return $row['id'];
+ }
+
+ /**
+ * Load all mimetypes from DB
+ */
+ private function loadMimetypes() {
+ $qb = $this->dbConnection->getQueryBuilder();
+ $qb->select('id', 'mimetype')
+ ->from('mimetypes');
+ $results = $qb->execute()->fetchAll();
+
+ foreach ($results as $row) {
+ $this->mimetypes[$row['id']] = $row['mimetype'];
+ $this->mimetypeIds[$row['mimetype']] = $row['id'];
+ }
+ }
+
+ /**
+ * Update filecache mimetype based on file extension
+ *
+ * @param string $ext file extension
+ * @param int $mimetypeId
+ * @return int number of changed rows
+ */
+ public function updateFilecache($ext, $mimetypeId) {
+ $update = $this->dbConnection->getQueryBuilder();
+ $update->update('filecache')
+ ->set('mimetype', $update->createNamedParameter($mimetypeId))
+ ->where($update->expr()->neq(
+ 'mimetype', $update->createNamedParameter($mimetypeId)
+ ))
+ ->andWhere($update->expr()->like(
+ $update->createFunction('LOWER(`name`)'), $update->createNamedParameter($ext)
+ ));
+ return $update->execute();
+ }
+
+}
diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php
index 1503851fd73..e99303ecc15 100644
--- a/lib/private/memcache/memcached.php
+++ b/lib/private/memcache/memcached.php
@@ -89,6 +89,11 @@ class Memcached extends Cache implements IMemcache {
public function clear($prefix = '') {
$prefix = $this->getNamespace() . $prefix;
$allKeys = self::$cache->getAllKeys();
+ if ($allKeys === false) {
+ // newer Memcached doesn't like getAllKeys(), flush everything
+ self::$cache->flush();
+ return true;
+ }
$keys = array();
$prefixLength = strlen($prefix);
foreach ($allKeys as $key) {
diff --git a/lib/private/notification/action.php b/lib/private/notification/action.php
new file mode 100644
index 00000000000..6de8a1a4bbc
--- /dev/null
+++ b/lib/private/notification/action.php
@@ -0,0 +1,167 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+
+class Action implements IAction {
+
+ /** @var string */
+ protected $label;
+
+ /** @var string */
+ protected $labelParsed;
+
+ /** @var string */
+ protected $link;
+
+ /** @var string */
+ protected $requestType;
+
+ /** @var string */
+ protected $icon;
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->label = '';
+ $this->labelParsed = '';
+ $this->link = '';
+ $this->requestType = '';
+ $this->icon = '';
+ }
+
+ /**
+ * @param string $label
+ * @return $this
+ * @throws \InvalidArgumentException if the label is invalid
+ * @since 8.2.0
+ */
+ public function setLabel($label) {
+ if (!is_string($label) || $label === '' || isset($label[32])) {
+ throw new \InvalidArgumentException('The given label is invalid');
+ }
+ $this->label = $label;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getLabel() {
+ return $this->label;
+ }
+
+ /**
+ * @param string $label
+ * @return $this
+ * @throws \InvalidArgumentException if the label is invalid
+ * @since 8.2.0
+ */
+ public function setParsedLabel($label) {
+ if (!is_string($label) || $label === '') {
+ throw new \InvalidArgumentException('The given parsed label is invalid');
+ }
+ $this->labelParsed = $label;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getParsedLabel() {
+ return $this->labelParsed;
+ }
+
+ /**
+ * @param string $link
+ * @param string $requestType
+ * @return $this
+ * @throws \InvalidArgumentException if the link is invalid
+ * @since 8.2.0
+ */
+ public function setLink($link, $requestType) {
+ if (!is_string($link) || $link === '' || isset($link[256])) {
+ throw new \InvalidArgumentException('The given link is invalid');
+ }
+ if (!in_array($requestType, ['GET', 'POST', 'PUT', 'DELETE'], true)) {
+ throw new \InvalidArgumentException('The given request type is invalid');
+ }
+ $this->link = $link;
+ $this->requestType = $requestType;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getLink() {
+ return $this->link;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getRequestType() {
+ return $this->requestType;
+ }
+
+ /**
+ * @param string $icon
+ * @return $this
+ * @throws \InvalidArgumentException if the icon is invalid
+ * @since 8.2.0
+ */
+ public function setIcon($icon) {
+ if (!is_string($icon) || $icon === '' || isset($icon[64])) {
+ throw new \InvalidArgumentException('The given icon is invalid');
+ }
+ $this->icon = $icon;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getIcon() {
+ return $this->icon;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isValid() {
+ return $this->label !== '' && $this->link !== '';
+ }
+
+ /**
+ * @return bool
+ */
+ public function isValidParsed() {
+ return $this->labelParsed !== '' && $this->link !== '';
+ }
+}
diff --git a/lib/private/notification/iaction.php b/lib/private/notification/iaction.php
new file mode 100644
index 00000000000..da6728f5c52
--- /dev/null
+++ b/lib/private/notification/iaction.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+/**
+ * Interface IAction
+ *
+ * @package OC\Notification
+ * @since 8.2.0
+ *
+ * DEVELOPER NOTE:
+ * The notification api is experimental only in 8.2.0! Do not start using it,
+ * if you can not prepare an update for the next version afterwards.
+ */
+interface IAction {
+ /**
+ * @param string $label
+ * @return $this
+ * @throws \InvalidArgumentException if the label is invalid
+ * @since 8.2.0
+ */
+ public function setLabel($label);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getLabel();
+
+ /**
+ * @param string $label
+ * @return $this
+ * @throws \InvalidArgumentException if the label is invalid
+ * @since 8.2.0
+ */
+ public function setParsedLabel($label);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getParsedLabel();
+
+ /**
+ * @param string $link
+ * @param string $requestType
+ * @return $this
+ * @throws \InvalidArgumentException if the link is invalid
+ * @since 8.2.0
+ */
+ public function setLink($link, $requestType);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getLink();
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getRequestType();
+
+ /**
+ * @param string $icon
+ * @return $this
+ * @throws \InvalidArgumentException if the icon is invalid
+ * @since 8.2.0
+ */
+ public function setIcon($icon);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getIcon();
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isValid();
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isValidParsed();
+}
diff --git a/lib/private/notification/iapp.php b/lib/private/notification/iapp.php
new file mode 100644
index 00000000000..eda66423f3a
--- /dev/null
+++ b/lib/private/notification/iapp.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+/**
+ * Interface IApp
+ *
+ * @package OC\Notification
+ * @since 8.2.0
+ *
+ * DEVELOPER NOTE:
+ * The notification api is experimental only in 8.2.0! Do not start using it,
+ * if you can not prepare an update for the next version afterwards.
+ */
+interface IApp {
+ /**
+ * @param INotification $notification
+ * @return null
+ * @throws \InvalidArgumentException When the notification is not valid
+ * @since 8.2.0
+ */
+ public function notify(INotification $notification);
+
+ /**
+ * @param INotification $notification
+ * @return null
+ * @since 8.2.0
+ */
+ public function markProcessed(INotification $notification);
+
+ /**
+ * @param INotification $notification
+ * @return int
+ * @since 8.2.0
+ */
+ public function getCount(INotification $notification);
+}
diff --git a/lib/private/notification/imanager.php b/lib/private/notification/imanager.php
new file mode 100644
index 00000000000..0cd92b33251
--- /dev/null
+++ b/lib/private/notification/imanager.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+/**
+ * Interface IManager
+ *
+ * @package OC\Notification
+ * @since 8.2.0
+ *
+ * DEVELOPER NOTE:
+ * The notification api is experimental only in 8.2.0! Do not start using it,
+ * if you can not prepare an update for the next version afterwards.
+ */
+interface IManager extends IApp, INotifier {
+ /**
+ * @param \Closure $service The service must implement IApp, otherwise a
+ * \InvalidArgumentException is thrown later
+ * @return null
+ * @since 8.2.0
+ */
+ public function registerApp(\Closure $service);
+
+ /**
+ * @param \Closure $service The service must implement INotifier, otherwise a
+ * \InvalidArgumentException is thrown later
+ * @return null
+ * @since 8.2.0
+ */
+ public function registerNotifier(\Closure $service);
+
+ /**
+ * @return INotification
+ * @since 8.2.0
+ */
+ public function createNotification();
+}
diff --git a/lib/private/notification/inotification.php b/lib/private/notification/inotification.php
new file mode 100644
index 00000000000..faf5db1d24c
--- /dev/null
+++ b/lib/private/notification/inotification.php
@@ -0,0 +1,241 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+/**
+ * Interface INotification
+ *
+ * @package OC\Notification
+ * @since 8.2.0
+ *
+ * DEVELOPER NOTE:
+ * The notification api is experimental only in 8.2.0! Do not start using it,
+ * if you can not prepare an update for the next version afterwards.
+ */
+interface INotification {
+ /**
+ * @param string $app
+ * @return $this
+ * @throws \InvalidArgumentException if the app id are invalid
+ * @since 8.2.0
+ */
+ public function setApp($app);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getApp();
+
+ /**
+ * @param string $user
+ * @return $this
+ * @throws \InvalidArgumentException if the user id are invalid
+ * @since 8.2.0
+ */
+ public function setUser($user);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getUser();
+
+ /**
+ * @param int $timestamp
+ * @return $this
+ * @throws \InvalidArgumentException if the timestamp are invalid
+ * @since 8.2.0
+ */
+ public function setTimestamp($timestamp);
+
+ /**
+ * @return int
+ * @since 8.2.0
+ */
+ public function getTimestamp();
+
+ /**
+ * @param string $type
+ * @param int $id
+ * @return $this
+ * @throws \InvalidArgumentException if the object type or id are invalid
+ * @since 8.2.0
+ */
+ public function setObject($type, $id);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getObjectType();
+
+ /**
+ * @return int
+ * @since 8.2.0
+ */
+ public function getObjectId();
+
+ /**
+ * @param string $subject
+ * @param array $parameters
+ * @return $this
+ * @throws \InvalidArgumentException if the subject or parameters are invalid
+ * @since 8.2.0
+ */
+ public function setSubject($subject, array $parameters = []);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getSubject();
+
+ /**
+ * @return string[]
+ * @since 8.2.0
+ */
+ public function getSubjectParameters();
+
+ /**
+ * @param string $subject
+ * @return $this
+ * @throws \InvalidArgumentException if the subject are invalid
+ * @since 8.2.0
+ */
+ public function setParsedSubject($subject);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getParsedSubject();
+
+ /**
+ * @param string $message
+ * @param array $parameters
+ * @return $this
+ * @throws \InvalidArgumentException if the message or parameters are invalid
+ * @since 8.2.0
+ */
+ public function setMessage($message, array $parameters = []);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getMessage();
+
+ /**
+ * @return string[]
+ * @since 8.2.0
+ */
+ public function getMessageParameters();
+
+ /**
+ * @param string $message
+ * @return $this
+ * @throws \InvalidArgumentException if the message are invalid
+ * @since 8.2.0
+ */
+ public function setParsedMessage($message);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getParsedMessage();
+
+ /**
+ * @param string $link
+ * @return $this
+ * @throws \InvalidArgumentException if the link are invalid
+ * @since 8.2.0
+ */
+ public function setLink($link);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getLink();
+
+ /**
+ * @param string $icon
+ * @return $this
+ * @throws \InvalidArgumentException if the icon are invalid
+ * @since 8.2.0
+ */
+ public function setIcon($icon);
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getIcon();
+
+ /**
+ * @return IAction
+ * @since 8.2.0
+ */
+ public function createAction();
+
+ /**
+ * @param IAction $action
+ * @return $this
+ * @throws \InvalidArgumentException if the action are invalid
+ * @since 8.2.0
+ */
+ public function addAction(IAction $action);
+
+ /**
+ * @return IAction[]
+ * @since 8.2.0
+ */
+ public function getActions();
+
+ /**
+ * @param IAction $action
+ * @return $this
+ * @throws \InvalidArgumentException if the action are invalid
+ * @since 8.2.0
+ */
+ public function addParsedAction(IAction $action);
+
+ /**
+ * @return IAction[]
+ * @since 8.2.0
+ */
+ public function getParsedActions();
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isValid();
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isValidParsed();
+}
diff --git a/lib/private/notification/inotifier.php b/lib/private/notification/inotifier.php
new file mode 100644
index 00000000000..22531229e3f
--- /dev/null
+++ b/lib/private/notification/inotifier.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+/**
+ * Interface INotifier
+ *
+ * @package OC\Notification
+ * @since 8.2.0
+ *
+ * DEVELOPER NOTE:
+ * The notification api is experimental only in 8.2.0! Do not start using it,
+ * if you can not prepare an update for the next version afterwards.
+ */
+interface INotifier {
+ /**
+ * @param INotification $notification
+ * @param string $languageCode The code of the language that should be used to prepare the notification
+ * @return INotification
+ * @throws \InvalidArgumentException When the notification was not prepared by a notifier
+ * @since 8.2.0
+ */
+ public function prepare(INotification $notification, $languageCode);
+}
diff --git a/lib/private/notification/manager.php b/lib/private/notification/manager.php
new file mode 100644
index 00000000000..9635925e38e
--- /dev/null
+++ b/lib/private/notification/manager.php
@@ -0,0 +1,191 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+
+class Manager implements IManager {
+ /** @var IApp */
+ protected $apps;
+
+ /** @var INotifier */
+ protected $notifiers;
+
+ /** @var \Closure */
+ protected $appsClosures;
+
+ /** @var \Closure */
+ protected $notifiersClosures;
+
+ public function __construct() {
+ $this->apps = [];
+ $this->notifiers = [];
+ $this->appsClosures = [];
+ $this->notifiersClosures = [];
+ }
+
+ /**
+ * @param \Closure $service The service must implement IApp, otherwise a
+ * \InvalidArgumentException is thrown later
+ * @return null
+ * @since 8.2.0
+ */
+ public function registerApp(\Closure $service) {
+ $this->appsClosures[] = $service;
+ $this->apps = [];
+ }
+
+ /**
+ * @param \Closure $service The service must implement INotifier, otherwise a
+ * \InvalidArgumentException is thrown later
+ * @return null
+ * @since 8.2.0
+ */
+ public function registerNotifier(\Closure $service) {
+ $this->notifiersClosures[] = $service;
+ $this->notifiers = [];
+ }
+
+ /**
+ * @return IApp[]
+ */
+ protected function getApps() {
+ if (!empty($this->apps)) {
+ return $this->apps;
+ }
+
+ $this->apps = [];
+ foreach ($this->appsClosures as $closure) {
+ $app = $closure();
+ if (!($app instanceof IApp)) {
+ throw new \InvalidArgumentException('The given notification app does not implement the IApp interface');
+ }
+ $this->apps[] = $app;
+ }
+
+ return $this->apps;
+ }
+
+ /**
+ * @return INotifier[]
+ */
+ protected function getNotifiers() {
+ if (!empty($this->notifiers)) {
+ return $this->notifiers;
+ }
+
+ $this->notifiers = [];
+ foreach ($this->notifiersClosures as $closure) {
+ $notifier = $closure();
+ if (!($notifier instanceof INotifier)) {
+ throw new \InvalidArgumentException('The given notification app does not implement the INotifier interface');
+ }
+ $this->notifiers[] = $notifier;
+ }
+
+ return $this->notifiers;
+ }
+
+ /**
+ * @return INotification
+ * @since 8.2.0
+ */
+ public function createNotification() {
+ return new Notification();
+ }
+
+ /**
+ * @param INotification $notification
+ * @return null
+ * @throws \InvalidArgumentException When the notification is not valid
+ * @since 8.2.0
+ */
+ public function notify(INotification $notification) {
+ if (!$notification->isValid()) {
+ throw new \InvalidArgumentException('The given notification is invalid');
+ }
+
+ $apps = $this->getApps();
+
+ foreach ($apps as $app) {
+ try {
+ $app->notify($notification);
+ } catch (\InvalidArgumentException $e) {
+ }
+ }
+ }
+
+ /**
+ * @param INotification $notification
+ * @param string $languageCode The code of the language that should be used to prepare the notification
+ * @return INotification
+ * @throws \InvalidArgumentException When the notification was not prepared by a notifier
+ * @since 8.2.0
+ */
+ public function prepare(INotification $notification, $languageCode) {
+ $notifiers = $this->getNotifiers();
+
+ foreach ($notifiers as $notifier) {
+ try {
+ $notification = $notifier->prepare($notification, $languageCode);
+ } catch (\InvalidArgumentException $e) {
+ continue;
+ }
+
+ if (!($notification instanceof INotification) || !$notification->isValidParsed()) {
+ throw new \InvalidArgumentException('The given notification has not been handled');
+ }
+ }
+
+ if (!($notification instanceof INotification) || !$notification->isValidParsed()) {
+ throw new \InvalidArgumentException('The given notification has not been handled');
+ }
+
+ return $notification;
+ }
+
+ /**
+ * @param INotification $notification
+ * @return null
+ */
+ public function markProcessed(INotification $notification) {
+ $apps = $this->getApps();
+
+ foreach ($apps as $app) {
+ $app->markProcessed($notification);
+ }
+ }
+
+ /**
+ * @param INotification $notification
+ * @return int
+ */
+ public function getCount(INotification $notification) {
+ $apps = $this->getApps();
+
+ $count = 0;
+ foreach ($apps as $app) {
+ $count += $app->getCount($notification);
+ }
+
+ return $count;
+ }
+}
diff --git a/lib/private/notification/notification.php b/lib/private/notification/notification.php
new file mode 100644
index 00000000000..40fe39a956e
--- /dev/null
+++ b/lib/private/notification/notification.php
@@ -0,0 +1,446 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Notification;
+
+
+class Notification implements INotification {
+ /** @var string */
+ protected $app;
+
+ /** @var string */
+ protected $user;
+
+ /** @var int */
+ protected $timestamp;
+
+ /** @var string */
+ protected $objectType;
+
+ /** @var int */
+ protected $objectId;
+
+ /** @var string */
+ protected $subject;
+
+ /** @var array */
+ protected $subjectParameters;
+
+ /** @var string */
+ protected $subjectParsed;
+
+ /** @var string */
+ protected $message;
+
+ /** @var array */
+ protected $messageParameters;
+
+ /** @var string */
+ protected $messageParsed;
+
+ /** @var string */
+ protected $link;
+
+ /** @var string */
+ protected $icon;
+
+ /** @var array */
+ protected $actions;
+
+ /** @var array */
+ protected $actionsParsed;
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ $this->app = '';
+ $this->user = '';
+ $this->timestamp = 0;
+ $this->objectType = '';
+ $this->objectId = 0;
+ $this->subject = '';
+ $this->subjectParameters = [];
+ $this->subjectParsed = '';
+ $this->message = '';
+ $this->messageParameters = [];
+ $this->messageParsed = '';
+ $this->link = '';
+ $this->icon = '';
+ $this->actions = [];
+ $this->actionsParsed = [];
+ }
+
+ /**
+ * @param string $app
+ * @return $this
+ * @throws \InvalidArgumentException if the app id is invalid
+ * @since 8.2.0
+ */
+ public function setApp($app) {
+ if (!is_string($app) || $app === '' || isset($app[32])) {
+ throw new \InvalidArgumentException('The given app name is invalid');
+ }
+ $this->app = $app;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getApp() {
+ return $this->app;
+ }
+
+ /**
+ * @param string $user
+ * @return $this
+ * @throws \InvalidArgumentException if the user id is invalid
+ * @since 8.2.0
+ */
+ public function setUser($user) {
+ if (!is_string($user) || $user === '' || isset($user[64])) {
+ throw new \InvalidArgumentException('The given user id is invalid');
+ }
+ $this->user = $user;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getUser() {
+ return $this->user;
+ }
+
+ /**
+ * @param int $timestamp
+ * @return $this
+ * @throws \InvalidArgumentException if the timestamp is invalid
+ * @since 8.2.0
+ */
+ public function setTimestamp($timestamp) {
+ if (!is_int($timestamp)) {
+ throw new \InvalidArgumentException('The given timestamp is invalid');
+ }
+ $this->timestamp = $timestamp;
+ return $this;
+ }
+
+ /**
+ * @return int
+ * @since 8.2.0
+ */
+ public function getTimestamp() {
+ return $this->timestamp;
+ }
+
+ /**
+ * @param string $type
+ * @param int $id
+ * @return $this
+ * @throws \InvalidArgumentException if the object type or id is invalid
+ * @since 8.2.0
+ */
+ public function setObject($type, $id) {
+ if (!is_string($type) || $type === '' || isset($type[64])) {
+ throw new \InvalidArgumentException('The given object type is invalid');
+ }
+ $this->objectType = $type;
+
+ if (!is_int($id)) {
+ throw new \InvalidArgumentException('The given object id is invalid');
+ }
+ $this->objectId = $id;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getObjectType() {
+ return $this->objectType;
+ }
+
+ /**
+ * @return int
+ * @since 8.2.0
+ */
+ public function getObjectId() {
+ return $this->objectId;
+ }
+
+ /**
+ * @param string $subject
+ * @param array $parameters
+ * @return $this
+ * @throws \InvalidArgumentException if the subject or parameters are invalid
+ * @since 8.2.0
+ */
+ public function setSubject($subject, array $parameters = []) {
+ if (!is_string($subject) || $subject === '' || isset($subject[64])) {
+ throw new \InvalidArgumentException('The given subject is invalid');
+ }
+ $this->subject = $subject;
+
+ if (!is_array($parameters)) {
+ throw new \InvalidArgumentException('The given subject parameters are invalid');
+ }
+ $this->subjectParameters = $parameters;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getSubject() {
+ return $this->subject;
+ }
+
+ /**
+ * @return string[]
+ * @since 8.2.0
+ */
+ public function getSubjectParameters() {
+ return $this->subjectParameters;
+ }
+
+ /**
+ * @param string $subject
+ * @return $this
+ * @throws \InvalidArgumentException if the subject are invalid
+ * @since 8.2.0
+ */
+ public function setParsedSubject($subject) {
+ if (!is_string($subject) || $subject === '') {
+ throw new \InvalidArgumentException('The given parsed subject is invalid');
+ }
+ $this->subjectParsed = $subject;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getParsedSubject() {
+ return $this->subjectParsed;
+ }
+
+ /**
+ * @param string $message
+ * @param array $parameters
+ * @return $this
+ * @throws \InvalidArgumentException if the message or parameters are invalid
+ * @since 8.2.0
+ */
+ public function setMessage($message, array $parameters = []) {
+ if (!is_string($message) || $message === '' || isset($message[64])) {
+ throw new \InvalidArgumentException('The given message is invalid');
+ }
+ $this->message = $message;
+
+ if (!is_array($parameters)) {
+ throw new \InvalidArgumentException('The given message parameters are invalid');
+ }
+ $this->messageParameters = $parameters;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getMessage() {
+ return $this->message;
+ }
+
+ /**
+ * @return string[]
+ * @since 8.2.0
+ */
+ public function getMessageParameters() {
+ return $this->messageParameters;
+ }
+
+ /**
+ * @param string $message
+ * @return $this
+ * @throws \InvalidArgumentException if the message are invalid
+ * @since 8.2.0
+ */
+ public function setParsedMessage($message) {
+ if (!is_string($message) || $message === '') {
+ throw new \InvalidArgumentException('The given parsed message is invalid');
+ }
+ $this->messageParsed = $message;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getParsedMessage() {
+ return $this->messageParsed;
+ }
+
+ /**
+ * @param string $link
+ * @return $this
+ * @throws \InvalidArgumentException if the link are invalid
+ * @since 8.2.0
+ */
+ public function setLink($link) {
+ if (!is_string($link) || $link === '' || isset($link[4000])) {
+ throw new \InvalidArgumentException('The given link is invalid');
+ }
+ $this->link = $link;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getLink() {
+ return $this->link;
+ }
+
+ /**
+ * @param string $icon
+ * @return $this
+ * @throws \InvalidArgumentException if the icon are invalid
+ * @since 8.2.0
+ */
+ public function setIcon($icon) {
+ if (!is_string($icon) || $icon === '' || isset($icon[64])) {
+ throw new \InvalidArgumentException('The given icon is invalid');
+ }
+ $this->icon = $icon;
+ return $this;
+ }
+
+ /**
+ * @return string
+ * @since 8.2.0
+ */
+ public function getIcon() {
+ return $this->icon;
+ }
+
+ /**
+ * @return IAction
+ * @since 8.2.0
+ */
+ public function createAction() {
+ return new Action();
+ }
+
+ /**
+ * @param IAction $action
+ * @return $this
+ * @throws \InvalidArgumentException if the action are invalid
+ * @since 8.2.0
+ */
+ public function addAction(IAction $action) {
+ if (!$action->isValid()) {
+ throw new \InvalidArgumentException('The given action is invalid');
+ }
+ $this->actions[] = $action;
+ return $this;
+ }
+
+ /**
+ * @return IAction[]
+ * @since 8.2.0
+ */
+ public function getActions() {
+ return $this->actions;
+ }
+
+ /**
+ * @param IAction $action
+ * @return $this
+ * @throws \InvalidArgumentException if the action are invalid
+ * @since 8.2.0
+ */
+ public function addParsedAction(IAction $action) {
+ if (!$action->isValidParsed()) {
+ throw new \InvalidArgumentException('The given parsed action is invalid');
+ }
+ $this->actionsParsed[] = $action;
+ return $this;
+ }
+
+ /**
+ * @return IAction[]
+ * @since 8.2.0
+ */
+ public function getParsedActions() {
+ return $this->actionsParsed;
+ }
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isValid() {
+ return
+ $this->isValidCommon()
+ &&
+ $this->getSubject() !== ''
+ ;
+ }
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isValidParsed() {
+ return
+ $this->isValidCommon()
+ &&
+ $this->getParsedSubject() !== ''
+ ;
+ }
+
+ /**
+ * @return bool
+ */
+ protected function isValidCommon() {
+ return
+ $this->getApp() !== ''
+ &&
+ $this->getUser() !== ''
+ &&
+ $this->getTimestamp() !== 0
+ &&
+ $this->getObjectType() !== ''
+ &&
+ $this->getObjectId() !== 0
+ ;
+ }
+}
diff --git a/lib/private/server.php b/lib/private/server.php
index 24674d2e3c7..59d03c2df97 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -53,6 +53,7 @@ use OC\Lock\DBLockingProvider;
use OC\Lock\MemcacheLockingProvider;
use OC\Lock\NoopLockingProvider;
use OC\Mail\Mailer;
+use OC\Notification\Manager;
use OC\Security\CertificateManager;
use OC\Security\Crypto;
use OC\Security\Hasher;
@@ -177,8 +178,6 @@ class Server extends SimpleContainer implements IServerContainer {
$manager = $c->getUserManager();
$session = new \OC\Session\Memory('');
- $cryptoWrapper = $c->getSessionCryptoWrapper();
- $session = $cryptoWrapper->wrapSession($session);
$userSession = new \OC\User\Session($manager, $session);
$userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) {
@@ -252,7 +251,7 @@ class Server extends SimpleContainer implements IServerContainer {
if($config->getSystemValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
$v = \OC_App::getAppVersions();
- $v['core'] = implode('.', \OC_Util::getVersion());
+ $v['core'] = md5(file_get_contents(\OC::$SERVERROOT . '/version.php'));
$version = implode(',', $v);
$instanceId = \OC_Util::getInstanceId();
$path = \OC::$SERVERROOT;
@@ -470,6 +469,14 @@ class Server extends SimpleContainer implements IServerContainer {
$c->getURLGenerator(),
\OC::$configDir);
});
+ $this->registerService('MimeTypeLoader', function(Server $c) {
+ return new \OC\Files\Type\Loader(
+ $c->getDatabaseConnection()
+ );
+ });
+ $this->registerService('NotificationManager', function() {
+ return new Manager();
+ });
$this->registerService('CapabilitiesManager', function (Server $c) {
$manager = new \OC\CapabilitiesManager();
$manager->registerCapability(function() use ($c) {
@@ -1011,6 +1018,15 @@ class Server extends SimpleContainer implements IServerContainer {
}
/**
+ * Get the MimeTypeLoader
+ *
+ * @return \OCP\Files\IMimeTypeLoader
+ */
+ public function getMimeTypeLoader() {
+ return $this->query('MimeTypeLoader');
+ }
+
+ /**
* Get the manager of all the capabilities
*
* @return \OC\CapabilitiesManager
@@ -1030,9 +1046,51 @@ class Server extends SimpleContainer implements IServerContainer {
}
/**
+ * Get the Notification Manager
+ *
+ * @return \OC\Notification\IManager
+ * @since 8.2.0
+ */
+ public function getNotificationManager() {
+ return $this->query('NotificationManager');
+ }
+
+ /**
* @return \OC\Session\CryptoWrapper
*/
public function getSessionCryptoWrapper() {
return $this->query('CryptoWrapper');
}
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ * @return \OCA\Files_External\Service\BackendService
+ */
+ public function getStoragesBackendService() {
+ return \OC_Mount_Config::$app->getContainer()->query('OCA\\Files_External\\Service\\BackendService');
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ * @return \OCA\Files_External\Service\GlobalStoragesService
+ */
+ public function getGlobalStoragesService() {
+ return \OC_Mount_Config::$app->getContainer()->query('OCA\\Files_External\\Service\\GlobalStoragesService');
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ * @return \OCA\Files_External\Service\UserGlobalStoragesService
+ */
+ public function getUserGlobalStoragesService() {
+ return \OC_Mount_Config::$app->getContainer()->query('OCA\\Files_External\\Service\\UserGlobalStoragesService');
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ * @return \OCA\Files_External\Service\UserStoragesService
+ */
+ public function getUserStoragesService() {
+ return \OC_Mount_Config::$app->getContainer()->query('OCA\\Files_External\\Service\\UserStoragesService');
+ }
}
diff --git a/lib/private/session/cryptosessiondata.php b/lib/private/session/cryptosessiondata.php
index 60d22b25e97..6826ede5e33 100644
--- a/lib/private/session/cryptosessiondata.php
+++ b/lib/private/session/cryptosessiondata.php
@@ -32,22 +32,47 @@ use OCP\Security\ICrypto;
class CryptoSessionData implements \ArrayAccess, ISession {
/** @var ISession */
protected $session;
-
/** @var \OCP\Security\ICrypto */
protected $crypto;
-
/** @var string */
protected $passphrase;
+ /** @var array */
+ protected $sessionValues;
+ /** @var bool */
+ protected $isModified = false;
+ CONST encryptedSessionName = 'encrypted_session_data';
/**
* @param ISession $session
* @param ICrypto $crypto
* @param string $passphrase
*/
- public function __construct(ISession $session, ICrypto $crypto, $passphrase) {
+ public function __construct(ISession $session,
+ ICrypto $crypto,
+ $passphrase) {
$this->crypto = $crypto;
$this->session = $session;
$this->passphrase = $passphrase;
+ $this->initializeSession();
+ }
+
+ /**
+ * Close session if class gets destructed
+ */
+ public function __destruct() {
+ $this->close();
+ }
+
+ protected function initializeSession() {
+ $encryptedSessionData = $this->session->get(self::encryptedSessionName);
+ try {
+ $this->sessionValues = json_decode(
+ $this->crypto->decrypt($encryptedSessionData, $this->passphrase),
+ true
+ );
+ } catch (\Exception $e) {
+ $this->sessionValues = [];
+ }
}
/**
@@ -57,8 +82,8 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @param mixed $value
*/
public function set($key, $value) {
- $encryptedValue = $this->crypto->encrypt(json_encode($value), $this->passphrase);
- $this->session->set($key, $encryptedValue);
+ $this->sessionValues[$key] = $value;
+ $this->isModified = true;
}
/**
@@ -68,17 +93,11 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @return string|null Either the value or null
*/
public function get($key) {
- $encryptedValue = $this->session->get($key);
- if ($encryptedValue === null) {
- return null;
+ if(isset($this->sessionValues[$key])) {
+ return $this->sessionValues[$key];
}
- try {
- $value = $this->crypto->decrypt($encryptedValue, $this->passphrase);
- return json_decode($value);
- } catch (\Exception $e) {
- return null;
- }
+ return null;
}
/**
@@ -88,7 +107,7 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @return bool
*/
public function exists($key) {
- return $this->session->exists($key);
+ return isset($this->sessionValues[$key]);
}
/**
@@ -97,20 +116,29 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @param string $key
*/
public function remove($key) {
- $this->session->remove($key);
+ $this->isModified = true;
+ unset($this->sessionValues[$key]);
+ $this->session->remove(self::encryptedSessionName);
}
/**
* Reset and recreate the session
*/
public function clear() {
+ $this->sessionValues = [];
+ $this->isModified = true;
$this->session->clear();
}
/**
- * Close the session and release the lock
+ * Close the session and release the lock, also writes all changed data in batch
*/
public function close() {
+ if($this->isModified) {
+ $encryptedValue = $this->crypto->encrypt(json_encode($this->sessionValues), $this->passphrase);
+ $this->session->set(self::encryptedSessionName, $encryptedValue);
+ $this->isModified = false;
+ }
$this->session->close();
}
diff --git a/lib/private/session/internal.php b/lib/private/session/internal.php
index 77197887754..8ee21272104 100644
--- a/lib/private/session/internal.php
+++ b/lib/private/session/internal.php
@@ -32,6 +32,10 @@ namespace OC\Session;
* @package OC\Session
*/
class Internal extends Session {
+ /**
+ * @param string $name
+ * @throws \Exception
+ */
public function __construct($name) {
session_name($name);
set_error_handler(array($this, 'trapError'));
@@ -42,10 +46,6 @@ class Internal extends Session {
}
}
- public function __destruct() {
- $this->close();
- }
-
/**
* @param string $key
* @param integer $value
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index d0c69badb46..6ad36d60fe8 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -37,6 +37,7 @@
namespace OC\Share;
+use OC\Files\Filesystem;
use OCP\IUserSession;
use OCP\IDBConnection;
use OCP\IConfig;
@@ -120,6 +121,7 @@ class Share extends Constants {
*/
public static function getUsersSharingFile($path, $ownerUser, $includeOwner = false, $returnUserPaths = false) {
+ Filesystem::initMountPoints($ownerUser);
$shares = $sharePaths = $fileTargets = array();
$publicShare = false;
$remoteShare = false;
@@ -701,6 +703,18 @@ class Share extends Constants {
throw new \Exception($message_t);
}
}
+ if ($checkExists = self::getItems($itemType, $itemSource, self::SHARE_TYPE_USER,
+ $shareWith, null, self::FORMAT_NONE, null, 1, true, true)) {
+ // Only allow the same share to occur again if it is the same
+ // owner and is not a user share, this use case is for increasing
+ // permissions for a specific user
+ if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) {
+ $message = 'Sharing %s failed, because this item is already shared with user %s';
+ $message_t = $l->t('Sharing %s failed, because this item is already shared with user %s', array($itemSourceName, $shareWith));
+ \OC_Log::write('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OC_Log::ERROR);
+ throw new \Exception($message_t);
+ }
+ }
} else if ($shareType === self::SHARE_TYPE_GROUP) {
if (!\OC_Group::groupExists($shareWith)) {
$message = 'Sharing %s failed, because the group %s does not exist';
@@ -751,7 +765,7 @@ class Share extends Constants {
}
// Generate hash of password - same method as user passwords
- if (!empty($shareWith)) {
+ if (is_string($shareWith) && $shareWith !== '') {
self::verifyPassword($shareWith);
$shareWith = \OC::$server->getHasher()->hash($shareWith);
} else {
diff --git a/lib/private/updater.php b/lib/private/updater.php
index f73fa8ff655..71e9732c307 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -212,19 +212,26 @@ class Updater extends BasicEmitter {
}
/**
+ * Return version from which this version is allowed to upgrade from
+ *
+ * @return string allowed previous version
+ */
+ private function getAllowedPreviousVersion() {
+ // this should really be a JSON file
+ require \OC::$SERVERROOT . '/version.php';
+ return implode('.', $OC_VersionCanBeUpgradedFrom);
+ }
+
+ /**
* Whether an upgrade to a specified version is possible
* @param string $oldVersion
* @param string $newVersion
+ * @param string $allowedPreviousVersion
* @return bool
*/
- public function isUpgradePossible($oldVersion, $newVersion) {
- $oldVersion = explode('.', $oldVersion);
- $newVersion = explode('.', $newVersion);
-
- if($newVersion[0] > ($oldVersion[0] + 1) || $oldVersion[0] > $newVersion[0]) {
- return false;
- }
- return true;
+ public function isUpgradePossible($oldVersion, $newVersion, $allowedPreviousVersion) {
+ return (version_compare($allowedPreviousVersion, $oldVersion, '<=')
+ && version_compare($oldVersion, $newVersion, '<='));
}
/**
@@ -259,8 +266,9 @@ class Updater extends BasicEmitter {
*/
private function doUpgrade($currentVersion, $installedVersion) {
// Stop update if the update is over several major versions
- if (!self::isUpgradePossible($installedVersion, $currentVersion)) {
- throw new \Exception('Updates between multiple major versions are unsupported.');
+ $allowedPreviousVersion = $this->getAllowedPreviousVersion();
+ if (!self::isUpgradePossible($installedVersion, $currentVersion, $allowedPreviousVersion)) {
+ throw new \Exception('Updates between multiple major versions and downgrades are unsupported.');
}
// Update .htaccess files
diff --git a/lib/private/util.php b/lib/private/util.php
index 0fda55496dc..eb1de5be5a4 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -1054,6 +1054,7 @@ class OC_Util {
return $id;
}
+ protected static $encryptedToken;
/**
* Register an get/post call. Important to prevent CSRF attacks.
*
@@ -1066,6 +1067,11 @@ class OC_Util {
* @see OC_Util::isCallRegistered()
*/
public static function callRegister() {
+ // Use existing token if function has already been called
+ if(isset(self::$encryptedToken)) {
+ return self::$encryptedToken;
+ }
+
// Check if a token exists
if (!\OC::$server->getSession()->exists('requesttoken')) {
// No valid token found, generate a new one.
@@ -1078,7 +1084,8 @@ class OC_Util {
// Encrypt the token to mitigate breach-like attacks
$sharedSecret = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate(10);
- return \OC::$server->getCrypto()->encrypt($requestToken, $sharedSecret) . ':' . $sharedSecret;
+ self::$encryptedToken = \OC::$server->getCrypto()->encrypt($requestToken, $sharedSecret) . ':' . $sharedSecret;
+ return self::$encryptedToken;
}
/**
@@ -1449,8 +1456,12 @@ class OC_Util {
if ($config->getSystemValue('installed', false)) {
$installedVersion = $config->getSystemValue('version', '0.0.0');
$currentVersion = implode('.', OC_Util::getVersion());
- if (version_compare($currentVersion, $installedVersion, '>')) {
+ $versionDiff = version_compare($currentVersion, $installedVersion);
+ if ($versionDiff > 0) {
return true;
+ } else if ($versionDiff < 0) {
+ // downgrade attempt, throw exception
+ throw new \OC\HintException('Downgrading is not supported and is likely to cause unpredictable issues (from ' . $installedVersion . ' to ' . $currentVersion . ')');
}
// also check for upgrades for apps (independently from the user)
diff --git a/lib/public/autoloadnotallowedexception.php b/lib/public/autoloadnotallowedexception.php
new file mode 100644
index 00000000000..edb7121c065
--- /dev/null
+++ b/lib/public/autoloadnotallowedexception.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ */
+
+namespace OCP;
+
+/**
+ * Exception for when a not allowed path is attempted to be autoloaded
+ * @since 8.2.0
+ */
+class AutoloadNotAllowedException extends \DomainException {
+ /**
+ * @param string $path
+ * @since 8.2.0
+ */
+ public function __construct($path) {
+ parent::__construct('Autoload path not allowed: '.$path);
+ }
+}
+
diff --git a/lib/public/files/imimetypeloader.php b/lib/public/files/imimetypeloader.php
new file mode 100644
index 00000000000..24937ea9b86
--- /dev/null
+++ b/lib/public/files/imimetypeloader.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCP\Files;
+
+/**
+ * Interface IMimeTypeLoader
+ * @package OCP\Files
+ * @since 8.2.0
+ *
+ * Interface to load mimetypes
+ **/
+interface IMimeTypeLoader {
+
+ /**
+ * Get a mimetype from its ID
+ *
+ * @param int $id
+ * @return string|null
+ * @since 8.2.0
+ */
+ public function getMimetypeById($id);
+
+ /**
+ * Get a mimetype ID, adding the mimetype to the DB if it does not exist
+ *
+ * @param string $mimetype
+ * @return int
+ * @since 8.2.0
+ */
+ public function getId($mimetype);
+
+ /**
+ * Test if a mimetype exists in the database
+ *
+ * @param string $mimetype
+ * @return bool
+ * @since 8.2.0
+ */
+ public function exists($mimetype);
+}
diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php
index a6d83156de3..8be23dff214 100644
--- a/lib/public/iservercontainer.php
+++ b/lib/public/iservercontainer.php
@@ -440,6 +440,13 @@ interface IServerContainer {
*/
public function getMimeTypeDetector();
+ /**
+ * Get the MimeTypeLoader
+ *
+ * @return \OCP\Files\IMimeTypeLoader
+ * @since 8.2.0
+ */
+ public function getMimeTypeLoader();
/**
* Get the EventDispatcher
@@ -448,4 +455,12 @@ interface IServerContainer {
* @since 8.2.0
*/
public function getEventDispatcher();
+
+ /**
+ * Get the Notification Manager
+ *
+ * @return \OC\Notification\IManager
+ * @since 8.2.0
+ */
+ public function getNotificationManager();
}
diff --git a/ocs/routes.php b/ocs/routes.php
index f8e6f33c48a..9a8625bcc31 100644
--- a/ocs/routes.php
+++ b/ocs/routes.php
@@ -104,31 +104,33 @@ API::register(
);
// Server-to-Server Sharing
-$s2s = new \OCA\Files_Sharing\API\Server2Server();
-API::register('post',
+if (\OC::$server->getAppManager()->isEnabledForUser('files_sharing')) {
+ $s2s = new \OCA\Files_Sharing\API\Server2Server();
+ API::register('post',
'/cloud/shares',
array($s2s, 'createShare'),
'files_sharing',
API::GUEST_AUTH
-);
+ );
-API::register('post',
+ API::register('post',
'/cloud/shares/{id}/accept',
array($s2s, 'acceptShare'),
'files_sharing',
API::GUEST_AUTH
-);
+ );
-API::register('post',
+ API::register('post',
'/cloud/shares/{id}/decline',
array($s2s, 'declineShare'),
'files_sharing',
API::GUEST_AUTH
-);
+ );
-API::register('post',
+ API::register('post',
'/cloud/shares/{id}/unshare',
array($s2s, 'unshare'),
'files_sharing',
API::GUEST_AUTH
-);
+ );
+}
diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js
index 7ca3772718e..ceee37922cf 100644
--- a/settings/l10n/cs_CZ.js
+++ b/settings/l10n/cs_CZ.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php není nejspíše správně nastaveno pro dotazování na proměnné hodnoty systému. Test s getenv(\"PATH\") vrací pouze prázdnou odpověď.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Zkontrolujte prosím konfiguraci php podle instalační dokumentace a php konfiguraci na serveru, hlavně při použití php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je patrně nastaveno tak, aby odstraňovalo bloky komentářů. Toto bude mít za následek nedostupnost množství hlavních aplikací.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Toto je pravděpodobně způsobeno aplikacemi pro urychlení načítání jako jsou Zend OPcache nebo eAccelerator.",
diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json
index ef0fab25d17..2dbe29a8cab 100644
--- a/settings/l10n/cs_CZ.json
+++ b/settings/l10n/cs_CZ.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php není nejspíše správně nastaveno pro dotazování na proměnné hodnoty systému. Test s getenv(\"PATH\") vrací pouze prázdnou odpověď.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Zkontrolujte prosím konfiguraci php podle instalační dokumentace a php konfiguraci na serveru, hlavně při použití php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je patrně nastaveno tak, aby odstraňovalo bloky komentářů. Toto bude mít za následek nedostupnost množství hlavních aplikací.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Toto je pravděpodobně způsobeno aplikacemi pro urychlení načítání jako jsou Zend OPcache nebo eAccelerator.",
diff --git a/settings/l10n/da.js b/settings/l10n/da.js
index e7c7baf4e32..a8ad193c646 100644
--- a/settings/l10n/da.js
+++ b/settings/l10n/da.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php lader ikke til at være korrekt opsat til at forespørge miljøvariablerne i systemet. Testen med getenv(\"PATH\") returnerer blot et tomt svar.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Tjek venligst dokumentationen til installation for noterne til konfiguration af php og konfigurationen af php for din server, særligt når php-fpm anvendes.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivebeskyttede konfiguration er blevet slået til. Dette forhindrer indstillinger af nogle konfigurationer via webgrænsefladen. I tillæg skal filen gøres skrivbar manuelt for hver opdatering.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP opsætning blokere \"inline doc blocks\". dette gør at flere grundlæggende apps utilgængelige",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette er sansynligvis forårsaget af et accelerator eller cache som Zend OPcache eller eAccelerator",
diff --git a/settings/l10n/da.json b/settings/l10n/da.json
index 4656d407098..bb8f5cfba3c 100644
--- a/settings/l10n/da.json
+++ b/settings/l10n/da.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php lader ikke til at være korrekt opsat til at forespørge miljøvariablerne i systemet. Testen med getenv(\"PATH\") returnerer blot et tomt svar.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Tjek venligst dokumentationen til installation for noterne til konfiguration af php og konfigurationen af php for din server, særligt når php-fpm anvendes.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivebeskyttede konfiguration er blevet slået til. Dette forhindrer indstillinger af nogle konfigurationer via webgrænsefladen. I tillæg skal filen gøres skrivbar manuelt for hver opdatering.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP opsætning blokere \"inline doc blocks\". dette gør at flere grundlæggende apps utilgængelige",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette er sansynligvis forårsaget af et accelerator eller cache som Zend OPcache eller eAccelerator",
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index b74a5364d1a..79c5d57cf13 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv (\"PATH\") liefert nur eine leere Antwort zurück.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Bitten überprüfe die Installationsdokumentation auf Hinweise zur PHP-Konfiguration sowie die PHP-Konfiguration Deines Servers, insbesondere dann, wenn Du PHP-FPM einsetzt.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index d0e658c3c0f..0d0d2eef602 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv (\"PATH\") liefert nur eine leere Antwort zurück.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Bitten überprüfe die Installationsdokumentation auf Hinweise zur PHP-Konfiguration sowie die PHP-Konfiguration Deines Servers, insbesondere dann, wenn Du PHP-FPM einsetzt.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index 9c1b5e3fd94..31276630dc0 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -115,7 +115,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv (\"PATH\") liefert nur eine leere Antwort zurück.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Bitten überprüfen Sie die Installationsdokumentation auf Hinweise zur PHP-Konfiguration sowie die PHP-Konfiguration Ihres Servers, insbesondere dann, wenn Sie PHP-FPM einsetzen.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 046b412337f..e3fd49d2857 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -113,7 +113,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv (\"PATH\") liefert nur eine leere Antwort zurück.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Bitten überprüfen Sie die Installationsdokumentation auf Hinweise zur PHP-Konfiguration sowie die PHP-Konfiguration Ihres Servers, insbesondere dann, wenn Sie PHP-FPM einsetzen.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.",
diff --git a/settings/l10n/el.js b/settings/l10n/el.js
index 859bfe296cf..21b70a65740 100644
--- a/settings/l10n/el.js
+++ b/settings/l10n/el.js
@@ -119,7 +119,7 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Παρακαλούμε ελέγξτε την τεκμηρίωση της εγκατάστασης για τις σημειώσεις σχετικά με τη διαμόρφωση της php και τη διαμόρφωση της php στο διακομιστή σας, ειδικά όταν χρησιμοποιείτε php-fpm.",
+ "Please check the <a target=\"_blank\" href=\"%s\">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 στο διακομιστή σας, ειδικά όταν χρησιμοποιείτε php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Η ρύθμιση \"μόνο ανάγνωση\" έχει ενεργοποιηθεί. Αυτό εμποδίζει τον καθορισμό κάποιων ρυθμίσεων μέσω της διεπαφής web. Επιπλέον, το αρχείο πρέπει να γίνει χειροκίνητα εγγράψιμο πριν από κάθε διαδικασία ενημέρωσης.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Ο PHP φαίνεται να είναι ρυθμισμένος ώστε να αφαιρεί μπλοκ εσωτερικών κειμένων (inline doc). Αυτό θα καταστήσει κύριες εφαρμογές μη-διαθέσιμες.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
diff --git a/settings/l10n/el.json b/settings/l10n/el.json
index a0b1f0c7f13..87aca13d1bd 100644
--- a/settings/l10n/el.json
+++ b/settings/l10n/el.json
@@ -117,7 +117,7 @@
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Παρακαλούμε ελέγξτε την τεκμηρίωση της εγκατάστασης για τις σημειώσεις σχετικά με τη διαμόρφωση της php και τη διαμόρφωση της php στο διακομιστή σας, ειδικά όταν χρησιμοποιείτε php-fpm.",
+ "Please check the <a target=\"_blank\" href=\"%s\">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 στο διακομιστή σας, ειδικά όταν χρησιμοποιείτε php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Η ρύθμιση \"μόνο ανάγνωση\" έχει ενεργοποιηθεί. Αυτό εμποδίζει τον καθορισμό κάποιων ρυθμίσεων μέσω της διεπαφής web. Επιπλέον, το αρχείο πρέπει να γίνει χειροκίνητα εγγράψιμο πριν από κάθε διαδικασία ενημέρωσης.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Ο PHP φαίνεται να είναι ρυθμισμένος ώστε να αφαιρεί μπλοκ εσωτερικών κειμένων (inline doc). Αυτό θα καταστήσει κύριες εφαρμογές μη-διαθέσιμες.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js
index af0d61512e3..3385448f4e4 100644
--- a/settings/l10n/en_GB.js
+++ b/settings/l10n/en_GB.js
@@ -112,7 +112,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator.",
diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json
index bac57ed2974..7a426bbc1f4 100644
--- a/settings/l10n/en_GB.json
+++ b/settings/l10n/en_GB.json
@@ -110,7 +110,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator.",
diff --git a/settings/l10n/es.js b/settings/l10n/es.js
index 51c22653ad8..efb56b54c38 100644
--- a/settings/l10n/es.js
+++ b/settings/l10n/es.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo retorna una respuesta vacía.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique la documentación de instalación para las notas de configuración de php y la configuración de php en tu servidor, específicamente donde se está usando php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Se ha habilitado la configuración de sólo lectura. Esto evita que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado para eliminar bloques de documentos en línea. Esto hará que varias aplicaciones principales no estén accesibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Probablemente esto venga a causa de la caché o un acelerador, tales como Zend OPcache o eAccelerator.",
@@ -132,6 +131,7 @@ OC.L10N.register(
"If your installation is not installed in 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 cronjob via CLI. The following technical errors have appeared:" : "No fue posible ejecutar cronjob vía CLI. Han aparecido los siguientes errores técnicos:",
"Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Por favor revise las <a target=\"_blank\" href=\"%s\">guías de instalación ↗</a>, y compruebe los errores o avisos en el <a ref=\"#log-section\">registro</a>.",
+ "All checks passed." : "Ha pasado todos los controles",
"Open documentation" : "Documentación abierta",
"Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición",
"Allow users to share via link" : "Permite a los usuarios compartir por medio de enlaces",
@@ -155,6 +155,10 @@ OC.L10N.register(
"Use system's cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos.",
"Enable server-side encryption" : "Habilitar cifrado en el servidor",
"Please read carefully before activating server-side encryption: " : "Por favor lea cuidadosamente antes de activar el cifrado del lado del servidor.",
+ "Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "El cifrado en el lado servidor es un proceso de una sola vía. Una vez el cifrado está habilitado, todos los archivos desde este punto en adelante serán cifrados en el servidor y no será posible deshabilitar el cifrado posteriormente. ",
+ "Anyone who has privileged access to your ownCloud server can decrypt your files either by intercepting requests or reading out user passwords which are stored in plain text session files. Server-side encryption does therefore not protect against malicious administrators but is useful for protecting your data on externally hosted storage." : "Cualquiera que tenga acceso a este servidor ownCloud, puede descifrar estos archivos, simplemente leyendo la contraseña que se guarda en texto plano en los archivos de sesión. El cifrado del lado servidor, no protege por tanto de administradores malintencionados, pero es ùtil para proteger los datos en almacenes de datos externos de accesos no autorizados. ",
+ "Depending on the actual encryption module the general file size is increased (by 35%% or more when using the default module)" : "Dependiendo del módulo de cifrado seleccionado, el tamaño de los archivos se puede ver incrementado (hasta un 35%% o más para las opciones por defecto).",
+ "You should regularly backup all encryption keys to prevent permanent data loss (data/<user>/files_encryption and data/files_encryption)" : "Deberia salvar de forma regular las claves de cifrado para evitar la perdida de datos (data/<user>/files_encryption and data/files_encryption)",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?",
"Enable encryption" : "Habilitar cifrado",
"No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado el modulo de cifrado. Por favor habilite un modulo de cifrado en el menú de aplicaciones.",
diff --git a/settings/l10n/es.json b/settings/l10n/es.json
index 3c0fefc7cfa..f7e3ce433b7 100644
--- a/settings/l10n/es.json
+++ b/settings/l10n/es.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php parece que no está configurado correctamente para solicitar las variables de entorno del sistema. La prueba con getenv(\"PATH\") sólo retorna una respuesta vacía.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique la documentación de instalación para las notas de configuración de php y la configuración de php en tu servidor, específicamente donde se está usando php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Se ha habilitado la configuración de sólo lectura. Esto evita que ajustar algunas configuraciones a través de la interfaz web. Además, el archivo debe hacerse modificable manualmente para cada actualización.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado para eliminar bloques de documentos en línea. Esto hará que varias aplicaciones principales no estén accesibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Probablemente esto venga a causa de la caché o un acelerador, tales como Zend OPcache o eAccelerator.",
@@ -130,6 +129,7 @@
"If your installation is not installed in 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 cronjob via CLI. The following technical errors have appeared:" : "No fue posible ejecutar cronjob vía CLI. Han aparecido los siguientes errores técnicos:",
"Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Por favor revise las <a target=\"_blank\" href=\"%s\">guías de instalación ↗</a>, y compruebe los errores o avisos en el <a ref=\"#log-section\">registro</a>.",
+ "All checks passed." : "Ha pasado todos los controles",
"Open documentation" : "Documentación abierta",
"Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición",
"Allow users to share via link" : "Permite a los usuarios compartir por medio de enlaces",
@@ -153,6 +153,10 @@
"Use system's cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos.",
"Enable server-side encryption" : "Habilitar cifrado en el servidor",
"Please read carefully before activating server-side encryption: " : "Por favor lea cuidadosamente antes de activar el cifrado del lado del servidor.",
+ "Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "El cifrado en el lado servidor es un proceso de una sola vía. Una vez el cifrado está habilitado, todos los archivos desde este punto en adelante serán cifrados en el servidor y no será posible deshabilitar el cifrado posteriormente. ",
+ "Anyone who has privileged access to your ownCloud server can decrypt your files either by intercepting requests or reading out user passwords which are stored in plain text session files. Server-side encryption does therefore not protect against malicious administrators but is useful for protecting your data on externally hosted storage." : "Cualquiera que tenga acceso a este servidor ownCloud, puede descifrar estos archivos, simplemente leyendo la contraseña que se guarda en texto plano en los archivos de sesión. El cifrado del lado servidor, no protege por tanto de administradores malintencionados, pero es ùtil para proteger los datos en almacenes de datos externos de accesos no autorizados. ",
+ "Depending on the actual encryption module the general file size is increased (by 35%% or more when using the default module)" : "Dependiendo del módulo de cifrado seleccionado, el tamaño de los archivos se puede ver incrementado (hasta un 35%% o más para las opciones por defecto).",
+ "You should regularly backup all encryption keys to prevent permanent data loss (data/<user>/files_encryption and data/files_encryption)" : "Deberia salvar de forma regular las claves de cifrado para evitar la perdida de datos (data/<user>/files_encryption and data/files_encryption)",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?",
"Enable encryption" : "Habilitar cifrado",
"No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado el modulo de cifrado. Por favor habilite un modulo de cifrado en el menú de aplicaciones.",
diff --git a/settings/l10n/et_EE.js b/settings/l10n/et_EE.js
index 372d07bd51e..f2efb0221e6 100644
--- a/settings/l10n/et_EE.js
+++ b/settings/l10n/et_EE.js
@@ -109,6 +109,7 @@ OC.L10N.register(
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP moodul 'fileinfo' puudub. Soovitame tungivalt see lisada saavutamaks parimaid tulemusi failitüüpide tuvastamisel.",
"System locale can not be set to a one which supports UTF-8." : "Süsteemi lokaliseeringuks ei saa panna sellist, mis toetab UTF-8-t.",
"This means that there might be problems with certain characters in file names." : "See tähendab, et võib esineda probleeme failide nimedes mõnede sümbolitega.",
+ "All checks passed." : "Kõik kontrollid on läbitud.",
"Open documentation" : "Ava dokumentatsioon",
"Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t",
"Allow users to share via link" : "Luba kasutajatel lingiga jagamist ",
diff --git a/settings/l10n/et_EE.json b/settings/l10n/et_EE.json
index 5908d9e4149..b30857398ff 100644
--- a/settings/l10n/et_EE.json
+++ b/settings/l10n/et_EE.json
@@ -107,6 +107,7 @@
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP moodul 'fileinfo' puudub. Soovitame tungivalt see lisada saavutamaks parimaid tulemusi failitüüpide tuvastamisel.",
"System locale can not be set to a one which supports UTF-8." : "Süsteemi lokaliseeringuks ei saa panna sellist, mis toetab UTF-8-t.",
"This means that there might be problems with certain characters in file names." : "See tähendab, et võib esineda probleeme failide nimedes mõnede sümbolitega.",
+ "All checks passed." : "Kõik kontrollid on läbitud.",
"Open documentation" : "Ava dokumentatsioon",
"Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t",
"Allow users to share via link" : "Luba kasutajatel lingiga jagamist ",
diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js
index ca8d2b41081..96a724cae10 100644
--- a/settings/l10n/fa.js
+++ b/settings/l10n/fa.js
@@ -110,6 +110,9 @@ OC.L10N.register(
"Cheers!" : "سلامتی!",
"Forum" : "انجمن",
"Get the apps to sync your files" : "برنامه ها را دریافت کنید تا فایل هایتان را همگام سازید",
+ "Desktop client" : "نرم افزار دسکتاپ",
+ "Android app" : "اپ اندروید",
+ "iOS app" : "اپ iOS",
"Show First Run Wizard again" : "راهبری کمکی اجرای اول را دوباره نمایش بده",
"You have used <strong>%s</strong> of the available <strong>%s</strong>" : "شما استفاده کردید از <strong>%s</strong> از میزان در دسترس <strong>%s</strong>",
"Password" : "گذرواژه",
diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json
index 9dc390ea8cc..354e56e1ffc 100644
--- a/settings/l10n/fa.json
+++ b/settings/l10n/fa.json
@@ -108,6 +108,9 @@
"Cheers!" : "سلامتی!",
"Forum" : "انجمن",
"Get the apps to sync your files" : "برنامه ها را دریافت کنید تا فایل هایتان را همگام سازید",
+ "Desktop client" : "نرم افزار دسکتاپ",
+ "Android app" : "اپ اندروید",
+ "iOS app" : "اپ iOS",
"Show First Run Wizard again" : "راهبری کمکی اجرای اول را دوباره نمایش بده",
"You have used <strong>%s</strong> of the available <strong>%s</strong>" : "شما استفاده کردید از <strong>%s</strong> از میزان در دسترس <strong>%s</strong>",
"Password" : "گذرواژه",
diff --git a/settings/l10n/fi_FI.js b/settings/l10n/fi_FI.js
index 63456c91a95..cbbdba36bd5 100644
--- a/settings/l10n/fi_FI.js
+++ b/settings/l10n/fi_FI.js
@@ -115,6 +115,7 @@ OC.L10N.register(
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Tarkista <a target=\"_blank\" href=\"%s\">asennusohjeet ↗</a> PHP-asetusten osalta, erityisesti jos käytössäsi on 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." : "Vain luku -asetukset on otettu käyttöön. Tämä estää joidenkin asetusten määrittämisen selainkäyttöliittymän kautta. Lisäksi kyseinen tiedostoon tulee asettaa kirjoitusoikeus käsin joka päivityksen yhteydessä.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Palvelimesi käyttöjärjestelmä on Microsoft Windows. Suosittelemme käyttämään parhaan mahdollisen käyttökokemuksen saavuttamiseksi Linuxia.",
"%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "%1$s alta version %2$s on asennettu. Vakauden ja suorituskyvyn vuoksi suosittelemme päivittämään uudempaan versioon %1$s.",
@@ -149,6 +150,7 @@ OC.L10N.register(
"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:",
"Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "Salausta ei voi perua. Kun salaus on käytössä, kaikki tiedostot siitä hetkestä eteenpäin palvelimella on salattu, eikä salausta voi enää poistaa käytöstä.",
+ "You should regularly backup all encryption keys to prevent permanent data loss (data/<user>/files_encryption and data/files_encryption)" : "Varmista, että otat säännöllisesti varmuuskopiot salausavaimista, jotta et menetä kaikkia tietoja pysyvästi (data/<käyttäjä>/files_encryption ja data/files_encryption)",
"This is the final warning: Do you really want to enable encryption?" : "Tämä on viimeinen varoitus: haluatko varmasti ottaa salauksen käyttöön?",
"Enable encryption" : "Käytä salausta",
"No encryption module loaded, please enable an encryption module in the app menu." : "Salausmoduulia ei ole käytössä. Ota salausmoduuli käyttöön sovellusvalikosta.",
diff --git a/settings/l10n/fi_FI.json b/settings/l10n/fi_FI.json
index 932c3950528..f4b6bb41749 100644
--- a/settings/l10n/fi_FI.json
+++ b/settings/l10n/fi_FI.json
@@ -113,6 +113,7 @@
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Tarkista <a target=\"_blank\" href=\"%s\">asennusohjeet ↗</a> PHP-asetusten osalta, erityisesti jos käytössäsi on 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." : "Vain luku -asetukset on otettu käyttöön. Tämä estää joidenkin asetusten määrittämisen selainkäyttöliittymän kautta. Lisäksi kyseinen tiedostoon tulee asettaa kirjoitusoikeus käsin joka päivityksen yhteydessä.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Palvelimesi käyttöjärjestelmä on Microsoft Windows. Suosittelemme käyttämään parhaan mahdollisen käyttökokemuksen saavuttamiseksi Linuxia.",
"%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "%1$s alta version %2$s on asennettu. Vakauden ja suorituskyvyn vuoksi suosittelemme päivittämään uudempaan versioon %1$s.",
@@ -147,6 +148,7 @@
"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:",
"Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "Salausta ei voi perua. Kun salaus on käytössä, kaikki tiedostot siitä hetkestä eteenpäin palvelimella on salattu, eikä salausta voi enää poistaa käytöstä.",
+ "You should regularly backup all encryption keys to prevent permanent data loss (data/<user>/files_encryption and data/files_encryption)" : "Varmista, että otat säännöllisesti varmuuskopiot salausavaimista, jotta et menetä kaikkia tietoja pysyvästi (data/<käyttäjä>/files_encryption ja data/files_encryption)",
"This is the final warning: Do you really want to enable encryption?" : "Tämä on viimeinen varoitus: haluatko varmasti ottaa salauksen käyttöön?",
"Enable encryption" : "Käytä salausta",
"No encryption module loaded, please enable an encryption module in the app menu." : "Salausmoduulia ei ole käytössä. Ota salausmoduuli käyttöön sovellusvalikosta.",
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index d07fe9ebf26..c20bef29b3c 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Veuillez verifier la documentation d'installation concernant les instructions de configuration de php ainsi que la configuration de votre serveur, en particulier dans le cas où vous utilisez php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs de documentation internes. Cela rendra plusieurs applications de base inaccessibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index 0688759770c..b86a44adaf0 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv(\"PATH\") retourne seulement une réponse vide. ",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Veuillez verifier la documentation d'installation concernant les instructions de configuration de php ainsi que la configuration de votre serveur, en particulier dans le cas où vous utilisez php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs de documentation internes. Cela rendra plusieurs applications de base inaccessibles.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.",
diff --git a/settings/l10n/gl.js b/settings/l10n/gl.js
index 650b1d471cc..dc2a23f5a08 100644
--- a/settings/l10n/gl.js
+++ b/settings/l10n/gl.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Semella que PHP non está configurado correctamente para consultar as variábeis de entorno do sistema. A proba con getenv(\"PATH\") só devolve unha resposta baleira.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Consulte a documentación de instalación para ver as notas de configuración de PHP e a configuración PHP do servidor, especialmente se emprega 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." : "Foi activada a restrición da configuración a só lectura. Isto impide o estabelecemento dalgunhas configuracións a través da interface web. Ademais, ten que facer escribíbel manualmente o ficheiro para cada actualización.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Parece que PHP foi configuración para substituír bloques de documentos en liña. Isto fará que varias aplicacións sexan inaccesíbeis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto probabelmente se debe unha caché/acelerador como Zend OPcache ou eAccelerator.",
diff --git a/settings/l10n/gl.json b/settings/l10n/gl.json
index 1d2bf9b137e..65939eeb397 100644
--- a/settings/l10n/gl.json
+++ b/settings/l10n/gl.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Semella que PHP non está configurado correctamente para consultar as variábeis de entorno do sistema. A proba con getenv(\"PATH\") só devolve unha resposta baleira.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Consulte a documentación de instalación para ver as notas de configuración de PHP e a configuración PHP do servidor, especialmente se emprega 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." : "Foi activada a restrición da configuración a só lectura. Isto impide o estabelecemento dalgunhas configuracións a través da interface web. Ademais, ten que facer escribíbel manualmente o ficheiro para cada actualización.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Parece que PHP foi configuración para substituír bloques de documentos en liña. Isto fará que varias aplicacións sexan inaccesíbeis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto probabelmente se debe unha caché/acelerador como Zend OPcache ou eAccelerator.",
diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js
index cb0400e63b4..0766f2b55aa 100644
--- a/settings/l10n/hu_HU.js
+++ b/settings/l10n/hu_HU.js
@@ -60,6 +60,7 @@ OC.L10N.register(
"Approved" : "Jóváhagyott",
"Experimental" : "Kísérleti",
"All" : "Mind",
+ "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ez az alkalmazás még nincs biztonságilag ellenőrizve és vagy új, vagy ismert instabil. Telepítés csak saját felelősségre!",
"Update to %s" : "Frissítés erre: %s",
"Please wait...." : "Kérjük várj...",
"Error while disabling app" : "Hiba az alkalmazás letiltása közben",
@@ -110,6 +111,8 @@ OC.L10N.register(
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Úgy tűnik, hogy a PHP nem tudja olvasni a rendszer környezeti változóit. A getenv(\"PATH\") teszt visszatérési értéke üres.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Kérjük ellenőrizd a <a target=\"_blank\" href=\"%s\">telepítési dokumentációt ↗</a> a PHP konfigurációs beállításaival kapcsolatban, főleg ha PHP-FPM-et használsz.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Úgy tűnik, hogy a PHP úgy van beállítva, hogy eltávolítja programok belsejében elhelyezett szövegblokkokat. Emiatt a rendszer több alapvető fontosságú eleme működésképtelen lesz.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ezt valószínűleg egy gyorsítótár ill. kódgyorsító, mint pl, a Zend, OPcache vagy eAccelererator okozza.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "A szervered Microsoft Windowson fut. A legjobb felhasználói élményért erősen javasoljuk, hogy Linuxot használj.",
@@ -142,6 +145,7 @@ OC.L10N.register(
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "A cron.php webcron szolgáltatásként van regisztrálva, hogy 15 percenként egyszer lefuttassa a cron.php-t.",
"Use system's cron service to call the cron.php file every 15 minutes." : "A rendszer cron szolgáltatását használjuk, mely a cron.php állományt futtatja le 15 percenként.",
"Enable server-side encryption" : "Szerveroldali titkosítás engedélyezése",
+ "Please read carefully before activating server-side encryption: " : "Kérjük, ezt olvasd el figyelmesen mielőtt engedélyezed a szerveroldali titkosítást:",
"Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "A szerveroldali titkosítás egyirányú folyamat. Ha egyszer engedélyezve lett a titkosítás, akkor onnantól kezdve a szerveren az összes fájl titkosításra kerül, melyet később nem lehet visszafordítani.",
"This is the final warning: Do you really want to enable encryption?" : "Ez az utolsó figyelmeztetés: Biztosan szeretnéd engedélyezni a titkosítást?",
"Enable encryption" : "Titkosítás engedélyezése",
diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json
index 34ea7fc681d..4f1801fdef4 100644
--- a/settings/l10n/hu_HU.json
+++ b/settings/l10n/hu_HU.json
@@ -58,6 +58,7 @@
"Approved" : "Jóváhagyott",
"Experimental" : "Kísérleti",
"All" : "Mind",
+ "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ez az alkalmazás még nincs biztonságilag ellenőrizve és vagy új, vagy ismert instabil. Telepítés csak saját felelősségre!",
"Update to %s" : "Frissítés erre: %s",
"Please wait...." : "Kérjük várj...",
"Error while disabling app" : "Hiba az alkalmazás letiltása közben",
@@ -108,6 +109,8 @@
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Úgy tűnik, hogy a PHP nem tudja olvasni a rendszer környezeti változóit. A getenv(\"PATH\") teszt visszatérési értéke üres.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Kérjük ellenőrizd a <a target=\"_blank\" href=\"%s\">telepítési dokumentációt ↗</a> a PHP konfigurációs beállításaival kapcsolatban, főleg ha PHP-FPM-et használsz.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Úgy tűnik, hogy a PHP úgy van beállítva, hogy eltávolítja programok belsejében elhelyezett szövegblokkokat. Emiatt a rendszer több alapvető fontosságú eleme működésképtelen lesz.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ezt valószínűleg egy gyorsítótár ill. kódgyorsító, mint pl, a Zend, OPcache vagy eAccelererator okozza.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "A szervered Microsoft Windowson fut. A legjobb felhasználói élményért erősen javasoljuk, hogy Linuxot használj.",
@@ -140,6 +143,7 @@
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "A cron.php webcron szolgáltatásként van regisztrálva, hogy 15 percenként egyszer lefuttassa a cron.php-t.",
"Use system's cron service to call the cron.php file every 15 minutes." : "A rendszer cron szolgáltatását használjuk, mely a cron.php állományt futtatja le 15 percenként.",
"Enable server-side encryption" : "Szerveroldali titkosítás engedélyezése",
+ "Please read carefully before activating server-side encryption: " : "Kérjük, ezt olvasd el figyelmesen mielőtt engedélyezed a szerveroldali titkosítást:",
"Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "A szerveroldali titkosítás egyirányú folyamat. Ha egyszer engedélyezve lett a titkosítás, akkor onnantól kezdve a szerveren az összes fájl titkosításra kerül, melyet később nem lehet visszafordítani.",
"This is the final warning: Do you really want to enable encryption?" : "Ez az utolsó figyelmeztetés: Biztosan szeretnéd engedélyezni a titkosítást?",
"Enable encryption" : "Titkosítás engedélyezése",
diff --git a/settings/l10n/id.js b/settings/l10n/id.js
index c36bd864138..344805ec1e9 100644
--- a/settings/l10n/id.js
+++ b/settings/l10n/id.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "kelihatannya php tidak diatur dengan benar untuk variabel lingkungan sistem kueri. Pemeriksaan dengan getenv(\"PATH\") hanya mengembalikan respon kosong.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Mohon periksa dokumentasi instalasi untuk catatan konfigurasi php dan konfigurasi php server Anda, terutama saat menggunakan ph-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." : "Konfig Hanya-Baca telah diaktifkan. Ini akan mencegah setelan beberapa konfigurasi melalui antarmuka-web. Selanjutnya, berkas perlu dibuat dapat-dibaca secara manual untuk setiap pembaruan.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP tampaknya disetel menjadi strip inline doc blocks. Hal ini akan membuat beberapa aplikasi inti tidak dapat diakses.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.",
diff --git a/settings/l10n/id.json b/settings/l10n/id.json
index 5f6e21dd843..5d238d81822 100644
--- a/settings/l10n/id.json
+++ b/settings/l10n/id.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "kelihatannya php tidak diatur dengan benar untuk variabel lingkungan sistem kueri. Pemeriksaan dengan getenv(\"PATH\") hanya mengembalikan respon kosong.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Mohon periksa dokumentasi instalasi untuk catatan konfigurasi php dan konfigurasi php server Anda, terutama saat menggunakan ph-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." : "Konfig Hanya-Baca telah diaktifkan. Ini akan mencegah setelan beberapa konfigurasi melalui antarmuka-web. Selanjutnya, berkas perlu dibuat dapat-dibaca secara manual untuk setiap pembaruan.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP tampaknya disetel menjadi strip inline doc blocks. Hal ini akan membuat beberapa aplikasi inti tidak dapat diakses.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.",
diff --git a/settings/l10n/it.js b/settings/l10n/it.js
index 5316867a882..e51d43544a8 100644
--- a/settings/l10n/it.js
+++ b/settings/l10n/it.js
@@ -119,7 +119,7 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php non sembra essere configurato correttamente per interrogare le variabili d'ambiente di sistema. Il test con getenv(\"PATH\") restituisce solo una risposta vuota.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Controlla la documentazione di installazione per le note di configurazione di php e la configurazione del tuo server, specialmente quando utilizzi php-fpm.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Controlla la <a target=\"_blank\" href=\"%s\">documentazione di installazione↗</a> per le note di configurazione di php e la configurazione del tuo server, in particolare quando utilizzi php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configurazione di sola lettura è stata abilitata. Ciò impedisce l'impostazione di alcune configurazioni tramite l'interfaccia web. Inoltre, i file devono essere resi scrivibili manualmente per ogni aggiornamento.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Sembra che PHP sia configurato per rimuovere i blocchi di documentazione in linea. Ciò renderà inaccessibili diverse applicazioni principali.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ciò è causato probabilmente da una cache/acceleratore come Zend OPcache o eAccelerator.",
diff --git a/settings/l10n/it.json b/settings/l10n/it.json
index c13d21bf4b7..66b16c14433 100644
--- a/settings/l10n/it.json
+++ b/settings/l10n/it.json
@@ -117,7 +117,7 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php non sembra essere configurato correttamente per interrogare le variabili d'ambiente di sistema. Il test con getenv(\"PATH\") restituisce solo una risposta vuota.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Controlla la documentazione di installazione per le note di configurazione di php e la configurazione del tuo server, specialmente quando utilizzi php-fpm.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Controlla la <a target=\"_blank\" href=\"%s\">documentazione di installazione↗</a> per le note di configurazione di php e la configurazione del tuo server, in particolare quando utilizzi php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configurazione di sola lettura è stata abilitata. Ciò impedisce l'impostazione di alcune configurazioni tramite l'interfaccia web. Inoltre, i file devono essere resi scrivibili manualmente per ogni aggiornamento.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Sembra che PHP sia configurato per rimuovere i blocchi di documentazione in linea. Ciò renderà inaccessibili diverse applicazioni principali.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ciò è causato probabilmente da una cache/acceleratore come Zend OPcache o eAccelerator.",
diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js
index 5e3bc7183f1..0bb2fbef5ac 100644
--- a/settings/l10n/ko.js
+++ b/settings/l10n/ko.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "설치 문서를 참조하여 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." : "읽기 전용 설정이 활성화되었습니다. 이 상태에서는 웹 인터페이스를 통하여 일부 설정을 변경할 수 없습니다. 또한 매 업데이트마다 파일을 쓸 수 있는 상태로 변경해야 합니다.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP에서 인라인 doc 블록을 삭제하도록 설정되어 있습니다. 일부 코어 앱에 접근할 수 없을 수도 있습니다.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Zend OPcache, eAccelerator 같은 캐시/가속기 문제일 수도 있습니다.",
diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json
index b9cc5084cc4..f5d774aba65 100644
--- a/settings/l10n/ko.json
+++ b/settings/l10n/ko.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "설치 문서를 참조하여 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." : "읽기 전용 설정이 활성화되었습니다. 이 상태에서는 웹 인터페이스를 통하여 일부 설정을 변경할 수 없습니다. 또한 매 업데이트마다 파일을 쓸 수 있는 상태로 변경해야 합니다.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP에서 인라인 doc 블록을 삭제하도록 설정되어 있습니다. 일부 코어 앱에 접근할 수 없을 수도 있습니다.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Zend OPcache, eAccelerator 같은 캐시/가속기 문제일 수도 있습니다.",
diff --git a/settings/l10n/nb_NO.js b/settings/l10n/nb_NO.js
index efdcc9b6de8..a3c071b3f2f 100644
--- a/settings/l10n/nb_NO.js
+++ b/settings/l10n/nb_NO.js
@@ -115,7 +115,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Sjekk installasjonsdokumentasjonen for notiser om PHP-konfigurering og om konfigurering av serveren, spesielt ved bruk av 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." : "Den skrivebeskyttede konfigurasjonen er blitt aktivert. Dette forhindrer setting av visse konfigureringer via web-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut for at PHP er satt opp til å fjerne innebygde doc blocks. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av en bufrer/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
diff --git a/settings/l10n/nb_NO.json b/settings/l10n/nb_NO.json
index b3d673e7df3..485cd207008 100644
--- a/settings/l10n/nb_NO.json
+++ b/settings/l10n/nb_NO.json
@@ -113,7 +113,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ser ikke ut til å være satt opp riktig for å lese systemets miljøvariabler. Testen med getenv(\"PATH\") returnerer bare et tomt svar.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Sjekk installasjonsdokumentasjonen for notiser om PHP-konfigurering og om konfigurering av serveren, spesielt ved bruk av 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." : "Den skrivebeskyttede konfigurasjonen er blitt aktivert. Dette forhindrer setting av visse konfigureringer via web-grensesnittet. Videre må config-filen gjøres skrivbar manuelt for hver oppdatering.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut for at PHP er satt opp til å fjerne innebygde doc blocks. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av en bufrer/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js
index 6fef65aabc4..d11b77a2183 100644
--- a/settings/l10n/nl.js
+++ b/settings/l10n/nl.js
@@ -119,7 +119,7 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php lijkt niet goed te zijn ingesteld om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verifieer de documentatie voor php configuratieinstellingen en de php configuratie van uw server, zeker als php-fpm wordt gebruikt.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verifieer de <a target=\"_blank\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratie notities en de php configuratie van uw server, zeker als php-fpm wordt gebruikt.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is geactiveerd. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.",
diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json
index 978b70e7996..a47e0b11403 100644
--- a/settings/l10n/nl.json
+++ b/settings/l10n/nl.json
@@ -117,7 +117,7 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php lijkt niet goed te zijn ingesteld om systeemomgevingsvariabelen te bevragen. De test met getenv(\"PATH\") gaf een leeg resultaat.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verifieer de documentatie voor php configuratieinstellingen en de php configuratie van uw server, zeker als php-fpm wordt gebruikt.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verifieer de <a target=\"_blank\" href=\"%s\">installatiedocumentatie ↗</a> voor php configuratie notities en de php configuratie van uw server, zeker als php-fpm wordt gebruikt.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is geactiveerd. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.",
diff --git a/settings/l10n/oc.js b/settings/l10n/oc.js
index a8f78ecb65b..c4e745e368e 100644
--- a/settings/l10n/oc.js
+++ b/settings/l10n/oc.js
@@ -108,7 +108,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "sembla que php es pas configurat de manièra a recuperar las valors de las variablas d’environament. Lo test de la comanda getenv(\"PATH\") torna solament una responsa voida. ",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verificatz la documentacion d'installacion a prepaus de las instruccions de configuracion de php e tanben de la configuracion de vòstre servidor, en particular dins lo cas qu'utilizatz php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuracion es en mòde lectura sola. Aquò empacha la modificacion de certanas configuracions via l'interfàcia web. Amai, lo fichièr deu èsser passat manualament en lectura-escritura per cada mesa a jorn.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP es aparentament configurat per suprimir los blòts de documentacion intèrnes. Aquò rendrà mantuna aplicacion de basa inaccessiblas.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La rason es probablament l'utilizacion d'un escondedor / accelerador tal coma Zend OPcache o eAccelerator.",
diff --git a/settings/l10n/oc.json b/settings/l10n/oc.json
index 2830cf64518..9a2d5a5bc2d 100644
--- a/settings/l10n/oc.json
+++ b/settings/l10n/oc.json
@@ -106,7 +106,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "sembla que php es pas configurat de manièra a recuperar las valors de las variablas d’environament. Lo test de la comanda getenv(\"PATH\") torna solament una responsa voida. ",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Verificatz la documentacion d'installacion a prepaus de las instruccions de configuracion de php e tanben de la configuracion de vòstre servidor, en particular dins lo cas qu'utilizatz php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuracion es en mòde lectura sola. Aquò empacha la modificacion de certanas configuracions via l'interfàcia web. Amai, lo fichièr deu èsser passat manualament en lectura-escritura per cada mesa a jorn.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP es aparentament configurat per suprimir los blòts de documentacion intèrnes. Aquò rendrà mantuna aplicacion de basa inaccessiblas.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La rason es probablament l'utilizacion d'un escondedor / accelerador tal coma Zend OPcache o eAccelerator.",
diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js
index d6d7fad0759..14cc0211bef 100644
--- a/settings/l10n/pt_BR.js
+++ b/settings/l10n/pt_BR.js
@@ -119,7 +119,7 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "O PHP não parecem esta configurado corretamente para consultar as variáveis de ambiente do sistema. O teste com getenv(\"PATH\") só retorna uma resposta vazia.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique a documentação de instalação para as notas de configuração do PHP e a configuração do PHP do seu servidor, especialmente quando se utiliza php-fpm.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor verifique o <a target=\"_blank\" href=\"%s\">documento de instalação ↗</a> para as notas de configuração do PHP e configuração do PHP do seu servidor, especialmente quando usando PHP-FPM.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via a interface web. Além disso, o arquivo precisa ter permissão de escrita manual para cada atualização.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP é, aparentemente, a configuração para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessíveis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.",
diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json
index d06ae0f7dd7..2f056645a0c 100644
--- a/settings/l10n/pt_BR.json
+++ b/settings/l10n/pt_BR.json
@@ -117,7 +117,7 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "O PHP não parecem esta configurado corretamente para consultar as variáveis de ambiente do sistema. O teste com getenv(\"PATH\") só retorna uma resposta vazia.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique a documentação de instalação para as notas de configuração do PHP e a configuração do PHP do seu servidor, especialmente quando se utiliza php-fpm.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor verifique o <a target=\"_blank\" href=\"%s\">documento de instalação ↗</a> para as notas de configuração do PHP e configuração do PHP do seu servidor, especialmente quando usando PHP-FPM.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via a interface web. Além disso, o arquivo precisa ter permissão de escrita manual para cada atualização.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP é, aparentemente, a configuração para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessíveis.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.",
diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js
index df4df129c49..627eae28e74 100644
--- a/settings/l10n/pt_PT.js
+++ b/settings/l10n/pt_PT.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"settings",
{
"APCu" : "APCu",
+ "Redis" : "Redis",
"Security & setup warnings" : "Avisos de configuração e segurança",
"Sharing" : "Partilha",
"External Storage" : "Armazenamento Externo",
@@ -143,6 +144,7 @@ OC.L10N.register(
"Execute one task with each page loaded" : "Executar uma tarefa com cada página carregada",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php está registado num serviço webcron para chamar a página cron.php por http a cada 15 minutos.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Usar o serviço sistema cron para ligar o ficheiro cron.php a cada 15 minutos.",
+ "Enable encryption" : "Ative a encriptação",
"Start migration" : "Iniciar migração",
"This is used for sending out notifications." : "Isto é utilizado para enviar notificações",
"Send mode" : "Modo de Envio",
diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json
index 44a1bc88916..f845e56a976 100644
--- a/settings/l10n/pt_PT.json
+++ b/settings/l10n/pt_PT.json
@@ -1,5 +1,6 @@
{ "translations": {
"APCu" : "APCu",
+ "Redis" : "Redis",
"Security & setup warnings" : "Avisos de configuração e segurança",
"Sharing" : "Partilha",
"External Storage" : "Armazenamento Externo",
@@ -141,6 +142,7 @@
"Execute one task with each page loaded" : "Executar uma tarefa com cada página carregada",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php está registado num serviço webcron para chamar a página cron.php por http a cada 15 minutos.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Usar o serviço sistema cron para ligar o ficheiro cron.php a cada 15 minutos.",
+ "Enable encryption" : "Ative a encriptação",
"Start migration" : "Iniciar migração",
"This is used for sending out notifications." : "Isto é utilizado para enviar notificações",
"Send mode" : "Modo de Envio",
diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js
index d715cc41398..7ccef65d29f 100644
--- a/settings/l10n/ru.js
+++ b/settings/l10n/ru.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Пожалуйста обратитесь к документации по установке для получения заметок по настройке 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." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Очевидно, PHP настроен на вычищение блоков встроенной документации. Это сделает несколько центральных приложений недоступными.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.",
diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json
index ac2aa38d849..88dc9a5ba5d 100644
--- a/settings/l10n/ru.json
+++ b/settings/l10n/ru.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Пожалуйста обратитесь к документации по установке для получения заметок по настройке 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." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Очевидно, PHP настроен на вычищение блоков встроенной документации. Это сделает несколько центральных приложений недоступными.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.",
diff --git a/settings/l10n/sr.js b/settings/l10n/sr.js
index f63cedbe918..d89fe14c546 100644
--- a/settings/l10n/sr.js
+++ b/settings/l10n/sr.js
@@ -115,7 +115,6 @@ OC.L10N.register(
"SSL" : "ССЛ",
"TLS" : "ТЛС",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "ПХП није подешен да може да провери системске променљиве. Проба са getenv(\"PATH\") враћа празан одговор.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Погледајте инсталациону документацију за ПХП и серверска подешавања, посебно кад се користи 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." : "Омогућена је Само-читај конфигурација. То спречава постављање неке конфигурације преко веб-интерфејса. Осим тога, фајлу мора бити ручно омогућено уписивање код сваког освежавања.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "ПХП је очигледно подешен да се скида уметнуте док блокова. То ће учинити неколико кључних апликација недоступним.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ово је вероватно изазвано кешом или акцелератором као што су ЗендОПкеш или еАкцелератор.",
diff --git a/settings/l10n/sr.json b/settings/l10n/sr.json
index 9d3767e0df6..e360fcb863c 100644
--- a/settings/l10n/sr.json
+++ b/settings/l10n/sr.json
@@ -113,7 +113,6 @@
"SSL" : "ССЛ",
"TLS" : "ТЛС",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "ПХП није подешен да може да провери системске променљиве. Проба са getenv(\"PATH\") враћа празан одговор.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Погледајте инсталациону документацију за ПХП и серверска подешавања, посебно кад се користи 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." : "Омогућена је Само-читај конфигурација. То спречава постављање неке конфигурације преко веб-интерфејса. Осим тога, фајлу мора бити ручно омогућено уписивање код сваког освежавања.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "ПХП је очигледно подешен да се скида уметнуте док блокова. То ће учинити неколико кључних апликација недоступним.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ово је вероватно изазвано кешом или акцелератором као што су ЗендОПкеш или еАкцелератор.",
diff --git a/settings/l10n/th_TH.js b/settings/l10n/th_TH.js
index 043f3429bf3..d72dc37b703 100644
--- a/settings/l10n/th_TH.js
+++ b/settings/l10n/th_TH.js
@@ -119,7 +119,7 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "กรุณาตรวจสอบเอกสารการติดตั้งสำหรับการบันทึกการตั้งค่าและการกำหนดค่า PHP ของเซิร์ฟเวอร์ของคุณโดยเฉพาะอย่างยิ่งเมื่อใช้ PHP-FPM",
+ "Please check the <a target=\"_blank\" href=\"%s\">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." : "ตั้งค่าให้สามารถอ่านได้อย่างเดียวถูกเปิดใช้งาน นี้จะช่วยป้องกันการตั้งค่าผ่านทางบางเว็บอินเตอร์เฟซ นอกจากนี้จะต้องเขียนไฟล์ด้วยตนเองสำหรับทุกการอัพเดท",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "เห็นได้ชัดว่าการตั้งค่า PHP จะตัดบล็อคเอกสารแบบอินไลน์ ซึ่งจะทำให้แอพพลิเคชันอีกหลายแกนไม่สามารถเข้าถึงได้",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "นี้อาจเกิดจาก cache/accelerator อย่างเช่น Zend OPcache หรือ eAccelerator",
diff --git a/settings/l10n/th_TH.json b/settings/l10n/th_TH.json
index e67cc01f279..f2e4af2f838 100644
--- a/settings/l10n/th_TH.json
+++ b/settings/l10n/th_TH.json
@@ -117,7 +117,7 @@
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "กรุณาตรวจสอบเอกสารการติดตั้งสำหรับการบันทึกการตั้งค่าและการกำหนดค่า PHP ของเซิร์ฟเวอร์ของคุณโดยเฉพาะอย่างยิ่งเมื่อใช้ PHP-FPM",
+ "Please check the <a target=\"_blank\" href=\"%s\">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." : "ตั้งค่าให้สามารถอ่านได้อย่างเดียวถูกเปิดใช้งาน นี้จะช่วยป้องกันการตั้งค่าผ่านทางบางเว็บอินเตอร์เฟซ นอกจากนี้จะต้องเขียนไฟล์ด้วยตนเองสำหรับทุกการอัพเดท",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "เห็นได้ชัดว่าการตั้งค่า PHP จะตัดบล็อคเอกสารแบบอินไลน์ ซึ่งจะทำให้แอพพลิเคชันอีกหลายแกนไม่สามารถเข้าถึงได้",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "นี้อาจเกิดจาก cache/accelerator อย่างเช่น Zend OPcache หรือ eAccelerator",
diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js
index 89395920948..e23662341fb 100644
--- a/settings/l10n/tr.js
+++ b/settings/l10n/tr.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP sistem değişkenleri sorgusuna uygun olarak ayarlanmamış görünüyor. getenv(\"PATH\") komutu sadece boş bir cevap döndürüyor.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Lütfen kurulum belgelendirmesindeki php ayarlama notlarını ve sunucudaki özellikle php-fpm kullanırken php ayarlamalarını kontrol edin.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu, bazı ayarların web arayüzü ile yapılandırılmasını önler. Ayrıca, bu dosya her güncelleme sırasında el ile yazılabilir yapılmalıdır.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satırıçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek (core) uygulamalarını erişilemez yapacak.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle gerçekleşir.",
diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json
index 51ec1a007e0..8c7a39f0a2a 100644
--- a/settings/l10n/tr.json
+++ b/settings/l10n/tr.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP sistem değişkenleri sorgusuna uygun olarak ayarlanmamış görünüyor. getenv(\"PATH\") komutu sadece boş bir cevap döndürüyor.",
- "Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Lütfen kurulum belgelendirmesindeki php ayarlama notlarını ve sunucudaki özellikle php-fpm kullanırken php ayarlamalarını kontrol edin.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu, bazı ayarların web arayüzü ile yapılandırılmasını önler. Ayrıca, bu dosya her güncelleme sırasında el ile yazılabilir yapılmalıdır.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satırıçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek (core) uygulamalarını erişilemez yapacak.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle gerçekleşir.",
diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js
index 6b6d50dccb2..6fa83464bc0 100644
--- a/settings/l10n/zh_CN.js
+++ b/settings/l10n/zh_CN.js
@@ -119,7 +119,6 @@ OC.L10N.register(
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "请检查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." : "只读配置已启用。这样可防止通过 WEB 接口设置一些配置。此外,每次更新后该文件需要手动设置为可写。",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 被设置为移除行内 <doc> 块,这将导致数个核心应用无法访问。",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "这可能是由缓存/加速器造成的,例如 Zend OPcache 或 eAccelerator。",
diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json
index 41025e81a7d..8b34997b2a7 100644
--- a/settings/l10n/zh_CN.json
+++ b/settings/l10n/zh_CN.json
@@ -117,7 +117,6 @@
"SSL" : "SSL",
"TLS" : "TLS",
"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 installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm." : "请检查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." : "只读配置已启用。这样可防止通过 WEB 接口设置一些配置。此外,每次更新后该文件需要手动设置为可写。",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 被设置为移除行内 <doc> 块,这将导致数个核心应用无法访问。",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "这可能是由缓存/加速器造成的,例如 Zend OPcache 或 eAccelerator。",
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
index 91e76d24fbb..36088d9f8c2 100644
--- a/settings/templates/admin.php
+++ b/settings/templates/admin.php
@@ -73,7 +73,7 @@ if ($_['getenvServerNotWorking']) {
?>
<li>
<?php p($l->t('php does not seem to be setup properly to query system environment variables. The test with getenv("PATH") only returns an empty response.')); ?><br>
- <?php p($l->t('Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm.')); ?>
+ <?php print_unescaped($l->t('Please check the <a target="_blank" href="%s">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm.', link_to_docs('admin-php-fpm'))); ?>
</li>
<?php
}
@@ -556,16 +556,16 @@ if ($_['cronErrors']) {
</ul>
</div>
+<?php if (!empty($_['updaterAppPanel'])): ?>
+ <div id="updater"><?php print_unescaped($_['updaterAppPanel']); ?></div>
+<?php endif; ?>
+
<div class="section">
<h2><?php p($l->t('Version'));?></h2>
<strong><?php p($theme->getTitle()); ?></strong> <?php p(OC_Util::getHumanVersion()) ?>
<?php include('settings.development.notice.php'); ?>
</div>
-<?php if (!empty($_['updaterAppPanel'])): ?>
- <div id="updater"><?php print_unescaped($_['updaterAppPanel']); ?></div>
-<?php endif; ?>
-
<div class="section credits-footer">
<p><?php print_unescaped($theme->getShortFooter()); ?></p>
</div>
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index 490133c9f25..c0adaf9c5a3 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -83,7 +83,7 @@ if($_['passwordChangeSupported']) {
placeholder="<?php echo $l->t('New password');?>"
data-typetoggle="#personal-show"
autocomplete="off" autocapitalize="off" autocorrect="off" />
- <input type="checkbox" id="personal-show" name="show" /><label for="personal-show"></label>
+ <input type="checkbox" id="personal-show" name="show" /><label for="personal-show" class="svg"></label>
<input id="passwordbutton" type="submit" value="<?php echo $l->t('Change password');?>" />
<br/>
<div class="strengthify-wrapper"></div>
diff --git a/settings/users.php b/settings/users.php
index d4e51900ddd..843995a57f9 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -41,7 +41,7 @@ $groupManager = \OC_Group::getManager();
// Set the sort option: SORT_USERCOUNT or SORT_GROUPNAME
$sortGroupsBy = \OC\Group\MetaData::SORT_USERCOUNT;
-if (class_exists('\OCA\user_ldap\GROUP_LDAP')) {
+if (\OC_App::isEnabled('user_ldap')) {
$isLDAPUsed =
$groupManager->isBackendUsed('\OCA\user_ldap\GROUP_LDAP')
|| $groupManager->isBackendUsed('\OCA\user_ldap\Group_Proxy');
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index 8bca05b1a18..86bedc3f325 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -10,9 +10,8 @@ require_once __DIR__ . '/../lib/base.php';
\OC::$loader->addValidRoot(OC::$SERVERROOT . '/tests');
-// load minimum set of apps
-OC_App::loadApps(array('authentication'));
-OC_App::loadApps(array('filesystem', 'logging'));
+// load all enabled apps
+\OC_App::loadApps();
if (!class_exists('PHPUnit_Framework_TestCase')) {
require_once('PHPUnit/Autoload.php');
diff --git a/tests/core/command/maintenance/mimetype/updatedbtest.php b/tests/core/command/maintenance/mimetype/updatedbtest.php
new file mode 100644
index 00000000000..217301102c5
--- /dev/null
+++ b/tests/core/command/maintenance/mimetype/updatedbtest.php
@@ -0,0 +1,184 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace Tests\Core\Command\Maintenance\Mimetype;
+
+use OC\Core\Command\Maintenance\Mimetype\UpdateDB;
+use Test\TestCase;
+use OCP\Files\IMimeTypeDetector;
+use OCP\Files\IMimeTypeLoader;
+
+class UpdateDBTest extends TestCase {
+ /** @var IMimeTypeDetector */
+ protected $detector;
+ /** @var IMimeTypeLoader */
+ protected $loader;
+
+ /** @var \PHPUnit_Framework_MockObject_MockObject */
+ protected $consoleInput;
+ /** @var \PHPUnit_Framework_MockObject_MockObject */
+ protected $consoleOutput;
+
+ /** @var \Symfony\Component\Console\Command\Command */
+ protected $command;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->detector = $this->getMockBuilder('OC\Files\Type\Detection')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->loader = $this->getMockBuilder('OC\Files\Type\Loader')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->consoleInput = $this->getMock('Symfony\Component\Console\Input\InputInterface');
+ $this->consoleOutput = $this->getMock('Symfony\Component\Console\Output\OutputInterface');
+
+ $this->command = new UpdateDB($this->detector, $this->loader);
+ }
+
+ public function testNoop() {
+ $this->consoleInput->method('getOption')
+ ->with('repair-filecache')
+ ->willReturn(false);
+
+ $this->detector->expects($this->once())
+ ->method('getAllMappings')
+ ->willReturn([
+ 'ext' => ['testing/existingmimetype']
+ ]);
+ $this->loader->expects($this->once())
+ ->method('exists')
+ ->with('testing/existingmimetype')
+ ->willReturn(true);
+
+ $this->loader->expects($this->never())
+ ->method('updateFilecache');
+
+ $this->consoleOutput->expects($this->at(0))
+ ->method('writeln')
+ ->with('Added 0 new mimetypes');
+ $this->consoleOutput->expects($this->at(1))
+ ->method('writeln')
+ ->with('Updated 0 filecache rows');
+
+ self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
+ }
+
+ public function testAddMimetype() {
+ $this->consoleInput->method('getOption')
+ ->with('repair-filecache')
+ ->willReturn(false);
+
+ $this->detector->expects($this->once())
+ ->method('getAllMappings')
+ ->willReturn([
+ 'ext' => ['testing/existingmimetype'],
+ 'new' => ['testing/newmimetype']
+ ]);
+ $this->loader->expects($this->exactly(2))
+ ->method('exists')
+ ->will($this->returnValueMap([
+ ['testing/existingmimetype', true],
+ ['testing/newmimetype', false],
+ ]));
+ $this->loader->expects($this->exactly(2))
+ ->method('getId')
+ ->will($this->returnValueMap([
+ ['testing/existingmimetype', 1],
+ ['testing/newmimetype', 2],
+ ]));
+
+ $this->loader->expects($this->once())
+ ->method('updateFilecache')
+ ->with('new', 2)
+ ->willReturn(3);
+
+ $this->consoleOutput->expects($this->at(0))
+ ->method('writeln')
+ ->with('Added mimetype "testing/newmimetype" to database');
+ $this->consoleOutput->expects($this->at(1))
+ ->method('writeln')
+ ->with('Updated 3 filecache rows for mimetype "testing/newmimetype"');
+
+ $this->consoleOutput->expects($this->at(2))
+ ->method('writeln')
+ ->with('Added 1 new mimetypes');
+ $this->consoleOutput->expects($this->at(3))
+ ->method('writeln')
+ ->with('Updated 3 filecache rows');
+
+ self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
+ }
+
+ public function testSkipComments() {
+ $this->detector->expects($this->once())
+ ->method('getAllMappings')
+ ->willReturn([
+ '_comment' => 'some comment in the JSON'
+ ]);
+ $this->loader->expects($this->never())
+ ->method('exists');
+
+ self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
+ }
+
+ public function testRepairFilecache() {
+ $this->consoleInput->method('getOption')
+ ->with('repair-filecache')
+ ->willReturn(true);
+
+ $this->detector->expects($this->once())
+ ->method('getAllMappings')
+ ->willReturn([
+ 'ext' => ['testing/existingmimetype'],
+ ]);
+ $this->loader->expects($this->exactly(1))
+ ->method('exists')
+ ->will($this->returnValueMap([
+ ['testing/existingmimetype', true],
+ ]));
+ $this->loader->expects($this->exactly(1))
+ ->method('getId')
+ ->will($this->returnValueMap([
+ ['testing/existingmimetype', 1],
+ ]));
+
+ $this->loader->expects($this->once())
+ ->method('updateFilecache')
+ ->with('ext', 1)
+ ->willReturn(3);
+
+ $this->consoleOutput->expects($this->at(0))
+ ->method('writeln')
+ ->with('Updated 3 filecache rows for mimetype "testing/existingmimetype"');
+
+ $this->consoleOutput->expects($this->at(1))
+ ->method('writeln')
+ ->with('Added 0 new mimetypes');
+ $this->consoleOutput->expects($this->at(2))
+ ->method('writeln')
+ ->with('Updated 3 filecache rows');
+
+ self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
+ }
+}
diff --git a/tests/karma.config.js b/tests/karma.config.js
index 7b3877f7766..d3280b2939a 100644
--- a/tests/karma.config.js
+++ b/tests/karma.config.js
@@ -71,6 +71,16 @@ module.exports = function(config) {
testFiles: ['apps/files_external/tests/js/*.js']
},
{
+ name: 'files_versions',
+ srcFiles: [
+ // need to enforce loading order...
+ 'apps/files_versions/js/versionmodel.js',
+ 'apps/files_versions/js/versioncollection.js',
+ 'apps/files_versions/js/versionstabview.js'
+ ],
+ testFiles: ['apps/files_versions/tests/js/**/*.js']
+ },
+ {
name: 'settings',
srcFiles: [
'settings/js/apps.js',
diff --git a/tests/lib/appconfig.php b/tests/lib/appconfig.php
index 5a2cb3f88fc..5ea446aee51 100644
--- a/tests/lib/appconfig.php
+++ b/tests/lib/appconfig.php
@@ -7,49 +7,123 @@
* See the COPYING-README file.
*/
-class Test_Appconfig extends \Test\TestCase {
+namespace Test\Lib;
+
+use Test\TestCase;
+
+class AppConfig extends TestCase {
/** @var \OCP\IAppConfig */
protected $appConfig;
/** @var \OCP\IDBConnection */
protected $connection;
+ protected $originalConfig;
+
public function setUp() {
parent::setUp();
$this->connection = \OC::$server->getDatabaseConnection();
- $this->registerAppConfig(new \OC\AppConfig(\OC::$server->getDatabaseConnection()));
-
- $query = $this->connection->prepare('DELETE FROM `*PREFIX*appconfig` WHERE `appid` = ?');
- $query->execute(array('testapp'));
- $query->execute(array('someapp'));
- $query->execute(array('123456'));
- $query->execute(array('anotherapp'));
-
- $query = $this->connection->prepare('INSERT INTO `*PREFIX*appconfig` VALUES (?, ?, ?)');
-
- $query->execute(array('testapp', 'enabled', 'true'));
- $query->execute(array('testapp', 'installed_version', '1.2.3'));
- $query->execute(array('testapp', 'depends_on', 'someapp'));
- $query->execute(array('testapp', 'deletethis', 'deletethis'));
- $query->execute(array('testapp', 'key', 'value'));
-
- $query->execute(array('someapp', 'key', 'value'));
- $query->execute(array('someapp', 'otherkey', 'othervalue'));
-
- $query->execute(array('123456', 'key', 'value'));
- $query->execute(array('123456', 'enabled', 'false'));
-
- $query->execute(array('anotherapp', 'key', 'value'));
- $query->execute(array('anotherapp', 'enabled', 'false'));
+ $sql = $this->connection->getQueryBuilder();
+ $sql->select('*')
+ ->from('appconfig');
+ $result = $sql->execute();
+ $this->originalConfig = $result->fetchAll();
+ $result->closeCursor();
+
+ $sql = $this->connection->getQueryBuilder();
+ $sql->delete('appconfig');
+ $sql->execute();
+
+ $this->registerAppConfig(new \OC\AppConfig($this->connection));
+
+ $sql = $this->connection->getQueryBuilder();
+ $sql->insert('appconfig')
+ ->values([
+ 'appid' => $sql->createParameter('appid'),
+ 'configkey' => $sql->createParameter('configkey'),
+ 'configvalue' => $sql->createParameter('configvalue'),
+ ]);
+
+ $sql->setParameters([
+ 'appid' => 'testapp',
+ 'configkey' => 'enabled',
+ 'configvalue' => 'true',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => 'testapp',
+ 'configkey' => 'installed_version',
+ 'configvalue' => '1.2.3',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => 'testapp',
+ 'configkey' => 'depends_on',
+ 'configvalue' => 'someapp',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => 'testapp',
+ 'configkey' => 'deletethis',
+ 'configvalue' => 'deletethis',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => 'testapp',
+ 'configkey' => 'key',
+ 'configvalue' => 'value',
+ ])->execute();
+
+ $sql->setParameters([
+ 'appid' => 'someapp',
+ 'configkey' => 'key',
+ 'configvalue' => 'value',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => 'someapp',
+ 'configkey' => 'otherkey',
+ 'configvalue' => 'othervalue',
+ ])->execute();
+
+ $sql->setParameters([
+ 'appid' => '123456',
+ 'configkey' => 'key',
+ 'configvalue' => 'value',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => '123456',
+ 'configkey' => 'enabled',
+ 'configvalue' => 'false',
+ ])->execute();
+
+ $sql->setParameters([
+ 'appid' => 'anotherapp',
+ 'configkey' => 'key',
+ 'configvalue' => 'value',
+ ])->execute();
+ $sql->setParameters([
+ 'appid' => 'anotherapp',
+ 'configkey' => 'enabled',
+ 'configvalue' => 'false',
+ ])->execute();
}
public function tearDown() {
- $query = $this->connection->prepare('DELETE FROM `*PREFIX*appconfig` WHERE `appid` = ?');
- $query->execute(array('testapp'));
- $query->execute(array('someapp'));
- $query->execute(array('123456'));
- $query->execute(array('anotherapp'));
+ $sql = $this->connection->getQueryBuilder();
+ $sql->delete('appconfig');
+ $sql->execute();
+
+ $sql = $this->connection->getQueryBuilder();
+ $sql->insert('appconfig')
+ ->values([
+ 'appid' => $sql->createParameter('appid'),
+ 'configkey' => $sql->createParameter('configkey'),
+ 'configvalue' => $sql->createParameter('configvalue'),
+ ]);
+
+ foreach ($this->originalConfig as $configs) {
+ $sql->setParameter('appid', $configs['appid'])
+ ->setParameter('configkey', $configs['configkey'])
+ ->setParameter('configvalue', $configs['configvalue']);
+ $sql->execute();
+ }
$this->registerAppConfig(new \OC\AppConfig(\OC::$server->getDatabaseConnection()));
parent::tearDown();
@@ -61,217 +135,179 @@ class Test_Appconfig extends \Test\TestCase {
* @param \OCP\IAppConfig $appConfig
*/
protected function registerAppConfig($appConfig) {
- \OC::$server->registerService('AppConfig', function ($c) use ($appConfig) {
+ \OC::$server->registerService('AppConfig', function () use ($appConfig) {
return $appConfig;
});
}
- public function getAppConfigs() {
- return [
- [new \OC\AppConfig(\OC::$server->getDatabaseConnection())],
- ];
- }
+ public function testGetApps() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testGetApps($callable) {
- $query = \OC_DB::prepare('SELECT DISTINCT `appid` FROM `*PREFIX*appconfig` ORDER BY `appid`');
- $result = $query->execute();
- $expected = array();
- while ($row = $result->fetchRow()) {
- $expected[] = $row['appid'];
- }
- sort($expected);
- $apps = call_user_func([$callable, 'getApps']);
- $this->assertEquals($expected, $apps);
+ $this->assertEquals([
+ 'anotherapp',
+ 'someapp',
+ 'testapp',
+ '123456',
+ ], $config->getApps());
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testGetKeys($callable) {
- $query = \OC_DB::prepare('SELECT `configkey` FROM `*PREFIX*appconfig` WHERE `appid` = ?');
- $result = $query->execute(array('testapp'));
- $expected = array();
- while($row = $result->fetchRow()) {
- $expected[] = $row["configkey"];
- }
- sort($expected);
- $keys = call_user_func([$callable, 'getKeys'], 'testapp');
- $this->assertEquals($expected, $keys);
+ public function testGetKeys() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $keys = $config->getKeys('testapp');
+ $this->assertEquals([
+ 'deletethis',
+ 'depends_on',
+ 'enabled',
+ 'installed_version',
+ 'key',
+ ], $keys);
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testGetValue($callable) {
- $value = call_user_func([$callable, 'getValue'], 'testapp', 'installed_version');
+ public function testGetValue() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $value = $config->getValue('testapp', 'installed_version');
$this->assertConfigKey('testapp', 'installed_version', $value);
- $value = call_user_func([$callable, 'getValue'], 'testapp', 'nonexistant');
+ $value = $config->getValue('testapp', 'nonexistant');
$this->assertNull($value);
- $value = call_user_func([$callable, 'getValue'], 'testapp', 'nonexistant', 'default');
+ $value = $config->getValue('testapp', 'nonexistant', 'default');
$this->assertEquals('default', $value);
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testHasKey($callable) {
- $value = call_user_func([$callable, 'hasKey'], 'testapp', 'installed_version');
- $this->assertTrue($value);
+ public function testHasKey() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
- $value = call_user_func([$callable, 'hasKey'], 'nonexistant', 'nonexistant');
- $this->assertFalse($value);
+ $this->assertTrue($config->hasKey('testapp', 'installed_version'));
+ $this->assertFalse($config->hasKey('testapp', 'nonexistant'));
+ $this->assertFalse($config->hasKey('nonexistant', 'nonexistant'));
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testSetValue($callable) {
- call_user_func([$callable, 'setValue'], 'testapp', 'installed_version', '1.33.7');
+ public function testSetValueUpdate() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $this->assertEquals('1.2.3', $config->getValue('testapp', 'installed_version'));
+ $this->assertConfigKey('testapp', 'installed_version', '1.2.3');
+
+ $this->assertFalse($config->setValue('testapp', 'installed_version', '1.2.3'));
+
+ $this->assertEquals('1.2.3', $config->getValue('testapp', 'installed_version'));
+ $this->assertConfigKey('testapp', 'installed_version', '1.2.3');
+
+ $this->assertTrue($config->setValue('testapp', 'installed_version', '1.33.7'));
+
+
+ $this->assertEquals('1.33.7', $config->getValue('testapp', 'installed_version'));
$this->assertConfigKey('testapp', 'installed_version', '1.33.7');
- call_user_func([$callable, 'setValue'], 'someapp', 'somekey', 'somevalue');
+ $config->setValue('someapp', 'somekey', 'somevalue');
$this->assertConfigKey('someapp', 'somekey', 'somevalue');
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testDeleteKey($callable) {
- call_user_func([$callable, 'deleteKey'], 'testapp', 'deletethis');
- $query = \OC_DB::prepare('SELECT `configvalue` FROM `*PREFIX*appconfig` WHERE `appid` = ? AND `configkey` = ?');
- $query->execute(array('testapp', 'deletethis'));
- $result = (bool)$query->fetchRow();
+ public function testSetValueInsert() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $this->assertFalse($config->hasKey('someapp', 'somekey'));
+ $this->assertNull($config->getValue('someapp', 'somekey'));
+
+ $this->assertTrue($config->setValue('someapp', 'somekey', 'somevalue'));
+
+ $this->assertTrue($config->hasKey('someapp', 'somekey'));
+ $this->assertEquals('somevalue', $config->getValue('someapp', 'somekey'));
+ $this->assertConfigKey('someapp', 'somekey', 'somevalue');
+
+ $this->assertFalse($config->setValue('someapp', 'somekey', 'somevalue'));
+ }
+
+ public function testDeleteKey() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $this->assertTrue($config->hasKey('testapp', 'deletethis'));
+
+ $config->deleteKey('testapp', 'deletethis');
+
+ $this->assertFalse($config->hasKey('testapp', 'deletethis'));
+
+ $sql = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $sql->select('configvalue')
+ ->from('appconfig')
+ ->where($sql->expr()->eq('appid', $sql->createParameter('appid')))
+ ->andWhere($sql->expr()->eq('configkey', $sql->createParameter('configkey')))
+ ->setParameter('appid', 'testapp')
+ ->setParameter('configkey', 'deletethis');
+ $query = $sql->execute();
+ $result = $query->fetch();
+ $query->closeCursor();
$this->assertFalse($result);
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testDeleteApp($callable) {
- call_user_func([$callable, 'deleteApp'], 'someapp');
- $query = \OC_DB::prepare('SELECT `configkey` FROM `*PREFIX*appconfig` WHERE `appid` = ?');
- $query->execute(array('someapp'));
- $result = (bool)$query->fetchRow();
+ public function testDeleteApp() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $this->assertTrue($config->hasKey('someapp', 'otherkey'));
+
+ $config->deleteApp('someapp');
+
+ $this->assertFalse($config->hasKey('someapp', 'otherkey'));
+
+ $sql = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $sql->select('configvalue')
+ ->from('appconfig')
+ ->where($sql->expr()->eq('appid', $sql->createParameter('appid')))
+ ->setParameter('appid', 'someapp');
+ $query = $sql->execute();
+ $result = $query->fetch();
+ $query->closeCursor();
$this->assertFalse($result);
}
- /**
- * @dataProvider getAppConfigs
- *
- * @param mixed $callable
- */
- public function testGetValues($callable) {
- $this->assertFalse(call_user_func([$callable, 'getValues'], 'testapp', 'enabled'));
+ public function testGetValuesNotAllowed() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
- $query = \OC_DB::prepare('SELECT `configkey`, `configvalue` FROM `*PREFIX*appconfig` WHERE `appid` = ?');
- $query->execute(array('testapp'));
- $expected = array();
- while ($row = $query->fetchRow()) {
+ $this->assertFalse($config->getValues('testapp', 'enabled'));
+
+ $this->assertFalse($config->getValues(false, false));
+ }
+
+ public function testGetValues() {
+ $config = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+
+ $sql = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $sql->select(['configkey', 'configvalue'])
+ ->from('appconfig')
+ ->where($sql->expr()->eq('appid', $sql->createParameter('appid')))
+ ->setParameter('appid', 'testapp');
+ $query = $sql->execute();
+ $expected = [];
+ while ($row = $query->fetch()) {
$expected[$row['configkey']] = $row['configvalue'];
}
- $values = call_user_func([$callable, 'getValues'], 'testapp', false);
+ $query->closeCursor();
+
+ $values = $config->getValues('testapp', false);
$this->assertEquals($expected, $values);
- $query = \OC_DB::prepare('SELECT `appid`, `configvalue` FROM `*PREFIX*appconfig` WHERE `configkey` = ?');
- $query->execute(array('enabled'));
- $expected = array();
- while ($row = $query->fetchRow()) {
+ $sql = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $sql->select(['appid', 'configvalue'])
+ ->from('appconfig')
+ ->where($sql->expr()->eq('configkey', $sql->createParameter('configkey')))
+ ->setParameter('configkey', 'enabled');
+ $query = $sql->execute();
+ $expected = [];
+ while ($row = $query->fetch()) {
$expected[$row['appid']] = $row['configvalue'];
}
- $values = call_user_func([$callable, 'getValues'], false, 'enabled');
- $this->assertEquals($expected, $values);
- }
+ $query->closeCursor();
- public function testSetValueUnchanged() {
- $statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
- $statementMock->expects($this->once())
- ->method('fetch')
- ->will($this->returnValue(false));
-
- $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
- $connectionMock->expects($this->once())
- ->method('executeQuery')
- ->with($this->equalTo('SELECT `configvalue`, `configkey` FROM `*PREFIX*appconfig`'
- .' WHERE `appid` = ?'), $this->equalTo(array('bar')))
- ->will($this->returnValue($statementMock));
- $connectionMock->expects($this->once())
- ->method('insertIfNotExist')
- ->with($this->equalTo('*PREFIX*appconfig'),
- $this->equalTo(
- array(
- 'appid' => 'bar',
- 'configkey' => 'foo',
- 'configvalue' => 'v1',
- )
- ), $this->equalTo(['appid', 'configkey']))
- ->willReturn(1);
- $connectionMock->expects($this->never())
- ->method('update');
-
- $appconfig = new OC\AppConfig($connectionMock);
- $appconfig->setValue('bar', 'foo', 'v1');
- $appconfig->setValue('bar', 'foo', 'v1');
- $appconfig->setValue('bar', 'foo', 'v1');
- }
-
- public function testSetValueUnchanged2() {
- $statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false);
- $statementMock->expects($this->once())
- ->method('fetch')
- ->will($this->returnValue(false));
-
- $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);
- $connectionMock->expects($this->once())
- ->method('executeQuery')
- ->with($this->equalTo('SELECT `configvalue`, `configkey` FROM `*PREFIX*appconfig`'
- .' WHERE `appid` = ?'), $this->equalTo(array('bar')))
- ->will($this->returnValue($statementMock));
- $connectionMock->expects($this->once())
- ->method('insertIfNotExist')
- ->with($this->equalTo('*PREFIX*appconfig'),
- $this->equalTo(
- array(
- 'appid' => 'bar',
- 'configkey' => 'foo',
- 'configvalue' => 'v1',
- )
- ), $this->equalTo(['appid', 'configkey']))
- ->willReturn(1);
- $connectionMock->expects($this->once())
- ->method('update')
- ->with($this->equalTo('*PREFIX*appconfig'),
- $this->equalTo(array('configvalue' => 'v2')),
- $this->equalTo(array('appid' => 'bar', 'configkey' => 'foo'))
- );
-
- $appconfig = new OC\AppConfig($connectionMock);
- $appconfig->setValue('bar', 'foo', 'v1');
- $appconfig->setValue('bar', 'foo', 'v2');
- $appconfig->setValue('bar', 'foo', 'v2');
+ $values = $config->getValues(false, 'enabled');
+ $this->assertEquals($expected, $values);
}
public function testSettingConfigParallel() {
- $appConfig1 = new OC\AppConfig(\OC::$server->getDatabaseConnection());
- $appConfig2 = new OC\AppConfig(\OC::$server->getDatabaseConnection());
+ $appConfig1 = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
+ $appConfig2 = new \OC\AppConfig(\OC::$server->getDatabaseConnection());
$appConfig1->getValue('testapp', 'foo', 'v1');
$appConfig2->getValue('testapp', 'foo', 'v1');
@@ -286,12 +322,19 @@ class Test_Appconfig extends \Test\TestCase {
* @param string $app
* @param string $key
* @param string $expected
- * @throws \OC\DatabaseException
*/
protected function assertConfigKey($app, $key, $expected) {
- $query = \OC_DB::prepare('SELECT `configvalue` FROM `*PREFIX*appconfig` WHERE `appid` = ? AND `configkey` = ?');
- $result = $query->execute([$app, $key]);
- $actual = $result->fetchRow();
+ $sql = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+ $sql->select('configvalue')
+ ->from('appconfig')
+ ->where($sql->expr()->eq('appid', $sql->createParameter('appid')))
+ ->andWhere($sql->expr()->eq('configkey', $sql->createParameter('configkey')))
+ ->setParameter('appid', $app)
+ ->setParameter('configkey', $key);
+ $query = $sql->execute();
+ $actual = $query->fetch();
+ $query->closeCursor();
+
$this->assertEquals($expected, $actual['configvalue']);
}
}
diff --git a/tests/lib/appframework/http/JSONResponseTest.php b/tests/lib/appframework/http/JSONResponseTest.php
index 253c523934b..a98f5fc894a 100644
--- a/tests/lib/appframework/http/JSONResponseTest.php
+++ b/tests/lib/appframework/http/JSONResponseTest.php
@@ -69,7 +69,7 @@ class JSONResponseTest extends \Test\TestCase {
/**
* @return array
*/
- public function testRenderProvider() {
+ public function renderDataProvider() {
return [
[
['test' => 'hi'], '{"test":"hi"}',
@@ -81,7 +81,7 @@ class JSONResponseTest extends \Test\TestCase {
}
/**
- * @dataProvider testRenderProvider
+ * @dataProvider renderDataProvider
* @param array $input
* @param string $expected
*/
diff --git a/tests/lib/files/type/loadertest.php b/tests/lib/files/type/loadertest.php
new file mode 100644
index 00000000000..7f87afd2f4d
--- /dev/null
+++ b/tests/lib/files/type/loadertest.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * @author Robin McCorkell <rmccorkell@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Files\Type;
+
+use \OC\Files\Type\Loader;
+use \OCP\IDBConnection;
+
+class LoaderTest extends \Test\TestCase {
+ /** @var IDBConnection */
+ protected $db;
+ /** @var Loader */
+ protected $loader;
+
+ protected function setUp() {
+ $this->db = \OC::$server->getDatabaseConnection();
+ $this->loader = new Loader($this->db);
+ }
+
+ protected function tearDown() {
+ $deleteMimetypes = $this->db->getQueryBuilder();
+ $deleteMimetypes->delete('mimetypes')
+ ->where($deleteMimetypes->expr()->like(
+ 'mimetype', $deleteMimetypes->createPositionalParameter('testing/%')
+ ));
+ $deleteMimetypes->execute();
+ }
+
+
+ public function testGetMimetype() {
+ $qb = $this->db->getQueryBuilder();
+ $qb->insert('mimetypes')
+ ->values([
+ 'mimetype' => $qb->createPositionalParameter('testing/mymimetype')
+ ]);
+ $qb->execute();
+
+ $this->assertTrue($this->loader->exists('testing/mymimetype'));
+ $mimetypeId = $this->loader->getId('testing/mymimetype');
+ $this->assertNotNull($mimetypeId);
+
+ $mimetype = $this->loader->getMimetypeById($mimetypeId);
+ $this->assertEquals('testing/mymimetype', $mimetype);
+ }
+
+ public function testGetNonexistentMimetype() {
+ $this->assertFalse($this->loader->exists('testing/nonexistent'));
+ // hopefully this ID doesn't exist
+ $this->assertNull($this->loader->getMimetypeById(12345));
+ }
+
+ public function testStore() {
+ $this->assertFalse($this->loader->exists('testing/mymimetype'));
+ $mimetypeId = $this->loader->getId('testing/mymimetype');
+
+ $qb = $this->db->getQueryBuilder();
+ $qb->select('mimetype')
+ ->from('mimetypes')
+ ->where($qb->expr()->eq('id', $qb->createPositionalParameter($mimetypeId)));
+
+ $mimetype = $qb->execute()->fetch();
+ $this->assertEquals('testing/mymimetype', $mimetype['mimetype']);
+
+ $this->assertEquals('testing/mymimetype', $this->loader->getMimetypeById($mimetypeId));
+ $this->assertEquals($mimetypeId, $this->loader->getId('testing/mymimetype'));
+ }
+
+ public function testStoreExists() {
+ $mimetypeId = $this->loader->getId('testing/mymimetype');
+ $mimetypeId2 = $this->loader->getId('testing/mymimetype');
+
+ $this->assertEquals($mimetypeId, $mimetypeId2);
+ }
+
+}
diff --git a/tests/lib/memcache/memcached.php b/tests/lib/memcache/memcached.php
index 51a78996dd4..3ea9216029a 100644
--- a/tests/lib/memcache/memcached.php
+++ b/tests/lib/memcache/memcached.php
@@ -26,4 +26,27 @@ class Memcached extends Cache {
parent::setUp();
$this->instance = new \OC\Memcache\Memcached($this->getUniqueID());
}
+
+ public function testClear() {
+ // Memcached is sometimes broken with clear(), so we don't test it thoroughly
+ $value='ipsum lorum';
+ $this->instance->set('1_value1', $value);
+ $this->instance->set('1_value2', $value);
+ $this->instance->set('2_value1', $value);
+ $this->instance->set('3_value1', $value);
+
+ $this->assertTrue($this->instance->clear('1_'));
+
+ $this->assertFalse($this->instance->hasKey('1_value1'));
+ $this->assertFalse($this->instance->hasKey('1_value2'));
+ //$this->assertTrue($this->instance->hasKey('2_value1'));
+ //$this->assertTrue($this->instance->hasKey('3_value1'));
+
+ $this->assertTrue($this->instance->clear());
+
+ $this->assertFalse($this->instance->hasKey('1_value1'));
+ $this->assertFalse($this->instance->hasKey('1_value2'));
+ $this->assertFalse($this->instance->hasKey('2_value1'));
+ $this->assertFalse($this->instance->hasKey('3_value1'));
+ }
}
diff --git a/tests/lib/notification/actiontest.php b/tests/lib/notification/actiontest.php
new file mode 100644
index 00000000000..e319c250cc7
--- /dev/null
+++ b/tests/lib/notification/actiontest.php
@@ -0,0 +1,236 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace Test\Notification;
+
+
+use OC\Notification\Action;
+use OC\Notification\IAction;
+use Test\TestCase;
+
+class ActionTest extends TestCase {
+ /** @var IAction */
+ protected $action;
+
+ public function setUp() {
+ parent::setUp();
+ $this->action = new Action();
+ }
+
+ public function dataSetLabel() {
+ return [
+ ['test1'],
+ [str_repeat('a', 1)],
+ [str_repeat('a', 32)],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetLabel
+ * @param string $label
+ */
+ public function testSetLabel($label) {
+ $this->assertSame('', $this->action->getLabel());
+ $this->action->setLabel($label);
+ $this->assertSame($label, $this->action->getLabel());
+ }
+
+ public function dataSetLabelInvalid() {
+ return [
+ [true],
+ [false],
+ [0],
+ [1],
+ [''],
+ [str_repeat('a', 33)],
+ [[]],
+ [[str_repeat('a', 33)]],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetLabelInvalid
+ * @param string $label
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetLabelInvalid($label) {
+ $this->action->setLabel($label);
+ }
+
+ public function dataSetParsedLabel() {
+ return [
+ ['test1'],
+ [str_repeat('a', 1)],
+ [str_repeat('a', 32)],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetParsedLabel
+ * @param string $label
+ */
+ public function testSetParsedLabel($label) {
+ $this->assertSame('', $this->action->getParsedLabel());
+ $this->action->setParsedLabel($label);
+ $this->assertSame($label, $this->action->getParsedLabel());
+ }
+
+ public function dataSetParsedLabelInvalid() {
+ return [
+ [true],
+ [false],
+ [0],
+ [1],
+ [''],
+ [[]],
+ [[str_repeat('a', 33)]],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetParsedLabelInvalid
+ * @param string $label
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetParsedLabelInvalid($label) {
+ $this->action->setParsedLabel($label);
+ }
+
+ public function dataSetLink() {
+ return [
+ ['test1', 'GET'],
+ ['test2', 'POST'],
+ [str_repeat('a', 1), 'PUT'],
+ [str_repeat('a', 256), 'DELETE'],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetLink
+ * @param string $link
+ * @param string $type
+ */
+ public function testSetLink($link, $type) {
+ $this->assertSame('', $this->action->getLink());
+ $this->action->setLink($link, $type);
+ $this->assertSame($link, $this->action->getLink());
+ $this->assertSame($type, $this->action->getRequestType());
+ }
+
+ public function dataSetLinkInvalid() {
+ return [
+ // Invalid link
+ [true, 'GET'],
+ [false, 'GET'],
+ [0, 'GET'],
+ [1, 'GET'],
+ ['', 'GET'],
+ [str_repeat('a', 257), 'GET'],
+ [[], 'GET'],
+ [[str_repeat('a', 257)], 'GET'],
+
+ // Invalid type
+ ['url', 'notGET'],
+ ['url', true],
+ ['url', false],
+ ['url', 0],
+ ['url', 1],
+ ['url', []],
+ ['url', ['GET']],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetLinkInvalid
+ * @param string $link
+ * @param string $type
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetLinkInvalid($link, $type) {
+ $this->action->setLink($link, $type);
+ }
+
+ public function dataSetIcon() {
+ return [
+ ['test1'],
+ [str_repeat('a', 1)],
+ [str_repeat('a', 64)],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetIcon
+ * @param string $icon
+ */
+ public function testSetIcon($icon) {
+ $this->assertSame('', $this->action->getIcon());
+ $this->action->setIcon($icon);
+ $this->assertSame($icon, $this->action->getIcon());
+ }
+
+ public function dataSetIconInvalid() {
+ return [
+ [true],
+ [false],
+ [0],
+ [1],
+ [''],
+ [str_repeat('a', 65)],
+ [[]],
+ [[str_repeat('a', 65)]],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetIconInvalid
+ * @param string $icon
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetIconInvalid($icon) {
+ $this->action->setIcon($icon);
+ }
+
+ public function testIsValid() {
+ $this->assertFalse($this->action->isValid());
+ $this->assertFalse($this->action->isValidParsed());
+ $this->action->setLabel('label');
+ $this->assertFalse($this->action->isValid());
+ $this->assertFalse($this->action->isValidParsed());
+ $this->action->setLink('link', 'GET');
+ $this->assertTrue($this->action->isValid());
+ $this->assertFalse($this->action->isValidParsed());
+ }
+
+ public function testIsValidParsed() {
+ $this->assertFalse($this->action->isValid());
+ $this->assertFalse($this->action->isValidParsed());
+ $this->action->setParsedLabel('label');
+ $this->assertFalse($this->action->isValid());
+ $this->assertFalse($this->action->isValidParsed());
+ $this->action->setLink('link', 'GET');
+ $this->assertFalse($this->action->isValid());
+ $this->assertTrue($this->action->isValidParsed());
+ }
+}
diff --git a/tests/lib/notification/managertest.php b/tests/lib/notification/managertest.php
new file mode 100644
index 00000000000..fa2a0586f90
--- /dev/null
+++ b/tests/lib/notification/managertest.php
@@ -0,0 +1,345 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace Test\Notification;
+
+use OC\Notification\Manager;
+use OC\Notification\IManager;
+use Test\TestCase;
+
+class ManagerTest extends TestCase {
+ /** @var IManager */
+ protected $manager;
+
+ public function setUp() {
+ parent::setUp();
+ $this->manager = new Manager();
+ }
+
+ public function testRegisterApp() {
+ $app = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $closure = function() use ($app) {
+ return $app;
+ };
+
+ $this->assertEquals([], $this->invokePrivate($this->manager, 'getApps'));
+
+ $this->manager->registerApp($closure);
+
+ $this->assertEquals([$app], $this->invokePrivate($this->manager, 'getApps'));
+ $this->assertEquals([$app], $this->invokePrivate($this->manager, 'getApps'));
+
+ $this->manager->registerApp($closure);
+
+ $this->assertEquals([$app, $app], $this->invokePrivate($this->manager, 'getApps'));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testRegisterAppInvalid() {
+ $notifier = $this->getMockBuilder('OC\Notification\INotifier')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $closure = function() use ($notifier) {
+ return $notifier;
+ };
+
+ $this->manager->registerApp($closure);
+
+ $this->invokePrivate($this->manager, 'getApps');
+ }
+
+ public function testRegisterNotifier() {
+ $notifier = $this->getMockBuilder('OC\Notification\INotifier')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $closure = function() use ($notifier) {
+ return $notifier;
+ };
+
+ $this->assertEquals([], $this->invokePrivate($this->manager, 'getNotifiers'));
+
+ $this->manager->registerNotifier($closure);
+
+ $this->assertEquals([$notifier], $this->invokePrivate($this->manager, 'getNotifiers'));
+ $this->assertEquals([$notifier], $this->invokePrivate($this->manager, 'getNotifiers'));
+
+ $this->manager->registerNotifier($closure);
+
+ $this->assertEquals([$notifier, $notifier], $this->invokePrivate($this->manager, 'getNotifiers'));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testRegisterNotifierInvalid() {
+ $app = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $closure = function() use ($app) {
+ return $app;
+ };
+
+ $this->manager->registerNotifier($closure);
+
+ $this->invokePrivate($this->manager, 'getNotifiers');
+ }
+
+ public function testCreateNotification() {
+ $action = $this->manager->createNotification();
+ $this->assertInstanceOf('OC\Notification\INotification', $action);
+ }
+
+ public function testNotify() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification->expects($this->once())
+ ->method('isValid')
+ ->willReturn(true);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $app */
+ $app = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $app->expects($this->once())
+ ->method('notify')
+ ->with($notification);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $app2 */
+ $app2 = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $app2->expects($this->once())
+ ->method('notify')
+ ->with($notification);
+
+ $this->manager->registerApp(function() use ($app) {
+ return $app;
+ });
+ $this->manager->registerApp(function() use ($app2) {
+ return $app2;
+ });
+
+ $this->manager->notify($notification);
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testNotifyInvalid() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification->expects($this->once())
+ ->method('isValid')
+ ->willReturn(false);
+
+ $this->manager->notify($notification);
+ }
+
+ public function testPrepare() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification->expects($this->once())
+ ->method('isValidParsed')
+ ->willReturn(true);
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification2 */
+ $notification2 = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification2->expects($this->exactly(2))
+ ->method('isValidParsed')
+ ->willReturn(true);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $notifier */
+ $notifier = $this->getMockBuilder('OC\Notification\INotifier')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notifier->expects($this->once())
+ ->method('prepare')
+ ->with($notification, 'en')
+ ->willReturnArgument(0);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $notifier2 */
+ $notifier2 = $this->getMockBuilder('OC\Notification\INotifier')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notifier2->expects($this->once())
+ ->method('prepare')
+ ->with($notification, 'en')
+ ->willReturn($notification2);
+
+ $this->manager->registerNotifier(function() use ($notifier) {
+ return $notifier;
+ });
+ $this->manager->registerNotifier(function() use ($notifier2) {
+ return $notifier2;
+ });
+
+ $this->assertEquals($notification2, $this->manager->prepare($notification, 'en'));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testPrepareInvalid() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification->expects($this->once())
+ ->method('isValidParsed')
+ ->willReturn(false);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $notifier */
+ $notifier = $this->getMockBuilder('OC\Notification\INotifier')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notifier->expects($this->once())
+ ->method('prepare')
+ ->with($notification, 'de')
+ ->willReturnArgument(0);
+
+ $this->manager->registerNotifier(function() use ($notifier) {
+ return $notifier;
+ });
+
+ $this->manager->prepare($notification, 'de');
+ }
+
+ public function testPrepareNotifierThrows() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification->expects($this->once())
+ ->method('isValidParsed')
+ ->willReturn(true);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $notifier */
+ $notifier = $this->getMockBuilder('OC\Notification\INotifier')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notifier->expects($this->once())
+ ->method('prepare')
+ ->with($notification, 'de')
+ ->willThrowException(new \InvalidArgumentException);
+
+ $this->manager->registerNotifier(function() use ($notifier) {
+ return $notifier;
+ });
+
+ $this->assertEquals($notification, $this->manager->prepare($notification, 'de'));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testPrepareNoNotifier() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $notification->expects($this->once())
+ ->method('isValidParsed')
+ ->willReturn(false);
+
+ $this->manager->prepare($notification, 'en');
+ }
+
+ public function testMarkProcessed() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $app */
+ $app = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $app->expects($this->once())
+ ->method('markProcessed')
+ ->with($notification);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $app2 */
+ $app2 = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $app2->expects($this->once())
+ ->method('markProcessed')
+ ->with($notification);
+
+ $this->manager->registerApp(function() use ($app) {
+ return $app;
+ });
+ $this->manager->registerApp(function() use ($app2) {
+ return $app2;
+ });
+
+ $this->manager->markProcessed($notification);
+ }
+
+ public function testGetCount() {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('OC\Notification\INotification')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $app */
+ $app = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $app->expects($this->once())
+ ->method('getCount')
+ ->with($notification)
+ ->willReturn(21);
+
+ /** @var \OC\Notification\IApp|\PHPUnit_Framework_MockObject_MockObject $app2 */
+ $app2 = $this->getMockBuilder('OC\Notification\IApp')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $app2->expects($this->once())
+ ->method('getCount')
+ ->with($notification)
+ ->willReturn(42);
+
+ $this->manager->registerApp(function() use ($app) {
+ return $app;
+ });
+ $this->manager->registerApp(function() use ($app2) {
+ return $app2;
+ });
+
+ $this->assertSame(63, $this->manager->getCount($notification));
+ }
+}
diff --git a/tests/lib/notification/notificationtest.php b/tests/lib/notification/notificationtest.php
new file mode 100644
index 00000000000..a790a53eaa7
--- /dev/null
+++ b/tests/lib/notification/notificationtest.php
@@ -0,0 +1,601 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace Test\Notification;
+
+
+use OC\Notification\Notification;
+use OC\Notification\INotification;
+use Test\TestCase;
+
+class NotificationTest extends TestCase {
+ /** @var INotification */
+ protected $notification;
+
+ public function setUp() {
+ parent::setUp();
+ $this->notification = new Notification();
+ }
+
+ protected function dataValidString($maxLength) {
+ $dataSets = [
+ ['test1'],
+ [str_repeat('a', 1)],
+ ];
+ if ($maxLength !== false) {
+ $dataSets[] = [str_repeat('a', $maxLength)];
+ }
+ return $dataSets;
+ }
+
+ protected function dataInvalidString($maxLength) {
+ $dataSets = [
+ [true],
+ [false],
+ [0],
+ [1],
+ [''],
+ [[]],
+ ];
+ if ($maxLength !== false) {
+ $dataSets[] = [str_repeat('a', $maxLength + 1)];
+ $dataSets[] = [[str_repeat('a', $maxLength + 1)]];
+ }
+ return $dataSets;
+ }
+
+ protected function dataValidInt() {
+ return [
+ [0],
+ [1],
+ [time()],
+ ];
+ }
+
+ protected function dataInvalidInt() {
+ return [
+ [true],
+ [false],
+ [''],
+ ['a'],
+ [str_repeat('a', 256)],
+ [[]],
+ [['a']],
+ [[str_repeat('a', 256)]],
+ ];
+ }
+
+ public function dataSetApp() {
+ return $this->dataValidString(32);
+ }
+
+ /**
+ * @dataProvider dataSetApp
+ * @param string $app
+ */
+ public function testSetApp($app) {
+ $this->assertSame('', $this->notification->getApp());
+ $this->notification->setApp($app);
+ $this->assertSame($app, $this->notification->getApp());
+ }
+
+ public function dataSetAppInvalid() {
+ return $this->dataInvalidString(32);
+ }
+
+ /**
+ * @dataProvider dataSetAppInvalid
+ * @param mixed $app
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetAppInvalid($app) {
+ $this->notification->setApp($app);
+ }
+
+ public function dataSetUser() {
+ return $this->dataValidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetUser
+ * @param string $user
+ */
+ public function testSetUser($user) {
+ $this->assertSame('', $this->notification->getUser());
+ $this->notification->setUser($user);
+ $this->assertSame($user, $this->notification->getUser());
+ }
+
+ public function dataSetUserInvalid() {
+ return $this->dataInvalidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetUserInvalid
+ * @param mixed $user
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetUserInvalid($user) {
+ $this->notification->setUser($user);
+ }
+
+ public function dataSetTimestamp() {
+ return $this->dataValidInt();
+ }
+
+ /**
+ * @dataProvider dataSetTimestamp
+ * @param int $timestamp
+ */
+ public function testSetTimestamp($timestamp) {
+ $this->assertSame(0, $this->notification->getTimestamp());
+ $this->notification->setTimestamp($timestamp);
+ $this->assertSame($timestamp, $this->notification->getTimestamp());
+ }
+
+ public function dataSetTimestampInvalid() {
+ return $this->dataInvalidInt();
+ }
+
+ /**
+ * @dataProvider dataSetTimestampInvalid
+ * @param mixed $timestamp
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetTimestampInvalid($timestamp) {
+ $this->notification->setTimestamp($timestamp);
+ }
+
+ public function dataSetObject() {
+ return [
+ ['a', 1],
+ [str_repeat('a', 64), time()],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetObject
+ * @param string $type
+ * @param int $id
+ */
+ public function testSetObject($type, $id) {
+ $this->assertSame('', $this->notification->getObjectType());
+ $this->assertSame(0, $this->notification->getObjectId());
+ $this->notification->setObject($type, $id);
+ $this->assertSame($type, $this->notification->getObjectType());
+ $this->assertSame($id, $this->notification->getObjectId());
+ }
+
+ public function dataSetObjectTypeInvalid() {
+ return $this->dataInvalidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetObjectTypeInvalid
+ * @param mixed $type
+ *
+ * @expectedException \InvalidArgumentException
+ * @expectedMessage 'The given object type is invalid'
+ */
+ public function testSetObjectTypeInvalid($type) {
+ $this->notification->setObject($type, 1337);
+ }
+
+ public function dataSetObjectIdInvalid() {
+ return $this->dataInvalidInt();
+ }
+
+ /**
+ * @dataProvider dataSetObjectIdInvalid
+ * @param mixed $id
+ *
+ * @expectedException \InvalidArgumentException
+ * @expectedMessage 'The given object id is invalid'
+ */
+ public function testSetObjectIdInvalid($id) {
+ $this->notification->setObject('object', $id);
+ }
+
+ public function dataSetSubject() {
+ return [
+ ['a', []],
+ [str_repeat('a', 64), [str_repeat('a', 160)]],
+ [str_repeat('a', 64), array_fill(0, 160, 'a')],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetSubject
+ * @param string $subject
+ * @param array $parameters
+ */
+ public function testSetSubject($subject, $parameters) {
+ $this->assertSame('', $this->notification->getSubject());
+ $this->assertSame([], $this->notification->getSubjectParameters());
+ $this->notification->setSubject($subject, $parameters);
+ $this->assertSame($subject, $this->notification->getSubject());
+ $this->assertSame($parameters, $this->notification->getSubjectParameters());
+ }
+
+ public function dataSetSubjectInvalidSubject() {
+ return $this->dataInvalidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetSubjectInvalidSubject
+ * @param mixed $subject
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetSubjectInvalidSubject($subject) {
+ $this->notification->setSubject($subject, []);
+ }
+
+ public function dataSetParsedSubject() {
+ return $this->dataValidString(false);
+ }
+
+ /**
+ * @dataProvider dataSetParsedSubject
+ * @param string $subject
+ */
+ public function testSetParsedSubject($subject) {
+ $this->assertSame('', $this->notification->getParsedSubject());
+ $this->notification->setParsedSubject($subject);
+ $this->assertSame($subject, $this->notification->getParsedSubject());
+ }
+
+ public function dataSetParsedSubjectInvalid() {
+ return $this->dataInvalidString(false);
+ }
+
+ /**
+ * @dataProvider dataSetParsedSubjectInvalid
+ * @param mixed $subject
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetParsedSubjectInvalid($subject) {
+ $this->notification->setParsedSubject($subject);
+ }
+
+ public function dataSetMessage() {
+ return [
+ ['a', []],
+ [str_repeat('a', 64), [str_repeat('a', 160)]],
+ [str_repeat('a', 64), array_fill(0, 160, 'a')],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSetMessage
+ * @param string $message
+ * @param array $parameters
+ */
+ public function testSetMessage($message, $parameters) {
+ $this->assertSame('', $this->notification->getMessage());
+ $this->assertSame([], $this->notification->getMessageParameters());
+ $this->notification->setMessage($message, $parameters);
+ $this->assertSame($message, $this->notification->getMessage());
+ $this->assertSame($parameters, $this->notification->getMessageParameters());
+ }
+
+ public function dataSetMessageInvalidMessage() {
+ return $this->dataInvalidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetMessageInvalidMessage
+ * @param mixed $message
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetMessageInvalidMessage($message) {
+ $this->notification->setMessage($message, []);
+ }
+
+ public function dataSetParsedMessage() {
+ return $this->dataValidString(false);
+ }
+
+ /**
+ * @dataProvider dataSetParsedMessage
+ * @param string $message
+ */
+ public function testSetParsedMessage($message) {
+ $this->assertSame('', $this->notification->getParsedMessage());
+ $this->notification->setParsedMessage($message);
+ $this->assertSame($message, $this->notification->getParsedMessage());
+ }
+
+ public function dataSetParsedMessageInvalid() {
+ return $this->dataInvalidString(false);
+ }
+
+ /**
+ * @dataProvider dataSetParsedMessageInvalid
+ * @param mixed $message
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetParsedMessageInvalid($message) {
+ $this->notification->setParsedMessage($message);
+ }
+
+ public function dataSetLink() {
+ return $this->dataValidString(4000);
+ }
+
+ /**
+ * @dataProvider dataSetLink
+ * @param string $link
+ */
+ public function testSetLink($link) {
+ $this->assertSame('', $this->notification->getLink());
+ $this->notification->setLink($link);
+ $this->assertSame($link, $this->notification->getLink());
+ }
+
+ public function dataSetLinkInvalid() {
+ return $this->dataInvalidString(4000);
+ }
+
+ /**
+ * @dataProvider dataSetLinkInvalid
+ * @param mixed $link
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetLinkInvalid($link) {
+ $this->notification->setLink($link);
+ }
+
+ public function dataSetIcon() {
+ return $this->dataValidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetIcon
+ * @param string $icon
+ */
+ public function testSetIcon($icon) {
+ $this->assertSame('', $this->notification->getIcon());
+ $this->notification->setIcon($icon);
+ $this->assertSame($icon, $this->notification->getIcon());
+ }
+
+ public function dataSetIconInvalid() {
+ return $this->dataInvalidString(64);
+ }
+
+ /**
+ * @dataProvider dataSetIconInvalid
+ * @param mixed $icon
+ *
+ * @expectedException \InvalidArgumentException
+ */
+ public function testSetIconInvalid($icon) {
+ $this->notification->setIcon($icon);
+ }
+
+ public function testCreateAction() {
+ $action = $this->notification->createAction();
+ $this->assertInstanceOf('OC\Notification\IAction', $action);
+ }
+
+ public function testAddAction() {
+ /** @var \OC\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */
+ $action = $this->getMockBuilder('OC\Notification\IAction')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $action->expects($this->once())
+ ->method('isValid')
+ ->willReturn(true);
+ $action->expects($this->never())
+ ->method('isValidParsed');
+
+ $this->notification->addAction($action);
+
+ $this->assertEquals([$action], $this->notification->getActions());
+ $this->assertEquals([], $this->notification->getParsedActions());
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testAddActionInvalid() {
+ /** @var \OC\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */
+ $action = $this->getMockBuilder('OC\Notification\IAction')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $action->expects($this->once())
+ ->method('isValid')
+ ->willReturn(false);
+ $action->expects($this->never())
+ ->method('isValidParsed');
+
+ $this->notification->addAction($action);
+ }
+
+ public function testAddParsedAction() {
+ /** @var \OC\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */
+ $action = $this->getMockBuilder('OC\Notification\IAction')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $action->expects($this->once())
+ ->method('isValidParsed')
+ ->willReturn(true);
+ $action->expects($this->never())
+ ->method('isValid');
+
+ $this->notification->addParsedAction($action);
+
+ $this->assertEquals([$action], $this->notification->getParsedActions());
+ $this->assertEquals([], $this->notification->getActions());
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testAddParsedActionInvalid() {
+ /** @var \OC\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */
+ $action = $this->getMockBuilder('OC\Notification\IAction')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $action->expects($this->once())
+ ->method('isValidParsed')
+ ->willReturn(false);
+ $action->expects($this->never())
+ ->method('isValid');
+
+ $this->notification->addParsedAction($action);
+ }
+
+ public function dataIsValid() {
+ return [
+ [false, '', false],
+ [true, '', false],
+ [false, 'a', false],
+ [true, 'a', true],
+ ];
+ }
+
+ /**
+ * @dataProvider dataIsValid
+ *
+ * @param bool $isValidCommon
+ * @param string $subject
+ * @param bool $expected
+ */
+ public function testIsValid($isValidCommon, $subject, $expected) {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('\OC\Notification\Notification')
+ ->setMethods([
+ 'isValidCommon',
+ 'getSubject',
+ ])
+ ->getMock();
+
+ $notification->expects($this->once())
+ ->method('isValidCommon')
+ ->willReturn($isValidCommon);
+
+ $notification->expects(!$isValidCommon ? $this->never() : $this->once())
+ ->method('getSubject')
+ ->willReturn($subject);
+
+ $notification->expects($this->never())
+ ->method('getParsedSubject')
+ ->willReturn($subject);
+
+ $this->assertEquals($expected, $notification->isValid());
+ }
+
+ /**
+ * @dataProvider dataIsValid
+ *
+ * @param bool $isValidCommon
+ * @param string $subject
+ * @param bool $expected
+ */
+ public function testIsParsedValid($isValidCommon, $subject, $expected) {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('\OC\Notification\Notification')
+ ->setMethods([
+ 'isValidCommon',
+ 'getParsedSubject',
+ ])
+ ->getMock();
+
+ $notification->expects($this->once())
+ ->method('isValidCommon')
+ ->willReturn($isValidCommon);
+
+ $notification->expects(!$isValidCommon ? $this->never() : $this->once())
+ ->method('getParsedSubject')
+ ->willReturn($subject);
+
+ $notification->expects($this->never())
+ ->method('getSubject')
+ ->willReturn($subject);
+
+ $this->assertEquals($expected, $notification->isValidParsed());
+ }
+
+ public function dataIsValidCommon() {
+ return [
+ ['', '', 0, '', 0, false],
+ ['app', '', 0, '', 0, false],
+ ['app', 'user', 0, '', 0, false],
+ ['app', 'user', time(), '', 0, false],
+ ['app', 'user', time(), 'type', 0, false],
+ ['app', 'user', time(), 'type', 42, true],
+ ];
+ }
+
+ /**
+ * @dataProvider dataIsValidCommon
+ *
+ * @param string $app
+ * @param string $user
+ * @param int $timestamp
+ * @param string $objectType
+ * @param int $objectId
+ * @param bool $expected
+ */
+ public function testIsValidCommon($app, $user, $timestamp, $objectType, $objectId, $expected) {
+ /** @var \OC\Notification\INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
+ $notification = $this->getMockBuilder('\OC\Notification\Notification')
+ ->setMethods([
+ 'getApp',
+ 'getUser',
+ 'getTimestamp',
+ 'getObjectType',
+ 'getObjectId',
+ ])
+ ->getMock();
+
+ $notification->expects($this->any())
+ ->method('getApp')
+ ->willReturn($app);
+
+ $notification->expects($this->any())
+ ->method('getUser')
+ ->willReturn($user);
+
+ $notification->expects($this->any())
+ ->method('getTimestamp')
+ ->willReturn($timestamp);
+
+ $notification->expects($this->any())
+ ->method('getObjectType')
+ ->willReturn($objectType);
+
+ $notification->expects($this->any())
+ ->method('getObjectId')
+ ->willReturn($objectId);
+
+ $this->assertEquals($expected, $this->invokePrivate($notification, 'isValidCommon'));
+ }
+}
diff --git a/tests/lib/repair/repairmimetypes.php b/tests/lib/repair/repairmimetypes.php
index 40ffc14612b..76d4d7cc656 100644
--- a/tests/lib/repair/repairmimetypes.php
+++ b/tests/lib/repair/repairmimetypes.php
@@ -22,8 +22,17 @@ class RepairMimeTypes extends \Test\TestCase {
protected function setUp() {
parent::setUp();
- $this->storage = new \OC\Files\Storage\Temporary([]);
+ $this->savedMimetypeLoader = \OC::$server->getMimeTypeLoader();
+ $this->mimetypeLoader = $this->getMockBuilder('\OC\Files\Type\Loader')
+ ->setConstructorArgs([\OC::$server->getDatabaseConnection()])
+ ->setMethods(null)
+ ->getMock();
+ \OC::$server->registerService('MimeTypeLoader', function ($c) {
+ return $this->mimetypeLoader;
+ });
+
+ $this->storage = new \OC\Files\Storage\Temporary([]);
$this->repair = new \OC\Repair\RepairMimeTypes();
}
@@ -33,7 +42,9 @@ class RepairMimeTypes extends \Test\TestCase {
\OC_DB::executeAudited($sql, [$this->storage->getId()]);
$this->clearMimeTypes();
- DummyFileCache::clearCachedMimeTypes();
+ \OC::$server->registerService('MimeTypeLoader', function($c) {
+ return $this->savedMimetypeLoader;
+ });
parent::tearDown();
}
@@ -86,8 +97,7 @@ class RepairMimeTypes extends \Test\TestCase {
$this->repair->run();
// force mimetype reload
- DummyFileCache::clearCachedMimeTypes();
- $this->storage->getCache()->loadMimeTypes();
+ self::invokePrivate($this->mimetypeLoader, 'loadMimetypes');
$this->checkEntries($fixedMimeTypes);
}
@@ -434,14 +444,3 @@ class RepairMimeTypes extends \Test\TestCase {
}
}
-/**
- * Dummy class to access protected members
- */
-class DummyFileCache extends \OC\Files\Cache\Cache {
-
- public static function clearCachedMimeTypes() {
- self::$mimetypeIds = [];
- self::$mimetypes = [];
- }
-}
-
diff --git a/tests/lib/server.php b/tests/lib/server.php
index e73fc8b3ab1..96a476bd4d1 100644
--- a/tests/lib/server.php
+++ b/tests/lib/server.php
@@ -104,6 +104,8 @@ class Server extends \Test\TestCase {
['NavigationManager', '\OC\NavigationManager'],
['NavigationManager', '\OCP\INavigationManager'],
+ ['NotificationManager', '\OC\Notification\Manager'],
+ ['NotificationManager', '\OC\Notification\IManager'],
['UserCache', '\OC\Cache\File'],
['UserCache', '\OCP\ICache'],
diff --git a/tests/lib/session/cryptowrappingtest.php b/tests/lib/session/cryptowrappingtest.php
index 12b3c905b7f..e1fadbf933f 100644
--- a/tests/lib/session/cryptowrappingtest.php
+++ b/tests/lib/session/cryptowrappingtest.php
@@ -57,26 +57,17 @@ class CryptoWrappingTest extends TestCase {
$this->instance = new CryptoSessionData($this->wrappedSession, $this->crypto, 'PASS');
}
- public function testWrappingSet() {
- $unencryptedValue = 'foobar';
-
- $this->wrappedSession->expects($this->once())
- ->method('set')
- ->with('key', $this->crypto->encrypt(json_encode($unencryptedValue)));
- $this->instance->set('key', $unencryptedValue);
- }
-
public function testUnwrappingGet() {
$unencryptedValue = 'foobar';
$encryptedValue = $this->crypto->encrypt($unencryptedValue);
$this->wrappedSession->expects($this->once())
->method('get')
- ->with('key')
+ ->with('encrypted_session_data')
->willReturnCallback(function () use ($encryptedValue) {
return $encryptedValue;
});
- $this->assertSame($unencryptedValue, $this->wrappedSession->get('key'));
+ $this->assertSame($unencryptedValue, $this->wrappedSession->get('encrypted_session_data'));
}
}
diff --git a/tests/lib/updater.php b/tests/lib/updater.php
index 28577071b4c..763858acf5d 100644
--- a/tests/lib/updater.php
+++ b/tests/lib/updater.php
@@ -67,14 +67,68 @@ class UpdaterTest extends \Test\TestCase {
*/
public function versionCompatibilityTestData() {
return [
- ['1.0.0.0', '2.2.0', true],
- ['1.1.1.1', '2.0.0', true],
- ['5.0.3', '4.0.3', false],
- ['12.0.3', '13.4.5', true],
- ['1', '2', true],
- ['2', '2', true],
- ['6.0.5', '6.0.6', true],
- ['5.0.6', '7.0.4', false],
+ ['1', '2', '1', true],
+ ['2', '2', '2', true],
+ ['6.0.5.0', '6.0.6.0', '5.0', true],
+ ['5.0.6.0', '7.0.4.0', '6.0', false],
+ // allow upgrading within the same major release
+ ['8.0.0.0', '8.0.0.0', '8.0', true],
+ ['8.0.0.0', '8.0.0.4', '8.0', true],
+ ['8.0.0.0', '8.0.1.0', '8.0', true],
+ ['8.0.0.0', '8.0.2.0', '8.0', true],
+ // does not allow downgrading within the same major release
+ ['8.0.1.0', '8.0.0.0', '8.0', false],
+ ['8.0.2.0', '8.0.1.0', '8.0', false],
+ ['8.0.0.4', '8.0.0.0', '8.0', false],
+ // allows upgrading within the patch version
+ ['8.0.0.0', '8.0.0.1', '8.0', true],
+ ['8.0.0.0', '8.0.0.2', '8.0', true],
+ // does not allow downgrading within the same major release
+ ['8.0.0.1', '8.0.0.0', '8.0', false],
+ ['8.0.0.2', '8.0.0.0', '8.0', false],
+ // allow upgrading to the next major release
+ ['8.0.0.0', '8.1.0.0', '8.0', true],
+ ['8.0.0.0', '8.1.1.0', '8.0', true],
+ ['8.0.0.0', '8.1.1.5', '8.0', true],
+ ['8.0.0.2', '8.1.1.5', '8.0', true],
+ ['8.1.0.0', '8.2.0.0', '8.1', true],
+ ['8.1.0.2', '8.2.0.4', '8.1', true],
+ ['8.1.0.5', '8.2.0.1', '8.1', true],
+ ['8.1.0.0', '8.2.1.0', '8.1', true],
+ ['8.1.0.2', '8.2.1.5', '8.1', true],
+ ['8.1.0.5', '8.2.1.1', '8.1', true],
+ // does not allow downgrading to the previous major release
+ ['8.1.0.0', '8.0.0.0', '7.0', false],
+ ['8.1.1.0', '8.0.0.0', '7.0', false],
+ // does not allow skipping major releases
+ ['8.0.0.0', '8.2.0.0', '8.1', false],
+ ['8.0.0.0', '8.2.1.0', '8.1', false],
+ ['8.0.0.0', '9.0.1.0', '8.2', false],
+ ['8.0.0.0', '10.0.0.0', '9.3', false],
+ // allows updating to the next major release
+ ['8.2.0.0', '9.0.0.0', '8.2', true],
+ ['8.2.0.0', '9.0.0.0', '8.2', true],
+ ['8.2.0.0', '9.0.1.0', '8.2', true],
+ ['8.2.0.0', '9.0.1.1', '8.2', true],
+ ['8.2.0.2', '9.0.1.1', '8.2', true],
+ ['8.2.2.0', '9.0.1.0', '8.2', true],
+ ['8.2.2.2', '9.0.1.1', '8.2', true],
+ ['9.0.0.0', '9.1.0.0', '9.0', true],
+ ['9.0.0.0', '9.1.0.2', '9.0', true],
+ ['9.0.0.2', '9.1.0.1', '9.0', true],
+ ['9.1.0.0', '9.2.0.0', '9.1', true],
+ ['9.2.0.0', '9.3.0.0', '9.2', true],
+ ['9.3.0.0', '10.0.0.0', '9.3', true],
+ // does not allow updating to the next major release (first number)
+ ['9.0.0.0', '8.2.0.0', '8.1', false],
+ // other cases
+ ['8.0.0.0', '8.1.5.0', '8.0', true],
+ ['8.2.0.0', '9.0.0.0', '8.2', true],
+ ['8.2.0.0', '9.1.0.0', '9.0', false],
+ ['9.0.0.0', '8.1.0.0', '8.0', false],
+ ['9.0.0.0', '8.0.0.0', '7.0', false],
+ ['9.1.0.0', '8.0.0.0', '7.0', false],
+ ['8.2.0.0', '8.1.0.0', '8.0', false],
];
}
@@ -106,9 +160,9 @@ class UpdaterTest extends \Test\TestCase {
* @param string $newVersion
* @param bool $result
*/
- public function testIsUpgradePossible($oldVersion, $newVersion, $result) {
+ public function testIsUpgradePossible($oldVersion, $newVersion, $allowedVersion, $result) {
$updater = new Updater($this->httpHelper, $this->config);
- $this->assertSame($result, $updater->isUpgradePossible($oldVersion, $newVersion));
+ $this->assertSame($result, $updater->isUpgradePossible($oldVersion, $newVersion, $allowedVersion));
}
public function testCheckInCache() {
diff --git a/themes/example/defaults.php b/themes/example/defaults.php
index 0dd0d46bd9c..6fea8fa8a49 100644
--- a/themes/example/defaults.php
+++ b/themes/example/defaults.php
@@ -20,54 +20,32 @@
class OC_Theme {
- private $themeEntity;
- private $themeName;
- private $themeTitle;
- private $themeBaseUrl;
- private $themeDocBaseUrl;
- private $themeSyncClientUrl;
- private $themeSlogan;
- private $themeMailHeaderColor;
-
- /* put your custom text in these variables */
- function __construct() {
- $this->themeEntity = 'Custom Cloud Co.';
- $this->themeName = 'Custom Cloud';
- $this->themeTitle = 'Custom Cloud';
- $this->themeBaseUrl = 'https://owncloud.org';
- $this->themeDocBaseUrl = 'https://doc.owncloud.org';
- $this->themeSyncClientUrl = 'https://owncloud.org/install';
- $this->themeSlogan = 'Your custom cloud, personalized for you!';
- $this->themeMailHeaderColor = '#745bca';
- }
- /* nothing after this needs to be adjusted */
-
public function getBaseUrl() {
- return $this->themeBaseUrl;
+ return 'https://owncloud.org';
}
public function getSyncClientUrl() {
- return $this->themeSyncClientUrl;
+ return 'https://owncloud.org/install';
}
public function getDocBaseUrl() {
- return $this->themeDocBaseUrl;
+ return 'https://doc.owncloud.org';
}
public function getTitle() {
- return $this->themeTitle;
+ return 'Custom Cloud';
}
public function getName() {
- return $this->themeName;
+ return 'Custom Cloud';
}
public function getEntity() {
- return $this->themeEntity;
+ return 'Custom Cloud Co.';
}
public function getSlogan() {
- return $this->themeSlogan;
+ return 'Your custom cloud, personalized for you!';
}
public function getShortFooter() {
@@ -89,7 +67,7 @@ class OC_Theme {
}
public function getMailHeaderColor() {
- return $this->themeMailHeaderColor;
+ return '#745bca';
}
}
diff --git a/version.php b/version.php
index a115f4b26be..a6b49d9dc74 100644
--- a/version.php
+++ b/version.php
@@ -2,6 +2,7 @@
/**
* @author Frank Karlitschek <frank@owncloud.org>
* @author Lukas Reschke <lukas@owncloud.com>
+ * @author Vincent Petry <pvince81@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -22,14 +23,16 @@
// We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version=array(8, 2, 0, 4);
+$OC_Version = [8, 2, 0, 4];
// The human readable string
-$OC_VersionString='8.2 pre alpha';
+$OC_VersionString = '8.2 pre alpha';
+
+$OC_VersionCanBeUpgradedFrom = [8, 1];
// The ownCloud channel
-$OC_Channel='git';
+$OC_Channel = 'git';
// The build number
-$OC_Build='';
+$OC_Build = '';