summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/encryption/appinfo/application.php24
-rw-r--r--apps/encryption/controller/recoverycontroller.php100
-rw-r--r--apps/encryption/css/settings-admin.css (renamed from apps/files_sharing/lib/readonlycache.php)27
-rw-r--r--apps/encryption/hooks/userhooks.php4
-rw-r--r--apps/encryption/js/encryption.js2
-rw-r--r--apps/encryption/js/settings-admin.js93
-rw-r--r--apps/encryption/js/settings-personal.js50
-rw-r--r--apps/encryption/l10n/ar.js11
-rw-r--r--apps/encryption/l10n/ar.json11
-rw-r--r--apps/encryption/l10n/ast.js11
-rw-r--r--apps/encryption/l10n/ast.json11
-rw-r--r--apps/encryption/l10n/az.js11
-rw-r--r--apps/encryption/l10n/az.json11
-rw-r--r--apps/encryption/l10n/bg_BG.js11
-rw-r--r--apps/encryption/l10n/bg_BG.json11
-rw-r--r--apps/encryption/l10n/bn_BD.js10
-rw-r--r--apps/encryption/l10n/bn_BD.json10
-rw-r--r--apps/encryption/l10n/ca.js11
-rw-r--r--apps/encryption/l10n/ca.json11
-rw-r--r--apps/encryption/l10n/cs_CZ.js22
-rw-r--r--apps/encryption/l10n/cs_CZ.json22
-rw-r--r--apps/encryption/l10n/da.js13
-rw-r--r--apps/encryption/l10n/da.json13
-rw-r--r--apps/encryption/l10n/de.js22
-rw-r--r--apps/encryption/l10n/de.json22
-rw-r--r--apps/encryption/l10n/de_DE.js22
-rw-r--r--apps/encryption/l10n/de_DE.json22
-rw-r--r--apps/encryption/l10n/el.js22
-rw-r--r--apps/encryption/l10n/el.json22
-rw-r--r--apps/encryption/l10n/en_GB.js14
-rw-r--r--apps/encryption/l10n/en_GB.json14
-rw-r--r--apps/encryption/l10n/eo.js6
-rw-r--r--apps/encryption/l10n/eo.json6
-rw-r--r--apps/encryption/l10n/es.js29
-rw-r--r--apps/encryption/l10n/es.json29
-rw-r--r--apps/encryption/l10n/es_AR.js11
-rw-r--r--apps/encryption/l10n/es_AR.json11
-rw-r--r--apps/encryption/l10n/es_MX.js11
-rw-r--r--apps/encryption/l10n/es_MX.json11
-rw-r--r--apps/encryption/l10n/et_EE.js11
-rw-r--r--apps/encryption/l10n/et_EE.json11
-rw-r--r--apps/encryption/l10n/eu.js11
-rw-r--r--apps/encryption/l10n/eu.json11
-rw-r--r--apps/encryption/l10n/fa.js9
-rw-r--r--apps/encryption/l10n/fa.json9
-rw-r--r--apps/encryption/l10n/fi_FI.js22
-rw-r--r--apps/encryption/l10n/fi_FI.json22
-rw-r--r--apps/encryption/l10n/fr.js22
-rw-r--r--apps/encryption/l10n/fr.json22
-rw-r--r--apps/encryption/l10n/gl.js32
-rw-r--r--apps/encryption/l10n/gl.json32
-rw-r--r--apps/encryption/l10n/hr.js11
-rw-r--r--apps/encryption/l10n/hr.json11
-rw-r--r--apps/encryption/l10n/hu_HU.js11
-rw-r--r--apps/encryption/l10n/hu_HU.json11
-rw-r--r--apps/encryption/l10n/id.js11
-rw-r--r--apps/encryption/l10n/id.json11
-rw-r--r--apps/encryption/l10n/it.js22
-rw-r--r--apps/encryption/l10n/it.json22
-rw-r--r--apps/encryption/l10n/ja.js14
-rw-r--r--apps/encryption/l10n/ja.json14
-rw-r--r--apps/encryption/l10n/km.js4
-rw-r--r--apps/encryption/l10n/km.json4
-rw-r--r--apps/encryption/l10n/ko.js25
-rw-r--r--apps/encryption/l10n/ko.json25
-rw-r--r--apps/encryption/l10n/lb.js8
-rw-r--r--apps/encryption/l10n/lb.json6
-rw-r--r--apps/encryption/l10n/lt_LT.js11
-rw-r--r--apps/encryption/l10n/lt_LT.json11
-rw-r--r--apps/encryption/l10n/mk.js9
-rw-r--r--apps/encryption/l10n/mk.json9
-rw-r--r--apps/encryption/l10n/nb_NO.js11
-rw-r--r--apps/encryption/l10n/nb_NO.json11
-rw-r--r--apps/encryption/l10n/nl.js22
-rw-r--r--apps/encryption/l10n/nl.json22
-rw-r--r--apps/encryption/l10n/pl.js11
-rw-r--r--apps/encryption/l10n/pl.json11
-rw-r--r--apps/encryption/l10n/pt_BR.js21
-rw-r--r--apps/encryption/l10n/pt_BR.json21
-rw-r--r--apps/encryption/l10n/pt_PT.js13
-rw-r--r--apps/encryption/l10n/pt_PT.json13
-rw-r--r--apps/encryption/l10n/ro.js4
-rw-r--r--apps/encryption/l10n/ro.json4
-rw-r--r--apps/encryption/l10n/ru.js19
-rw-r--r--apps/encryption/l10n/ru.json19
-rw-r--r--apps/encryption/l10n/sk_SK.js11
-rw-r--r--apps/encryption/l10n/sk_SK.json11
-rw-r--r--apps/encryption/l10n/sl.js13
-rw-r--r--apps/encryption/l10n/sl.json13
-rw-r--r--apps/encryption/l10n/sr.js34
-rw-r--r--apps/encryption/l10n/sr.json34
-rw-r--r--apps/encryption/l10n/sv.js11
-rw-r--r--apps/encryption/l10n/sv.json11
-rw-r--r--apps/encryption/l10n/tr.js17
-rw-r--r--apps/encryption/l10n/tr.json17
-rw-r--r--apps/encryption/l10n/uk.js13
-rw-r--r--apps/encryption/l10n/uk.json13
-rw-r--r--apps/encryption/l10n/vi.js6
-rw-r--r--apps/encryption/l10n/vi.json6
-rw-r--r--apps/encryption/l10n/zh_CN.js11
-rw-r--r--apps/encryption/l10n/zh_CN.json11
-rw-r--r--apps/encryption/l10n/zh_HK.js4
-rw-r--r--apps/encryption/l10n/zh_HK.json4
-rw-r--r--apps/encryption/l10n/zh_TW.js11
-rw-r--r--apps/encryption/l10n/zh_TW.json11
-rw-r--r--apps/encryption/lib/crypto/crypt.php11
-rw-r--r--apps/encryption/lib/crypto/encryption.php114
-rw-r--r--apps/encryption/lib/keymanager.php65
-rw-r--r--apps/encryption/lib/recovery.php28
-rw-r--r--apps/encryption/lib/users/setup.php1
-rw-r--r--apps/encryption/lib/util.php7
-rw-r--r--apps/encryption/settings/settings-personal.php4
-rw-r--r--apps/encryption/templates/settings-admin.php69
-rw-r--r--apps/encryption/templates/settings-personal.php2
-rw-r--r--apps/encryption/tests/controller/RecoveryControllerTest.php179
-rw-r--r--apps/encryption/tests/hooks/UserHooksTest.php13
-rw-r--r--apps/encryption/tests/lib/KeyManagerTest.php59
-rw-r--r--apps/encryption/tests/lib/RecoveryTest.php3
-rw-r--r--apps/encryption/tests/lib/UtilTest.php4
-rw-r--r--apps/encryption/tests/lib/crypto/cryptTest.php2
-rw-r--r--apps/encryption/tests/lib/crypto/encryptionTest.php153
-rw-r--r--apps/encryption_dummy/appinfo/app.php6
-rw-r--r--apps/encryption_dummy/appinfo/info.xml20
-rw-r--r--apps/encryption_dummy/appinfo/version1
-rw-r--r--apps/encryption_dummy/img/app.svg51
-rw-r--r--apps/encryption_dummy/lib/dummymodule.php137
-rw-r--r--apps/files/appinfo/remote.php3
-rw-r--r--apps/files/css/files.css11
-rw-r--r--apps/files/js/file-upload.js12
-rw-r--r--apps/files/js/fileactions.js15
-rw-r--r--apps/files/js/filelist.js3
-rw-r--r--apps/files/l10n/ca.js1
-rw-r--r--apps/files/l10n/ca.json1
-rw-r--r--apps/files/l10n/cs_CZ.js1
-rw-r--r--apps/files/l10n/cs_CZ.json1
-rw-r--r--apps/files/l10n/da.js1
-rw-r--r--apps/files/l10n/da.json1
-rw-r--r--apps/files/l10n/de.js1
-rw-r--r--apps/files/l10n/de.json1
-rw-r--r--apps/files/l10n/de_AT.js6
-rw-r--r--apps/files/l10n/de_AT.json6
-rw-r--r--apps/files/l10n/de_DE.js1
-rw-r--r--apps/files/l10n/de_DE.json1
-rw-r--r--apps/files/l10n/el.js1
-rw-r--r--apps/files/l10n/el.json1
-rw-r--r--apps/files/l10n/en_GB.js2
-rw-r--r--apps/files/l10n/en_GB.json2
-rw-r--r--apps/files/l10n/es.js1
-rw-r--r--apps/files/l10n/es.json1
-rw-r--r--apps/files/l10n/fi_FI.js1
-rw-r--r--apps/files/l10n/fi_FI.json1
-rw-r--r--apps/files/l10n/fr.js3
-rw-r--r--apps/files/l10n/fr.json3
-rw-r--r--apps/files/l10n/gl.js1
-rw-r--r--apps/files/l10n/gl.json1
-rw-r--r--apps/files/l10n/id.js4
-rw-r--r--apps/files/l10n/id.json4
-rw-r--r--apps/files/l10n/is.js2
-rw-r--r--apps/files/l10n/is.json2
-rw-r--r--apps/files/l10n/it.js1
-rw-r--r--apps/files/l10n/it.json1
-rw-r--r--apps/files/l10n/ja.js2
-rw-r--r--apps/files/l10n/ja.json2
-rw-r--r--apps/files/l10n/ko.js4
-rw-r--r--apps/files/l10n/ko.json4
-rw-r--r--apps/files/l10n/lb.js3
-rw-r--r--apps/files/l10n/lb.json3
-rw-r--r--apps/files/l10n/mk.js1
-rw-r--r--apps/files/l10n/mk.json1
-rw-r--r--apps/files/l10n/nl.js1
-rw-r--r--apps/files/l10n/nl.json1
-rw-r--r--apps/files/l10n/pt_BR.js1
-rw-r--r--apps/files/l10n/pt_BR.json1
-rw-r--r--apps/files/l10n/ru.js11
-rw-r--r--apps/files/l10n/ru.json11
-rw-r--r--apps/files/l10n/sl.js1
-rw-r--r--apps/files/l10n/sl.json1
-rw-r--r--apps/files/l10n/sr.js1
-rw-r--r--apps/files/l10n/sr.json1
-rw-r--r--apps/files/l10n/tr.js1
-rw-r--r--apps/files/l10n/tr.json1
-rw-r--r--apps/files/l10n/uk.js1
-rw-r--r--apps/files/l10n/uk.json1
-rw-r--r--apps/files/tests/js/fileUploadSpec.js59
-rw-r--r--apps/files/tests/js/fileactionsSpec.js42
-rw-r--r--apps/files_external/3rdparty/composer.json2
-rw-r--r--apps/files_external/3rdparty/composer.lock14
-rw-r--r--apps/files_external/3rdparty/composer/installed.json14
-rw-r--r--apps/files_external/3rdparty/icewind/smb/composer.json2
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Parser.php1
-rw-r--r--apps/files_external/l10n/de_AT.js2
-rw-r--r--apps/files_external/l10n/de_AT.json2
-rw-r--r--apps/files_external/l10n/en_GB.js2
-rw-r--r--apps/files_external/l10n/en_GB.json2
-rw-r--r--apps/files_external/l10n/fr.js2
-rw-r--r--apps/files_external/l10n/fr.json2
-rw-r--r--apps/files_external/l10n/id.js9
-rw-r--r--apps/files_external/l10n/id.json9
-rw-r--r--apps/files_external/l10n/is.js2
-rw-r--r--apps/files_external/l10n/is.json2
-rw-r--r--apps/files_external/l10n/ko.js7
-rw-r--r--apps/files_external/l10n/ko.json7
-rw-r--r--apps/files_external/l10n/lb.js1
-rw-r--r--apps/files_external/l10n/lb.json1
-rw-r--r--apps/files_external/l10n/ru.js2
-rw-r--r--apps/files_external/l10n/ru.json2
-rw-r--r--apps/files_external/l10n/sr.js6
-rw-r--r--apps/files_external/l10n/sr.json6
-rw-r--r--apps/files_external/l10n/th_TH.js1
-rw-r--r--apps/files_external/l10n/th_TH.json1
-rwxr-xr-xapps/files_external/tests/env/start-ftp-morrisjobke.sh2
-rwxr-xr-xapps/files_external/tests/env/start-sftp-atmoz.sh2
-rwxr-xr-xapps/files_external/tests/env/start-smb-silvershell.sh2
-rwxr-xr-xapps/files_external/tests/env/start-smb-windows.sh2
-rwxr-xr-xapps/files_external/tests/env/start-webdav-ownCloud.sh2
-rwxr-xr-xapps/files_external/tests/env/stop-ftp-morrisjobke.sh2
-rwxr-xr-xapps/files_external/tests/env/stop-sftp-atmoz.sh2
-rwxr-xr-xapps/files_external/tests/env/stop-smb-silvershell.sh2
-rwxr-xr-xapps/files_external/tests/env/stop-smb-windows.sh2
-rwxr-xr-xapps/files_external/tests/env/stop-webdav-ownCloud.sh2
-rw-r--r--apps/files_external/tests/js/mountsfilelistSpec.js2
-rw-r--r--apps/files_sharing/api/local.php1
-rw-r--r--apps/files_sharing/appinfo/app.php37
-rw-r--r--apps/files_sharing/appinfo/application.php124
-rw-r--r--apps/files_sharing/appinfo/routes.php1
-rw-r--r--apps/files_sharing/application.php115
-rw-r--r--apps/files_sharing/css/public.css22
-rw-r--r--apps/files_sharing/js/public.js51
-rw-r--r--apps/files_sharing/js/sharedfilelist.js1
-rw-r--r--apps/files_sharing/l10n/cs_CZ.js1
-rw-r--r--apps/files_sharing/l10n/cs_CZ.json1
-rw-r--r--apps/files_sharing/l10n/de.js1
-rw-r--r--apps/files_sharing/l10n/de.json1
-rw-r--r--apps/files_sharing/l10n/de_DE.js1
-rw-r--r--apps/files_sharing/l10n/de_DE.json1
-rw-r--r--apps/files_sharing/l10n/el.js1
-rw-r--r--apps/files_sharing/l10n/el.json1
-rw-r--r--apps/files_sharing/l10n/en_GB.js2
-rw-r--r--apps/files_sharing/l10n/en_GB.json2
-rw-r--r--apps/files_sharing/l10n/es.js1
-rw-r--r--apps/files_sharing/l10n/es.json1
-rw-r--r--apps/files_sharing/l10n/fi_FI.js1
-rw-r--r--apps/files_sharing/l10n/fi_FI.json1
-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.js1
-rw-r--r--apps/files_sharing/l10n/gl.json1
-rw-r--r--apps/files_sharing/l10n/id.js1
-rw-r--r--apps/files_sharing/l10n/id.json1
-rw-r--r--apps/files_sharing/l10n/is.js2
-rw-r--r--apps/files_sharing/l10n/is.json2
-rw-r--r--apps/files_sharing/l10n/it.js1
-rw-r--r--apps/files_sharing/l10n/it.json1
-rw-r--r--apps/files_sharing/l10n/ja.js3
-rw-r--r--apps/files_sharing/l10n/ja.json3
-rw-r--r--apps/files_sharing/l10n/ko.js1
-rw-r--r--apps/files_sharing/l10n/ko.json1
-rw-r--r--apps/files_sharing/l10n/lb.js7
-rw-r--r--apps/files_sharing/l10n/lb.json7
-rw-r--r--apps/files_sharing/l10n/nl.js1
-rw-r--r--apps/files_sharing/l10n/nl.json1
-rw-r--r--apps/files_sharing/l10n/pt_BR.js1
-rw-r--r--apps/files_sharing/l10n/pt_BR.json1
-rw-r--r--apps/files_sharing/l10n/ru.js3
-rw-r--r--apps/files_sharing/l10n/ru.json3
-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.js7
-rw-r--r--apps/files_sharing/l10n/sr.json7
-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/controllers/externalsharescontroller.php1
-rw-r--r--apps/files_sharing/lib/deleteorphanedsharesjob.php11
-rw-r--r--apps/files_sharing/lib/external/manager.php12
-rw-r--r--apps/files_sharing/lib/helper.php2
-rw-r--r--apps/files_sharing/lib/mountprovider.php72
-rw-r--r--apps/files_sharing/lib/propagation/changewatcher.php76
-rw-r--r--apps/files_sharing/lib/propagation/propagationmanager.php112
-rw-r--r--apps/files_sharing/lib/propagation/recipientpropagator.php118
-rw-r--r--apps/files_sharing/lib/readonlywrapper.php5
-rw-r--r--apps/files_sharing/lib/sharedmount.php21
-rw-r--r--apps/files_sharing/lib/sharedstorage.php89
-rw-r--r--apps/files_sharing/lib/updater.php55
-rw-r--r--apps/files_sharing/publicwebdav.php3
-rw-r--r--apps/files_sharing/tests/cache.php4
-rw-r--r--apps/files_sharing/tests/controller/sharecontroller.php2
-rw-r--r--apps/files_sharing/tests/etagpropagation.php387
-rw-r--r--apps/files_sharing/tests/external/managertest.php28
-rw-r--r--apps/files_sharing/tests/permissions.php4
-rw-r--r--apps/files_sharing/tests/readonlycache.php93
-rw-r--r--apps/files_sharing/tests/sharedstorage.php5
-rw-r--r--apps/files_sharing/tests/sizepropagation.php (renamed from apps/files_sharing/tests/propagation.php)4
-rw-r--r--apps/files_sharing/tests/testcase.php9
-rw-r--r--apps/files_sharing/tests/updater.php73
-rw-r--r--apps/files_sharing/tests/watcher.php4
-rw-r--r--apps/files_trashbin/command/expire.php1
-rw-r--r--apps/files_trashbin/l10n/is.js2
-rw-r--r--apps/files_trashbin/l10n/is.json2
-rw-r--r--apps/files_trashbin/l10n/lb.js11
-rw-r--r--apps/files_trashbin/l10n/lb.json11
-rw-r--r--apps/files_trashbin/l10n/ru.js2
-rw-r--r--apps/files_trashbin/l10n/ru.json2
-rw-r--r--apps/files_trashbin/lib/storage.php35
-rw-r--r--apps/files_trashbin/lib/trashbin.php17
-rw-r--r--apps/files_trashbin/tests/storage.php179
-rw-r--r--apps/files_trashbin/tests/trashbin.php331
-rw-r--r--apps/files_versions/l10n/lb.js11
-rw-r--r--apps/files_versions/l10n/lb.json9
-rw-r--r--apps/files_versions/l10n/mk.js2
-rw-r--r--apps/files_versions/l10n/mk.json2
-rw-r--r--apps/files_versions/lib/storage.php108
-rw-r--r--apps/files_versions/tests/versions.php349
-rw-r--r--apps/user_ldap/ajax/getNewServerConfigPrefix.php5
-rw-r--r--apps/user_ldap/js/wizard/wizardTabAbstractFilter.js14
-rw-r--r--apps/user_ldap/js/wizard/wizardTabElementary.js35
-rw-r--r--apps/user_ldap/l10n/ast.js1
-rw-r--r--apps/user_ldap/l10n/ast.json1
-rw-r--r--apps/user_ldap/l10n/be.js2
-rw-r--r--apps/user_ldap/l10n/be.json2
-rw-r--r--apps/user_ldap/l10n/bg_BG.js1
-rw-r--r--apps/user_ldap/l10n/bg_BG.json1
-rw-r--r--apps/user_ldap/l10n/cs_CZ.js29
-rw-r--r--apps/user_ldap/l10n/cs_CZ.json29
-rw-r--r--apps/user_ldap/l10n/da.js6
-rw-r--r--apps/user_ldap/l10n/da.json6
-rw-r--r--apps/user_ldap/l10n/de.js61
-rw-r--r--apps/user_ldap/l10n/de.json61
-rw-r--r--apps/user_ldap/l10n/de_DE.js69
-rw-r--r--apps/user_ldap/l10n/de_DE.json69
-rw-r--r--apps/user_ldap/l10n/el.js3
-rw-r--r--apps/user_ldap/l10n/el.json3
-rw-r--r--apps/user_ldap/l10n/en_GB.js44
-rw-r--r--apps/user_ldap/l10n/en_GB.json44
-rw-r--r--apps/user_ldap/l10n/es.js15
-rw-r--r--apps/user_ldap/l10n/es.json15
-rw-r--r--apps/user_ldap/l10n/et_EE.js1
-rw-r--r--apps/user_ldap/l10n/et_EE.json1
-rw-r--r--apps/user_ldap/l10n/eu.js1
-rw-r--r--apps/user_ldap/l10n/eu.json1
-rw-r--r--apps/user_ldap/l10n/fr.js9
-rw-r--r--apps/user_ldap/l10n/fr.json9
-rw-r--r--apps/user_ldap/l10n/gl.js3
-rw-r--r--apps/user_ldap/l10n/gl.json3
-rw-r--r--apps/user_ldap/l10n/hu_HU.js1
-rw-r--r--apps/user_ldap/l10n/hu_HU.json1
-rw-r--r--apps/user_ldap/l10n/id.js29
-rw-r--r--apps/user_ldap/l10n/id.json29
-rw-r--r--apps/user_ldap/l10n/is.js2
-rw-r--r--apps/user_ldap/l10n/is.json2
-rw-r--r--apps/user_ldap/l10n/it.js3
-rw-r--r--apps/user_ldap/l10n/it.json3
-rw-r--r--apps/user_ldap/l10n/ja.js11
-rw-r--r--apps/user_ldap/l10n/ja.json11
-rw-r--r--apps/user_ldap/l10n/ko.js46
-rw-r--r--apps/user_ldap/l10n/ko.json46
-rw-r--r--apps/user_ldap/l10n/nb_NO.js1
-rw-r--r--apps/user_ldap/l10n/nb_NO.json1
-rw-r--r--apps/user_ldap/l10n/nl.js15
-rw-r--r--apps/user_ldap/l10n/nl.json15
-rw-r--r--apps/user_ldap/l10n/pl.js1
-rw-r--r--apps/user_ldap/l10n/pl.json1
-rw-r--r--apps/user_ldap/l10n/pt_BR.js3
-rw-r--r--apps/user_ldap/l10n/pt_BR.json3
-rw-r--r--apps/user_ldap/l10n/pt_PT.js1
-rw-r--r--apps/user_ldap/l10n/pt_PT.json1
-rw-r--r--apps/user_ldap/l10n/ru.js8
-rw-r--r--apps/user_ldap/l10n/ru.json8
-rw-r--r--apps/user_ldap/l10n/sk_SK.js1
-rw-r--r--apps/user_ldap/l10n/sk_SK.json1
-rw-r--r--apps/user_ldap/l10n/sl.js13
-rw-r--r--apps/user_ldap/l10n/sl.json13
-rw-r--r--apps/user_ldap/l10n/sr.js13
-rw-r--r--apps/user_ldap/l10n/sr.json13
-rw-r--r--apps/user_ldap/l10n/sr@latin.js1
-rw-r--r--apps/user_ldap/l10n/sr@latin.json1
-rw-r--r--apps/user_ldap/l10n/sv.js1
-rw-r--r--apps/user_ldap/l10n/sv.json1
-rw-r--r--apps/user_ldap/l10n/tr.js1
-rw-r--r--apps/user_ldap/l10n/tr.json1
-rw-r--r--apps/user_ldap/l10n/uk.js1
-rw-r--r--apps/user_ldap/l10n/uk.json1
-rw-r--r--apps/user_ldap/lib/connection.php15
-rw-r--r--apps/user_ldap/lib/wizard.php1
-rw-r--r--apps/user_ldap/templates/part.wizard-groupfilter.php3
-rw-r--r--apps/user_ldap/templates/part.wizard-loginfilter.php2
387 files changed, 4457 insertions, 2121 deletions
diff --git a/apps/encryption/appinfo/application.php b/apps/encryption/appinfo/application.php
index 243e227b6bb..0d6f57f46e9 100644
--- a/apps/encryption/appinfo/application.php
+++ b/apps/encryption/appinfo/application.php
@@ -24,8 +24,10 @@
namespace OCA\Encryption\AppInfo;
-use OC\Files\Filesystem;
use OC\Files\View;
+use OCA\Encryption\Controller\RecoveryController;
+use OCA\Encryption\Controller\SettingsController;
+use OCA\Encryption\Controller\StatusController;
use OCA\Encryption\Crypto\Crypt;
use OCA\Encryption\Crypto\Encryption;
use OCA\Encryption\HookManager;
@@ -92,16 +94,20 @@ class Application extends \OCP\AppFramework\App {
public function registerEncryptionModule() {
$container = $this->getContainer();
+
$this->encryptionManager->registerEncryptionModule(
Encryption::ID,
Encryption::DISPLAY_NAME,
function() use ($container) {
+
return new Encryption(
$container->query('Crypt'),
$container->query('KeyManager'),
- $container->query('Util')
+ $container->query('Util'),
+ $container->getServer()->getLogger()
);
});
+
}
public function registerServices() {
@@ -126,11 +132,11 @@ class Application extends \OCP\AppFramework\App {
function (IAppContainer $c) {
$server = $c->getServer();
- return new KeyManager($server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
+ return new KeyManager($server->getEncryptionKeyStorage(),
$c->query('Crypt'),
$server->getConfig(),
$server->getUserSession(),
- new \OCA\Encryption\Session($server->getSession()),
+ new Session($server->getSession()),
$server->getLogger(),
$c->query('Util')
);
@@ -146,14 +152,14 @@ class Application extends \OCP\AppFramework\App {
$server->getSecureRandom(),
$c->query('KeyManager'),
$server->getConfig(),
- $server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
+ $server->getEncryptionKeyStorage(),
$server->getEncryptionFilesHelper(),
- new \OC\Files\View());
+ new View());
});
$container->registerService('RecoveryController', function (IAppContainer $c) {
$server = $c->getServer();
- return new \OCA\Encryption\Controller\RecoveryController(
+ return new RecoveryController(
$c->getAppName(),
$server->getRequest(),
$server->getConfig(),
@@ -163,7 +169,7 @@ class Application extends \OCP\AppFramework\App {
$container->registerService('StatusController', function (IAppContainer $c) {
$server = $c->getServer();
- return new \OCA\Encryption\Controller\StatusController(
+ return new StatusController(
$c->getAppName(),
$server->getRequest(),
$server->getL10N($c->getAppName()),
@@ -173,7 +179,7 @@ class Application extends \OCP\AppFramework\App {
$container->registerService('SettingsController', function (IAppContainer $c) {
$server = $c->getServer();
- return new \OCA\Encryption\Controller\SettingsController(
+ return new SettingsController(
$c->getAppName(),
$server->getRequest(),
$server->getL10N($c->getAppName()),
diff --git a/apps/encryption/controller/recoverycontroller.php b/apps/encryption/controller/recoverycontroller.php
index 9c07bda62e4..f1a2651443e 100644
--- a/apps/encryption/controller/recoverycontroller.php
+++ b/apps/encryption/controller/recoverycontroller.php
@@ -26,6 +26,7 @@ namespace OCA\Encryption\Controller;
use OCA\Encryption\Recovery;
use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IRequest;
@@ -72,31 +73,36 @@ class RecoveryController extends Controller {
public function adminRecovery($recoveryPassword, $confirmPassword, $adminEnableRecovery) {
// Check if both passwords are the same
if (empty($recoveryPassword)) {
- $errorMessage = (string) $this->l->t('Missing recovery key password');
- return new DataResponse(['data' => ['message' => $errorMessage]], 500);
+ $errorMessage = (string)$this->l->t('Missing recovery key password');
+ return new DataResponse(['data' => ['message' => $errorMessage]],
+ Http::STATUS_BAD_REQUEST);
}
if (empty($confirmPassword)) {
- $errorMessage = (string) $this->l->t('Please repeat the recovery key password');
- return new DataResponse(['data' => ['message' => $errorMessage]], 500);
+ $errorMessage = (string)$this->l->t('Please repeat the recovery key password');
+ return new DataResponse(['data' => ['message' => $errorMessage]],
+ Http::STATUS_BAD_REQUEST);
}
if ($recoveryPassword !== $confirmPassword) {
- $errorMessage = (string) $this->l->t('Repeated recovery key password does not match the provided recovery key password');
- return new DataResponse(['data' => ['message' => $errorMessage]], 500);
+ $errorMessage = (string)$this->l->t('Repeated recovery key password does not match the provided recovery key password');
+ return new DataResponse(['data' => ['message' => $errorMessage]],
+ Http::STATUS_BAD_REQUEST);
}
if (isset($adminEnableRecovery) && $adminEnableRecovery === '1') {
if ($this->recovery->enableAdminRecovery($recoveryPassword)) {
- return new DataResponse(['status' =>'success', 'data' => array('message' => (string) $this->l->t('Recovery key successfully enabled'))]);
+ return new DataResponse(['data' => ['message' => (string)$this->l->t('Recovery key successfully enabled')]]);
}
- return new DataResponse(['data' => array('message' => (string) $this->l->t('Could not enable recovery key. Please check your recovery key password!'))]);
+ return new DataResponse(['data' => ['message' => (string)$this->l->t('Could not enable recovery key. Please check your recovery key password!')]], Http::STATUS_BAD_REQUEST);
} elseif (isset($adminEnableRecovery) && $adminEnableRecovery === '0') {
if ($this->recovery->disableAdminRecovery($recoveryPassword)) {
- return new DataResponse(['data' => array('message' => (string) $this->l->t('Recovery key successfully disabled'))]);
+ return new DataResponse(['data' => ['message' => (string)$this->l->t('Recovery key successfully disabled')]]);
}
- return new DataResponse(['data' => array('message' => (string) $this->l->t('Could not disable recovery key. Please check your recovery key password!'))]);
+ return new DataResponse(['data' => ['message' => (string)$this->l->t('Could not disable recovery key. Please check your recovery key password!')]], Http::STATUS_BAD_REQUEST);
}
+ // this response should never be sent but just in case.
+ return new DataResponse(['data' => ['message' => (string)$this->l->t('Missing parameters')]], Http::STATUS_BAD_REQUEST);
}
/**
@@ -108,43 +114,42 @@ class RecoveryController extends Controller {
public function changeRecoveryPassword($newPassword, $oldPassword, $confirmPassword) {
//check if both passwords are the same
if (empty($oldPassword)) {
- $errorMessage = (string) $this->l->t('Please provide the old recovery password');
- return new DataResponse(array('data' => array('message' => $errorMessage)));
+ $errorMessage = (string)$this->l->t('Please provide the old recovery password');
+ return new DataResponse(['data' => ['message' => $errorMessage]], Http::STATUS_BAD_REQUEST);
}
if (empty($newPassword)) {
- $errorMessage = (string) $this->l->t('Please provide a new recovery password');
- return new DataResponse (array('data' => array('message' => $errorMessage)));
+ $errorMessage = (string)$this->l->t('Please provide a new recovery password');
+ return new DataResponse (['data' => ['message' => $errorMessage]], Http::STATUS_BAD_REQUEST);
}
if (empty($confirmPassword)) {
- $errorMessage = (string) $this->l->t('Please repeat the new recovery password');
- return new DataResponse(array('data' => array('message' => $errorMessage)));
+ $errorMessage = (string)$this->l->t('Please repeat the new recovery password');
+ return new DataResponse(['data' => ['message' => $errorMessage]], Http::STATUS_BAD_REQUEST);
}
if ($newPassword !== $confirmPassword) {
- $errorMessage = (string) $this->l->t('Repeated recovery key password does not match the provided recovery key password');
- return new DataResponse(array('data' => array('message' => $errorMessage)));
+ $errorMessage = (string)$this->l->t('Repeated recovery key password does not match the provided recovery key password');
+ return new DataResponse(['data' => ['message' => $errorMessage]], Http::STATUS_BAD_REQUEST);
}
- $result = $this->recovery->changeRecoveryKeyPassword($newPassword, $oldPassword);
+ $result = $this->recovery->changeRecoveryKeyPassword($newPassword,
+ $oldPassword);
if ($result) {
return new DataResponse(
- array(
- 'status' => 'success' ,
- 'data' => array(
- 'message' => (string) $this->l->t('Password successfully changed.'))
- )
- );
- } else {
- return new DataResponse(
- array(
- 'data' => array
- ('message' => (string) $this->l->t('Could not change the password. Maybe the old password was not correct.'))
- )
- );
+ [
+ 'data' => [
+ 'message' => (string)$this->l->t('Password successfully changed.')]
+ ]
+ );
}
+ return new DataResponse(
+ [
+ 'data' => [
+ 'message' => (string)$this->l->t('Could not change the password. Maybe the old password was not correct.')
+ ]
+ ], Http::STATUS_BAD_REQUEST);
}
/**
@@ -159,22 +164,29 @@ class RecoveryController extends Controller {
$result = $this->recovery->setRecoveryForUser($userEnableRecovery);
if ($result) {
+ if ($userEnableRecovery === '0') {
+ return new DataResponse(
+ [
+ 'data' => [
+ 'message' => (string)$this->l->t('Recovery Key disabled')]
+ ]
+ );
+ }
return new DataResponse(
- array(
- 'status' => 'success',
- 'data' => array(
- 'message' => (string) $this->l->t('Recovery Key enabled'))
- )
- );
- } else {
- return new DataResponse(
- array(
- 'data' => array
- ('message' => (string) $this->l->t('Could not enable the recovery key, please try again or contact your administrator'))
- )
+ [
+ 'data' => [
+ 'message' => (string)$this->l->t('Recovery Key enabled')]
+ ]
);
}
+
}
+ return new DataResponse(
+ [
+ 'data' => [
+ 'message' => (string)$this->l->t('Could not enable the recovery key, please try again or contact your administrator')
+ ]
+ ], Http::STATUS_BAD_REQUEST);
}
}
diff --git a/apps/files_sharing/lib/readonlycache.php b/apps/encryption/css/settings-admin.css
index c7640f896f4..47360e6bcf6 100644
--- a/apps/files_sharing/lib/readonlycache.php
+++ b/apps/encryption/css/settings-admin.css
@@ -1,8 +1,5 @@
-<?php
/**
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <icewind@owncloud.com>
+ * @author Björn Schießle <schiessle@owncloud.com>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
@@ -21,24 +18,6 @@
*
*/
-namespace OCA\Files_Sharing;
-
-use OC\Files\Cache\Cache;
-
-class ReadOnlyCache extends Cache {
- public function get($path) {
- $data = parent::get($path);
- if ($data !== false) {
- $data['permissions'] &= (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE);
- }
- return $data;
- }
-
- public function getFolderContents($path) {
- $content = parent::getFolderContents($path);
- foreach ($content as &$data) {
- $data['permissions'] &= (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE);
- }
- return $content;
- }
+#encryptionAPI input[type=password] {
+ width: 300px;
}
diff --git a/apps/encryption/hooks/userhooks.php b/apps/encryption/hooks/userhooks.php
index b09b8e7049a..a86b8662781 100644
--- a/apps/encryption/hooks/userhooks.php
+++ b/apps/encryption/hooks/userhooks.php
@@ -226,7 +226,7 @@ class UserHooks implements IHook {
// Save private key
if ($encryptedPrivateKey) {
$this->keyManager->setPrivateKey($this->user->getUser()->getUID(),
- $encryptedPrivateKey);
+ $this->crypt->generateHeader() . $encryptedPrivateKey);
} else {
$this->logger->error('Encryption could not update users encryption password');
}
@@ -263,7 +263,7 @@ class UserHooks implements IHook {
$newUserPassword);
if ($encryptedKey) {
- $this->keyManager->setPrivateKey($user, $encryptedKey);
+ $this->keyManager->setPrivateKey($user, $this->crypt->generateHeader() . $encryptedKey);
if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files
$this->recovery->recoverUsersFiles($recoveryPassword, $user);
diff --git a/apps/encryption/js/encryption.js b/apps/encryption/js/encryption.js
index 7ed49f77311..ea6a5596f24 100644
--- a/apps/encryption/js/encryption.js
+++ b/apps/encryption/js/encryption.js
@@ -15,7 +15,7 @@ if (!OC.Encryption) {
*/
OC.Encryption = {
displayEncryptionWarning: function () {
- if (!OC.Notification.isHidden()) {
+ if (!OC.currentUser || !OC.Notification.isHidden()) {
return;
}
diff --git a/apps/encryption/js/settings-admin.js b/apps/encryption/js/settings-admin.js
index bb539f6a4e2..39923718c21 100644
--- a/apps/encryption/js/settings-admin.js
+++ b/apps/encryption/js/settings-admin.js
@@ -7,52 +7,73 @@
* See the COPYING-README file.
*/
-$(document).ready(function(){
-
- $( 'input:radio[name="adminEnableRecovery"]' ).change(
- function() {
- var recoveryStatus = $( this ).val();
- var oldStatus = (1+parseInt(recoveryStatus, 10)) % 2;
- var recoveryPassword = $( '#encryptionRecoveryPassword' ).val();
- var confirmPassword = $( '#repeatEncryptionRecoveryPassword' ).val();
- OC.msg.startSaving('#encryptionSetRecoveryKey .msg');
- $.post(
- OC.generateUrl('/apps/encryption/ajax/adminRecovery'),
- { adminEnableRecovery: recoveryStatus,
- recoveryPassword: recoveryPassword,
- confirmPassword: confirmPassword },
- function( result ) {
- OC.msg.finishedSaving('#encryptionSetRecoveryKey .msg', result);
- if (result.status === "error") {
- $('input:radio[name="adminEnableRecovery"][value="'+oldStatus.toString()+'"]')
- .attr("checked", "true");
- } else {
- if (recoveryStatus === "0") {
- $('p[name="changeRecoveryPasswordBlock"]').addClass("hidden");
- } else {
- $('input:password[name="changeRecoveryPassword"]').val("");
- $('p[name="changeRecoveryPasswordBlock"]').removeClass("hidden");
- }
- }
+$(document).ready(function () {
+
+ $('input:button[name="enableRecoveryKey"]').click(function () {
+
+ var recoveryStatus = $(this).attr('status');
+ var newRecoveryStatus = (1 + parseInt(recoveryStatus)) % 2;
+ var buttonValue = $(this).attr('value');
+
+ var recoveryPassword = $('#encryptionRecoveryPassword').val();
+ var confirmPassword = $('#repeatEncryptionRecoveryPassword').val();
+ OC.msg.startSaving('#encryptionSetRecoveryKey .msg');
+ $.post(
+ OC.generateUrl('/apps/encryption/ajax/adminRecovery'),
+ {
+ adminEnableRecovery: newRecoveryStatus,
+ recoveryPassword: recoveryPassword,
+ confirmPassword: confirmPassword
+ }
+ ).done(function (data) {
+ OC.msg.finishedSuccess('#encryptionSetRecoveryKey .msg', data.data.message);
+
+ if (newRecoveryStatus === 0) {
+ $('p[name="changeRecoveryPasswordBlock"]').addClass("hidden");
+ $('input:button[name="enableRecoveryKey"]').attr('value', 'Enable recovery key');
+ $('input:button[name="enableRecoveryKey"]').attr('status', '0');
+ } else {
+ $('input:password[name="changeRecoveryPassword"]').val("");
+ $('p[name="changeRecoveryPasswordBlock"]').removeClass("hidden");
+ $('input:button[name="enableRecoveryKey"]').attr('value', 'Disable recovery key');
+ $('input:button[name="enableRecoveryKey"]').attr('status', '1');
}
- );
+ })
+ .fail(function (jqXHR) {
+ $('input:button[name="enableRecoveryKey"]').attr('value', buttonValue);
+ $('input:button[name="enableRecoveryKey"]').attr('status', recoveryStatus);
+ OC.msg.finishedError('#encryptionSetRecoveryKey .msg', JSON.parse(jqXHR.responseText).data.message);
+ });
+
+
+ });
+
+ $("#repeatEncryptionRecoveryPassword").keyup(function (event) {
+ if (event.keyCode == 13) {
+ $("#enableRecoveryKey").click();
}
- );
+ });
// change recovery password
- $('button:button[name="submitChangeRecoveryKey"]').click(function() {
+ $('button:button[name="submitChangeRecoveryKey"]').click(function () {
var oldRecoveryPassword = $('#oldEncryptionRecoveryPassword').val();
var newRecoveryPassword = $('#newEncryptionRecoveryPassword').val();
var confirmNewPassword = $('#repeatedNewEncryptionRecoveryPassword').val();
OC.msg.startSaving('#encryptionChangeRecoveryKey .msg');
$.post(
- OC.generateUrl('/apps/encryption/ajax/changeRecoveryPassword'),
- { oldPassword: oldRecoveryPassword, newPassword: newRecoveryPassword, confirmPassword: confirmNewPassword },
- function( data ) {
- OC.msg.finishedSaving('#encryptionChangeRecoveryKey .msg', data);
- }
- );
+ OC.generateUrl('/apps/encryption/ajax/changeRecoveryPassword'),
+ {
+ oldPassword: oldRecoveryPassword,
+ newPassword: newRecoveryPassword,
+ confirmPassword: confirmNewPassword
+ }
+ ).done(function (data) {
+ OC.msg.finishedSuccess('#encryptionChangeRecoveryKey .msg', data.data.message);
+ })
+ .fail(function (jqXHR) {
+ OC.msg.finishedError('#encryptionChangeRecoveryKey .msg', JSON.parse(jqXHR.responseText).data.message);
+ });
});
});
diff --git a/apps/encryption/js/settings-personal.js b/apps/encryption/js/settings-personal.js
index e36f10a244e..fa94bea6bc5 100644
--- a/apps/encryption/js/settings-personal.js
+++ b/apps/encryption/js/settings-personal.js
@@ -9,35 +9,43 @@ if (!OC.Encryption) {
}
OC.Encryption = {
- updatePrivateKeyPassword: function() {
+ updatePrivateKeyPassword: function () {
var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val();
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
- OC.msg.startSaving('#encryption .msg');
+ OC.msg.startSaving('#ocDefaultEncryptionModule .msg');
$.post(
OC.generateUrl('/apps/encryption/ajax/updatePrivateKeyPassword'),
- {oldPassword: oldPrivateKeyPassword, newPassword: newPrivateKeyPassword}
- ).success(function (response) {
- OC.msg.finishedSuccess('#encryption .msg', response.message);
- }).fail(function (response) {
- OC.msg.finishedError('#encryption .msg', response.responseJSON.message);
- });
+ {
+ oldPassword: oldPrivateKeyPassword,
+ newPassword: newPrivateKeyPassword
+ }
+ ).done(function (data) {
+ OC.msg.finishedSuccess('#ocDefaultEncryptionModule .msg', data.message);
+ })
+ .fail(function (jqXHR) {
+ OC.msg.finishedError('#ocDefaultEncryptionModule .msg', JSON.parse(jqXHR.responseText).message);
+ });
}
};
-$(document).ready(function(){
+$(document).ready(function () {
// Trigger ajax on recoveryAdmin status change
- $( 'input:radio[name="userEnableRecovery"]' ).change(
- function() {
- var recoveryStatus = $( this ).val();
+ $('input:radio[name="userEnableRecovery"]').change(
+ function () {
+ var recoveryStatus = $(this).val();
OC.msg.startAction('#userEnableRecovery .msg', 'Updating recovery keys. This can take some time...');
$.post(
- OC.generateUrl('/apps/encryption/ajax/userSetRecovery'),
- { userEnableRecovery: recoveryStatus },
- function( data ) {
- OC.msg.finishedAction('#userEnableRecovery .msg', data);
+ OC.generateUrl('/apps/encryption/ajax/userSetRecovery'),
+ {
+ userEnableRecovery: recoveryStatus
}
- );
+ ).done(function (data) {
+ OC.msg.finishedSuccess('#userEnableRecovery .msg', data.data.message);
+ })
+ .fail(function (jqXHR) {
+ OC.msg.finishedError('#userEnableRecovery .msg', JSON.parse(jqXHR.responseText).data.message);
+ });
// Ensure page is not reloaded on form submit
return false;
}
@@ -45,12 +53,12 @@ $(document).ready(function(){
// update private key password
- $('input:password[name="changePrivateKeyPassword"]').keyup(function(event) {
+ $('input:password[name="changePrivateKeyPassword"]').keyup(function (event) {
var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val();
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
- if (newPrivateKeyPassword !== '' && oldPrivateKeyPassword !== '' ) {
+ if (newPrivateKeyPassword !== '' && oldPrivateKeyPassword !== '') {
$('button:button[name="submitChangePrivateKeyPassword"]').removeAttr("disabled");
- if(event.which === 13) {
+ if (event.which === 13) {
OC.Encryption.updatePrivateKeyPassword();
}
} else {
@@ -58,7 +66,7 @@ $(document).ready(function(){
}
});
- $('button:button[name="submitChangePrivateKeyPassword"]').click(function() {
+ $('button:button[name="submitChangePrivateKeyPassword"]').click(function () {
OC.Encryption.updatePrivateKeyPassword();
});
diff --git a/apps/encryption/l10n/ar.js b/apps/encryption/l10n/ar.js
index 7f2dcb55c02..3e3d73ead26 100644
--- a/apps/encryption/l10n/ar.js
+++ b/apps/encryption/l10n/ar.js
@@ -10,21 +10,16 @@ OC.L10N.register(
"Private key password successfully updated." : "تم تحديث كلمة المرور للمفتاح الخاص بنجاح.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "المفتاح الخاص بتشفير التطبيقات غير صالح. يرجى تحديث كلمة السر الخاصة بالمفتاح الخاص من الإعدادت الشخصية حتى تتمكن من الوصول للملفات المشفرة.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "تم تمكين تشفير البرامج لكن لم يتم تهيئة المفاتيح لذا يرجى تسجيل الخروج ثم تسجيل الدخول مرة آخرى.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "تفعيل استعادة المفتاح (سوف يمكنك من استعادة ملفات المستخدمين في حال فقدان كلمة المرور):",
"Recovery key password" : "استعادة كلمة مرور المفتاح",
- "Repeat Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح",
- "Enabled" : "مفعلة",
- "Disabled" : "معطلة",
"Change recovery key password:" : "تعديل كلمة المرور استعادة المفتاح:",
- "Old Recovery key password" : "كلمة المرور القديمة لـ استعامة المفتاح",
- "New Recovery key password" : "تعيين كلمة مرور جديدة لـ استعادة المفتاح",
- "Repeat New Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح من جديد",
"Change Password" : "عدل كلمة السر",
" If you don't remember your old password you can ask your administrator to recover your files." : "اذا كنت لاتتذكر كلمة السر تستطيع ان تطلب من المدير ان يستعيد ملفاتك.",
"Old log-in password" : "كلمة المرور القديمة الخاصة بالدخول",
"Current log-in password" : "كلمة المرور الحالية الخاصة بالدخول",
"Update Private Key Password" : "تحديث كلمة المرور لـ المفتاح الخاص",
"Enable password recovery:" : "تفعيل استعادة كلمة المرور:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "تفعيل هذا الخيار يمكنك من اعادة الوصول الى ملفاتك المشفرة عند فقدان كلمة المرور"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "تفعيل هذا الخيار يمكنك من اعادة الوصول الى ملفاتك المشفرة عند فقدان كلمة المرور",
+ "Enabled" : "مفعلة",
+ "Disabled" : "معطلة"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/encryption/l10n/ar.json b/apps/encryption/l10n/ar.json
index 3808eeb9e76..8cb0aa2e3a5 100644
--- a/apps/encryption/l10n/ar.json
+++ b/apps/encryption/l10n/ar.json
@@ -8,21 +8,16 @@
"Private key password successfully updated." : "تم تحديث كلمة المرور للمفتاح الخاص بنجاح.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "المفتاح الخاص بتشفير التطبيقات غير صالح. يرجى تحديث كلمة السر الخاصة بالمفتاح الخاص من الإعدادت الشخصية حتى تتمكن من الوصول للملفات المشفرة.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "تم تمكين تشفير البرامج لكن لم يتم تهيئة المفاتيح لذا يرجى تسجيل الخروج ثم تسجيل الدخول مرة آخرى.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "تفعيل استعادة المفتاح (سوف يمكنك من استعادة ملفات المستخدمين في حال فقدان كلمة المرور):",
"Recovery key password" : "استعادة كلمة مرور المفتاح",
- "Repeat Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح",
- "Enabled" : "مفعلة",
- "Disabled" : "معطلة",
"Change recovery key password:" : "تعديل كلمة المرور استعادة المفتاح:",
- "Old Recovery key password" : "كلمة المرور القديمة لـ استعامة المفتاح",
- "New Recovery key password" : "تعيين كلمة مرور جديدة لـ استعادة المفتاح",
- "Repeat New Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح من جديد",
"Change Password" : "عدل كلمة السر",
" If you don't remember your old password you can ask your administrator to recover your files." : "اذا كنت لاتتذكر كلمة السر تستطيع ان تطلب من المدير ان يستعيد ملفاتك.",
"Old log-in password" : "كلمة المرور القديمة الخاصة بالدخول",
"Current log-in password" : "كلمة المرور الحالية الخاصة بالدخول",
"Update Private Key Password" : "تحديث كلمة المرور لـ المفتاح الخاص",
"Enable password recovery:" : "تفعيل استعادة كلمة المرور:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "تفعيل هذا الخيار يمكنك من اعادة الوصول الى ملفاتك المشفرة عند فقدان كلمة المرور"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "تفعيل هذا الخيار يمكنك من اعادة الوصول الى ملفاتك المشفرة عند فقدان كلمة المرور",
+ "Enabled" : "مفعلة",
+ "Disabled" : "معطلة"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ast.js b/apps/encryption/l10n/ast.js
index 7316c5b6651..637a66d178c 100644
--- a/apps/encryption/l10n/ast.js
+++ b/apps/encryption/l10n/ast.js
@@ -10,15 +10,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Contraseña de clave privada anovada correchamente.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clave privada non válida pa Encryption. Por favor, anueva la to contraseña de clave nos tos axustes personales pa recuperar l'accesu a los tos ficheros cifraos.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicación Encryption ta habilitada pero les tos claves nun s'aniciaron, por favor zarra sesión y aníciala de nueves",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuariu en casu de perda de la contraseña);",
"Recovery key password" : "Contraseña de clave de recuperación",
- "Repeat Recovery key password" : "Repeti la contraseña de clave de recuperación",
- "Enabled" : "Habilitar",
- "Disabled" : "Deshabilitáu",
"Change recovery key password:" : "Camudar la contraseña de la clave de recuperación",
- "Old Recovery key password" : "Clave de recuperación vieya",
- "New Recovery key password" : "Clave de recuperación nueva",
- "Repeat New Recovery key password" : "Repetir la clave de recuperación nueva",
"Change Password" : "Camudar contraseña",
"Set your old private key password to your current log-in password:" : "Afita la contraseña de clave privada vieya pa la to contraseña d'aniciu de sesión actual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si nun recuerdes la contraseña vieya, pues pidir a alministrador que te recupere los ficheros.",
@@ -26,6 +19,8 @@ OC.L10N.register(
"Current log-in password" : "Contraseña d'accesu actual",
"Update Private Key Password" : "Anovar Contraseña de Clave Privada",
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción va permitite volver a tener accesu a los ficheros cifraos en casu de perda de contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción va permitite volver a tener accesu a los ficheros cifraos en casu de perda de contraseña",
+ "Enabled" : "Habilitar",
+ "Disabled" : "Deshabilitáu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/ast.json b/apps/encryption/l10n/ast.json
index 6639d1341ca..30f3c70aab8 100644
--- a/apps/encryption/l10n/ast.json
+++ b/apps/encryption/l10n/ast.json
@@ -8,15 +8,8 @@
"Private key password successfully updated." : "Contraseña de clave privada anovada correchamente.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clave privada non válida pa Encryption. Por favor, anueva la to contraseña de clave nos tos axustes personales pa recuperar l'accesu a los tos ficheros cifraos.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicación Encryption ta habilitada pero les tos claves nun s'aniciaron, por favor zarra sesión y aníciala de nueves",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuariu en casu de perda de la contraseña);",
"Recovery key password" : "Contraseña de clave de recuperación",
- "Repeat Recovery key password" : "Repeti la contraseña de clave de recuperación",
- "Enabled" : "Habilitar",
- "Disabled" : "Deshabilitáu",
"Change recovery key password:" : "Camudar la contraseña de la clave de recuperación",
- "Old Recovery key password" : "Clave de recuperación vieya",
- "New Recovery key password" : "Clave de recuperación nueva",
- "Repeat New Recovery key password" : "Repetir la clave de recuperación nueva",
"Change Password" : "Camudar contraseña",
"Set your old private key password to your current log-in password:" : "Afita la contraseña de clave privada vieya pa la to contraseña d'aniciu de sesión actual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si nun recuerdes la contraseña vieya, pues pidir a alministrador que te recupere los ficheros.",
@@ -24,6 +17,8 @@
"Current log-in password" : "Contraseña d'accesu actual",
"Update Private Key Password" : "Anovar Contraseña de Clave Privada",
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción va permitite volver a tener accesu a los ficheros cifraos en casu de perda de contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción va permitite volver a tener accesu a los ficheros cifraos en casu de perda de contraseña",
+ "Enabled" : "Habilitar",
+ "Disabled" : "Deshabilitáu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/az.js b/apps/encryption/l10n/az.js
index bbb3e72ce95..b82034083e9 100644
--- a/apps/encryption/l10n/az.js
+++ b/apps/encryption/l10n/az.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Gizli aşar şifrəsi uğurla yeniləndi.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Şifrələnmə proqramı üçün yalnış şəxsi açar. Xahiş olunur öz şəxsi quraşdırmalarınızda şəxsi açarınızı yeniləyəsiniz ki, şifrələnmiş fayllara yetki ala biləsiniz. ",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Proqram şifrələnməsi işə salınıb ancaq, sizin açarlar inisializasiya edilməyib. Xahiş edilir çıxıb yenidən daxil olasınız",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Bərpa açarını aktivləşdir(şifrə itirilməsi hadısələrində, istifadəçi fayllarının bərpasına izin verir)",
"Recovery key password" : "Açar şifrənin bərpa edilməsi",
- "Repeat Recovery key password" : "Bərpa açarın şifrəsini təkrar edin",
- "Enabled" : "İşə salınıb",
- "Disabled" : "Dayandırılıb",
"Change recovery key password:" : "Bərpa açarın şifrəsini dəyişdir:",
- "Old Recovery key password" : "Köhnə bərpa açarı şifrəsi",
- "New Recovery key password" : "Yeni bərpa açarı şifrəsi",
- "Repeat New Recovery key password" : "Yeni bərpa açarı şifrəsini təkrar edin",
"Change Password" : "Şifrəni dəyişdir",
"Your private key password no longer matches your log-in password." : "Sizin gizli açar şifrəsi, artıq giriş adınızla uyğun gəlmir.",
"Set your old private key password to your current log-in password:" : "Köhnə açar şifrənizi, sizin hal-hazırki giriş şifrənizə təyin edin: ",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Hal-hazırki giriş şifrəsi",
"Update Private Key Password" : "Gizli açar şifrəsini yenilə",
"Enable password recovery:" : "Şifrə bərpasını işə sal:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu opsiyanın aktiv edilməsi sizə, şifrənin itdiyi hallarda bütün şifrələnmiş fayllarınıza yetkinin yenidən əldə edilməsinə şərait yaradacaq"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu opsiyanın aktiv edilməsi sizə, şifrənin itdiyi hallarda bütün şifrələnmiş fayllarınıza yetkinin yenidən əldə edilməsinə şərait yaradacaq",
+ "Enabled" : "İşə salınıb",
+ "Disabled" : "Dayandırılıb"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/az.json b/apps/encryption/l10n/az.json
index 78bedc365b1..32f59791733 100644
--- a/apps/encryption/l10n/az.json
+++ b/apps/encryption/l10n/az.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Gizli aşar şifrəsi uğurla yeniləndi.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Şifrələnmə proqramı üçün yalnış şəxsi açar. Xahiş olunur öz şəxsi quraşdırmalarınızda şəxsi açarınızı yeniləyəsiniz ki, şifrələnmiş fayllara yetki ala biləsiniz. ",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Proqram şifrələnməsi işə salınıb ancaq, sizin açarlar inisializasiya edilməyib. Xahiş edilir çıxıb yenidən daxil olasınız",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Bərpa açarını aktivləşdir(şifrə itirilməsi hadısələrində, istifadəçi fayllarının bərpasına izin verir)",
"Recovery key password" : "Açar şifrənin bərpa edilməsi",
- "Repeat Recovery key password" : "Bərpa açarın şifrəsini təkrar edin",
- "Enabled" : "İşə salınıb",
- "Disabled" : "Dayandırılıb",
"Change recovery key password:" : "Bərpa açarın şifrəsini dəyişdir:",
- "Old Recovery key password" : "Köhnə bərpa açarı şifrəsi",
- "New Recovery key password" : "Yeni bərpa açarı şifrəsi",
- "Repeat New Recovery key password" : "Yeni bərpa açarı şifrəsini təkrar edin",
"Change Password" : "Şifrəni dəyişdir",
"Your private key password no longer matches your log-in password." : "Sizin gizli açar şifrəsi, artıq giriş adınızla uyğun gəlmir.",
"Set your old private key password to your current log-in password:" : "Köhnə açar şifrənizi, sizin hal-hazırki giriş şifrənizə təyin edin: ",
@@ -34,6 +27,8 @@
"Current log-in password" : "Hal-hazırki giriş şifrəsi",
"Update Private Key Password" : "Gizli açar şifrəsini yenilə",
"Enable password recovery:" : "Şifrə bərpasını işə sal:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu opsiyanın aktiv edilməsi sizə, şifrənin itdiyi hallarda bütün şifrələnmiş fayllarınıza yetkinin yenidən əldə edilməsinə şərait yaradacaq"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu opsiyanın aktiv edilməsi sizə, şifrənin itdiyi hallarda bütün şifrələnmiş fayllarınıza yetkinin yenidən əldə edilməsinə şərait yaradacaq",
+ "Enabled" : "İşə salınıb",
+ "Disabled" : "Dayandırılıb"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/bg_BG.js b/apps/encryption/l10n/bg_BG.js
index f809545a6b9..4683f2c05bc 100644
--- a/apps/encryption/l10n/bg_BG.js
+++ b/apps/encryption/l10n/bg_BG.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Успешно променена тайната парола за ключа.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Невалиден личен ключ за Криптиращата Програма. Моля, обнови личния си ключ в Лични настройки, за да възстановиш достъпа до криптираните си файловете.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Програмата за криптиране е включена, но твоите ключове не са зададени, моля отпиши си и се впиши отново.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Включи опцията възстановяване на ключ (разрешава да възстанови файловете на потребителите в случай на загубена парола):",
"Recovery key password" : "Парола за възстановяане на ключа",
- "Repeat Recovery key password" : "Повтори паролата за възстановяване на ключа",
- "Enabled" : "Включено",
- "Disabled" : "Изключено",
"Change recovery key password:" : "Промени паролата за въстановяване на ключа:",
- "Old Recovery key password" : "Старата парола за въстановяване на ключа",
- "New Recovery key password" : "Новата парола за възстановяване на ключа",
- "Repeat New Recovery key password" : "Повтори новата паролза за възстановяване на ключа",
"Change Password" : "Промени Паролата",
"Your private key password no longer matches your log-in password." : "Личният ти ключ не съвпада с паролата за вписване.",
"Set your old private key password to your current log-in password:" : "Промени паролата за тайния ти включ на паролата за вписване:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Текуща парола за вписване",
"Update Private Key Password" : "Промени Тайната Парола за Ключа",
"Enable password recovery:" : "Включи опцията възстановяване на паролата:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Избирането на тази опция ще ти позволи да възстановиш достъпа си до файловете в случай на изгубена парола."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Избирането на тази опция ще ти позволи да възстановиш достъпа си до файловете в случай на изгубена парола.",
+ "Enabled" : "Включено",
+ "Disabled" : "Изключено"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/bg_BG.json b/apps/encryption/l10n/bg_BG.json
index ca285bfff49..562dd0d2af5 100644
--- a/apps/encryption/l10n/bg_BG.json
+++ b/apps/encryption/l10n/bg_BG.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Успешно променена тайната парола за ключа.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Невалиден личен ключ за Криптиращата Програма. Моля, обнови личния си ключ в Лични настройки, за да възстановиш достъпа до криптираните си файловете.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Програмата за криптиране е включена, но твоите ключове не са зададени, моля отпиши си и се впиши отново.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Включи опцията възстановяване на ключ (разрешава да възстанови файловете на потребителите в случай на загубена парола):",
"Recovery key password" : "Парола за възстановяане на ключа",
- "Repeat Recovery key password" : "Повтори паролата за възстановяване на ключа",
- "Enabled" : "Включено",
- "Disabled" : "Изключено",
"Change recovery key password:" : "Промени паролата за въстановяване на ключа:",
- "Old Recovery key password" : "Старата парола за въстановяване на ключа",
- "New Recovery key password" : "Новата парола за възстановяване на ключа",
- "Repeat New Recovery key password" : "Повтори новата паролза за възстановяване на ключа",
"Change Password" : "Промени Паролата",
"Your private key password no longer matches your log-in password." : "Личният ти ключ не съвпада с паролата за вписване.",
"Set your old private key password to your current log-in password:" : "Промени паролата за тайния ти включ на паролата за вписване:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Текуща парола за вписване",
"Update Private Key Password" : "Промени Тайната Парола за Ключа",
"Enable password recovery:" : "Включи опцията възстановяване на паролата:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Избирането на тази опция ще ти позволи да възстановиш достъпа си до файловете в случай на изгубена парола."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Избирането на тази опция ще ти позволи да възстановиш достъпа си до файловете в случай на изгубена парола.",
+ "Enabled" : "Включено",
+ "Disabled" : "Изключено"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/bn_BD.js b/apps/encryption/l10n/bn_BD.js
index be81f44796f..f91008e2408 100644
--- a/apps/encryption/l10n/bn_BD.js
+++ b/apps/encryption/l10n/bn_BD.js
@@ -4,13 +4,9 @@ OC.L10N.register(
"Recovery key successfully enabled" : "পূনরুদ্ধার চাবি সার্থকভাবে কার্যকর করা হয়েছে",
"Recovery key successfully disabled" : "পূনরুদ্ধার চাবি সার্থকভাবে অকার্যকর করা হয়েছে",
"Password successfully changed." : "আপনার কূটশব্দটি সার্থকভাবে পরিবর্তন করা হয়েছে ",
- "Repeat Recovery key password" : "পূণরূদ্ধার কি এর কুটশব্দ পূণরায় দিন",
- "Enabled" : "কার্যকর",
- "Disabled" : "অকার্যকর",
"Change recovery key password:" : "পূণরূদ্ধার কি এর কুটশব্দ পরিবর্তন করুন:",
- "Old Recovery key password" : "পূণরূদ্ধার কি এর পুরাতন কুটশব্দ",
- "New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ",
- "Repeat New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ পূণরায় দিন",
- "Change Password" : "কূটশব্দ পরিবর্তন করুন"
+ "Change Password" : "কূটশব্দ পরিবর্তন করুন",
+ "Enabled" : "কার্যকর",
+ "Disabled" : "অকার্যকর"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/bn_BD.json b/apps/encryption/l10n/bn_BD.json
index 2b4de7e4e66..375bbd517a7 100644
--- a/apps/encryption/l10n/bn_BD.json
+++ b/apps/encryption/l10n/bn_BD.json
@@ -2,13 +2,9 @@
"Recovery key successfully enabled" : "পূনরুদ্ধার চাবি সার্থকভাবে কার্যকর করা হয়েছে",
"Recovery key successfully disabled" : "পূনরুদ্ধার চাবি সার্থকভাবে অকার্যকর করা হয়েছে",
"Password successfully changed." : "আপনার কূটশব্দটি সার্থকভাবে পরিবর্তন করা হয়েছে ",
- "Repeat Recovery key password" : "পূণরূদ্ধার কি এর কুটশব্দ পূণরায় দিন",
- "Enabled" : "কার্যকর",
- "Disabled" : "অকার্যকর",
"Change recovery key password:" : "পূণরূদ্ধার কি এর কুটশব্দ পরিবর্তন করুন:",
- "Old Recovery key password" : "পূণরূদ্ধার কি এর পুরাতন কুটশব্দ",
- "New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ",
- "Repeat New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ পূণরায় দিন",
- "Change Password" : "কূটশব্দ পরিবর্তন করুন"
+ "Change Password" : "কূটশব্দ পরিবর্তন করুন",
+ "Enabled" : "কার্যকর",
+ "Disabled" : "অকার্যকর"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ca.js b/apps/encryption/l10n/ca.js
index c81840fae7d..d1eff280140 100644
--- a/apps/encryption/l10n/ca.js
+++ b/apps/encryption/l10n/ca.js
@@ -10,15 +10,8 @@ OC.L10N.register(
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clau privada de l'aplicació d'encriptació no és vàlida! Actualitzeu la contrasenya de la clau privada a l'arranjament personal per recuperar els fitxers encriptats.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activa la clau de recuperació (permet recuperar fitxers d'usuaris en cas de pèrdua de contrasenya):",
"Recovery key password" : "Clau de recuperació de la contrasenya",
- "Repeat Recovery key password" : "Repetiu la clau de recuperació de contrasenya",
- "Enabled" : "Activat",
- "Disabled" : "Desactivat",
"Change recovery key password:" : "Canvia la clau de recuperació de contrasenya:",
- "Old Recovery key password" : "Antiga clau de recuperació de contrasenya",
- "New Recovery key password" : "Nova clau de recuperació de contrasenya",
- "Repeat New Recovery key password" : "Repetiu la nova clau de recuperació de contrasenya",
"Change Password" : "Canvia la contrasenya",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
@@ -27,6 +20,8 @@ OC.L10N.register(
"Current log-in password" : "Contrasenya d'accés actual",
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
+ "Enabled" : "Activat",
+ "Disabled" : "Desactivat"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/ca.json b/apps/encryption/l10n/ca.json
index 5309fafa2d6..0bb29d59c5a 100644
--- a/apps/encryption/l10n/ca.json
+++ b/apps/encryption/l10n/ca.json
@@ -8,15 +8,8 @@
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clau privada de l'aplicació d'encriptació no és vàlida! Actualitzeu la contrasenya de la clau privada a l'arranjament personal per recuperar els fitxers encriptats.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activa la clau de recuperació (permet recuperar fitxers d'usuaris en cas de pèrdua de contrasenya):",
"Recovery key password" : "Clau de recuperació de la contrasenya",
- "Repeat Recovery key password" : "Repetiu la clau de recuperació de contrasenya",
- "Enabled" : "Activat",
- "Disabled" : "Desactivat",
"Change recovery key password:" : "Canvia la clau de recuperació de contrasenya:",
- "Old Recovery key password" : "Antiga clau de recuperació de contrasenya",
- "New Recovery key password" : "Nova clau de recuperació de contrasenya",
- "Repeat New Recovery key password" : "Repetiu la nova clau de recuperació de contrasenya",
"Change Password" : "Canvia la contrasenya",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
@@ -25,6 +18,8 @@
"Current log-in password" : "Contrasenya d'accés actual",
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
+ "Enabled" : "Activat",
+ "Disabled" : "Desactivat"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/cs_CZ.js b/apps/encryption/l10n/cs_CZ.js
index e433bad6b97..4aeae1741de 100644
--- a/apps/encryption/l10n/cs_CZ.js
+++ b/apps/encryption/l10n/cs_CZ.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Nepodařilo se povolit záchranný klíč. Zkontrolujte prosím vaše heslo záchranného klíče!",
"Recovery key successfully disabled" : "Záchranný klíč byl úspěšně zakázán",
"Could not disable recovery key. Please check your recovery key password!" : "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo svého záchranného klíče!",
+ "Missing parameters" : "Chybějící parametry",
"Please provide the old recovery password" : "Zadejte prosím staré heslo pro obnovu",
"Please provide a new recovery password" : "Zadejte prosím nové heslo pro obnovu",
"Please repeat the new recovery password" : "Zopakujte prosím nové heslo pro obnovu",
"Password successfully changed." : "Heslo bylo úspěšně změněno.",
"Could not change the password. Maybe the old password was not correct." : "Změna hesla se nezdařila. Pravděpodobně nebylo stávající heslo zadáno správně.",
+ "Recovery Key disabled" : "Záchranný klíč není povolen",
"Recovery Key enabled" : "Záchranný klíč povolen",
"Could not enable the recovery key, please try again or contact your administrator" : "Nelze povolit záchranný klíč. Zkuste to prosím znovu nebo kontaktujte svého správce.",
"Could not update the private key password." : "Nelze aktualizovat heslo soukromého klíče.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.",
"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",
- "ownCloud basic encryption module" : "ownCloud základní šifrovací modul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Povolit klíč pro obnovu (umožňuje obnovu uživatelských souborů v případě ztráty hesla)",
+ "Enable recovery key" : "Povolit záchranný klíč",
+ "Disable recovery key" : "Vypnout záchranný klíč",
+ "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." : "Záchranný klíč je dodatečný šifrovací klíč použitý pro\nšifrování souborů. S jeho pomocí lze obnovit soubory uživatele při zapomenutí hesla.",
"Recovery key password" : "Heslo klíče pro obnovu",
- "Repeat Recovery key password" : "Zopakujte heslo klíče pro obnovu",
- "Enabled" : "Povoleno",
- "Disabled" : "Zakázáno",
+ "Repeat recovery key password" : "Zopakovat heslo záchranného klíče",
"Change recovery key password:" : "Změna hesla klíče pro obnovu:",
- "Old Recovery key password" : "Původní heslo klíče pro obnovu",
- "New Recovery key password" : "Nové heslo klíče pro obnovu",
- "Repeat New Recovery key password" : "Zopakujte nové heslo klíče pro obnovu",
+ "Old recovery key password" : "Staré heslo záchranného klíče",
+ "New recovery key password" : "Nové heslo záchranného klíče",
+ "Repeat new recovery key password" : "Zopakujte nové heslo záchranného klíče",
"Change Password" : "Změnit heslo",
+ "ownCloud basic encryption module" : "ownCloud základní šifrovací modul",
"Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.",
"Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Aktuální přihlašovací heslo",
"Update Private Key Password" : "Změnit heslo soukromého klíče",
"Enable password recovery:" : "Povolit obnovu hesla:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo",
+ "Enabled" : "Povoleno",
+ "Disabled" : "Zakázáno"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/encryption/l10n/cs_CZ.json b/apps/encryption/l10n/cs_CZ.json
index 164d7ac7354..bea25e846c1 100644
--- a/apps/encryption/l10n/cs_CZ.json
+++ b/apps/encryption/l10n/cs_CZ.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Nepodařilo se povolit záchranný klíč. Zkontrolujte prosím vaše heslo záchranného klíče!",
"Recovery key successfully disabled" : "Záchranný klíč byl úspěšně zakázán",
"Could not disable recovery key. Please check your recovery key password!" : "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo svého záchranného klíče!",
+ "Missing parameters" : "Chybějící parametry",
"Please provide the old recovery password" : "Zadejte prosím staré heslo pro obnovu",
"Please provide a new recovery password" : "Zadejte prosím nové heslo pro obnovu",
"Please repeat the new recovery password" : "Zopakujte prosím nové heslo pro obnovu",
"Password successfully changed." : "Heslo bylo úspěšně změněno.",
"Could not change the password. Maybe the old password was not correct." : "Změna hesla se nezdařila. Pravděpodobně nebylo stávající heslo zadáno správně.",
+ "Recovery Key disabled" : "Záchranný klíč není povolen",
"Recovery Key enabled" : "Záchranný klíč povolen",
"Could not enable the recovery key, please try again or contact your administrator" : "Nelze povolit záchranný klíč. Zkuste to prosím znovu nebo kontaktujte svého správce.",
"Could not update the private key password." : "Nelze aktualizovat heslo soukromého klíče.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.",
"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",
- "ownCloud basic encryption module" : "ownCloud základní šifrovací modul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Povolit klíč pro obnovu (umožňuje obnovu uživatelských souborů v případě ztráty hesla)",
+ "Enable recovery key" : "Povolit záchranný klíč",
+ "Disable recovery key" : "Vypnout záchranný klíč",
+ "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." : "Záchranný klíč je dodatečný šifrovací klíč použitý pro\nšifrování souborů. S jeho pomocí lze obnovit soubory uživatele při zapomenutí hesla.",
"Recovery key password" : "Heslo klíče pro obnovu",
- "Repeat Recovery key password" : "Zopakujte heslo klíče pro obnovu",
- "Enabled" : "Povoleno",
- "Disabled" : "Zakázáno",
+ "Repeat recovery key password" : "Zopakovat heslo záchranného klíče",
"Change recovery key password:" : "Změna hesla klíče pro obnovu:",
- "Old Recovery key password" : "Původní heslo klíče pro obnovu",
- "New Recovery key password" : "Nové heslo klíče pro obnovu",
- "Repeat New Recovery key password" : "Zopakujte nové heslo klíče pro obnovu",
+ "Old recovery key password" : "Staré heslo záchranného klíče",
+ "New recovery key password" : "Nové heslo záchranného klíče",
+ "Repeat new recovery key password" : "Zopakujte nové heslo záchranného klíče",
"Change Password" : "Změnit heslo",
+ "ownCloud basic encryption module" : "ownCloud základní šifrovací modul",
"Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.",
"Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Aktuální přihlašovací heslo",
"Update Private Key Password" : "Změnit heslo soukromého klíče",
"Enable password recovery:" : "Povolit obnovu hesla:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo",
+ "Enabled" : "Povoleno",
+ "Disabled" : "Zakázáno"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/da.js b/apps/encryption/l10n/da.js
index 18c8e22bc61..233c3b7ae68 100644
--- a/apps/encryption/l10n/da.js
+++ b/apps/encryption/l10n/da.js
@@ -21,17 +21,10 @@ OC.L10N.register(
"Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøgle for krypteringsprogrammet. Opdater venligst dit kodeord for den private nøgle i dine personlige indstillinger. Det kræves for at få adgang til dine krypterede filer.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.",
- "ownCloud basic encryption module" : "ownCloud basis krypteringsmodul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktiver gendannelsesnøgle (Tillad gendannelse af brugerfiler i tilfælde af tab af kodeord):",
"Recovery key password" : "Gendannelsesnøgle kodeord",
- "Repeat Recovery key password" : "Gentag gendannelse af nøglekoden",
- "Enabled" : "Aktiveret",
- "Disabled" : "Deaktiveret",
"Change recovery key password:" : "Skift gendannelsesnøgle kodeord:",
- "Old Recovery key password" : "Gammel Gendannelsesnøgle kodeord",
- "New Recovery key password" : "Ny Gendannelsesnøgle kodeord",
- "Repeat New Recovery key password" : "Gentag det nye gendannaleses nøglekodeord",
"Change Password" : "Skift Kodeord",
+ "ownCloud basic encryption module" : "ownCloud basis krypteringsmodul",
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
@@ -39,6 +32,8 @@ OC.L10N.register(
"Current log-in password" : "Nuvrende login kodeord",
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord",
+ "Enabled" : "Aktiveret",
+ "Disabled" : "Deaktiveret"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/da.json b/apps/encryption/l10n/da.json
index baf52f14508..a3c69c46a09 100644
--- a/apps/encryption/l10n/da.json
+++ b/apps/encryption/l10n/da.json
@@ -19,17 +19,10 @@
"Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøgle for krypteringsprogrammet. Opdater venligst dit kodeord for den private nøgle i dine personlige indstillinger. Det kræves for at få adgang til dine krypterede filer.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.",
- "ownCloud basic encryption module" : "ownCloud basis krypteringsmodul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktiver gendannelsesnøgle (Tillad gendannelse af brugerfiler i tilfælde af tab af kodeord):",
"Recovery key password" : "Gendannelsesnøgle kodeord",
- "Repeat Recovery key password" : "Gentag gendannelse af nøglekoden",
- "Enabled" : "Aktiveret",
- "Disabled" : "Deaktiveret",
"Change recovery key password:" : "Skift gendannelsesnøgle kodeord:",
- "Old Recovery key password" : "Gammel Gendannelsesnøgle kodeord",
- "New Recovery key password" : "Ny Gendannelsesnøgle kodeord",
- "Repeat New Recovery key password" : "Gentag det nye gendannaleses nøglekodeord",
"Change Password" : "Skift Kodeord",
+ "ownCloud basic encryption module" : "ownCloud basis krypteringsmodul",
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
@@ -37,6 +30,8 @@
"Current log-in password" : "Nuvrende login kodeord",
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord",
+ "Enabled" : "Aktiveret",
+ "Disabled" : "Deaktiveret"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/de.js b/apps/encryption/l10n/de.js
index c248b481cf1..5dc4453fd74 100644
--- a/apps/encryption/l10n/de.js
+++ b/apps/encryption/l10n/de.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Überprüfe Dein Wiederherstellungspasswort!",
"Recovery key successfully disabled" : "Wiederherstellungsschlüssel deaktiviert.",
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfe Dein Wiederherstellungspasswort!",
+ "Missing parameters" : "Fehlende Parameter",
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
"Please provide a new recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
"Password successfully changed." : "Dein Passwort wurde geändert.",
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
+ "Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert",
"Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert",
"Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuche es noch einmal oder kontaktiere Deinen Administrator",
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte aktualisiere Dein privates Schlüssel-Passwort, um den Zugriff auf Deine verschlüsselten Dateien wiederherzustellen.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber Deine Schlüssel sind nicht initialisiert. Bitte melde Dich nochmals ab und wieder an.",
- "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Wiederherstellungsschlüssel aktivieren (ermöglicht das Wiederherstellen von Dateien, falls das Passwort vergessen wurde):",
+ "Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
+ "Disable recovery key" : "Wiederherstellungsschlüssel deaktivieren",
+ "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." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zum Verschlüsseln von Dateien benutzt wird. Er erlaubt die Wiederherstellung von Benutzerdateien auch dann, wenn der Benutzer sein oder ihr Passwort vergessen hat.",
"Recovery key password" : "Wiederherstellungsschlüssel-Passwort",
- "Repeat Recovery key password" : "Schlüssel-Passwort zur Wiederherstellung wiederholen",
- "Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
+ "Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change recovery key password:" : "Wiederherstellungsschlüssel-Passwort ändern:",
- "Old Recovery key password" : "Altes Wiederherstellungsschlüssel-Passwort",
- "New Recovery key password" : "Neues Wiederherstellungsschlüssel-Passwort",
- "Repeat New Recovery key password" : "Neues Schlüssel-Passwort zur Wiederherstellung wiederholen",
+ "Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
+ "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
+ "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change Password" : "Passwort ändern",
+ "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
"Your private key password no longer matches your log-in password." : "Dein Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Loginpasswort überein.",
"Set your old private key password to your current log-in password:" : "Dein altes Passwort für Deinen privaten Schlüssel auf Dein aktuelles Anmeldepasswort einstellen:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Wenn Du Dein altes Passwort vergessen hast, könntest Du Deinen Administrator bitten, Deine Daten wiederherzustellen.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Aktuelles Passwort",
"Update Private Key Password" : "Passwort für den privaten Schlüssel aktualisieren",
"Enable password recovery:" : "Passwortwiederherstellung aktivieren:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst",
+ "Enabled" : "Aktiviert",
+ "Disabled" : "Deaktiviert"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/de.json b/apps/encryption/l10n/de.json
index 74c591fb632..abccb4016d1 100644
--- a/apps/encryption/l10n/de.json
+++ b/apps/encryption/l10n/de.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Überprüfe Dein Wiederherstellungspasswort!",
"Recovery key successfully disabled" : "Wiederherstellungsschlüssel deaktiviert.",
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfe Dein Wiederherstellungspasswort!",
+ "Missing parameters" : "Fehlende Parameter",
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
"Please provide a new recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
"Password successfully changed." : "Dein Passwort wurde geändert.",
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
+ "Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert",
"Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert",
"Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuche es noch einmal oder kontaktiere Deinen Administrator",
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte aktualisiere Dein privates Schlüssel-Passwort, um den Zugriff auf Deine verschlüsselten Dateien wiederherzustellen.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber Deine Schlüssel sind nicht initialisiert. Bitte melde Dich nochmals ab und wieder an.",
- "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Wiederherstellungsschlüssel aktivieren (ermöglicht das Wiederherstellen von Dateien, falls das Passwort vergessen wurde):",
+ "Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
+ "Disable recovery key" : "Wiederherstellungsschlüssel deaktivieren",
+ "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." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zum Verschlüsseln von Dateien benutzt wird. Er erlaubt die Wiederherstellung von Benutzerdateien auch dann, wenn der Benutzer sein oder ihr Passwort vergessen hat.",
"Recovery key password" : "Wiederherstellungsschlüssel-Passwort",
- "Repeat Recovery key password" : "Schlüssel-Passwort zur Wiederherstellung wiederholen",
- "Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
+ "Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change recovery key password:" : "Wiederherstellungsschlüssel-Passwort ändern:",
- "Old Recovery key password" : "Altes Wiederherstellungsschlüssel-Passwort",
- "New Recovery key password" : "Neues Wiederherstellungsschlüssel-Passwort",
- "Repeat New Recovery key password" : "Neues Schlüssel-Passwort zur Wiederherstellung wiederholen",
+ "Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
+ "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
+ "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change Password" : "Passwort ändern",
+ "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
"Your private key password no longer matches your log-in password." : "Dein Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Loginpasswort überein.",
"Set your old private key password to your current log-in password:" : "Dein altes Passwort für Deinen privaten Schlüssel auf Dein aktuelles Anmeldepasswort einstellen:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Wenn Du Dein altes Passwort vergessen hast, könntest Du Deinen Administrator bitten, Deine Daten wiederherzustellen.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Aktuelles Passwort",
"Update Private Key Password" : "Passwort für den privaten Schlüssel aktualisieren",
"Enable password recovery:" : "Passwortwiederherstellung aktivieren:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst",
+ "Enabled" : "Aktiviert",
+ "Disabled" : "Deaktiviert"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/de_DE.js b/apps/encryption/l10n/de_DE.js
index 695937fc6c5..9b8e571518a 100644
--- a/apps/encryption/l10n/de_DE.js
+++ b/apps/encryption/l10n/de_DE.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
"Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
+ "Missing parameters" : "Fehlende Parameter",
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
"Please provide a new recovery password" : "Bitte das neue Passwort zur Wiederherstellung eingeben",
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
"Password successfully changed." : "Das Passwort wurde erfolgreich geändert.",
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
+ "Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert",
"Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert",
"Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator",
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisieren Sie Ihr privates Schlüsselpasswort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.",
- "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktivieren Sie den Wiederherstellungsschlüssel (erlaubt die Wiederherstellung des Zugangs zu den Benutzerdateien, wenn das Passwort verloren geht):",
+ "Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
+ "Disable recovery key" : "Wiederherstellungsschlüssel deaktivieren",
+ "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." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zum Verschlüsseln von Dateien benutzt wird. Er erlaubt die Wiederherstellung von Benutzerdateien auch dann, wenn der Benutzer sein oder ihr Passwort vergessen hat.",
"Recovery key password" : "Wiederherstellungschlüsselpasswort",
- "Repeat Recovery key password" : "Schlüsselpasswort zur Wiederherstellung wiederholen",
- "Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
+ "Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change recovery key password:" : "Wiederherstellungsschlüsselpasswort ändern",
- "Old Recovery key password" : "Altes Wiederherstellungsschlüsselpasswort",
- "New Recovery key password" : "Neues Wiederherstellungsschlüsselpasswort ",
- "Repeat New Recovery key password" : "Neues Schlüsselpasswort zur Wiederherstellung wiederholen",
+ "Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
+ "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
+ "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change Password" : "Passwort ändern",
+ "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
"Your private key password no longer matches your log-in password." : "Das Privatschlüsselpasswort stimmt nicht länger mit dem Anmeldepasswort überein.",
"Set your old private key password to your current log-in password:" : "Ihr altes Privatschlüsselpasswort auf Ihr aktuelles Anmeldepasswort stellen:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Aktuelles Anmeldepasswort",
"Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren",
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.",
+ "Enabled" : "Aktiviert",
+ "Disabled" : "Deaktiviert"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/de_DE.json b/apps/encryption/l10n/de_DE.json
index 66e7d6f9772..aee9e551163 100644
--- a/apps/encryption/l10n/de_DE.json
+++ b/apps/encryption/l10n/de_DE.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
"Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
+ "Missing parameters" : "Fehlende Parameter",
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
"Please provide a new recovery password" : "Bitte das neue Passwort zur Wiederherstellung eingeben",
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
"Password successfully changed." : "Das Passwort wurde erfolgreich geändert.",
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
+ "Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert",
"Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert",
"Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuchen Sie es noch einmal oder kontaktieren Sie Ihren Administrator",
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisieren Sie Ihr privates Schlüsselpasswort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.",
- "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktivieren Sie den Wiederherstellungsschlüssel (erlaubt die Wiederherstellung des Zugangs zu den Benutzerdateien, wenn das Passwort verloren geht):",
+ "Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
+ "Disable recovery key" : "Wiederherstellungsschlüssel deaktivieren",
+ "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." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zum Verschlüsseln von Dateien benutzt wird. Er erlaubt die Wiederherstellung von Benutzerdateien auch dann, wenn der Benutzer sein oder ihr Passwort vergessen hat.",
"Recovery key password" : "Wiederherstellungschlüsselpasswort",
- "Repeat Recovery key password" : "Schlüsselpasswort zur Wiederherstellung wiederholen",
- "Enabled" : "Aktiviert",
- "Disabled" : "Deaktiviert",
+ "Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change recovery key password:" : "Wiederherstellungsschlüsselpasswort ändern",
- "Old Recovery key password" : "Altes Wiederherstellungsschlüsselpasswort",
- "New Recovery key password" : "Neues Wiederherstellungsschlüsselpasswort ",
- "Repeat New Recovery key password" : "Neues Schlüsselpasswort zur Wiederherstellung wiederholen",
+ "Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
+ "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
+ "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
"Change Password" : "Passwort ändern",
+ "ownCloud basic encryption module" : "ownCloud-Basisverschlüsselungsmodul",
"Your private key password no longer matches your log-in password." : "Das Privatschlüsselpasswort stimmt nicht länger mit dem Anmeldepasswort überein.",
"Set your old private key password to your current log-in password:" : "Ihr altes Privatschlüsselpasswort auf Ihr aktuelles Anmeldepasswort stellen:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Aktuelles Anmeldepasswort",
"Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren",
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.",
+ "Enabled" : "Aktiviert",
+ "Disabled" : "Deaktiviert"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js
index 4b8ebdc2f7f..ec6491dc055 100644
--- a/apps/encryption/l10n/el.js
+++ b/apps/encryption/l10n/el.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Αποτυχία ενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
"Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης",
"Could not disable recovery key. Please check your recovery key password!" : "Αποτυχία απενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
+ "Missing parameters" : "Ελλιπείς παράμετροι",
"Please provide the old recovery password" : "Παρακαλώ παρέχετε τον παλιό κωδικό επαναφοράς",
"Please provide a new recovery password" : "Παρακαλώ παρέχετε ένα νέο κωδικό επαναφοράς",
"Please repeat the new recovery password" : "Παρακαλώ επαναλάβετε το νέο κωδικό επαναφοράς",
"Password successfully changed." : "Ο κωδικός αλλάχτηκε επιτυχώς.",
"Could not change the password. Maybe the old password was not correct." : "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.",
+ "Recovery Key disabled" : "Κλειδί ανάκτησης απενεργοποιημένο",
"Recovery Key enabled" : "Κλειδί ανάκτησης ενεργοποιημένο",
"Could not enable the recovery key, please try again or contact your administrator" : "Αδυναμία ενεργοποίησης κλειδιού ανάκτησης, παρακαλούμε προσπαθήστε αργότερα ή επικοινωνήστε με το διαχειριστή σας",
"Could not update the private key password." : "Αποτυχία ενημέρωσης του προσωπικού κλειδιού πρόσβασης",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδίου σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
- "ownCloud basic encryption module" : "Βασική μονάδα κρυπτογράφησης του ",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Ενεργοποίηση κλειδιού ανάκτησης (επιτρέψτε την ανάκτηση αρχείων χρηστών σε περίπτωση απώλειας κωδικού):",
+ "Enable recovery key" : "Ενεργοποίηση κλειδιού ανάκτησης",
+ "Disable recovery key" : "Απενεργοποίηση κλειδιού ανάκτησης",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Το κλειδί ανάκτησης είναι ένα επιπλέον κλειδί κρυπτογράφησης που χρησιμοποιείται για να κρυπτογραφήσει αρχεία. Επιτρέπει την ανάκτηση των αρχείων ενός χρήστη αν αυτός/αυτή ξεχάσει τον κωδικό πρόσβασης.",
"Recovery key password" : "Επαναφορά κωδικού κλειδιού",
- "Repeat Recovery key password" : "Επαναλάβετε το κλειδί επαναφοράς κωδικού",
- "Enabled" : "Ενεργοποιημένο",
- "Disabled" : "Απενεργοποιημένο",
+ "Repeat recovery key password" : "Επαναλάβετε τον κωδικό του κλειδιού ανάκτησης",
"Change recovery key password:" : "Αλλαγή κλειδιού επαναφοράς κωδικού:",
- "Old Recovery key password" : "Παλιό κλειδί επαναφοράς κωδικού",
- "New Recovery key password" : "Νέο κλειδί επαναφοράς κωδικού",
- "Repeat New Recovery key password" : "Επαναλάβετε νέο κλειδί επαναφοράς κωδικού",
+ "Old recovery key password" : "Παλιός κωδικός κλειδιού ανάκτησης",
+ "New recovery key password" : "Νέος κωδικός κλειδιού ανάκτησης",
+ "Repeat new recovery key password" : "Επαναλάβετε το νέο κωδικό κλειδιού ανάκτησης",
"Change Password" : "Αλλαγή Κωδικού Πρόσβασης",
+ "ownCloud basic encryption module" : "Βασική μονάδα κρυπτογράφησης του ",
"Your private key password no longer matches your log-in password." : "Ο κωδικός του ιδιωτικού κλειδιού σας δεν ταιριάζει πλέον με τον κωδικό σύνδεσής σας.",
"Set your old private key password to your current log-in password:" : "Ορίστε τον παλιό σας κωδικό ιδιωτικού κλειδιού στον τρέχοντα κωδικό σύνδεσης.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Εάν δεν θυμάστε τον παλιό σας κωδικό μπορείτε να ζητήσετε από τον διαχειριστή σας να επανακτήσει τα αρχεία σας.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Τρέχον συνθηματικό πρόσβασης",
"Update Private Key Password" : "Ενημέρωση Προσωπικού Κλειδού Πρόσβασης",
"Enable password recovery:" : "Ενεργοποιήστε την ανάκτηση κωδικού πρόσβασης",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας",
+ "Enabled" : "Ενεργοποιημένο",
+ "Disabled" : "Απενεργοποιημένο"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json
index b75921da40c..a94eac410da 100644
--- a/apps/encryption/l10n/el.json
+++ b/apps/encryption/l10n/el.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Αποτυχία ενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
"Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης",
"Could not disable recovery key. Please check your recovery key password!" : "Αποτυχία απενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
+ "Missing parameters" : "Ελλιπείς παράμετροι",
"Please provide the old recovery password" : "Παρακαλώ παρέχετε τον παλιό κωδικό επαναφοράς",
"Please provide a new recovery password" : "Παρακαλώ παρέχετε ένα νέο κωδικό επαναφοράς",
"Please repeat the new recovery password" : "Παρακαλώ επαναλάβετε το νέο κωδικό επαναφοράς",
"Password successfully changed." : "Ο κωδικός αλλάχτηκε επιτυχώς.",
"Could not change the password. Maybe the old password was not correct." : "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.",
+ "Recovery Key disabled" : "Κλειδί ανάκτησης απενεργοποιημένο",
"Recovery Key enabled" : "Κλειδί ανάκτησης ενεργοποιημένο",
"Could not enable the recovery key, please try again or contact your administrator" : "Αδυναμία ενεργοποίησης κλειδιού ανάκτησης, παρακαλούμε προσπαθήστε αργότερα ή επικοινωνήστε με το διαχειριστή σας",
"Could not update the private key password." : "Αποτυχία ενημέρωσης του προσωπικού κλειδιού πρόσβασης",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδίου σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
- "ownCloud basic encryption module" : "Βασική μονάδα κρυπτογράφησης του ",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Ενεργοποίηση κλειδιού ανάκτησης (επιτρέψτε την ανάκτηση αρχείων χρηστών σε περίπτωση απώλειας κωδικού):",
+ "Enable recovery key" : "Ενεργοποίηση κλειδιού ανάκτησης",
+ "Disable recovery key" : "Απενεργοποίηση κλειδιού ανάκτησης",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Το κλειδί ανάκτησης είναι ένα επιπλέον κλειδί κρυπτογράφησης που χρησιμοποιείται για να κρυπτογραφήσει αρχεία. Επιτρέπει την ανάκτηση των αρχείων ενός χρήστη αν αυτός/αυτή ξεχάσει τον κωδικό πρόσβασης.",
"Recovery key password" : "Επαναφορά κωδικού κλειδιού",
- "Repeat Recovery key password" : "Επαναλάβετε το κλειδί επαναφοράς κωδικού",
- "Enabled" : "Ενεργοποιημένο",
- "Disabled" : "Απενεργοποιημένο",
+ "Repeat recovery key password" : "Επαναλάβετε τον κωδικό του κλειδιού ανάκτησης",
"Change recovery key password:" : "Αλλαγή κλειδιού επαναφοράς κωδικού:",
- "Old Recovery key password" : "Παλιό κλειδί επαναφοράς κωδικού",
- "New Recovery key password" : "Νέο κλειδί επαναφοράς κωδικού",
- "Repeat New Recovery key password" : "Επαναλάβετε νέο κλειδί επαναφοράς κωδικού",
+ "Old recovery key password" : "Παλιός κωδικός κλειδιού ανάκτησης",
+ "New recovery key password" : "Νέος κωδικός κλειδιού ανάκτησης",
+ "Repeat new recovery key password" : "Επαναλάβετε το νέο κωδικό κλειδιού ανάκτησης",
"Change Password" : "Αλλαγή Κωδικού Πρόσβασης",
+ "ownCloud basic encryption module" : "Βασική μονάδα κρυπτογράφησης του ",
"Your private key password no longer matches your log-in password." : "Ο κωδικός του ιδιωτικού κλειδιού σας δεν ταιριάζει πλέον με τον κωδικό σύνδεσής σας.",
"Set your old private key password to your current log-in password:" : "Ορίστε τον παλιό σας κωδικό ιδιωτικού κλειδιού στον τρέχοντα κωδικό σύνδεσης.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Εάν δεν θυμάστε τον παλιό σας κωδικό μπορείτε να ζητήσετε από τον διαχειριστή σας να επανακτήσει τα αρχεία σας.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Τρέχον συνθηματικό πρόσβασης",
"Update Private Key Password" : "Ενημέρωση Προσωπικού Κλειδού Πρόσβασης",
"Enable password recovery:" : "Ενεργοποιήστε την ανάκτηση κωδικού πρόσβασης",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας",
+ "Enabled" : "Ενεργοποιημένο",
+ "Disabled" : "Απενεργοποιημένο"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/en_GB.js b/apps/encryption/l10n/en_GB.js
index 3669bd8f097..678c62f982d 100644
--- a/apps/encryption/l10n/en_GB.js
+++ b/apps/encryption/l10n/en_GB.js
@@ -13,22 +13,18 @@ OC.L10N.register(
"Please repeat the new recovery password" : "Please repeat the new recovery password",
"Password successfully changed." : "Password changed successfully.",
"Could not change the password. Maybe the old password was not correct." : "Could not change the password. Maybe the old password was incorrect.",
+ "Recovery Key enabled" : "Recovery Key enabled",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Could not enable the recovery key, please try again or contact your administrator",
"Could not update the private key password." : "Could not update the private key password.",
"The old password was not correct, please try again." : "The old password was not correct, please try again.",
"The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.",
"Private key password successfully updated." : "Private key password updated successfully.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "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 but your keys are not initialised, please log-out and log-in again",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Enable recovery key (allow to recover users files in case of password loss):",
"Recovery key password" : "Recovery key password",
- "Repeat Recovery key password" : "Repeat recovery key password",
- "Enabled" : "Enabled",
- "Disabled" : "Disabled",
"Change recovery key password:" : "Change recovery key password:",
- "Old Recovery key password" : "Old recovery key password",
- "New Recovery key password" : "New recovery key password",
- "Repeat New Recovery key password" : "Repeat new recovery key password",
"Change Password" : "Change Password",
+ "ownCloud basic encryption module" : "ownCloud basic encryption module",
"Your private key password no longer matches your log-in password." : "Your private key password no longer matches your log-in password.",
"Set your old private key password to your current log-in password:" : "Set your old private key password to your current log-in password:",
" If you don't remember your old password you can ask your administrator to recover your files." : " If you don't remember your old password you can ask your administrator to recover your files.",
@@ -36,6 +32,8 @@ OC.L10N.register(
"Current log-in password" : "Current login password",
"Update Private Key Password" : "Update Private Key Password",
"Enable password recovery:" : "Enable password recovery:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss",
+ "Enabled" : "Enabled",
+ "Disabled" : "Disabled"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/en_GB.json b/apps/encryption/l10n/en_GB.json
index 34d4f90070e..6132868f396 100644
--- a/apps/encryption/l10n/en_GB.json
+++ b/apps/encryption/l10n/en_GB.json
@@ -11,22 +11,18 @@
"Please repeat the new recovery password" : "Please repeat the new recovery password",
"Password successfully changed." : "Password changed successfully.",
"Could not change the password. Maybe the old password was not correct." : "Could not change the password. Maybe the old password was incorrect.",
+ "Recovery Key enabled" : "Recovery Key enabled",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Could not enable the recovery key, please try again or contact your administrator",
"Could not update the private key password." : "Could not update the private key password.",
"The old password was not correct, please try again." : "The old password was not correct, please try again.",
"The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.",
"Private key password successfully updated." : "Private key password updated successfully.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "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 but your keys are not initialised, please log-out and log-in again",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Enable recovery key (allow to recover users files in case of password loss):",
"Recovery key password" : "Recovery key password",
- "Repeat Recovery key password" : "Repeat recovery key password",
- "Enabled" : "Enabled",
- "Disabled" : "Disabled",
"Change recovery key password:" : "Change recovery key password:",
- "Old Recovery key password" : "Old recovery key password",
- "New Recovery key password" : "New recovery key password",
- "Repeat New Recovery key password" : "Repeat new recovery key password",
"Change Password" : "Change Password",
+ "ownCloud basic encryption module" : "ownCloud basic encryption module",
"Your private key password no longer matches your log-in password." : "Your private key password no longer matches your log-in password.",
"Set your old private key password to your current log-in password:" : "Set your old private key password to your current log-in password:",
" If you don't remember your old password you can ask your administrator to recover your files." : " If you don't remember your old password you can ask your administrator to recover your files.",
@@ -34,6 +30,8 @@
"Current log-in password" : "Current login password",
"Update Private Key Password" : "Update Private Key Password",
"Enable password recovery:" : "Enable password recovery:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss",
+ "Enabled" : "Enabled",
+ "Disabled" : "Disabled"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/eo.js b/apps/encryption/l10n/eo.js
index b547556342c..c575db5569b 100644
--- a/apps/encryption/l10n/eo.js
+++ b/apps/encryption/l10n/eo.js
@@ -4,12 +4,12 @@ OC.L10N.register(
"Password successfully changed." : "La pasvorto sukcese ŝanĝiĝis.",
"Could not change the password. Maybe the old password was not correct." : "Ne eblis ŝanĝi la pasvorton. Eble la malnova pasvorto malĝustis.",
"Private key password successfully updated." : "La pasvorto de la malpublika klavo sukcese ĝisdatiĝis.",
- "Enabled" : "Kapabligita",
- "Disabled" : "Malkapabligita",
"Change Password" : "Ŝarĝi pasvorton",
"Old log-in password" : "Malnova ensaluta pasvorto",
"Current log-in password" : "Nuna ensaluta pasvorto",
"Update Private Key Password" : "Ĝisdatigi la pasvorton de la malpublika klavo",
- "Enable password recovery:" : "Kapabligi restaŭron de pasvorto:"
+ "Enable password recovery:" : "Kapabligi restaŭron de pasvorto:",
+ "Enabled" : "Kapabligita",
+ "Disabled" : "Malkapabligita"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/eo.json b/apps/encryption/l10n/eo.json
index d907cc2a493..8a79a2be564 100644
--- a/apps/encryption/l10n/eo.json
+++ b/apps/encryption/l10n/eo.json
@@ -2,12 +2,12 @@
"Password successfully changed." : "La pasvorto sukcese ŝanĝiĝis.",
"Could not change the password. Maybe the old password was not correct." : "Ne eblis ŝanĝi la pasvorton. Eble la malnova pasvorto malĝustis.",
"Private key password successfully updated." : "La pasvorto de la malpublika klavo sukcese ĝisdatiĝis.",
- "Enabled" : "Kapabligita",
- "Disabled" : "Malkapabligita",
"Change Password" : "Ŝarĝi pasvorton",
"Old log-in password" : "Malnova ensaluta pasvorto",
"Current log-in password" : "Nuna ensaluta pasvorto",
"Update Private Key Password" : "Ĝisdatigi la pasvorton de la malpublika klavo",
- "Enable password recovery:" : "Kapabligi restaŭron de pasvorto:"
+ "Enable password recovery:" : "Kapabligi restaŭron de pasvorto:",
+ "Enabled" : "Kapabligita",
+ "Disabled" : "Malkapabligita"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js
index 6a682d1a209..dd49810f03a 100644
--- a/apps/encryption/l10n/es.js
+++ b/apps/encryption/l10n/es.js
@@ -5,33 +5,34 @@ OC.L10N.register(
"Please repeat the recovery key password" : "Por favor, repita la contraseña de recuperación",
"Repeated recovery key password does not match the provided recovery key password" : "La contraseña de recuperación reintroducida no coincide con la contraseña de recuperación proporcionada",
"Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos",
- "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la contraseña de recuperación. Por favor compruebe su contraseña de recuperación!",
+ "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la contraseña de recuperación. Por favor, ¡compruebe su contraseña de recuperación!",
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
"Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor, ¡compruebe su contraseña!",
+ "Missing parameters" : "Faltan parámetros",
"Please provide the old recovery password" : "Por favor, ingrese su antigua contraseña de recuperación",
- "Please provide a new recovery password" : "Por favor, ingrese una nueva contraseña de recuperación",
+ "Please provide a new recovery password" : "Por favor, provea una nueva contraseña de recuperación",
"Please repeat the new recovery password" : "Por favor, repita su nueva contraseña de recuperación",
"Password successfully changed." : "Su contraseña ha sido cambiada",
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
+ "Recovery Key disabled" : "Desactivada la clave de recuperación",
"Recovery Key enabled" : "Recuperación de clave habilitada",
"Could not enable the recovery key, please try again or contact your administrator" : "No se pudo habilitar la clave de recuperación, por favor vuelva a intentarlo o póngase en contacto con el administrador",
"Could not update the private key password." : "No se pudo actualizar la contraseña de la clave privada.",
- "The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor intente de nuevo.",
- "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcto, por favor intente de nuevo.",
+ "The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor inténtelo de nuevo.",
+ "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcta, por favor inténtelo de nuevo.",
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
"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.",
- "ownCloud basic encryption module" : "Módulo básico de encriptación ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuario en caso de pérdida de la contraseña);",
+ "Enable recovery key" : "Activa la clave de recuperación",
+ "Disable recovery key" : "Desactiva la clave de recuperación",
"Recovery key password" : "Contraseña de clave de recuperación",
- "Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
- "Enabled" : "Habilitar",
- "Disabled" : "Deshabilitado",
+ "Repeat recovery key password" : "Repita la contraseña de recuperación",
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
- "Old Recovery key password" : "Antigua clave de recuperación",
- "New Recovery key password" : "Nueva clave de recuperación",
- "Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
+ "Old recovery key password" : "Antigua contraseña de recuperación",
+ "New recovery key password" : "Nueva contraseña de recuperación",
+ "Repeat new recovery key password" : "Repita la nueva contraseña de recuperación.",
"Change Password" : "Cambiar contraseña",
+ "ownCloud basic encryption module" : "Módulo básico de cifrado ownCloud",
"Your private key password no longer matches your log-in password." : "Su contraseña de clave privada ya no coincide con su contraseña de acceso.",
"Set your old private key password to your current log-in password:" : "Establezca la contraseña de clave privada antigua para su contraseña de inicio de sesión actual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus ficheros.",
@@ -39,6 +40,8 @@ OC.L10N.register(
"Current log-in password" : "Contraseña de acceso actual",
"Update Private Key Password" : "Actualizar contraseña de clave privada",
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña",
+ "Enabled" : "Habilitar",
+ "Disabled" : "Deshabilitado"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json
index 9aaedac1f10..54811d078c9 100644
--- a/apps/encryption/l10n/es.json
+++ b/apps/encryption/l10n/es.json
@@ -3,33 +3,34 @@
"Please repeat the recovery key password" : "Por favor, repita la contraseña de recuperación",
"Repeated recovery key password does not match the provided recovery key password" : "La contraseña de recuperación reintroducida no coincide con la contraseña de recuperación proporcionada",
"Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos",
- "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la contraseña de recuperación. Por favor compruebe su contraseña de recuperación!",
+ "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la contraseña de recuperación. Por favor, ¡compruebe su contraseña de recuperación!",
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
"Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor, ¡compruebe su contraseña!",
+ "Missing parameters" : "Faltan parámetros",
"Please provide the old recovery password" : "Por favor, ingrese su antigua contraseña de recuperación",
- "Please provide a new recovery password" : "Por favor, ingrese una nueva contraseña de recuperación",
+ "Please provide a new recovery password" : "Por favor, provea una nueva contraseña de recuperación",
"Please repeat the new recovery password" : "Por favor, repita su nueva contraseña de recuperación",
"Password successfully changed." : "Su contraseña ha sido cambiada",
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
+ "Recovery Key disabled" : "Desactivada la clave de recuperación",
"Recovery Key enabled" : "Recuperación de clave habilitada",
"Could not enable the recovery key, please try again or contact your administrator" : "No se pudo habilitar la clave de recuperación, por favor vuelva a intentarlo o póngase en contacto con el administrador",
"Could not update the private key password." : "No se pudo actualizar la contraseña de la clave privada.",
- "The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor intente de nuevo.",
- "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcto, por favor intente de nuevo.",
+ "The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor inténtelo de nuevo.",
+ "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcta, por favor inténtelo de nuevo.",
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
"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.",
- "ownCloud basic encryption module" : "Módulo básico de encriptación ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuario en caso de pérdida de la contraseña);",
+ "Enable recovery key" : "Activa la clave de recuperación",
+ "Disable recovery key" : "Desactiva la clave de recuperación",
"Recovery key password" : "Contraseña de clave de recuperación",
- "Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
- "Enabled" : "Habilitar",
- "Disabled" : "Deshabilitado",
+ "Repeat recovery key password" : "Repita la contraseña de recuperación",
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
- "Old Recovery key password" : "Antigua clave de recuperación",
- "New Recovery key password" : "Nueva clave de recuperación",
- "Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
+ "Old recovery key password" : "Antigua contraseña de recuperación",
+ "New recovery key password" : "Nueva contraseña de recuperación",
+ "Repeat new recovery key password" : "Repita la nueva contraseña de recuperación.",
"Change Password" : "Cambiar contraseña",
+ "ownCloud basic encryption module" : "Módulo básico de cifrado ownCloud",
"Your private key password no longer matches your log-in password." : "Su contraseña de clave privada ya no coincide con su contraseña de acceso.",
"Set your old private key password to your current log-in password:" : "Establezca la contraseña de clave privada antigua para su contraseña de inicio de sesión actual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus ficheros.",
@@ -37,6 +38,8 @@
"Current log-in password" : "Contraseña de acceso actual",
"Update Private Key Password" : "Actualizar contraseña de clave privada",
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña",
+ "Enabled" : "Habilitar",
+ "Disabled" : "Deshabilitado"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/es_AR.js b/apps/encryption/l10n/es_AR.js
index 527536b26fb..4b47a49e629 100644
--- a/apps/encryption/l10n/es_AR.js
+++ b/apps/encryption/l10n/es_AR.js
@@ -10,21 +10,16 @@ OC.L10N.register(
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Llave privada inválida para la aplicación de encriptación. Por favor actualice la clave de la llave privada en las configuraciones personales para recobrar el acceso a sus archivos encriptados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encriptación está habilitada pero las llaves no fueron inicializadas, por favor termine y vuelva a iniciar la sesión",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar clave de recuperación (te permite recuperar los archivos de usuario en el caso que pierdas la contraseña):",
"Recovery key password" : "Contraseña de recuperación de clave",
- "Repeat Recovery key password" : "Repetir la contraseña de la clave de recuperación",
- "Enabled" : "Habilitado",
- "Disabled" : "Deshabilitado",
"Change recovery key password:" : "Cambiar contraseña para recuperar la clave:",
- "Old Recovery key password" : "Contraseña antigua de recuperación de clave",
- "New Recovery key password" : "Nueva contraseña de recuperación de clave",
- "Repeat New Recovery key password" : "Repetir Nueva contraseña para la clave de recuperación",
"Change Password" : "Cambiar contraseña",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no te acordás de tu contraseña antigua, pedile al administrador que recupere tus archivos",
"Old log-in password" : "Contraseña anterior",
"Current log-in password" : "Contraseña actual",
"Update Private Key Password" : "Actualizar contraseña de la clave privada",
"Enable password recovery:" : "Habilitar recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitando esta opción, vas a tener acceso a tus archivos encriptados, incluso si perdés la contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitando esta opción, vas a tener acceso a tus archivos encriptados, incluso si perdés la contraseña",
+ "Enabled" : "Habilitado",
+ "Disabled" : "Deshabilitado"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/es_AR.json b/apps/encryption/l10n/es_AR.json
index 7b154b351e7..9c5d2519333 100644
--- a/apps/encryption/l10n/es_AR.json
+++ b/apps/encryption/l10n/es_AR.json
@@ -8,21 +8,16 @@
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Llave privada inválida para la aplicación de encriptación. Por favor actualice la clave de la llave privada en las configuraciones personales para recobrar el acceso a sus archivos encriptados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encriptación está habilitada pero las llaves no fueron inicializadas, por favor termine y vuelva a iniciar la sesión",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar clave de recuperación (te permite recuperar los archivos de usuario en el caso que pierdas la contraseña):",
"Recovery key password" : "Contraseña de recuperación de clave",
- "Repeat Recovery key password" : "Repetir la contraseña de la clave de recuperación",
- "Enabled" : "Habilitado",
- "Disabled" : "Deshabilitado",
"Change recovery key password:" : "Cambiar contraseña para recuperar la clave:",
- "Old Recovery key password" : "Contraseña antigua de recuperación de clave",
- "New Recovery key password" : "Nueva contraseña de recuperación de clave",
- "Repeat New Recovery key password" : "Repetir Nueva contraseña para la clave de recuperación",
"Change Password" : "Cambiar contraseña",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no te acordás de tu contraseña antigua, pedile al administrador que recupere tus archivos",
"Old log-in password" : "Contraseña anterior",
"Current log-in password" : "Contraseña actual",
"Update Private Key Password" : "Actualizar contraseña de la clave privada",
"Enable password recovery:" : "Habilitar recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitando esta opción, vas a tener acceso a tus archivos encriptados, incluso si perdés la contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitando esta opción, vas a tener acceso a tus archivos encriptados, incluso si perdés la contraseña",
+ "Enabled" : "Habilitado",
+ "Disabled" : "Deshabilitado"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/es_MX.js b/apps/encryption/l10n/es_MX.js
index a3b4645040d..64bfc291f82 100644
--- a/apps/encryption/l10n/es_MX.js
+++ b/apps/encryption/l10n/es_MX.js
@@ -10,21 +10,16 @@ OC.L10N.register(
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
"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 aplicación 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 aplicación de crifrado está habilitada pero tus claves no han sido inicializadas, por favor, cierra la sesión y vuelva a iniciarla de nuevo.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los archivos del usuario en caso de pérdida de la contraseña);",
"Recovery key password" : "Contraseña de clave de recuperación",
- "Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
- "Enabled" : "Habilitar",
- "Disabled" : "Deshabilitado",
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
- "Old Recovery key password" : "Antigua clave de recuperación",
- "New Recovery key password" : "Nueva clave de recuperación",
- "Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
"Change Password" : "Cambiar contraseña",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus archivos.",
"Old log-in password" : "Contraseña de acceso antigua",
"Current log-in password" : "Contraseña de acceso actual",
"Update Private Key Password" : "Actualizar Contraseña de Clave Privada",
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña",
+ "Enabled" : "Habilitar",
+ "Disabled" : "Deshabilitado"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/es_MX.json b/apps/encryption/l10n/es_MX.json
index 96d745e8f0d..9115513d7b1 100644
--- a/apps/encryption/l10n/es_MX.json
+++ b/apps/encryption/l10n/es_MX.json
@@ -8,21 +8,16 @@
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
"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 aplicación 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 aplicación de crifrado está habilitada pero tus claves no han sido inicializadas, por favor, cierra la sesión y vuelva a iniciarla de nuevo.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los archivos del usuario en caso de pérdida de la contraseña);",
"Recovery key password" : "Contraseña de clave de recuperación",
- "Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
- "Enabled" : "Habilitar",
- "Disabled" : "Deshabilitado",
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
- "Old Recovery key password" : "Antigua clave de recuperación",
- "New Recovery key password" : "Nueva clave de recuperación",
- "Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
"Change Password" : "Cambiar contraseña",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus archivos.",
"Old log-in password" : "Contraseña de acceso antigua",
"Current log-in password" : "Contraseña de acceso actual",
"Update Private Key Password" : "Actualizar Contraseña de Clave Privada",
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña",
+ "Enabled" : "Habilitar",
+ "Disabled" : "Deshabilitado"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/et_EE.js b/apps/encryption/l10n/et_EE.js
index 67e7993cdd6..6e2684058fe 100644
--- a/apps/encryption/l10n/et_EE.js
+++ b/apps/encryption/l10n/et_EE.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Vigane Krüpteerimisrakendi privaatvõti . Palun uuenda oma privaatse võtme parool oma personaasete seadete all taastamaks ligipääsu oma krüpteeritud failidele.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Luba taastevõti (võimalda kasutaja failide taastamine parooli kaotuse puhul):",
"Recovery key password" : "Taastevõtme parool",
- "Repeat Recovery key password" : "Korda taastevõtme parooli",
- "Enabled" : "Sisse lülitatud",
- "Disabled" : "Väljalülitatud",
"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.",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Praegune sisselogimise parool",
"Update Private Key Password" : "Uuenda privaatse võtme parooli",
"Enable password recovery:" : "Luba parooli taaste:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul",
+ "Enabled" : "Sisse lülitatud",
+ "Disabled" : "Väljalülitatud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/et_EE.json b/apps/encryption/l10n/et_EE.json
index 00991bb6c88..66839779f67 100644
--- a/apps/encryption/l10n/et_EE.json
+++ b/apps/encryption/l10n/et_EE.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Vigane Krüpteerimisrakendi privaatvõti . Palun uuenda oma privaatse võtme parool oma personaasete seadete all taastamaks ligipääsu oma krüpteeritud failidele.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Luba taastevõti (võimalda kasutaja failide taastamine parooli kaotuse puhul):",
"Recovery key password" : "Taastevõtme parool",
- "Repeat Recovery key password" : "Korda taastevõtme parooli",
- "Enabled" : "Sisse lülitatud",
- "Disabled" : "Väljalülitatud",
"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.",
@@ -34,6 +27,8 @@
"Current log-in password" : "Praegune sisselogimise parool",
"Update Private Key Password" : "Uuenda privaatse võtme parooli",
"Enable password recovery:" : "Luba parooli taaste:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul",
+ "Enabled" : "Sisse lülitatud",
+ "Disabled" : "Väljalülitatud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/eu.js b/apps/encryption/l10n/eu.js
index c8942314d38..083bd125ba9 100644
--- a/apps/encryption/l10n/eu.js
+++ b/apps/encryption/l10n/eu.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Enkriptazio aplikaziorako gako pribatu okerra. Mesedez eguneratu zure gako pribatuaren pasahitza zure ezarpen pertsonaletan zure enkriptatuko fitxategietarako sarrera berreskuratzeko.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptazio aplikazioa gaituta dago baina zure gakoak ez daude konfiguratuta, mesedez saioa bukatu eta berriro hasi",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Gaitu berreskurapen gakoa (erabiltzaileen fitxategiak berreskuratzea ahalbidetzen du pasahitza galtzen badute ere):",
"Recovery key password" : "Berreskuratze gako pasahitza",
- "Repeat Recovery key password" : "Errepikatu berreskuratze gakoaren pasahitza",
- "Enabled" : "Gaitua",
- "Disabled" : "Ez-gaitua",
"Change recovery key password:" : "Aldatu berreskuratze gako pasahitza:",
- "Old Recovery key password" : "Berreskuratze gako pasahitz zaharra",
- "New Recovery key password" : "Berreskuratze gako pasahitz berria",
- "Repeat New Recovery key password" : "Errepikatu berreskuratze gako berriaren pasahitza",
"Change Password" : "Aldatu Pasahitza",
"Your private key password no longer matches your log-in password." : "Zure gako pasahitza pribatua ez da dagoeneko bat etortzen zure sartzeko pasahitzarekin.",
"Set your old private key password to your current log-in password:" : "Ezarri zure gako pasahitz zaharra orain duzun sartzeko pasahitzan:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Sartzeko oraingo pasahitza",
"Update Private Key Password" : "Eguneratu gako pasahitza pribatua",
"Enable password recovery:" : "Gaitu pasahitzaren berreskuratzea:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aukera hau gaituz zure enkriptatutako fitxategiak berreskuratu ahal izango dituzu pasahitza galtzekotan"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aukera hau gaituz zure enkriptatutako fitxategiak berreskuratu ahal izango dituzu pasahitza galtzekotan",
+ "Enabled" : "Gaitua",
+ "Disabled" : "Ez-gaitua"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/eu.json b/apps/encryption/l10n/eu.json
index 4c83627f8df..88639331be4 100644
--- a/apps/encryption/l10n/eu.json
+++ b/apps/encryption/l10n/eu.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Enkriptazio aplikaziorako gako pribatu okerra. Mesedez eguneratu zure gako pribatuaren pasahitza zure ezarpen pertsonaletan zure enkriptatuko fitxategietarako sarrera berreskuratzeko.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptazio aplikazioa gaituta dago baina zure gakoak ez daude konfiguratuta, mesedez saioa bukatu eta berriro hasi",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Gaitu berreskurapen gakoa (erabiltzaileen fitxategiak berreskuratzea ahalbidetzen du pasahitza galtzen badute ere):",
"Recovery key password" : "Berreskuratze gako pasahitza",
- "Repeat Recovery key password" : "Errepikatu berreskuratze gakoaren pasahitza",
- "Enabled" : "Gaitua",
- "Disabled" : "Ez-gaitua",
"Change recovery key password:" : "Aldatu berreskuratze gako pasahitza:",
- "Old Recovery key password" : "Berreskuratze gako pasahitz zaharra",
- "New Recovery key password" : "Berreskuratze gako pasahitz berria",
- "Repeat New Recovery key password" : "Errepikatu berreskuratze gako berriaren pasahitza",
"Change Password" : "Aldatu Pasahitza",
"Your private key password no longer matches your log-in password." : "Zure gako pasahitza pribatua ez da dagoeneko bat etortzen zure sartzeko pasahitzarekin.",
"Set your old private key password to your current log-in password:" : "Ezarri zure gako pasahitz zaharra orain duzun sartzeko pasahitzan:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Sartzeko oraingo pasahitza",
"Update Private Key Password" : "Eguneratu gako pasahitza pribatua",
"Enable password recovery:" : "Gaitu pasahitzaren berreskuratzea:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aukera hau gaituz zure enkriptatutako fitxategiak berreskuratu ahal izango dituzu pasahitza galtzekotan"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aukera hau gaituz zure enkriptatutako fitxategiak berreskuratu ahal izango dituzu pasahitza galtzekotan",
+ "Enabled" : "Gaitua",
+ "Disabled" : "Ez-gaitua"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/fa.js b/apps/encryption/l10n/fa.js
index 24e91656aed..493b3992a62 100644
--- a/apps/encryption/l10n/fa.js
+++ b/apps/encryption/l10n/fa.js
@@ -8,19 +8,16 @@ OC.L10N.register(
"Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.",
"Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.",
"Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "فعال کردن کلید بازیابی(اجازه بازیابی فایل های کاربران در صورت از دست دادن رمزعبور):",
"Recovery key password" : "رمزعبور کلید بازیابی",
- "Enabled" : "فعال شده",
- "Disabled" : "غیرفعال شده",
"Change recovery key password:" : "تغییر رمزعبور کلید بازیابی:",
- "Old Recovery key password" : "رمزعبور قدیمی کلید بازیابی ",
- "New Recovery key password" : "رمزعبور جدید کلید بازیابی",
"Change Password" : "تغییر رمزعبور",
" If you don't remember your old password you can ask your administrator to recover your files." : "اگر رمزعبور قدیمی را فراموش کرده اید میتوانید از مدیر خود برای بازیابی فایل هایتان درخواست نمایید.",
"Old log-in password" : "رمزعبور قدیمی",
"Current log-in password" : "رمزعبور فعلی",
"Update Private Key Password" : "به روز رسانی رمزعبور کلید خصوصی",
"Enable password recovery:" : "فعال سازی بازیابی رمزعبور:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "فعال کردن این گزینه به شما اجازه خواهد داد در صورت از دست دادن رمزعبور به فایل های رمزگذاری شده خود دسترسی داشته باشید."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "فعال کردن این گزینه به شما اجازه خواهد داد در صورت از دست دادن رمزعبور به فایل های رمزگذاری شده خود دسترسی داشته باشید.",
+ "Enabled" : "فعال شده",
+ "Disabled" : "غیرفعال شده"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/fa.json b/apps/encryption/l10n/fa.json
index ad046fcda2b..ccb7949e7e5 100644
--- a/apps/encryption/l10n/fa.json
+++ b/apps/encryption/l10n/fa.json
@@ -6,19 +6,16 @@
"Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.",
"Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.",
"Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "فعال کردن کلید بازیابی(اجازه بازیابی فایل های کاربران در صورت از دست دادن رمزعبور):",
"Recovery key password" : "رمزعبور کلید بازیابی",
- "Enabled" : "فعال شده",
- "Disabled" : "غیرفعال شده",
"Change recovery key password:" : "تغییر رمزعبور کلید بازیابی:",
- "Old Recovery key password" : "رمزعبور قدیمی کلید بازیابی ",
- "New Recovery key password" : "رمزعبور جدید کلید بازیابی",
"Change Password" : "تغییر رمزعبور",
" If you don't remember your old password you can ask your administrator to recover your files." : "اگر رمزعبور قدیمی را فراموش کرده اید میتوانید از مدیر خود برای بازیابی فایل هایتان درخواست نمایید.",
"Old log-in password" : "رمزعبور قدیمی",
"Current log-in password" : "رمزعبور فعلی",
"Update Private Key Password" : "به روز رسانی رمزعبور کلید خصوصی",
"Enable password recovery:" : "فعال سازی بازیابی رمزعبور:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "فعال کردن این گزینه به شما اجازه خواهد داد در صورت از دست دادن رمزعبور به فایل های رمزگذاری شده خود دسترسی داشته باشید."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "فعال کردن این گزینه به شما اجازه خواهد داد در صورت از دست دادن رمزعبور به فایل های رمزگذاری شده خود دسترسی داشته باشید.",
+ "Enabled" : "فعال شده",
+ "Disabled" : "غیرفعال شده"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/fi_FI.js b/apps/encryption/l10n/fi_FI.js
index 6589c4aa4c7..54b43463199 100644
--- a/apps/encryption/l10n/fi_FI.js
+++ b/apps/encryption/l10n/fi_FI.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Palautusavaimen käyttöönotto epäonnistui. Tarkista palautusavaimesi salasana!",
"Recovery key successfully disabled" : "Palautusavain poistettu onnistuneesti käytöstä",
"Could not disable recovery key. Please check your recovery key password!" : "Palautusavaimen poistaminen käytöstä ei onnistunut. Tarkista palautusavaimesi salasana!",
+ "Missing parameters" : "Puuttuvat parametrit",
"Please provide the old recovery password" : "Anna vanha palautussalasana",
"Please provide a new recovery password" : "Anna uusi palautussalasana",
"Please repeat the new recovery password" : "Toista uusi palautussalasana",
"Password successfully changed." : "Salasana vaihdettiin onnistuneesti.",
"Could not change the password. Maybe the old password was not correct." : "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin.",
+ "Recovery Key disabled" : "Palautusavain poistettu käytöstä",
"Recovery Key enabled" : "Palautusavain käytössä",
"Could not enable the recovery key, please try again or contact your administrator" : "Palautusavaimen käyttöönotto epäonnistui, yritä myöhemmin uudelleen tai ota yhteys ylläpitäjään",
"Could not update the private key password." : "Yksityisen avaimen salasanaa ei voitu päivittää.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Yksityisen avaimen salasana päivitettiin onnistuneesti.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Salaussovelluksen salausavain on virheellinen. Ole hyvä ja päivitä salausavain henkilökohtaisissa asetuksissasi jotta voit taas avata salatuskirjoitetut tiedostosi.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.",
- "ownCloud basic encryption module" : "ownCloudin perussalausmoduuli",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Käytä palautusavainta (salli käyttäjien tiedostojen palauttaminen, jos heidän salasana unohtuu):",
+ "Enable recovery key" : "Ota palautusavain käyttöön",
+ "Disable recovery key" : "Poista palautusavain käytöstä",
+ "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." : "Palautusavain on ylimääräinen salausavain, jota käytetään tiedostojen salaamiseen. Sen avulla on mahdollista palauttaa käyttäjien tiedostot, vaikka käyttäjä unohtaisi oman salasanansa.",
"Recovery key password" : "Palautusavaimen salasana",
- "Repeat Recovery key password" : "Toista palautusavaimen salasana",
- "Enabled" : "Käytössä",
- "Disabled" : "Ei käytössä",
+ "Repeat recovery key password" : "Toista salausavaimen salasana",
"Change recovery key password:" : "Vaihda palautusavaimen salasana:",
- "Old Recovery key password" : "Vanha palautusavaimen salasana",
- "New Recovery key password" : "Uusi palautusavaimen salasana",
- "Repeat New Recovery key password" : "Toista uusi palautusavaimen salasana",
+ "Old recovery key password" : "Vanha salausavaimen salasana",
+ "New recovery key password" : "Uusi salausavaimen salasana",
+ "Repeat new recovery key password" : "Toista uusi salausavaimen salasana",
"Change Password" : "Vaihda salasana",
+ "ownCloud basic encryption module" : "ownCloudin perussalausmoduuli",
"Your private key password no longer matches your log-in password." : "Salaisen avaimesi salasana ei enää vastaa kirjautumissalasanaasi.",
"Set your old private key password to your current log-in password:" : "Aseta yksityisen avaimen vanha salasana vastaamaan nykyistä kirjautumissalasanaasi:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Nykyinen kirjautumissalasana",
"Update Private Key Password" : "Päivitä yksityisen avaimen salasana",
"Enable password recovery:" : "Ota salasanan palautus käyttöön:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tämän valinnan käyttäminen mahdollistaa pääsyn salattuihin tiedostoihisi, jos salasana unohtuu"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tämän valinnan käyttäminen mahdollistaa pääsyn salattuihin tiedostoihisi, jos salasana unohtuu",
+ "Enabled" : "Käytössä",
+ "Disabled" : "Ei käytössä"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/fi_FI.json b/apps/encryption/l10n/fi_FI.json
index de8159a61b2..c42f9928c6b 100644
--- a/apps/encryption/l10n/fi_FI.json
+++ b/apps/encryption/l10n/fi_FI.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Palautusavaimen käyttöönotto epäonnistui. Tarkista palautusavaimesi salasana!",
"Recovery key successfully disabled" : "Palautusavain poistettu onnistuneesti käytöstä",
"Could not disable recovery key. Please check your recovery key password!" : "Palautusavaimen poistaminen käytöstä ei onnistunut. Tarkista palautusavaimesi salasana!",
+ "Missing parameters" : "Puuttuvat parametrit",
"Please provide the old recovery password" : "Anna vanha palautussalasana",
"Please provide a new recovery password" : "Anna uusi palautussalasana",
"Please repeat the new recovery password" : "Toista uusi palautussalasana",
"Password successfully changed." : "Salasana vaihdettiin onnistuneesti.",
"Could not change the password. Maybe the old password was not correct." : "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin.",
+ "Recovery Key disabled" : "Palautusavain poistettu käytöstä",
"Recovery Key enabled" : "Palautusavain käytössä",
"Could not enable the recovery key, please try again or contact your administrator" : "Palautusavaimen käyttöönotto epäonnistui, yritä myöhemmin uudelleen tai ota yhteys ylläpitäjään",
"Could not update the private key password." : "Yksityisen avaimen salasanaa ei voitu päivittää.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Yksityisen avaimen salasana päivitettiin onnistuneesti.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Salaussovelluksen salausavain on virheellinen. Ole hyvä ja päivitä salausavain henkilökohtaisissa asetuksissasi jotta voit taas avata salatuskirjoitetut tiedostosi.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.",
- "ownCloud basic encryption module" : "ownCloudin perussalausmoduuli",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Käytä palautusavainta (salli käyttäjien tiedostojen palauttaminen, jos heidän salasana unohtuu):",
+ "Enable recovery key" : "Ota palautusavain käyttöön",
+ "Disable recovery key" : "Poista palautusavain käytöstä",
+ "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." : "Palautusavain on ylimääräinen salausavain, jota käytetään tiedostojen salaamiseen. Sen avulla on mahdollista palauttaa käyttäjien tiedostot, vaikka käyttäjä unohtaisi oman salasanansa.",
"Recovery key password" : "Palautusavaimen salasana",
- "Repeat Recovery key password" : "Toista palautusavaimen salasana",
- "Enabled" : "Käytössä",
- "Disabled" : "Ei käytössä",
+ "Repeat recovery key password" : "Toista salausavaimen salasana",
"Change recovery key password:" : "Vaihda palautusavaimen salasana:",
- "Old Recovery key password" : "Vanha palautusavaimen salasana",
- "New Recovery key password" : "Uusi palautusavaimen salasana",
- "Repeat New Recovery key password" : "Toista uusi palautusavaimen salasana",
+ "Old recovery key password" : "Vanha salausavaimen salasana",
+ "New recovery key password" : "Uusi salausavaimen salasana",
+ "Repeat new recovery key password" : "Toista uusi salausavaimen salasana",
"Change Password" : "Vaihda salasana",
+ "ownCloud basic encryption module" : "ownCloudin perussalausmoduuli",
"Your private key password no longer matches your log-in password." : "Salaisen avaimesi salasana ei enää vastaa kirjautumissalasanaasi.",
"Set your old private key password to your current log-in password:" : "Aseta yksityisen avaimen vanha salasana vastaamaan nykyistä kirjautumissalasanaasi:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Nykyinen kirjautumissalasana",
"Update Private Key Password" : "Päivitä yksityisen avaimen salasana",
"Enable password recovery:" : "Ota salasanan palautus käyttöön:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tämän valinnan käyttäminen mahdollistaa pääsyn salattuihin tiedostoihisi, jos salasana unohtuu"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tämän valinnan käyttäminen mahdollistaa pääsyn salattuihin tiedostoihisi, jos salasana unohtuu",
+ "Enabled" : "Käytössä",
+ "Disabled" : "Ei käytössä"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js
index 44e571d88c0..293626e95da 100644
--- a/apps/encryption/l10n/fr.js
+++ b/apps/encryption/l10n/fr.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Impossible d'activer la clef de récupération. Veuillez vérifier le mot de passe de votre clé de récupération !",
"Recovery key successfully disabled" : "Clef de récupération désactivée avec succès",
"Could not disable recovery key. Please check your recovery key password!" : "Impossible de désactiver la clef de récupération. Veuillez vérifier le mot de passe de votre clef de récupération !",
+ "Missing parameters" : "Paramètres manquants",
"Please provide the old recovery password" : "Veuillez entrer l'ancien mot de passe de récupération",
"Please provide a new recovery password" : "Veuillez entrer un nouveau mot de passe de récupération",
"Please repeat the new recovery password" : "Veuillez répéter le nouveau mot de passe de récupération",
"Password successfully changed." : "Mot de passe changé avec succès.",
"Could not change the password. Maybe the old password was not correct." : "Erreur lors du changement de mot de passe. L'ancien mot de passe est peut-être incorrect.",
+ "Recovery Key disabled" : "Clé de récupération désactivée",
"Recovery Key enabled" : "Clef de récupération activée",
"Could not enable the recovery key, please try again or contact your administrator" : "Impossible d'activer la clef de récupération. Veuillez essayer à nouveau ou contacter votre administrateur",
"Could not update the private key password." : "Impossible de mettre à jour le mot de passe de la clef privée.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Mot de passe de la clef privée mis à jour avec succès.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée pour le chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de votre 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.",
- "ownCloud basic encryption module" : "Module de chiffrement de base d'ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activer la clef de récupération (permet de récupérer les fichiers des utilisateurs en cas de perte de mot de passe).",
+ "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 en cas d'oubli de leur mot de passe.",
"Recovery key password" : "Mot de passe de la clef de récupération",
- "Repeat Recovery key password" : "Répétez le mot de passe de la clef de récupération",
- "Enabled" : "Activé",
- "Disabled" : "Désactivé",
+ "Repeat recovery key password" : "Répétez le mot de passe de la clé de récupération",
"Change recovery key password:" : "Modifier le mot de passe de la clef de récupération :",
- "Old Recovery key password" : "Ancien mot de passe de la clef de récupération",
- "New Recovery key password" : "Nouveau mot de passe de la clef de récupération",
- "Repeat New Recovery key password" : "Répétez le nouveau mot de passe de la clef de récupération",
+ "Old recovery key password" : "Ancien mot de passe de la clé de récupération",
+ "New recovery key password" : "Nouveau mot de passe de la clé de récupération",
+ "Repeat new recovery key password" : "Répétez le nouveau mot de passe de la clé de récupération",
"Change Password" : "Changer de mot de passe",
+ "ownCloud basic encryption module" : "Module de chiffrement de base d'ownCloud",
"Your private key password no longer matches your log-in password." : "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion.",
"Set your old private key password to your current log-in password:" : "Faites de votre mot de passe de connexion le mot de passe de votre clef privée :",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Actuel mot de passe de connexion",
"Update Private Key Password" : "Mettre à jour le mot de passe de votre clef privée",
"Enable password recovery:" : "Activer la récupération du mot de passe :",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe",
+ "Enabled" : "Activé",
+ "Disabled" : "Désactivé"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json
index 9f8f41ad80f..c35d5d31296 100644
--- a/apps/encryption/l10n/fr.json
+++ b/apps/encryption/l10n/fr.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Impossible d'activer la clef de récupération. Veuillez vérifier le mot de passe de votre clé de récupération !",
"Recovery key successfully disabled" : "Clef de récupération désactivée avec succès",
"Could not disable recovery key. Please check your recovery key password!" : "Impossible de désactiver la clef de récupération. Veuillez vérifier le mot de passe de votre clef de récupération !",
+ "Missing parameters" : "Paramètres manquants",
"Please provide the old recovery password" : "Veuillez entrer l'ancien mot de passe de récupération",
"Please provide a new recovery password" : "Veuillez entrer un nouveau mot de passe de récupération",
"Please repeat the new recovery password" : "Veuillez répéter le nouveau mot de passe de récupération",
"Password successfully changed." : "Mot de passe changé avec succès.",
"Could not change the password. Maybe the old password was not correct." : "Erreur lors du changement de mot de passe. L'ancien mot de passe est peut-être incorrect.",
+ "Recovery Key disabled" : "Clé de récupération désactivée",
"Recovery Key enabled" : "Clef de récupération activée",
"Could not enable the recovery key, please try again or contact your administrator" : "Impossible d'activer la clef de récupération. Veuillez essayer à nouveau ou contacter votre administrateur",
"Could not update the private key password." : "Impossible de mettre à jour le mot de passe de la clef privée.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Mot de passe de la clef privée mis à jour avec succès.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée pour le chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de votre 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.",
- "ownCloud basic encryption module" : "Module de chiffrement de base d'ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activer la clef de récupération (permet de récupérer les fichiers des utilisateurs en cas de perte de mot de passe).",
+ "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 en cas d'oubli de leur mot de passe.",
"Recovery key password" : "Mot de passe de la clef de récupération",
- "Repeat Recovery key password" : "Répétez le mot de passe de la clef de récupération",
- "Enabled" : "Activé",
- "Disabled" : "Désactivé",
+ "Repeat recovery key password" : "Répétez le mot de passe de la clé de récupération",
"Change recovery key password:" : "Modifier le mot de passe de la clef de récupération :",
- "Old Recovery key password" : "Ancien mot de passe de la clef de récupération",
- "New Recovery key password" : "Nouveau mot de passe de la clef de récupération",
- "Repeat New Recovery key password" : "Répétez le nouveau mot de passe de la clef de récupération",
+ "Old recovery key password" : "Ancien mot de passe de la clé de récupération",
+ "New recovery key password" : "Nouveau mot de passe de la clé de récupération",
+ "Repeat new recovery key password" : "Répétez le nouveau mot de passe de la clé de récupération",
"Change Password" : "Changer de mot de passe",
+ "ownCloud basic encryption module" : "Module de chiffrement de base d'ownCloud",
"Your private key password no longer matches your log-in password." : "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion.",
"Set your old private key password to your current log-in password:" : "Faites de votre mot de passe de connexion le mot de passe de votre clef privée :",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Actuel mot de passe de connexion",
"Update Private Key Password" : "Mettre à jour le mot de passe de votre clef privée",
"Enable password recovery:" : "Activer la récupération du mot de passe :",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activer cette option vous permettra d'obtenir à nouveau l'accès à vos fichiers chiffrés en cas de perte de mot de passe",
+ "Enabled" : "Activé",
+ "Disabled" : "Désactivé"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/gl.js b/apps/encryption/l10n/gl.js
index b4598ecbb19..6cc14cc80e4 100644
--- a/apps/encryption/l10n/gl.js
+++ b/apps/encryption/l10n/gl.js
@@ -1,18 +1,20 @@
OC.L10N.register(
"encryption",
{
- "Missing recovery key password" : "Falta a chave de recuperación",
- "Please repeat the recovery key password" : "Repita a chave de recuperación",
- "Repeated recovery key password does not match the provided recovery key password" : "A repetición da chave de recuperación non coincide coa chave de recuperación estabelecida",
+ "Missing recovery key password" : "Falta o contrasinal da chave de recuperación",
+ "Please repeat the recovery key password" : "Repita o contrasinal da chave de recuperación",
+ "Repeated recovery key password does not match the provided recovery key password" : "A repetición do contrasinal da chave de recuperación non coincide co contrasinal da chave de recuperación fornecido",
"Recovery key successfully enabled" : "Activada satisfactoriamente a chave de recuperación",
"Could not enable recovery key. Please check your recovery key password!" : "Non foi posíbel activar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!",
"Recovery key successfully disabled" : "Desactivada satisfactoriamente a chave de recuperación",
"Could not disable recovery key. Please check your recovery key password!" : "Non foi posíbel desactivar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!",
- "Please provide the old recovery password" : "Introduza a chave de recuperación antiga",
+ "Missing parameters" : "Faltan os parámetros",
+ "Please provide the old recovery password" : "Introduza o antigo contrasinal de recuperación",
"Please provide a new recovery password" : "Introduza a nova chave de recuperación",
- "Please repeat the new recovery password" : "Repita a nova chave de recuperación",
+ "Please repeat the new recovery password" : "Repita o novo contrasinal de recuperación",
"Password successfully changed." : "O contrasinal foi cambiado satisfactoriamente",
"Could not change the password. Maybe the old password was not correct." : "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.",
+ "Recovery Key disabled" : "Desactivada a chave de recuperación",
"Recovery Key enabled" : "Activada a chave de recuperación",
"Could not enable the recovery key, please try again or contact your administrator" : "Non foi posíbel activar a chave de recuperación, ténteo de novo ou póñase en contacto co administrador.",
"Could not update the private key password." : "Non foi posíbel actualizar o contrasinal da chave privada.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "A chave privada foi actualizada correctamente.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "A chave privada para a aplicación de cifrado non é correcta. Actualice o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros cifrados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo",
- "ownCloud basic encryption module" : "Módulo básico de cifrado de ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activar a chave de recuperación (permitirá recuperar os ficheiros dos usuarios no caso de perda do contrasinal):",
+ "Enable recovery key" : "Activar a chave de recuperación",
+ "Disable recovery key" : "Desactivar a chave 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." : "A chave de recuperación é unha chave de cifrado adicional que se utiliza para cifrar ficheiros. Permite a recuperación de ficheiros dun usuario se o usuario esquece o seu contrasinal.",
"Recovery key password" : "Contrasinal da chave de recuperación",
- "Repeat Recovery key password" : "Repita o contrasinal da chave de recuperación",
- "Enabled" : "Activado",
- "Disabled" : "Desactivado",
+ "Repeat recovery key password" : "Repita o contrasinal da chave de recuperación",
"Change recovery key password:" : "Cambiar o contrasinal da chave de la recuperación:",
- "Old Recovery key password" : "Antigo contrasinal da chave de recuperación",
- "New Recovery key password" : "Novo contrasinal da chave de recuperación",
- "Repeat New Recovery key password" : "Repita o novo contrasinal da chave de recuperación",
+ "Old recovery key password" : "Contrasinal antigo da chave de recuperación",
+ "New recovery key password" : "Novo contrasinal da chave de recuperación",
+ "Repeat new recovery key password" : "Repita o novo contrasinal da chave de recuperación",
"Change Password" : "Cambiar o contrasinal",
+ "ownCloud basic encryption module" : "Módulo básico de cifrado de ownCloud",
"Your private key password no longer matches your log-in password." : "O seu contrasinal da chave privada non coincide co seu contrasinal de acceso.",
"Set your old private key password to your current log-in password:" : "Estabeleza o seu contrasinal antigo da chave de recuperación ao seu contrasinal de acceso actual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se non lembra o seu antigo contrasinal pode pedírllelo ao seu administrador para recuperar os seus ficheiros.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Contrasinal actual de acceso",
"Update Private Key Password" : "Actualizar o contrasinal da chave privada",
"Enable password recovery:" : "Activar o contrasinal de recuperación:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados no caso de perda do contrasinal"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados no caso de perda do contrasinal",
+ "Enabled" : "Activado",
+ "Disabled" : "Desactivado"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/gl.json b/apps/encryption/l10n/gl.json
index 64033763059..df89a75eecd 100644
--- a/apps/encryption/l10n/gl.json
+++ b/apps/encryption/l10n/gl.json
@@ -1,16 +1,18 @@
{ "translations": {
- "Missing recovery key password" : "Falta a chave de recuperación",
- "Please repeat the recovery key password" : "Repita a chave de recuperación",
- "Repeated recovery key password does not match the provided recovery key password" : "A repetición da chave de recuperación non coincide coa chave de recuperación estabelecida",
+ "Missing recovery key password" : "Falta o contrasinal da chave de recuperación",
+ "Please repeat the recovery key password" : "Repita o contrasinal da chave de recuperación",
+ "Repeated recovery key password does not match the provided recovery key password" : "A repetición do contrasinal da chave de recuperación non coincide co contrasinal da chave de recuperación fornecido",
"Recovery key successfully enabled" : "Activada satisfactoriamente a chave de recuperación",
"Could not enable recovery key. Please check your recovery key password!" : "Non foi posíbel activar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!",
"Recovery key successfully disabled" : "Desactivada satisfactoriamente a chave de recuperación",
"Could not disable recovery key. Please check your recovery key password!" : "Non foi posíbel desactivar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!",
- "Please provide the old recovery password" : "Introduza a chave de recuperación antiga",
+ "Missing parameters" : "Faltan os parámetros",
+ "Please provide the old recovery password" : "Introduza o antigo contrasinal de recuperación",
"Please provide a new recovery password" : "Introduza a nova chave de recuperación",
- "Please repeat the new recovery password" : "Repita a nova chave de recuperación",
+ "Please repeat the new recovery password" : "Repita o novo contrasinal de recuperación",
"Password successfully changed." : "O contrasinal foi cambiado satisfactoriamente",
"Could not change the password. Maybe the old password was not correct." : "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.",
+ "Recovery Key disabled" : "Desactivada a chave de recuperación",
"Recovery Key enabled" : "Activada a chave de recuperación",
"Could not enable the recovery key, please try again or contact your administrator" : "Non foi posíbel activar a chave de recuperación, ténteo de novo ou póñase en contacto co administrador.",
"Could not update the private key password." : "Non foi posíbel actualizar o contrasinal da chave privada.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "A chave privada foi actualizada correctamente.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "A chave privada para a aplicación de cifrado non é correcta. Actualice o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros cifrados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo",
- "ownCloud basic encryption module" : "Módulo básico de cifrado de ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activar a chave de recuperación (permitirá recuperar os ficheiros dos usuarios no caso de perda do contrasinal):",
+ "Enable recovery key" : "Activar a chave de recuperación",
+ "Disable recovery key" : "Desactivar a chave 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." : "A chave de recuperación é unha chave de cifrado adicional que se utiliza para cifrar ficheiros. Permite a recuperación de ficheiros dun usuario se o usuario esquece o seu contrasinal.",
"Recovery key password" : "Contrasinal da chave de recuperación",
- "Repeat Recovery key password" : "Repita o contrasinal da chave de recuperación",
- "Enabled" : "Activado",
- "Disabled" : "Desactivado",
+ "Repeat recovery key password" : "Repita o contrasinal da chave de recuperación",
"Change recovery key password:" : "Cambiar o contrasinal da chave de la recuperación:",
- "Old Recovery key password" : "Antigo contrasinal da chave de recuperación",
- "New Recovery key password" : "Novo contrasinal da chave de recuperación",
- "Repeat New Recovery key password" : "Repita o novo contrasinal da chave de recuperación",
+ "Old recovery key password" : "Contrasinal antigo da chave de recuperación",
+ "New recovery key password" : "Novo contrasinal da chave de recuperación",
+ "Repeat new recovery key password" : "Repita o novo contrasinal da chave de recuperación",
"Change Password" : "Cambiar o contrasinal",
+ "ownCloud basic encryption module" : "Módulo básico de cifrado de ownCloud",
"Your private key password no longer matches your log-in password." : "O seu contrasinal da chave privada non coincide co seu contrasinal de acceso.",
"Set your old private key password to your current log-in password:" : "Estabeleza o seu contrasinal antigo da chave de recuperación ao seu contrasinal de acceso actual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se non lembra o seu antigo contrasinal pode pedírllelo ao seu administrador para recuperar os seus ficheiros.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Contrasinal actual de acceso",
"Update Private Key Password" : "Actualizar o contrasinal da chave privada",
"Enable password recovery:" : "Activar o contrasinal de recuperación:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados no caso de perda do contrasinal"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados no caso de perda do contrasinal",
+ "Enabled" : "Activado",
+ "Disabled" : "Desactivado"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/hr.js b/apps/encryption/l10n/hr.js
index 18e4ae65ddd..40ad26f9daa 100644
--- a/apps/encryption/l10n/hr.js
+++ b/apps/encryption/l10n/hr.js
@@ -10,15 +10,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Lozinka privatnog ključa uspješno ažurirana.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Neispravan privatni ključ za šifriranje. Molimo ažurirajte lozinku svoga privatnog ključa u svojim osobnimpostavkama da biste obnovili pristup svojim šifriranim datotekama.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacija šifriranja je aktivirana ali vaši ključevi nisu inicijalizirani, molimo odjavite se iponovno prijavite.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktivirajte ključ za oporavak (u slučaju gubitka lozinke dozvolite oporavak korisničkih datoteka):",
"Recovery key password" : "Lozinka ključa za oporavak",
- "Repeat Recovery key password" : "Ponovite lozinku ključa za oporavak",
- "Enabled" : "Aktivirano",
- "Disabled" : "Onemogućeno",
"Change recovery key password:" : "Promijenite lozinku ključa za oporavak",
- "Old Recovery key password" : "Stara lozinka ključa za oporavak",
- "New Recovery key password" : "Nova lozinka ključa za oporavak",
- "Repeat New Recovery key password" : "Ponovite novu lozinku ključa za oporavak",
"Change Password" : "Promijenite lozinku",
"Your private key password no longer matches your log-in password." : "Lozinka vašeg privatnog ključa više se ne slaže s vašom lozinkom za prijavu.",
"Set your old private key password to your current log-in password:" : "Postavite svoju staru lozinku privatnog ključa u svoju postojeću lozinku za prijavu.",
@@ -27,6 +20,8 @@ OC.L10N.register(
"Current log-in password" : "Aktualna lozinka za prijavu",
"Update Private Key Password" : "Ažurirajte lozinku privatnog ključa",
"Enable password recovery:" : "Omogućite oporavak lozinke:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "U slučaju gubitka lozinke, aktiviranje ove opcije ponovno će vam pribaviti pristup vašim šifriranim datotekama"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "U slučaju gubitka lozinke, aktiviranje ove opcije ponovno će vam pribaviti pristup vašim šifriranim datotekama",
+ "Enabled" : "Aktivirano",
+ "Disabled" : "Onemogućeno"
},
"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/encryption/l10n/hr.json b/apps/encryption/l10n/hr.json
index 20b45588c7e..71f83db1bdf 100644
--- a/apps/encryption/l10n/hr.json
+++ b/apps/encryption/l10n/hr.json
@@ -8,15 +8,8 @@
"Private key password successfully updated." : "Lozinka privatnog ključa uspješno ažurirana.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Neispravan privatni ključ za šifriranje. Molimo ažurirajte lozinku svoga privatnog ključa u svojim osobnimpostavkama da biste obnovili pristup svojim šifriranim datotekama.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacija šifriranja je aktivirana ali vaši ključevi nisu inicijalizirani, molimo odjavite se iponovno prijavite.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktivirajte ključ za oporavak (u slučaju gubitka lozinke dozvolite oporavak korisničkih datoteka):",
"Recovery key password" : "Lozinka ključa za oporavak",
- "Repeat Recovery key password" : "Ponovite lozinku ključa za oporavak",
- "Enabled" : "Aktivirano",
- "Disabled" : "Onemogućeno",
"Change recovery key password:" : "Promijenite lozinku ključa za oporavak",
- "Old Recovery key password" : "Stara lozinka ključa za oporavak",
- "New Recovery key password" : "Nova lozinka ključa za oporavak",
- "Repeat New Recovery key password" : "Ponovite novu lozinku ključa za oporavak",
"Change Password" : "Promijenite lozinku",
"Your private key password no longer matches your log-in password." : "Lozinka vašeg privatnog ključa više se ne slaže s vašom lozinkom za prijavu.",
"Set your old private key password to your current log-in password:" : "Postavite svoju staru lozinku privatnog ključa u svoju postojeću lozinku za prijavu.",
@@ -25,6 +18,8 @@
"Current log-in password" : "Aktualna lozinka za prijavu",
"Update Private Key Password" : "Ažurirajte lozinku privatnog ključa",
"Enable password recovery:" : "Omogućite oporavak lozinke:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "U slučaju gubitka lozinke, aktiviranje ove opcije ponovno će vam pribaviti pristup vašim šifriranim datotekama"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "U slučaju gubitka lozinke, aktiviranje ove opcije ponovno će vam pribaviti pristup vašim šifriranim datotekama",
+ "Enabled" : "Aktivirano",
+ "Disabled" : "Onemogućeno"
},"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/encryption/l10n/hu_HU.js b/apps/encryption/l10n/hu_HU.js
index 3895af355b9..be4df724ef8 100644
--- a/apps/encryption/l10n/hu_HU.js
+++ b/apps/encryption/l10n/hu_HU.js
@@ -10,21 +10,16 @@ OC.L10N.register(
"Private key password successfully updated." : "A személyes kulcsának jelszava frissítésre került.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Az állományok titkosításához használt titkos kulcsa érvénytelen. Kérjük frissítse a titkos kulcs jelszót a személyes beállításokban, hogy ismét hozzáférjen a titkosított állományaihoz!",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Az állományok titkosítása engedélyezve van, de az Ön titkos kulcsai nincsenek beállítva. Ezért kérjük, hogy jelentkezzen ki, és lépjen be újra!",
- "Enable recovery key (allow to recover users files in case of password loss):" : "A helyreállítási kulcs beállítása (lehetővé teszi a felhasználók állományainak visszaállítását, ha elfelejtik a jelszavukat):",
"Recovery key password" : "A helyreállítási kulcs jelszava",
- "Repeat Recovery key password" : "Ismételje meg a helyreállítási kulcs jelszavát",
- "Enabled" : "Bekapcsolva",
- "Disabled" : "Kikapcsolva",
"Change recovery key password:" : "A helyreállítási kulcs jelszavának módosítása:",
- "Old Recovery key password" : "Régi Helyreállítási Kulcs Jelszava",
- "New Recovery key password" : "Új Helyreállítási kulcs jelszava",
- "Repeat New Recovery key password" : "Ismételje meg az új helyreállítási kulcs jelszavát",
"Change Password" : "Jelszó megváltoztatása",
" If you don't remember your old password you can ask your administrator to recover your files." : "Ha nem emlékszik a régi jelszavára akkor megkérheti a rendszergazdát, hogy állítsa vissza az állományait.",
"Old log-in password" : "Régi bejelentkezési jelszó",
"Current log-in password" : "Jelenlegi bejelentkezési jelszó",
"Update Private Key Password" : "A személyest kulcs jelszó frissítése",
"Enable password recovery:" : "Jelszó-visszaállítás bekapcsolása",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ez az opció lehetővé teszi, hogy a titkosított állományok tartalmát visszanyerjük abban az esetben, ha elfelejti a jelszavát"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ez az opció lehetővé teszi, hogy a titkosított állományok tartalmát visszanyerjük abban az esetben, ha elfelejti a jelszavát",
+ "Enabled" : "Bekapcsolva",
+ "Disabled" : "Kikapcsolva"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/hu_HU.json b/apps/encryption/l10n/hu_HU.json
index f7b04188138..260a6ae3342 100644
--- a/apps/encryption/l10n/hu_HU.json
+++ b/apps/encryption/l10n/hu_HU.json
@@ -8,21 +8,16 @@
"Private key password successfully updated." : "A személyes kulcsának jelszava frissítésre került.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Az állományok titkosításához használt titkos kulcsa érvénytelen. Kérjük frissítse a titkos kulcs jelszót a személyes beállításokban, hogy ismét hozzáférjen a titkosított állományaihoz!",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Az állományok titkosítása engedélyezve van, de az Ön titkos kulcsai nincsenek beállítva. Ezért kérjük, hogy jelentkezzen ki, és lépjen be újra!",
- "Enable recovery key (allow to recover users files in case of password loss):" : "A helyreállítási kulcs beállítása (lehetővé teszi a felhasználók állományainak visszaállítását, ha elfelejtik a jelszavukat):",
"Recovery key password" : "A helyreállítási kulcs jelszava",
- "Repeat Recovery key password" : "Ismételje meg a helyreállítási kulcs jelszavát",
- "Enabled" : "Bekapcsolva",
- "Disabled" : "Kikapcsolva",
"Change recovery key password:" : "A helyreállítási kulcs jelszavának módosítása:",
- "Old Recovery key password" : "Régi Helyreállítási Kulcs Jelszava",
- "New Recovery key password" : "Új Helyreállítási kulcs jelszava",
- "Repeat New Recovery key password" : "Ismételje meg az új helyreállítási kulcs jelszavát",
"Change Password" : "Jelszó megváltoztatása",
" If you don't remember your old password you can ask your administrator to recover your files." : "Ha nem emlékszik a régi jelszavára akkor megkérheti a rendszergazdát, hogy állítsa vissza az állományait.",
"Old log-in password" : "Régi bejelentkezési jelszó",
"Current log-in password" : "Jelenlegi bejelentkezési jelszó",
"Update Private Key Password" : "A személyest kulcs jelszó frissítése",
"Enable password recovery:" : "Jelszó-visszaállítás bekapcsolása",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ez az opció lehetővé teszi, hogy a titkosított állományok tartalmát visszanyerjük abban az esetben, ha elfelejti a jelszavát"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ez az opció lehetővé teszi, hogy a titkosított állományok tartalmát visszanyerjük abban az esetben, ha elfelejti a jelszavát",
+ "Enabled" : "Bekapcsolva",
+ "Disabled" : "Kikapcsolva"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/id.js b/apps/encryption/l10n/id.js
index fe4b8bb139b..f1aebdbe1ac 100644
--- a/apps/encryption/l10n/id.js
+++ b/apps/encryption/l10n/id.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktifkan kunci pemulihan (memungkinkan pengguna untuk memulihkan berkas dalam kasus kehilangan sandi):",
"Recovery key password" : "Sandi kunci pemulihan",
- "Repeat Recovery key password" : "Ulangi sandi kunci Pemulihan",
- "Enabled" : "Diaktifkan",
- "Disabled" : "Dinonaktifkan",
"Change recovery key password:" : "Ubah sandi kunci pemulihan:",
- "Old Recovery key password" : "Sandi kunci Pemulihan Lama",
- "New Recovery key password" : "Sandi kunci Pemulihan Baru",
- "Repeat New Recovery key password" : "Ulangi sandi kunci Pemulihan baru",
"Change Password" : "Ubah Sandi",
"Your private key password no longer matches your log-in password." : "Sandi kunci private Anda tidak lagi cocok dengan sandi masuk Anda.",
"Set your old private key password to your current log-in password:" : "Setel sandi kunci private Anda untuk sandi masuk Anda saat ini:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Sandi masuk saat ini",
"Update Private Key Password" : "Perbarui Sandi Kunci Private",
"Enable password recovery:" : "Aktifkan sandi pemulihan:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi",
+ "Enabled" : "Diaktifkan",
+ "Disabled" : "Dinonaktifkan"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/id.json b/apps/encryption/l10n/id.json
index dcbe7c1cdf0..25433f810ac 100644
--- a/apps/encryption/l10n/id.json
+++ b/apps/encryption/l10n/id.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktifkan kunci pemulihan (memungkinkan pengguna untuk memulihkan berkas dalam kasus kehilangan sandi):",
"Recovery key password" : "Sandi kunci pemulihan",
- "Repeat Recovery key password" : "Ulangi sandi kunci Pemulihan",
- "Enabled" : "Diaktifkan",
- "Disabled" : "Dinonaktifkan",
"Change recovery key password:" : "Ubah sandi kunci pemulihan:",
- "Old Recovery key password" : "Sandi kunci Pemulihan Lama",
- "New Recovery key password" : "Sandi kunci Pemulihan Baru",
- "Repeat New Recovery key password" : "Ulangi sandi kunci Pemulihan baru",
"Change Password" : "Ubah Sandi",
"Your private key password no longer matches your log-in password." : "Sandi kunci private Anda tidak lagi cocok dengan sandi masuk Anda.",
"Set your old private key password to your current log-in password:" : "Setel sandi kunci private Anda untuk sandi masuk Anda saat ini:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Sandi masuk saat ini",
"Update Private Key Password" : "Perbarui Sandi Kunci Private",
"Enable password recovery:" : "Aktifkan sandi pemulihan:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Mengaktifkan opsi ini memungkinkan Anda untuk mendapatkan kembali akses ke berkas terenkripsi Anda dalam kasus kehilangan sandi",
+ "Enabled" : "Diaktifkan",
+ "Disabled" : "Dinonaktifkan"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/it.js b/apps/encryption/l10n/it.js
index efcc6cd4564..23b62b6d544 100644
--- a/apps/encryption/l10n/it.js
+++ b/apps/encryption/l10n/it.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Impossibile abilitare la chiave di ripristino. Verifica la password della chiave di ripristino.",
"Recovery key successfully disabled" : "Chiave di recupero disabilitata correttamente",
"Could not disable recovery key. Please check your recovery key password!" : "Impossibile disabilitare la chiave di recupero. Verifica la password della chiave di recupero.",
+ "Missing parameters" : "Parametri mancanti",
"Please provide the old recovery password" : "Fornisci la vecchia password di recupero",
"Please provide a new recovery password" : "Fornisci una nuova password di recupero",
"Please repeat the new recovery password" : "Ripeti la nuova password di recupero",
"Password successfully changed." : "Password modificata correttamente.",
"Could not change the password. Maybe the old password was not correct." : "Impossibile cambiare la password. Forse la vecchia password non era corretta.",
+ "Recovery Key disabled" : "Chiave di ripristino disabilitata",
"Recovery Key enabled" : "Chiave di ripristino abilitata",
"Could not enable the recovery key, please try again or contact your administrator" : "Impossibile abilitare la chiave di ripristino, prova ancora o contatta il tuo amministratore",
"Could not update the private key password." : "Impossibile aggiornare la password della chiave privata.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Password della chiave privata aggiornata correttamente.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso",
- "ownCloud basic encryption module" : "Modulo di cifratura di base di ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Abilita la chiave di recupero (permette di recuperare i file utenti in caso di perdita della password):",
+ "Enable recovery key" : "Abilita chiave di ripristino",
+ "Disable recovery key" : "Disabilita chiave di ripristino",
+ "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 chiave di ripristino è una chiave di cifratura aggiuntiva utilizzata per cifrare i file. Consente di ripristinare i file di un utente se l'utente dimentica la propria password.",
"Recovery key password" : "Password della chiave di recupero",
- "Repeat Recovery key password" : "Ripeti la password della chiave di recupero",
- "Enabled" : "Abilitata",
- "Disabled" : "Disabilitata",
+ "Repeat recovery key password" : "Ripeti la password della chiave di ripristino",
"Change recovery key password:" : "Cambia la password della chiave di recupero:",
- "Old Recovery key password" : "Vecchia password della chiave di recupero",
- "New Recovery key password" : "Nuova password della chiave di recupero",
- "Repeat New Recovery key password" : "Ripeti la nuova password della chiave di recupero",
+ "Old recovery key password" : "Vecchia password della chiave di ripristino",
+ "New recovery key password" : "Nuova password della chiave di ripristino",
+ "Repeat new recovery key password" : "Ripeti la nuova password della chiave di ripristino",
"Change Password" : "Modifica password",
+ "ownCloud basic encryption module" : "Modulo di cifratura di base di ownCloud",
"Your private key password no longer matches your log-in password." : "La password della chiave privata non corrisponde più alla password di accesso.",
"Set your old private key password to your current log-in password:" : "Imposta la vecchia password della chiave privata sull'attuale password di accesso:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se non ricordi la vecchia password puoi chiedere al tuo amministratore di recuperare i file.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Password di accesso attuale",
"Update Private Key Password" : "Aggiorna la password della chiave privata",
"Enable password recovery:" : "Abilita il ripristino della password:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password",
+ "Enabled" : "Abilitata",
+ "Disabled" : "Disabilitata"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/it.json b/apps/encryption/l10n/it.json
index e93035b88df..f4a5b12ff6f 100644
--- a/apps/encryption/l10n/it.json
+++ b/apps/encryption/l10n/it.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Impossibile abilitare la chiave di ripristino. Verifica la password della chiave di ripristino.",
"Recovery key successfully disabled" : "Chiave di recupero disabilitata correttamente",
"Could not disable recovery key. Please check your recovery key password!" : "Impossibile disabilitare la chiave di recupero. Verifica la password della chiave di recupero.",
+ "Missing parameters" : "Parametri mancanti",
"Please provide the old recovery password" : "Fornisci la vecchia password di recupero",
"Please provide a new recovery password" : "Fornisci una nuova password di recupero",
"Please repeat the new recovery password" : "Ripeti la nuova password di recupero",
"Password successfully changed." : "Password modificata correttamente.",
"Could not change the password. Maybe the old password was not correct." : "Impossibile cambiare la password. Forse la vecchia password non era corretta.",
+ "Recovery Key disabled" : "Chiave di ripristino disabilitata",
"Recovery Key enabled" : "Chiave di ripristino abilitata",
"Could not enable the recovery key, please try again or contact your administrator" : "Impossibile abilitare la chiave di ripristino, prova ancora o contatta il tuo amministratore",
"Could not update the private key password." : "Impossibile aggiornare la password della chiave privata.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Password della chiave privata aggiornata correttamente.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso",
- "ownCloud basic encryption module" : "Modulo di cifratura di base di ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Abilita la chiave di recupero (permette di recuperare i file utenti in caso di perdita della password):",
+ "Enable recovery key" : "Abilita chiave di ripristino",
+ "Disable recovery key" : "Disabilita chiave di ripristino",
+ "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 chiave di ripristino è una chiave di cifratura aggiuntiva utilizzata per cifrare i file. Consente di ripristinare i file di un utente se l'utente dimentica la propria password.",
"Recovery key password" : "Password della chiave di recupero",
- "Repeat Recovery key password" : "Ripeti la password della chiave di recupero",
- "Enabled" : "Abilitata",
- "Disabled" : "Disabilitata",
+ "Repeat recovery key password" : "Ripeti la password della chiave di ripristino",
"Change recovery key password:" : "Cambia la password della chiave di recupero:",
- "Old Recovery key password" : "Vecchia password della chiave di recupero",
- "New Recovery key password" : "Nuova password della chiave di recupero",
- "Repeat New Recovery key password" : "Ripeti la nuova password della chiave di recupero",
+ "Old recovery key password" : "Vecchia password della chiave di ripristino",
+ "New recovery key password" : "Nuova password della chiave di ripristino",
+ "Repeat new recovery key password" : "Ripeti la nuova password della chiave di ripristino",
"Change Password" : "Modifica password",
+ "ownCloud basic encryption module" : "Modulo di cifratura di base di ownCloud",
"Your private key password no longer matches your log-in password." : "La password della chiave privata non corrisponde più alla password di accesso.",
"Set your old private key password to your current log-in password:" : "Imposta la vecchia password della chiave privata sull'attuale password di accesso:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se non ricordi la vecchia password puoi chiedere al tuo amministratore di recuperare i file.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Password di accesso attuale",
"Update Private Key Password" : "Aggiorna la password della chiave privata",
"Enable password recovery:" : "Abilita il ripristino della password:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "L'abilitazione di questa opzione ti consentirà di accedere nuovamente ai file cifrati in caso di perdita della password",
+ "Enabled" : "Abilitata",
+ "Disabled" : "Disabilitata"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js
index c4e2443c1fb..1f2cf3cf49d 100644
--- a/apps/encryption/l10n/ja.js
+++ b/apps/encryption/l10n/ja.js
@@ -13,22 +13,18 @@ OC.L10N.register(
"Please repeat the new recovery password" : "新しい復旧キーのパスワードをもう一度入力",
"Password successfully changed." : "パスワードを変更できました。",
"Could not change the password. Maybe the old password was not correct." : "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。",
+ "Recovery Key enabled" : "リカバリー鍵が有効になりました。",
+ "Could not enable the recovery key, please try again or contact your administrator" : "リカバリー鍵を有効化できませんでした。もう一度試してみるか、管理者に連絡してください。",
"Could not update the private key password." : "秘密鍵のパスワードを更新できませんでした。",
"The old password was not correct, please try again." : "古いパスワードが一致しませんでした。もう一度入力してください。",
"The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。",
"Private key password successfully updated." : "秘密鍵のパスワードが正常に更新されました。",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください",
- "Enable recovery key (allow to recover users files in case of password loss):" : "リカバリキーを有効にする (パスワードを忘れた場合にユーザーのファイルを回復できます):",
"Recovery key password" : "リカバリキーのパスワード",
- "Repeat Recovery key password" : "リカバリキーのパスワードをもう一度入力",
- "Enabled" : "有効",
- "Disabled" : "無効",
"Change recovery key password:" : "リカバリキーのパスワードを変更:",
- "Old Recovery key password" : "古いリカバリキーのパスワード",
- "New Recovery key password" : "新しいリカバリキーのパスワード",
- "Repeat New Recovery key password" : "新しいリカバリキーのパスワードをもう一度入力",
"Change Password" : "パスワードを変更",
+ "ownCloud basic encryption module" : "ownCloud 基本暗号化モジュール",
"Your private key password no longer matches your log-in password." : "もはや秘密鍵はログインパスワードと一致しません。",
"Set your old private key password to your current log-in password:" : "古い秘密鍵のパスワードを現在のログインパスワードに設定:",
" If you don't remember your old password you can ask your administrator to recover your files." : "古いパスワードを覚えていない場合、管理者に尋ねてファイルを回復することができます。",
@@ -36,6 +32,8 @@ OC.L10N.register(
"Current log-in password" : "現在のログインパスワード",
"Update Private Key Password" : "秘密鍵のパスワードを更新",
"Enable password recovery:" : "パスワードリカバリを有効に:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。",
+ "Enabled" : "有効",
+ "Disabled" : "無効"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json
index 622bf9bc42d..38f8a84d8c7 100644
--- a/apps/encryption/l10n/ja.json
+++ b/apps/encryption/l10n/ja.json
@@ -11,22 +11,18 @@
"Please repeat the new recovery password" : "新しい復旧キーのパスワードをもう一度入力",
"Password successfully changed." : "パスワードを変更できました。",
"Could not change the password. Maybe the old password was not correct." : "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。",
+ "Recovery Key enabled" : "リカバリー鍵が有効になりました。",
+ "Could not enable the recovery key, please try again or contact your administrator" : "リカバリー鍵を有効化できませんでした。もう一度試してみるか、管理者に連絡してください。",
"Could not update the private key password." : "秘密鍵のパスワードを更新できませんでした。",
"The old password was not correct, please try again." : "古いパスワードが一致しませんでした。もう一度入力してください。",
"The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。",
"Private key password successfully updated." : "秘密鍵のパスワードが正常に更新されました。",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください",
- "Enable recovery key (allow to recover users files in case of password loss):" : "リカバリキーを有効にする (パスワードを忘れた場合にユーザーのファイルを回復できます):",
"Recovery key password" : "リカバリキーのパスワード",
- "Repeat Recovery key password" : "リカバリキーのパスワードをもう一度入力",
- "Enabled" : "有効",
- "Disabled" : "無効",
"Change recovery key password:" : "リカバリキーのパスワードを変更:",
- "Old Recovery key password" : "古いリカバリキーのパスワード",
- "New Recovery key password" : "新しいリカバリキーのパスワード",
- "Repeat New Recovery key password" : "新しいリカバリキーのパスワードをもう一度入力",
"Change Password" : "パスワードを変更",
+ "ownCloud basic encryption module" : "ownCloud 基本暗号化モジュール",
"Your private key password no longer matches your log-in password." : "もはや秘密鍵はログインパスワードと一致しません。",
"Set your old private key password to your current log-in password:" : "古い秘密鍵のパスワードを現在のログインパスワードに設定:",
" If you don't remember your old password you can ask your administrator to recover your files." : "古いパスワードを覚えていない場合、管理者に尋ねてファイルを回復することができます。",
@@ -34,6 +30,8 @@
"Current log-in password" : "現在のログインパスワード",
"Update Private Key Password" : "秘密鍵のパスワードを更新",
"Enable password recovery:" : "パスワードリカバリを有効に:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。",
+ "Enabled" : "有効",
+ "Disabled" : "無効"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/km.js b/apps/encryption/l10n/km.js
index d0ab537f5b9..2d925c91819 100644
--- a/apps/encryption/l10n/km.js
+++ b/apps/encryption/l10n/km.js
@@ -3,8 +3,8 @@ OC.L10N.register(
{
"Password successfully changed." : "បាន​ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ។",
"Could not change the password. Maybe the old password was not correct." : "មិន​អាច​ប្ដូរ​ពាក្យ​សម្ងាត់​បាន​ទេ។ ប្រហែល​ពាក្យ​សម្ងាត់​ចាស់​មិន​ត្រឹម​ត្រូវ។",
+ "Change Password" : "ប្ដូរ​ពាក្យ​សម្ងាត់",
"Enabled" : "បាន​បើក",
- "Disabled" : "បាន​បិទ",
- "Change Password" : "ប្ដូរ​ពាក្យ​សម្ងាត់"
+ "Disabled" : "បាន​បិទ"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/km.json b/apps/encryption/l10n/km.json
index 40df66ca4a2..0beaa6b8a2f 100644
--- a/apps/encryption/l10n/km.json
+++ b/apps/encryption/l10n/km.json
@@ -1,8 +1,8 @@
{ "translations": {
"Password successfully changed." : "បាន​ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ។",
"Could not change the password. Maybe the old password was not correct." : "មិន​អាច​ប្ដូរ​ពាក្យ​សម្ងាត់​បាន​ទេ។ ប្រហែល​ពាក្យ​សម្ងាត់​ចាស់​មិន​ត្រឹម​ត្រូវ។",
+ "Change Password" : "ប្ដូរ​ពាក្យ​សម្ងាត់",
"Enabled" : "បាន​បើក",
- "Disabled" : "បាន​បិទ",
- "Change Password" : "ប្ដូរ​ពាក្យ​សម្ងាត់"
+ "Disabled" : "បាន​បិទ"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ko.js b/apps/encryption/l10n/ko.js
index 80281648a9a..b4f9049082d 100644
--- a/apps/encryption/l10n/ko.js
+++ b/apps/encryption/l10n/ko.js
@@ -5,30 +5,35 @@ OC.L10N.register(
"Please repeat the recovery key password" : "복구 키 암호를 다시 입력하십시오",
"Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 서로 다릅니다",
"Recovery key successfully enabled" : "복구 키가 성공적으로 활성화되었습니다",
- "Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주세요!",
+ "Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!",
"Recovery key successfully disabled" : "복구 키가 성공적으로 비활성화 되었습니다",
"Could not disable recovery key. Please check your recovery key password!" : "복구 키를 비활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!",
+ "Missing parameters" : "인자 부족함",
"Please provide the old recovery password" : "이전 복구 암호를 입력하십시오",
"Please provide a new recovery password" : "새 복구 암호를 입력하십시오",
"Please repeat the new recovery password" : "새 복구 암호를 다시 입력하십시오",
"Password successfully changed." : "암호가 성공적으로 변경되었습니다",
"Could not change the password. Maybe the old password was not correct." : "암호를 변경할 수 없습니다. 예전 암호가 정확하지 않은 것 같습니다.",
+ "Recovery Key disabled" : "복구 키가 비활성화됨",
+ "Recovery Key enabled" : "복구 키가 활성화됨",
+ "Could not enable the recovery key, please try again or contact your administrator" : "복구 키를 활성화할 수 없습니다. 다시 시도하거나 관리자에게 연락하십시오",
"Could not update the private key password." : "개인 키 암호를 업데이트할 수 없습니다",
"The old password was not correct, please try again." : "이전 암호가 잘못되었습니다. 다시 시도하십시오.",
"The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.",
"Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오",
- "Enable recovery key (allow to recover users files in case of password loss):" : "복구 키 사용 (암호를 잊었을 때 파일을 복구할 수 있도록 함):",
+ "Enable recovery key" : "복구 키 활성화",
+ "Disable recovery key" : "복구 키 비활성화",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "복구 키는 파일을 암호화하는 추가 키입니다. 사용자가 암호를 잊었을 때 복구할 수 있도록 해 줍니다.",
"Recovery key password" : "복구 키 암호",
- "Repeat Recovery key password" : "복구 키 암호 재입력",
- "Enabled" : "활성화",
- "Disabled" : "비활성화",
+ "Repeat recovery key password" : "복구 키 암호 확인",
"Change recovery key password:" : "복구 키 암호 변경:",
- "Old Recovery key password" : "이전 복구 키 암호",
- "New Recovery key password" : "새 복구 키 암호",
- "Repeat New Recovery key password" : "새 복구 키 암호 재입력",
+ "Old recovery key password" : "이전 복구 키 암호",
+ "New recovery key password" : "새 복구 키 암호",
+ "Repeat new recovery key password" : "새 복구 키 암호 확인",
"Change Password" : "암호 변경",
+ "ownCloud basic encryption module" : "ownCloud 기본 암호화 모듈",
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
" If you don't remember your old password you can ask your administrator to recover your files." : " 이전 암호가 기억나지 않으면 시스템 관리자에게 파일 복구를 요청하십시오.",
@@ -36,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "현재 로그인 암호",
"Update Private Key Password" : "개인 키 암호 업데이트",
"Enable password recovery:" : "암호 복구 사용:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "이 옵션을 사용하면 암호를 잊었을 때 암호화된 파일에 다시 접근할 수 있습니다"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "이 옵션을 사용하면 암호를 잊었을 때 암호화된 파일에 다시 접근할 수 있습니다",
+ "Enabled" : "활성화",
+ "Disabled" : "비활성화"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/ko.json b/apps/encryption/l10n/ko.json
index 3b0bb40460b..4cb2f35540c 100644
--- a/apps/encryption/l10n/ko.json
+++ b/apps/encryption/l10n/ko.json
@@ -3,30 +3,35 @@
"Please repeat the recovery key password" : "복구 키 암호를 다시 입력하십시오",
"Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 서로 다릅니다",
"Recovery key successfully enabled" : "복구 키가 성공적으로 활성화되었습니다",
- "Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주세요!",
+ "Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!",
"Recovery key successfully disabled" : "복구 키가 성공적으로 비활성화 되었습니다",
"Could not disable recovery key. Please check your recovery key password!" : "복구 키를 비활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!",
+ "Missing parameters" : "인자 부족함",
"Please provide the old recovery password" : "이전 복구 암호를 입력하십시오",
"Please provide a new recovery password" : "새 복구 암호를 입력하십시오",
"Please repeat the new recovery password" : "새 복구 암호를 다시 입력하십시오",
"Password successfully changed." : "암호가 성공적으로 변경되었습니다",
"Could not change the password. Maybe the old password was not correct." : "암호를 변경할 수 없습니다. 예전 암호가 정확하지 않은 것 같습니다.",
+ "Recovery Key disabled" : "복구 키가 비활성화됨",
+ "Recovery Key enabled" : "복구 키가 활성화됨",
+ "Could not enable the recovery key, please try again or contact your administrator" : "복구 키를 활성화할 수 없습니다. 다시 시도하거나 관리자에게 연락하십시오",
"Could not update the private key password." : "개인 키 암호를 업데이트할 수 없습니다",
"The old password was not correct, please try again." : "이전 암호가 잘못되었습니다. 다시 시도하십시오.",
"The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.",
"Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오",
- "Enable recovery key (allow to recover users files in case of password loss):" : "복구 키 사용 (암호를 잊었을 때 파일을 복구할 수 있도록 함):",
+ "Enable recovery key" : "복구 키 활성화",
+ "Disable recovery key" : "복구 키 비활성화",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "복구 키는 파일을 암호화하는 추가 키입니다. 사용자가 암호를 잊었을 때 복구할 수 있도록 해 줍니다.",
"Recovery key password" : "복구 키 암호",
- "Repeat Recovery key password" : "복구 키 암호 재입력",
- "Enabled" : "활성화",
- "Disabled" : "비활성화",
+ "Repeat recovery key password" : "복구 키 암호 확인",
"Change recovery key password:" : "복구 키 암호 변경:",
- "Old Recovery key password" : "이전 복구 키 암호",
- "New Recovery key password" : "새 복구 키 암호",
- "Repeat New Recovery key password" : "새 복구 키 암호 재입력",
+ "Old recovery key password" : "이전 복구 키 암호",
+ "New recovery key password" : "새 복구 키 암호",
+ "Repeat new recovery key password" : "새 복구 키 암호 확인",
"Change Password" : "암호 변경",
+ "ownCloud basic encryption module" : "ownCloud 기본 암호화 모듈",
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
" If you don't remember your old password you can ask your administrator to recover your files." : " 이전 암호가 기억나지 않으면 시스템 관리자에게 파일 복구를 요청하십시오.",
@@ -34,6 +39,8 @@
"Current log-in password" : "현재 로그인 암호",
"Update Private Key Password" : "개인 키 암호 업데이트",
"Enable password recovery:" : "암호 복구 사용:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "이 옵션을 사용하면 암호를 잊었을 때 암호화된 파일에 다시 접근할 수 있습니다"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "이 옵션을 사용하면 암호를 잊었을 때 암호화된 파일에 다시 접근할 수 있습니다",
+ "Enabled" : "활성화",
+ "Disabled" : "비활성화"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/lb.js b/apps/encryption/l10n/lb.js
new file mode 100644
index 00000000000..0e57555bb19
--- /dev/null
+++ b/apps/encryption/l10n/lb.js
@@ -0,0 +1,8 @@
+OC.L10N.register(
+ "encryption",
+ {
+ "Change Password" : "Passwuert änneren",
+ "Enabled" : "Aktivéiert",
+ "Disabled" : "Deaktivéiert"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/lb.json b/apps/encryption/l10n/lb.json
new file mode 100644
index 00000000000..08afbc43c83
--- /dev/null
+++ b/apps/encryption/l10n/lb.json
@@ -0,0 +1,6 @@
+{ "translations": {
+ "Change Password" : "Passwuert änneren",
+ "Enabled" : "Aktivéiert",
+ "Disabled" : "Deaktivéiert"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js
index 06d6478a572..2fd29ca7788 100644
--- a/apps/encryption/l10n/lt_LT.js
+++ b/apps/encryption/l10n/lt_LT.js
@@ -10,21 +10,16 @@ OC.L10N.register(
"Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Netinkamas privatus raktas Šifravimo programai. Prašome atnaujinti savo privataus rakto slaptažodį asmeniniuose nustatymuose, kad atkurti prieigą prie šifruotų failų.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Įjunkite atkūrimo raktą, (leisti atkurti naudotojų failus praradus slaptažodį):",
"Recovery key password" : "Atkūrimo rakto slaptažodis",
- "Repeat Recovery key password" : "Pakartokite atkūrimo rakto slaptažodį",
- "Enabled" : "Įjungta",
- "Disabled" : "Išjungta",
"Change recovery key password:" : "Pakeisti atkūrimo rakto slaptažodį:",
- "Old Recovery key password" : "Senas atkūrimo rakto slaptažodis",
- "New Recovery key password" : "Naujas atkūrimo rakto slaptažodis",
- "Repeat New Recovery key password" : "Pakartokite naują atkūrimo rakto slaptažodį",
"Change Password" : "Pakeisti slaptažodį",
" If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.",
"Old log-in password" : "Senas prisijungimo slaptažodis",
"Current log-in password" : "Dabartinis prisijungimo slaptažodis",
"Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį",
"Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį.",
+ "Enabled" : "Įjungta",
+ "Disabled" : "Išjungta"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json
index 2e6a199121f..3e97937d60d 100644
--- a/apps/encryption/l10n/lt_LT.json
+++ b/apps/encryption/l10n/lt_LT.json
@@ -8,21 +8,16 @@
"Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Netinkamas privatus raktas Šifravimo programai. Prašome atnaujinti savo privataus rakto slaptažodį asmeniniuose nustatymuose, kad atkurti prieigą prie šifruotų failų.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Įjunkite atkūrimo raktą, (leisti atkurti naudotojų failus praradus slaptažodį):",
"Recovery key password" : "Atkūrimo rakto slaptažodis",
- "Repeat Recovery key password" : "Pakartokite atkūrimo rakto slaptažodį",
- "Enabled" : "Įjungta",
- "Disabled" : "Išjungta",
"Change recovery key password:" : "Pakeisti atkūrimo rakto slaptažodį:",
- "Old Recovery key password" : "Senas atkūrimo rakto slaptažodis",
- "New Recovery key password" : "Naujas atkūrimo rakto slaptažodis",
- "Repeat New Recovery key password" : "Pakartokite naują atkūrimo rakto slaptažodį",
"Change Password" : "Pakeisti slaptažodį",
" If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.",
"Old log-in password" : "Senas prisijungimo slaptažodis",
"Current log-in password" : "Dabartinis prisijungimo slaptažodis",
"Update Private Key Password" : "Atnaujinti privataus rakto slaptažodį",
"Enable password recovery:" : "Įjungti slaptažodžio atkūrimą:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį.",
+ "Enabled" : "Įjungta",
+ "Disabled" : "Išjungta"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/mk.js b/apps/encryption/l10n/mk.js
index 0391c489542..f1abdd2f518 100644
--- a/apps/encryption/l10n/mk.js
+++ b/apps/encryption/l10n/mk.js
@@ -3,14 +3,11 @@ OC.L10N.register(
{
"Password successfully changed." : "Лозинката е успешно променета.",
"Could not change the password. Maybe the old password was not correct." : "Лозинката не можеше да се промени. Можеби старата лозинка не беше исправна.",
- "Repeat Recovery key password" : "Повтори ја лозинката за клучот на обновување",
- "Enabled" : "Овозможен",
- "Disabled" : "Оневозможен",
- "Old Recovery key password" : "Старата лозинка за клучот на обновување ",
- "Repeat New Recovery key password" : "Повтори ја лозинката за клучот на обновувањето",
"Change Password" : "Смени лозинка",
"Old log-in password" : "Старата лозинка за најавување",
"Current log-in password" : "Тековната лозинка за најавување",
- "Enable password recovery:" : "Овозможи го обновувањето на лозинката:"
+ "Enable password recovery:" : "Овозможи го обновувањето на лозинката:",
+ "Enabled" : "Овозможен",
+ "Disabled" : "Оневозможен"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/encryption/l10n/mk.json b/apps/encryption/l10n/mk.json
index 1886a626b6f..112d818347c 100644
--- a/apps/encryption/l10n/mk.json
+++ b/apps/encryption/l10n/mk.json
@@ -1,14 +1,11 @@
{ "translations": {
"Password successfully changed." : "Лозинката е успешно променета.",
"Could not change the password. Maybe the old password was not correct." : "Лозинката не можеше да се промени. Можеби старата лозинка не беше исправна.",
- "Repeat Recovery key password" : "Повтори ја лозинката за клучот на обновување",
- "Enabled" : "Овозможен",
- "Disabled" : "Оневозможен",
- "Old Recovery key password" : "Старата лозинка за клучот на обновување ",
- "Repeat New Recovery key password" : "Повтори ја лозинката за клучот на обновувањето",
"Change Password" : "Смени лозинка",
"Old log-in password" : "Старата лозинка за најавување",
"Current log-in password" : "Тековната лозинка за најавување",
- "Enable password recovery:" : "Овозможи го обновувањето на лозинката:"
+ "Enable password recovery:" : "Овозможи го обновувањето на лозинката:",
+ "Enabled" : "Овозможен",
+ "Disabled" : "Оневозможен"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/nb_NO.js b/apps/encryption/l10n/nb_NO.js
index ee3184a7f02..205f9713583 100644
--- a/apps/encryption/l10n/nb_NO.js
+++ b/apps/encryption/l10n/nb_NO.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Passord for privat nøkkel ble oppdatert.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktiver gjenopprettingsnøkkel (tillat å gjenopprette brukerfiler i tilfelle tap av passord):",
"Recovery key password" : "Passord for gjenopprettingsnøkkel",
- "Repeat Recovery key password" : "Gjenta passord for gjenopprettingsnøkkel",
- "Enabled" : "Aktiv",
- "Disabled" : "Inaktiv",
"Change recovery key password:" : "Endre passord for gjenopprettingsnøkkel:",
- "Old Recovery key password" : "Gammelt passord for gjenopprettingsnøkkel",
- "New Recovery key password" : "Nytt passord for gjenopprettingsnøkkel",
- "Repeat New Recovery key password" : "Gjenta nytt passord for gjenopprettingsnøkkel",
"Change Password" : "Endre passord",
"Your private key password no longer matches your log-in password." : "Passordet for din private nøkkel stemmer ikke lenger med påloggingspassordet ditt.",
"Set your old private key password to your current log-in password:" : "Sett ditt gamle passord for privat nøkkel til ditt nåværende påloggingspassord:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Nåværende påloggingspassord",
"Update Private Key Password" : "Oppdater passord for privat nøkkel",
"Enable password recovery:" : "Aktiver gjenoppretting av passord:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering av dette valget tillater deg å gjenerobre tilgang til dine krypterte filer i tilfelle du mister passordet ditt."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering av dette valget tillater deg å gjenerobre tilgang til dine krypterte filer i tilfelle du mister passordet ditt.",
+ "Enabled" : "Aktiv",
+ "Disabled" : "Inaktiv"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/nb_NO.json b/apps/encryption/l10n/nb_NO.json
index 942eaf1855c..8f0a09d56b5 100644
--- a/apps/encryption/l10n/nb_NO.json
+++ b/apps/encryption/l10n/nb_NO.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Passord for privat nøkkel ble oppdatert.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktiver gjenopprettingsnøkkel (tillat å gjenopprette brukerfiler i tilfelle tap av passord):",
"Recovery key password" : "Passord for gjenopprettingsnøkkel",
- "Repeat Recovery key password" : "Gjenta passord for gjenopprettingsnøkkel",
- "Enabled" : "Aktiv",
- "Disabled" : "Inaktiv",
"Change recovery key password:" : "Endre passord for gjenopprettingsnøkkel:",
- "Old Recovery key password" : "Gammelt passord for gjenopprettingsnøkkel",
- "New Recovery key password" : "Nytt passord for gjenopprettingsnøkkel",
- "Repeat New Recovery key password" : "Gjenta nytt passord for gjenopprettingsnøkkel",
"Change Password" : "Endre passord",
"Your private key password no longer matches your log-in password." : "Passordet for din private nøkkel stemmer ikke lenger med påloggingspassordet ditt.",
"Set your old private key password to your current log-in password:" : "Sett ditt gamle passord for privat nøkkel til ditt nåværende påloggingspassord:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Nåværende påloggingspassord",
"Update Private Key Password" : "Oppdater passord for privat nøkkel",
"Enable password recovery:" : "Aktiver gjenoppretting av passord:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering av dette valget tillater deg å gjenerobre tilgang til dine krypterte filer i tilfelle du mister passordet ditt."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering av dette valget tillater deg å gjenerobre tilgang til dine krypterte filer i tilfelle du mister passordet ditt.",
+ "Enabled" : "Aktiv",
+ "Disabled" : "Inaktiv"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/nl.js b/apps/encryption/l10n/nl.js
index 505cff99620..d455039cff0 100644
--- a/apps/encryption/l10n/nl.js
+++ b/apps/encryption/l10n/nl.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Kon herstelsleutel niet activeren. Controleer het wachtwoord van uw herstelsleutel!",
"Recovery key successfully disabled" : "Herstelsleutel succesvol gedeactiveerd",
"Could not disable recovery key. Please check your recovery key password!" : "Kon herstelsleutel niet deactiveren. Controleer het wachtwoord van uw herstelsleutel!",
+ "Missing parameters" : "Ontbrekende parameters",
"Please provide the old recovery password" : "Geef het oude herstelwachtwoord op",
"Please provide a new recovery password" : "Geef een nieuw herstelwachtwoord op",
"Please repeat the new recovery password" : "Herhaal het nieuwe herstelwachtwoord",
"Password successfully changed." : "Wachtwoord succesvol gewijzigd.",
"Could not change the password. Maybe the old password was not correct." : "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.",
+ "Recovery Key disabled" : "Herstelsleutel gedeactiveerd",
"Recovery Key enabled" : "Herstelsleutel ingeschakeld",
"Could not enable the recovery key, please try again or contact your administrator" : "Kon herstelsleutel niet inschakelen, probeer het opnieuw, of neem contact op met uw beheerder",
"Could not update the private key password." : "Kon het wachtwoord van de privésleutel niet bijwerken.",
@@ -21,17 +23,17 @@ OC.L10N.register(
"Private key password successfully updated." : "Privésleutel succesvol bijgewerkt.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ongeldige privésleutel voor crypto app. Werk het privésleutel wachtwoord bij in uw persoonlijke instellingen om opnieuw toegang te krijgen tot uw versleutelde bestanden.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is geactiveerd, maar uw sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.",
- "ownCloud basic encryption module" : "ownCloud basis versleutelingsmodule",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activeren herstelsleutel (maakt het mogelijk om gebruikersbestanden terug te halen in geval van verlies van het wachtwoord):",
+ "Enable recovery key" : "Activeer herstelsleutel",
+ "Disable recovery key" : "Deactiveer herstelsleutel",
+ "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." : "De herstelsleutel is een extra cryptografische sleutel die wordt gebruikt om bestanden te versleutelen. Die maakt het mogelijk bestanden te herstellen als de gebruiker zijn of haar wachtwoord vergeet.",
"Recovery key password" : "Wachtwoord herstelsleulel",
- "Repeat Recovery key password" : "Herhaal het herstelsleutel wachtwoord",
- "Enabled" : "Geactiveerd",
- "Disabled" : "Gedeactiveerd",
+ "Repeat recovery key password" : "Herhaal wachtwoord herstelsleutel",
"Change recovery key password:" : "Wijzig wachtwoord herstelsleutel:",
- "Old Recovery key password" : "Oude wachtwoord herstelsleutel",
- "New Recovery key password" : "Nieuwe wachtwoord herstelsleutel",
- "Repeat New Recovery key password" : "Herhaal het nieuwe herstelsleutel wachtwoord",
+ "Old recovery key password" : "Oude wachtwoord herstelsleutel",
+ "New recovery key password" : "Nieuwe wachtwoord herstelsleutel",
+ "Repeat new recovery key password" : "Herhaal nieuwe wachtwoord herstelsleutel",
"Change Password" : "Wijzigen wachtwoord",
+ "ownCloud basic encryption module" : "ownCloud basis versleutelingsmodule",
"Your private key password no longer matches your log-in password." : "Het wachtwoord van uw privésleutel komt niet meer overeen met uw inlogwachtwoord.",
"Set your old private key password to your current log-in password:" : "Stel het wachtwoord van uw oude privésleutel in op uw huidige inlogwachtwoord.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Als u uw oude wachtwoord niet meer weet, kunt u uw beheerder vragen uw bestanden terug te halen.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Huidige wachtwoord",
"Update Private Key Password" : "Bijwerken wachtwoord Privésleutel",
"Enable password recovery:" : "Activeren wachtwoord herstel:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Het activeren van deze optie maakt het mogelijk om uw versleutelde bestanden te benaderen als uw wachtwoord kwijt is"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Het activeren van deze optie maakt het mogelijk om uw versleutelde bestanden te benaderen als uw wachtwoord kwijt is",
+ "Enabled" : "Geactiveerd",
+ "Disabled" : "Gedeactiveerd"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/nl.json b/apps/encryption/l10n/nl.json
index 13d9747295e..6172a9fa3c8 100644
--- a/apps/encryption/l10n/nl.json
+++ b/apps/encryption/l10n/nl.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Kon herstelsleutel niet activeren. Controleer het wachtwoord van uw herstelsleutel!",
"Recovery key successfully disabled" : "Herstelsleutel succesvol gedeactiveerd",
"Could not disable recovery key. Please check your recovery key password!" : "Kon herstelsleutel niet deactiveren. Controleer het wachtwoord van uw herstelsleutel!",
+ "Missing parameters" : "Ontbrekende parameters",
"Please provide the old recovery password" : "Geef het oude herstelwachtwoord op",
"Please provide a new recovery password" : "Geef een nieuw herstelwachtwoord op",
"Please repeat the new recovery password" : "Herhaal het nieuwe herstelwachtwoord",
"Password successfully changed." : "Wachtwoord succesvol gewijzigd.",
"Could not change the password. Maybe the old password was not correct." : "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.",
+ "Recovery Key disabled" : "Herstelsleutel gedeactiveerd",
"Recovery Key enabled" : "Herstelsleutel ingeschakeld",
"Could not enable the recovery key, please try again or contact your administrator" : "Kon herstelsleutel niet inschakelen, probeer het opnieuw, of neem contact op met uw beheerder",
"Could not update the private key password." : "Kon het wachtwoord van de privésleutel niet bijwerken.",
@@ -19,17 +21,17 @@
"Private key password successfully updated." : "Privésleutel succesvol bijgewerkt.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ongeldige privésleutel voor crypto app. Werk het privésleutel wachtwoord bij in uw persoonlijke instellingen om opnieuw toegang te krijgen tot uw versleutelde bestanden.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is geactiveerd, maar uw sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.",
- "ownCloud basic encryption module" : "ownCloud basis versleutelingsmodule",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Activeren herstelsleutel (maakt het mogelijk om gebruikersbestanden terug te halen in geval van verlies van het wachtwoord):",
+ "Enable recovery key" : "Activeer herstelsleutel",
+ "Disable recovery key" : "Deactiveer herstelsleutel",
+ "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." : "De herstelsleutel is een extra cryptografische sleutel die wordt gebruikt om bestanden te versleutelen. Die maakt het mogelijk bestanden te herstellen als de gebruiker zijn of haar wachtwoord vergeet.",
"Recovery key password" : "Wachtwoord herstelsleulel",
- "Repeat Recovery key password" : "Herhaal het herstelsleutel wachtwoord",
- "Enabled" : "Geactiveerd",
- "Disabled" : "Gedeactiveerd",
+ "Repeat recovery key password" : "Herhaal wachtwoord herstelsleutel",
"Change recovery key password:" : "Wijzig wachtwoord herstelsleutel:",
- "Old Recovery key password" : "Oude wachtwoord herstelsleutel",
- "New Recovery key password" : "Nieuwe wachtwoord herstelsleutel",
- "Repeat New Recovery key password" : "Herhaal het nieuwe herstelsleutel wachtwoord",
+ "Old recovery key password" : "Oude wachtwoord herstelsleutel",
+ "New recovery key password" : "Nieuwe wachtwoord herstelsleutel",
+ "Repeat new recovery key password" : "Herhaal nieuwe wachtwoord herstelsleutel",
"Change Password" : "Wijzigen wachtwoord",
+ "ownCloud basic encryption module" : "ownCloud basis versleutelingsmodule",
"Your private key password no longer matches your log-in password." : "Het wachtwoord van uw privésleutel komt niet meer overeen met uw inlogwachtwoord.",
"Set your old private key password to your current log-in password:" : "Stel het wachtwoord van uw oude privésleutel in op uw huidige inlogwachtwoord.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Als u uw oude wachtwoord niet meer weet, kunt u uw beheerder vragen uw bestanden terug te halen.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Huidige wachtwoord",
"Update Private Key Password" : "Bijwerken wachtwoord Privésleutel",
"Enable password recovery:" : "Activeren wachtwoord herstel:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Het activeren van deze optie maakt het mogelijk om uw versleutelde bestanden te benaderen als uw wachtwoord kwijt is"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Het activeren van deze optie maakt het mogelijk om uw versleutelde bestanden te benaderen als uw wachtwoord kwijt is",
+ "Enabled" : "Geactiveerd",
+ "Disabled" : "Gedeactiveerd"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/pl.js b/apps/encryption/l10n/pl.js
index 5b94369ffd2..dd8ecd2081b 100644
--- a/apps/encryption/l10n/pl.js
+++ b/apps/encryption/l10n/pl.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Włączhasło klucza odzyskiwania (pozwala odzyskać pliki użytkowników w przypadku utraty hasła):",
"Recovery key password" : "Hasło klucza odzyskiwania",
- "Repeat Recovery key password" : "Powtórz hasło klucza odzyskiwania",
- "Enabled" : "Włączone",
- "Disabled" : "Wyłączone",
"Change recovery key password:" : "Zmień hasło klucza odzyskiwania",
- "Old Recovery key password" : "Stare hasło klucza odzyskiwania",
- "New Recovery key password" : "Nowe hasło klucza odzyskiwania",
- "Repeat New Recovery key password" : "Powtórz nowe hasło klucza odzyskiwania",
"Change Password" : "Zmień hasło",
"Your private key password no longer matches your log-in password." : "Hasło Twojego klucza prywatnego nie pasuje już do Twojego hasła logowania.",
"Set your old private key password to your current log-in password:" : "Ustaw stare hasło klucza prywatnego na aktualne hasło logowania:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Bieżące hasło logowania",
"Update Private Key Password" : "Aktualizacja hasła klucza prywatnego",
"Enable password recovery:" : "Włącz hasło odzyskiwania:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła",
+ "Enabled" : "Włączone",
+ "Disabled" : "Wyłączone"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/encryption/l10n/pl.json b/apps/encryption/l10n/pl.json
index 7f173df628d..8e40fe41200 100644
--- a/apps/encryption/l10n/pl.json
+++ b/apps/encryption/l10n/pl.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Włączhasło klucza odzyskiwania (pozwala odzyskać pliki użytkowników w przypadku utraty hasła):",
"Recovery key password" : "Hasło klucza odzyskiwania",
- "Repeat Recovery key password" : "Powtórz hasło klucza odzyskiwania",
- "Enabled" : "Włączone",
- "Disabled" : "Wyłączone",
"Change recovery key password:" : "Zmień hasło klucza odzyskiwania",
- "Old Recovery key password" : "Stare hasło klucza odzyskiwania",
- "New Recovery key password" : "Nowe hasło klucza odzyskiwania",
- "Repeat New Recovery key password" : "Powtórz nowe hasło klucza odzyskiwania",
"Change Password" : "Zmień hasło",
"Your private key password no longer matches your log-in password." : "Hasło Twojego klucza prywatnego nie pasuje już do Twojego hasła logowania.",
"Set your old private key password to your current log-in password:" : "Ustaw stare hasło klucza prywatnego na aktualne hasło logowania:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Bieżące hasło logowania",
"Update Private Key Password" : "Aktualizacja hasła klucza prywatnego",
"Enable password recovery:" : "Włącz hasło odzyskiwania:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła",
+ "Enabled" : "Włączone",
+ "Disabled" : "Wyłączone"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js
index cbac8f72b48..f68cd3ae667 100644
--- a/apps/encryption/l10n/pt_BR.js
+++ b/apps/encryption/l10n/pt_BR.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Impossível habilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!",
"Recovery key successfully disabled" : "Recuperação de chave desabilitada com sucesso",
"Could not disable recovery key. Please check your recovery key password!" : "Impossível desabilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!",
+ "Missing parameters" : "Parâmetros que faltam",
"Please provide the old recovery password" : "Por favor, forneça a antiga senha de recuperação",
"Please provide a new recovery password" : "Por favor, forneça a nova senha de recuperação",
"Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação",
"Password successfully changed." : "Senha alterada com sucesso.",
"Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.",
+ "Recovery Key disabled" : "Recuperação de chave desativada",
"Recovery Key enabled" : "Recuperar Chave habilitada",
"Could not enable the recovery key, please try again or contact your administrator" : "Não foi possível habilitar a chave recuperada, por favor tente novamente ou entre em contato com seu administrador",
"Could not update the private key password." : "Não foi possível atualizar a senha da chave privada.",
@@ -21,17 +23,16 @@ OC.L10N.register(
"Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave do App de Criptografia é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente",
- "ownCloud basic encryption module" : "Modo de criptografia básico ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar chave de recuperação (permite recuperar arquivos de usuários em caso de perda de senha):",
+ "Enable recovery key" : "Habilitar recuperação de chave",
+ "Disable recovery key" : "Dasabilitar chave de recuperação",
"Recovery key password" : "Senha da chave de recuperação",
- "Repeat Recovery key password" : "Repita Recuperação de senha da chave",
- "Enabled" : "Habilitado",
- "Disabled" : "Desabilitado",
+ "Repeat recovery key password" : "Repita senha da chave de recuperação",
"Change recovery key password:" : "Mudar a senha da chave de recuperação:",
- "Old Recovery key password" : "Senha antiga da chave de recuperação",
- "New Recovery key password" : "Nova senha da chave de recuperação",
- "Repeat New Recovery key password" : "Repita Nova senha da chave de recuperação",
+ "Old recovery key password" : "Senha da chave de recuperação antiga",
+ "New recovery key password" : "Nova senha da chave de recuperação",
+ "Repeat new recovery key password" : "Repita a nova senha da chave de recuperação",
"Change Password" : "Trocar Senha",
+ "ownCloud basic encryption module" : "Modo de criptografia básico ownCloud",
"Your private key password no longer matches your log-in password." : "A sua senha de chave privada não corresponde a sua senha de login.",
"Set your old private key password to your current log-in password:" : "Defina a sua antiga senha da chave privada para sua senha de login atual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.",
@@ -39,6 +40,8 @@ OC.L10N.register(
"Current log-in password" : "Senha de login atual",
"Update Private Key Password" : "Atualizar Senha de Chave Privada",
"Enable password recovery:" : "Habilitar recuperação de senha:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos encriptados em caso de perda de senha"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos encriptados em caso de perda de senha",
+ "Enabled" : "Habilitado",
+ "Disabled" : "Desabilitado"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json
index 328a3194635..aecf8ee11c1 100644
--- a/apps/encryption/l10n/pt_BR.json
+++ b/apps/encryption/l10n/pt_BR.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Impossível habilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!",
"Recovery key successfully disabled" : "Recuperação de chave desabilitada com sucesso",
"Could not disable recovery key. Please check your recovery key password!" : "Impossível desabilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!",
+ "Missing parameters" : "Parâmetros que faltam",
"Please provide the old recovery password" : "Por favor, forneça a antiga senha de recuperação",
"Please provide a new recovery password" : "Por favor, forneça a nova senha de recuperação",
"Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação",
"Password successfully changed." : "Senha alterada com sucesso.",
"Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.",
+ "Recovery Key disabled" : "Recuperação de chave desativada",
"Recovery Key enabled" : "Recuperar Chave habilitada",
"Could not enable the recovery key, please try again or contact your administrator" : "Não foi possível habilitar a chave recuperada, por favor tente novamente ou entre em contato com seu administrador",
"Could not update the private key password." : "Não foi possível atualizar a senha da chave privada.",
@@ -19,17 +21,16 @@
"Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave do App de Criptografia é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente",
- "ownCloud basic encryption module" : "Modo de criptografia básico ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar chave de recuperação (permite recuperar arquivos de usuários em caso de perda de senha):",
+ "Enable recovery key" : "Habilitar recuperação de chave",
+ "Disable recovery key" : "Dasabilitar chave de recuperação",
"Recovery key password" : "Senha da chave de recuperação",
- "Repeat Recovery key password" : "Repita Recuperação de senha da chave",
- "Enabled" : "Habilitado",
- "Disabled" : "Desabilitado",
+ "Repeat recovery key password" : "Repita senha da chave de recuperação",
"Change recovery key password:" : "Mudar a senha da chave de recuperação:",
- "Old Recovery key password" : "Senha antiga da chave de recuperação",
- "New Recovery key password" : "Nova senha da chave de recuperação",
- "Repeat New Recovery key password" : "Repita Nova senha da chave de recuperação",
+ "Old recovery key password" : "Senha da chave de recuperação antiga",
+ "New recovery key password" : "Nova senha da chave de recuperação",
+ "Repeat new recovery key password" : "Repita a nova senha da chave de recuperação",
"Change Password" : "Trocar Senha",
+ "ownCloud basic encryption module" : "Modo de criptografia básico ownCloud",
"Your private key password no longer matches your log-in password." : "A sua senha de chave privada não corresponde a sua senha de login.",
"Set your old private key password to your current log-in password:" : "Defina a sua antiga senha da chave privada para sua senha de login atual:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.",
@@ -37,6 +38,8 @@
"Current log-in password" : "Senha de login atual",
"Update Private Key Password" : "Atualizar Senha de Chave Privada",
"Enable password recovery:" : "Habilitar recuperação de senha:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos encriptados em caso de perda de senha"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos encriptados em caso de perda de senha",
+ "Enabled" : "Habilitado",
+ "Disabled" : "Desabilitado"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/pt_PT.js b/apps/encryption/l10n/pt_PT.js
index 526c79f207b..d3055cd4a40 100644
--- a/apps/encryption/l10n/pt_PT.js
+++ b/apps/encryption/l10n/pt_PT.js
@@ -21,17 +21,10 @@ OC.L10N.register(
"Private key password successfully updated." : "A senha da chave privada foi atualizada com sucesso. ",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida da Aplicação de Encriptação. Por favor atualize a sua senha de chave privada nas definições pessoais, para recuperar o acesso aos seus ficheiros encriptados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A Aplicação de Encriptação está ativada, mas as suas chaves não inicializaram. Por favor termine e inicie a sessão novamente",
- "ownCloud basic encryption module" : "módulo de encriptação básico da ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Ativar a chave de recuperação (permite recuperar os ficheiros do utilizador, se perder a senha):",
"Recovery key password" : "Senha da chave de recuperação",
- "Repeat Recovery key password" : "Contrassenha da chave de recuperação",
- "Enabled" : "Ativada",
- "Disabled" : "Desactivada",
"Change recovery key password:" : "Alterar a senha da chave de recuperação:",
- "Old Recovery key password" : "Senha da chave de recuperação antiga",
- "New Recovery key password" : "Nova senha da chave de recuperação",
- "Repeat New Recovery key password" : "Contrassenha da nova chave de recuperação",
"Change Password" : "Alterar a Senha",
+ "ownCloud basic encryption module" : "módulo de encriptação básico da ownCloud",
"Your private key password no longer matches your log-in password." : "A Password da sua chave privada não coincide mais com a password do seu login.",
"Set your old private key password to your current log-in password:" : "Altere a password antiga da chave privada para a nova password do login:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se não se lembra da senha antiga pode pedir ao administrador para recuperar os seus ficheiros. ",
@@ -39,6 +32,8 @@ OC.L10N.register(
"Current log-in password" : "Senha de iniciar sessão atual",
"Update Private Key Password" : "Atualizar Senha da Chave Privada ",
"Enable password recovery:" : "Ativar a recuperação da senha:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao ativar esta opção, irá poder obter o acesso aos seus ficheiros encriptados, se perder a senha"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao ativar esta opção, irá poder obter o acesso aos seus ficheiros encriptados, se perder a senha",
+ "Enabled" : "Ativada",
+ "Disabled" : "Desactivada"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/pt_PT.json b/apps/encryption/l10n/pt_PT.json
index 24385809d25..57baaa64ff1 100644
--- a/apps/encryption/l10n/pt_PT.json
+++ b/apps/encryption/l10n/pt_PT.json
@@ -19,17 +19,10 @@
"Private key password successfully updated." : "A senha da chave privada foi atualizada com sucesso. ",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida da Aplicação de Encriptação. Por favor atualize a sua senha de chave privada nas definições pessoais, para recuperar o acesso aos seus ficheiros encriptados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A Aplicação de Encriptação está ativada, mas as suas chaves não inicializaram. Por favor termine e inicie a sessão novamente",
- "ownCloud basic encryption module" : "módulo de encriptação básico da ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Ativar a chave de recuperação (permite recuperar os ficheiros do utilizador, se perder a senha):",
"Recovery key password" : "Senha da chave de recuperação",
- "Repeat Recovery key password" : "Contrassenha da chave de recuperação",
- "Enabled" : "Ativada",
- "Disabled" : "Desactivada",
"Change recovery key password:" : "Alterar a senha da chave de recuperação:",
- "Old Recovery key password" : "Senha da chave de recuperação antiga",
- "New Recovery key password" : "Nova senha da chave de recuperação",
- "Repeat New Recovery key password" : "Contrassenha da nova chave de recuperação",
"Change Password" : "Alterar a Senha",
+ "ownCloud basic encryption module" : "módulo de encriptação básico da ownCloud",
"Your private key password no longer matches your log-in password." : "A Password da sua chave privada não coincide mais com a password do seu login.",
"Set your old private key password to your current log-in password:" : "Altere a password antiga da chave privada para a nova password do login:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Se não se lembra da senha antiga pode pedir ao administrador para recuperar os seus ficheiros. ",
@@ -37,6 +30,8 @@
"Current log-in password" : "Senha de iniciar sessão atual",
"Update Private Key Password" : "Atualizar Senha da Chave Privada ",
"Enable password recovery:" : "Ativar a recuperação da senha:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao ativar esta opção, irá poder obter o acesso aos seus ficheiros encriptados, se perder a senha"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao ativar esta opção, irá poder obter o acesso aos seus ficheiros encriptados, se perder a senha",
+ "Enabled" : "Ativada",
+ "Disabled" : "Desactivada"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ro.js b/apps/encryption/l10n/ro.js
index 60291bc3a4b..3f699577243 100644
--- a/apps/encryption/l10n/ro.js
+++ b/apps/encryption/l10n/ro.js
@@ -17,9 +17,9 @@ OC.L10N.register(
"Private key password successfully updated." : "Cheia privata a fost actualizata cu succes",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Cheie privată nevalidă pentru aplicația Încriptare. Te rog, actualizează-ți parola cheii private folosind setările personale pentru a reaccesa fișierele tale încriptate.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplicatia de criptare este activata dar tastatura nu este initializata , va rugam deconectati-va si reconectati-va",
+ "Change Password" : "Schimbă parola",
"ownCloud basic encryption module" : "modul de ecnriptie bazic ownCloud",
"Enabled" : "Activat",
- "Disabled" : "Dezactivat",
- "Change Password" : "Schimbă parola"
+ "Disabled" : "Dezactivat"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/encryption/l10n/ro.json b/apps/encryption/l10n/ro.json
index 87f9134fc45..e546b400935 100644
--- a/apps/encryption/l10n/ro.json
+++ b/apps/encryption/l10n/ro.json
@@ -15,9 +15,9 @@
"Private key password successfully updated." : "Cheia privata a fost actualizata cu succes",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Cheie privată nevalidă pentru aplicația Încriptare. Te rog, actualizează-ți parola cheii private folosind setările personale pentru a reaccesa fișierele tale încriptate.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplicatia de criptare este activata dar tastatura nu este initializata , va rugam deconectati-va si reconectati-va",
+ "Change Password" : "Schimbă parola",
"ownCloud basic encryption module" : "modul de ecnriptie bazic ownCloud",
"Enabled" : "Activat",
- "Disabled" : "Dezactivat",
- "Change Password" : "Schimbă parola"
+ "Disabled" : "Dezactivat"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/ru.js b/apps/encryption/l10n/ru.js
index c1104e7f589..03af392d19e 100644
--- a/apps/encryption/l10n/ru.js
+++ b/apps/encryption/l10n/ru.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Невозможно включить ключ восстановления. Проверьте правильность пароля от ключа!",
"Recovery key successfully disabled" : "Ключ восстановления успешно отключен",
"Could not disable recovery key. Please check your recovery key password!" : "Невозможно выключить ключ восстановления. Проверьте правильность пароля от ключа!",
+ "Missing parameters" : "Отсутствуют параметры",
"Please provide the old recovery password" : "Введите старый пароль восстановления",
"Please provide a new recovery password" : "Введите новый пароль восстановления",
"Please repeat the new recovery password" : "Повторите новый пароль восстановления",
"Password successfully changed." : "Пароль успешно изменен.",
"Could not change the password. Maybe the old password was not correct." : "Невозможно изменить пароль. Возможно, указанный старый пароль не верен.",
+ "Recovery Key disabled" : "Ключ Восстановления отключен",
"Recovery Key enabled" : "Ключ Восстановления включен",
"Could not enable the recovery key, please try again or contact your administrator" : "Не возможно задействовать ключ восстановления, попробуйте снова или обратитесь к вашему системному администатору",
"Could not update the private key password." : "Невозможно обновить пароль закрытого ключа.",
@@ -21,17 +23,12 @@ OC.L10N.register(
"Private key password successfully updated." : "Пароль закрытого ключа успешно обновлён.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново",
- "ownCloud basic encryption module" : "Базовый модуль шифрования ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Включить ключ восстановления (позволяет пользователям восстановить файлы при потере пароля):",
+ "Enable recovery key" : "Включить ключ восстановления",
+ "Disable recovery key" : "Отключить ключ восстановления",
"Recovery key password" : "Пароль ключа восстановления",
- "Repeat Recovery key password" : "Повторите пароль ключа восстановления",
- "Enabled" : "Включено",
- "Disabled" : "Отключено",
"Change recovery key password:" : "Смена пароля ключа восстановления:",
- "Old Recovery key password" : "Старый пароль ключа восстановления",
- "New Recovery key password" : "Новый пароль ключа восстановления",
- "Repeat New Recovery key password" : "Повторите новый пароль ключа восстановления",
"Change Password" : "Изменить пароль",
+ "ownCloud basic encryption module" : "Базовый модуль шифрования ownCloud",
"Your private key password no longer matches your log-in password." : "Пароль закрытого ключа больше не соответствует паролю вашей учетной записи.",
"Set your old private key password to your current log-in password:" : "Замените старый пароль закрытого ключа на текущий пароль учётной записи.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы",
@@ -39,6 +36,8 @@ OC.L10N.register(
"Current log-in password" : "Текущий пароль учётной записи",
"Update Private Key Password" : "Обновить пароль закрытого ключа",
"Enable password recovery:" : "Включить восстановление пароля:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля",
+ "Enabled" : "Включено",
+ "Disabled" : "Отключено"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/encryption/l10n/ru.json b/apps/encryption/l10n/ru.json
index 6d97a487786..2e2bcfd0513 100644
--- a/apps/encryption/l10n/ru.json
+++ b/apps/encryption/l10n/ru.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Невозможно включить ключ восстановления. Проверьте правильность пароля от ключа!",
"Recovery key successfully disabled" : "Ключ восстановления успешно отключен",
"Could not disable recovery key. Please check your recovery key password!" : "Невозможно выключить ключ восстановления. Проверьте правильность пароля от ключа!",
+ "Missing parameters" : "Отсутствуют параметры",
"Please provide the old recovery password" : "Введите старый пароль восстановления",
"Please provide a new recovery password" : "Введите новый пароль восстановления",
"Please repeat the new recovery password" : "Повторите новый пароль восстановления",
"Password successfully changed." : "Пароль успешно изменен.",
"Could not change the password. Maybe the old password was not correct." : "Невозможно изменить пароль. Возможно, указанный старый пароль не верен.",
+ "Recovery Key disabled" : "Ключ Восстановления отключен",
"Recovery Key enabled" : "Ключ Восстановления включен",
"Could not enable the recovery key, please try again or contact your administrator" : "Не возможно задействовать ключ восстановления, попробуйте снова или обратитесь к вашему системному администатору",
"Could not update the private key password." : "Невозможно обновить пароль закрытого ключа.",
@@ -19,17 +21,12 @@
"Private key password successfully updated." : "Пароль закрытого ключа успешно обновлён.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново",
- "ownCloud basic encryption module" : "Базовый модуль шифрования ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Включить ключ восстановления (позволяет пользователям восстановить файлы при потере пароля):",
+ "Enable recovery key" : "Включить ключ восстановления",
+ "Disable recovery key" : "Отключить ключ восстановления",
"Recovery key password" : "Пароль ключа восстановления",
- "Repeat Recovery key password" : "Повторите пароль ключа восстановления",
- "Enabled" : "Включено",
- "Disabled" : "Отключено",
"Change recovery key password:" : "Смена пароля ключа восстановления:",
- "Old Recovery key password" : "Старый пароль ключа восстановления",
- "New Recovery key password" : "Новый пароль ключа восстановления",
- "Repeat New Recovery key password" : "Повторите новый пароль ключа восстановления",
"Change Password" : "Изменить пароль",
+ "ownCloud basic encryption module" : "Базовый модуль шифрования ownCloud",
"Your private key password no longer matches your log-in password." : "Пароль закрытого ключа больше не соответствует паролю вашей учетной записи.",
"Set your old private key password to your current log-in password:" : "Замените старый пароль закрытого ключа на текущий пароль учётной записи.",
" If you don't remember your old password you can ask your administrator to recover your files." : "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы",
@@ -37,6 +34,8 @@
"Current log-in password" : "Текущий пароль учётной записи",
"Update Private Key Password" : "Обновить пароль закрытого ключа",
"Enable password recovery:" : "Включить восстановление пароля:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля"
-},"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);"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля",
+ "Enabled" : "Включено",
+ "Disabled" : "Отключено"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/sk_SK.js b/apps/encryption/l10n/sk_SK.js
index 763646a364f..ff9f5df4b15 100644
--- a/apps/encryption/l10n/sk_SK.js
+++ b/apps/encryption/l10n/sk_SK.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Povoliť obnovovací kľúč (umožňuje obnoviť používateľské súbory v prípade straty hesla):",
"Recovery key password" : "Heslo obnovovacieho kľúča",
- "Repeat Recovery key password" : "Zopakujte heslo kľúča pre obnovu",
- "Enabled" : "Povolené",
- "Disabled" : "Zakázané",
"Change recovery key password:" : "Zmeniť heslo obnovovacieho kľúča:",
- "Old Recovery key password" : "Staré heslo obnovovacieho kľúča",
- "New Recovery key password" : "Nové heslo obnovovacieho kľúča",
- "Repeat New Recovery key password" : "Zopakujte nové heslo kľúča pre obnovu",
"Change Password" : "Zmeniť heslo",
"Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.",
"Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Súčasné prihlasovacie heslo",
"Update Private Key Password" : "Aktualizovať heslo súkromného kľúča",
"Enable password recovery:" : "Povoliť obnovu hesla:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Povolenie Vám umožní znovu získať prístup k Vašim zašifrovaným súborom, ak stratíte heslo"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Povolenie Vám umožní znovu získať prístup k Vašim zašifrovaným súborom, ak stratíte heslo",
+ "Enabled" : "Povolené",
+ "Disabled" : "Zakázané"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/encryption/l10n/sk_SK.json b/apps/encryption/l10n/sk_SK.json
index dcc8cd48bbb..1dd03e0f9ea 100644
--- a/apps/encryption/l10n/sk_SK.json
+++ b/apps/encryption/l10n/sk_SK.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Povoliť obnovovací kľúč (umožňuje obnoviť používateľské súbory v prípade straty hesla):",
"Recovery key password" : "Heslo obnovovacieho kľúča",
- "Repeat Recovery key password" : "Zopakujte heslo kľúča pre obnovu",
- "Enabled" : "Povolené",
- "Disabled" : "Zakázané",
"Change recovery key password:" : "Zmeniť heslo obnovovacieho kľúča:",
- "Old Recovery key password" : "Staré heslo obnovovacieho kľúča",
- "New Recovery key password" : "Nové heslo obnovovacieho kľúča",
- "Repeat New Recovery key password" : "Zopakujte nové heslo kľúča pre obnovu",
"Change Password" : "Zmeniť heslo",
"Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.",
"Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Súčasné prihlasovacie heslo",
"Update Private Key Password" : "Aktualizovať heslo súkromného kľúča",
"Enable password recovery:" : "Povoliť obnovu hesla:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Povolenie Vám umožní znovu získať prístup k Vašim zašifrovaným súborom, ak stratíte heslo"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Povolenie Vám umožní znovu získať prístup k Vašim zašifrovaným súborom, ak stratíte heslo",
+ "Enabled" : "Povolené",
+ "Disabled" : "Zakázané"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/sl.js b/apps/encryption/l10n/sl.js
index e10a9b302da..fe9f775fbef 100644
--- a/apps/encryption/l10n/sl.js
+++ b/apps/encryption/l10n/sl.js
@@ -14,20 +14,13 @@ OC.L10N.register(
"Password successfully changed." : "Geslo je uspešno spremenjeno.",
"Could not change the password. Maybe the old password was not correct." : "Gesla ni mogoče spremeniti. Morda vnos starega gesla ni pravilen.",
"Could not update the private key password." : "Ni mogoče posodobiti gesla zasebnega ključa.",
- "The old password was not correct, please try again." : "Staro geslo ni vpisana pravilno. Poskusite znova.",
+ "The old password was not correct, please try again." : "Staro geslo ni vpisano pravilno. Poskusite znova.",
"The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.",
"Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Omogoči ključ za obnovitev datotek (v primeru izgube gesla):",
"Recovery key password" : "Ključ za obnovitev gesla",
- "Repeat Recovery key password" : "Ponovi ključ za obnovitev gesla",
- "Enabled" : "Omogočeno",
- "Disabled" : "Onemogočeno",
"Change recovery key password:" : "Spremeni ključ za obnovitev gesla:",
- "Old Recovery key password" : "Stari ključ za obnovitev gesla",
- "New Recovery key password" : "Novi ključ za obnovitev gesla",
- "Repeat New Recovery key password" : "Ponovi novi ključ za obnovitev gesla",
"Change Password" : "Spremeni geslo",
"Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.",
"Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Trenutno geslo",
"Update Private Key Password" : "Posodobi zasebni ključ",
"Enable password recovery:" : "Omogoči obnovitev gesla:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Nastavitev te možnosti omogoča ponovno pridobitev dostopa do šifriranih datotek, v primeru, da boste geslo pozabili."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Nastavitev te možnosti omogoča ponovno pridobitev dostopa do šifriranih datotek, v primeru, da boste geslo pozabili.",
+ "Enabled" : "Omogočeno",
+ "Disabled" : "Onemogočeno"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/encryption/l10n/sl.json b/apps/encryption/l10n/sl.json
index 55a40653bd7..f650196eac1 100644
--- a/apps/encryption/l10n/sl.json
+++ b/apps/encryption/l10n/sl.json
@@ -12,20 +12,13 @@
"Password successfully changed." : "Geslo je uspešno spremenjeno.",
"Could not change the password. Maybe the old password was not correct." : "Gesla ni mogoče spremeniti. Morda vnos starega gesla ni pravilen.",
"Could not update the private key password." : "Ni mogoče posodobiti gesla zasebnega ključa.",
- "The old password was not correct, please try again." : "Staro geslo ni vpisana pravilno. Poskusite znova.",
+ "The old password was not correct, please try again." : "Staro geslo ni vpisano pravilno. Poskusite znova.",
"The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.",
"Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Omogoči ključ za obnovitev datotek (v primeru izgube gesla):",
"Recovery key password" : "Ključ za obnovitev gesla",
- "Repeat Recovery key password" : "Ponovi ključ za obnovitev gesla",
- "Enabled" : "Omogočeno",
- "Disabled" : "Onemogočeno",
"Change recovery key password:" : "Spremeni ključ za obnovitev gesla:",
- "Old Recovery key password" : "Stari ključ za obnovitev gesla",
- "New Recovery key password" : "Novi ključ za obnovitev gesla",
- "Repeat New Recovery key password" : "Ponovi novi ključ za obnovitev gesla",
"Change Password" : "Spremeni geslo",
"Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.",
"Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Trenutno geslo",
"Update Private Key Password" : "Posodobi zasebni ključ",
"Enable password recovery:" : "Omogoči obnovitev gesla:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Nastavitev te možnosti omogoča ponovno pridobitev dostopa do šifriranih datotek, v primeru, da boste geslo pozabili."
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Nastavitev te možnosti omogoča ponovno pridobitev dostopa do šifriranih datotek, v primeru, da boste geslo pozabili.",
+ "Enabled" : "Omogočeno",
+ "Disabled" : "Onemogočeno"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/sr.js b/apps/encryption/l10n/sr.js
index 5d15b172dbf..b1e0feaa343 100644
--- a/apps/encryption/l10n/sr.js
+++ b/apps/encryption/l10n/sr.js
@@ -8,30 +8,32 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Не могу да укључим кључ за опоравак. Проверите лозинку кључа за опоравак!",
"Recovery key successfully disabled" : "Кључ за опоравак успешно искључен",
"Could not disable recovery key. Please check your recovery key password!" : "Не могу да искључим кључ за опоравак. Проверите лозинку!",
+ "Missing parameters" : "Недостају параметри",
"Please provide the old recovery password" : "Унесите стару лозинку опоравка",
"Please provide a new recovery password" : "Унесите нову лозинку опоравка",
"Please repeat the new recovery password" : "Поновите нову лозинку опоравка",
"Password successfully changed." : "Лозинка успешно промењена.",
"Could not change the password. Maybe the old password was not correct." : "Не могу да променим лозинку. Можда стара лозинка није исправна.",
- "Recovery Key enabled" : "Кључ опоравка укључен",
- "Could not enable the recovery key, please try again or contact your administrator" : "Не могу да укључим кључ опоравка. Покушајте поново или контактирајте администратора",
- "Could not update the private key password." : "Не могу да ажирирам личну кључ лозинку.",
- "The old password was not correct, please try again." : "Стара лозинка није исправна, покушајте поново.",
- "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна, покушајте поново.",
- "Private key password successfully updated." : "Лична кључ лозинка је успешно ажурирана.",
+ "Recovery Key disabled" : "Кључ за опоравак искључен",
+ "Recovery Key enabled" : "Кључ за опоравак укључен",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Не могу да укључим кључ за опоравак. Покушајте поново или контактирајте администратора",
+ "Could not update the private key password." : "Не могу да ажирирам лозинку личног кључа.",
+ "The old password was not correct, please try again." : "Стара лозинка није исправна. Покушајте поново.",
+ "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна. Покушајте поново.",
+ "Private key password successfully updated." : "Лозинка личног кључа је успешно ажурирана.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Неисправан лични кључ за апликацију шифровања. Ажурирајте лозинку личног кључа у личним поставкама да бисте опоравили приступ вашим шифрованим фајловима.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите.",
- "ownCloud basic encryption module" : "оунКлауд основни шифрарски модул",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Омогући кључ за опоравак (омогућава опоравак корисничких фајлова у случају губитка лозинке):",
+ "Enable recovery key" : "Омогући кључ за опоравак",
+ "Disable recovery key" : "Онемогући кључ за опоравак",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Кључ за опоравак је додатни шифрарски кључ који се користи за шифровање фајлова. Он омогућава опоравак корисничких фајлова ако корисник заборави своју лозинку.",
"Recovery key password" : "Лозинка кључа за опоравак",
- "Repeat Recovery key password" : "Поновите лозинку кључа за опоравак",
- "Enabled" : "укључено",
- "Disabled" : "искључено",
+ "Repeat recovery key password" : "Поновите лозинку кључа за опоравак",
"Change recovery key password:" : "Измена лозинке кључа опоравка:",
- "Old Recovery key password" : "Стара лозинка кључа опоравка",
- "New Recovery key password" : "Нова лозинка кључа опоравка",
- "Repeat New Recovery key password" : "Поновите лозинку кључа опоравка",
+ "Old recovery key password" : "Стара лозинка кључа за опоравак",
+ "New recovery key password" : "Нова лозинка кључа за опоравак",
+ "Repeat new recovery key password" : "Поновите нову лозинку кључа за опоравак",
"Change Password" : "Измени лозинку",
+ "ownCloud basic encryption module" : "оунКлауд основни шифрарски модул",
"Your private key password no longer matches your log-in password." : "Лозинка вашег личног кључа више није иста као ваша лозинка за пријаву.",
"Set your old private key password to your current log-in password:" : "Поставите стару лозинку личног кључа као тренутну лозинку за пријаву:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Ако се не сећате старе лозинке, можете затражити од администратора да опорави ваше фајлове.",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Current log-in password" : "Тренутна лозинка за пријаву",
"Update Private Key Password" : "Ажурирај лозинку личног кључа",
"Enable password recovery:" : "Укључи опоравак лозинке:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Укључивање ове опције омогућиће поновно добијање приступа вашим шифрованим фајловима у случају губитка лозинке"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Укључивање ове опције омогућиће поновно добијање приступа вашим шифрованим фајловима у случају губитка лозинке",
+ "Enabled" : "укључено",
+ "Disabled" : "искључено"
},
"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/encryption/l10n/sr.json b/apps/encryption/l10n/sr.json
index 9d0438f870c..f3139af14af 100644
--- a/apps/encryption/l10n/sr.json
+++ b/apps/encryption/l10n/sr.json
@@ -6,30 +6,32 @@
"Could not enable recovery key. Please check your recovery key password!" : "Не могу да укључим кључ за опоравак. Проверите лозинку кључа за опоравак!",
"Recovery key successfully disabled" : "Кључ за опоравак успешно искључен",
"Could not disable recovery key. Please check your recovery key password!" : "Не могу да искључим кључ за опоравак. Проверите лозинку!",
+ "Missing parameters" : "Недостају параметри",
"Please provide the old recovery password" : "Унесите стару лозинку опоравка",
"Please provide a new recovery password" : "Унесите нову лозинку опоравка",
"Please repeat the new recovery password" : "Поновите нову лозинку опоравка",
"Password successfully changed." : "Лозинка успешно промењена.",
"Could not change the password. Maybe the old password was not correct." : "Не могу да променим лозинку. Можда стара лозинка није исправна.",
- "Recovery Key enabled" : "Кључ опоравка укључен",
- "Could not enable the recovery key, please try again or contact your administrator" : "Не могу да укључим кључ опоравка. Покушајте поново или контактирајте администратора",
- "Could not update the private key password." : "Не могу да ажирирам личну кључ лозинку.",
- "The old password was not correct, please try again." : "Стара лозинка није исправна, покушајте поново.",
- "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна, покушајте поново.",
- "Private key password successfully updated." : "Лична кључ лозинка је успешно ажурирана.",
+ "Recovery Key disabled" : "Кључ за опоравак искључен",
+ "Recovery Key enabled" : "Кључ за опоравак укључен",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Не могу да укључим кључ за опоравак. Покушајте поново или контактирајте администратора",
+ "Could not update the private key password." : "Не могу да ажирирам лозинку личног кључа.",
+ "The old password was not correct, please try again." : "Стара лозинка није исправна. Покушајте поново.",
+ "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна. Покушајте поново.",
+ "Private key password successfully updated." : "Лозинка личног кључа је успешно ажурирана.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Неисправан лични кључ за апликацију шифровања. Ажурирајте лозинку личног кључа у личним поставкама да бисте опоравили приступ вашим шифрованим фајловима.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите.",
- "ownCloud basic encryption module" : "оунКлауд основни шифрарски модул",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Омогући кључ за опоравак (омогућава опоравак корисничких фајлова у случају губитка лозинке):",
+ "Enable recovery key" : "Омогући кључ за опоравак",
+ "Disable recovery key" : "Онемогући кључ за опоравак",
+ "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Кључ за опоравак је додатни шифрарски кључ који се користи за шифровање фајлова. Он омогућава опоравак корисничких фајлова ако корисник заборави своју лозинку.",
"Recovery key password" : "Лозинка кључа за опоравак",
- "Repeat Recovery key password" : "Поновите лозинку кључа за опоравак",
- "Enabled" : "укључено",
- "Disabled" : "искључено",
+ "Repeat recovery key password" : "Поновите лозинку кључа за опоравак",
"Change recovery key password:" : "Измена лозинке кључа опоравка:",
- "Old Recovery key password" : "Стара лозинка кључа опоравка",
- "New Recovery key password" : "Нова лозинка кључа опоравка",
- "Repeat New Recovery key password" : "Поновите лозинку кључа опоравка",
+ "Old recovery key password" : "Стара лозинка кључа за опоравак",
+ "New recovery key password" : "Нова лозинка кључа за опоравак",
+ "Repeat new recovery key password" : "Поновите нову лозинку кључа за опоравак",
"Change Password" : "Измени лозинку",
+ "ownCloud basic encryption module" : "оунКлауд основни шифрарски модул",
"Your private key password no longer matches your log-in password." : "Лозинка вашег личног кључа више није иста као ваша лозинка за пријаву.",
"Set your old private key password to your current log-in password:" : "Поставите стару лозинку личног кључа као тренутну лозинку за пријаву:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Ако се не сећате старе лозинке, можете затражити од администратора да опорави ваше фајлове.",
@@ -37,6 +39,8 @@
"Current log-in password" : "Тренутна лозинка за пријаву",
"Update Private Key Password" : "Ажурирај лозинку личног кључа",
"Enable password recovery:" : "Укључи опоравак лозинке:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Укључивање ове опције омогућиће поновно добијање приступа вашим шифрованим фајловима у случају губитка лозинке"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Укључивање ове опције омогућиће поновно добијање приступа вашим шифрованим фајловима у случају губитка лозинке",
+ "Enabled" : "укључено",
+ "Disabled" : "искључено"
},"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/encryption/l10n/sv.js b/apps/encryption/l10n/sv.js
index 16898b8da67..9ffea2b937f 100644
--- a/apps/encryption/l10n/sv.js
+++ b/apps/encryption/l10n/sv.js
@@ -19,15 +19,8 @@ OC.L10N.register(
"Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades utan problem.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ogiltig privat nyckel i krypteringsprogrammet. Vänligen uppdatera lösenordet till din privata nyckel under dina personliga inställningar för att återfå tillgång till dina krypterade filer.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktivera återställningsnyckel (för att kunna återfå användarens filer vid glömt eller förlorat lösenord):",
"Recovery key password" : "Lösenord för återställningsnyckel",
- "Repeat Recovery key password" : "Upprepa återställningsnyckelns lösenord",
- "Enabled" : "Aktiverad",
- "Disabled" : "Inaktiverad",
"Change recovery key password:" : "Ändra lösenord för återställningsnyckel:",
- "Old Recovery key password" : "Gammalt lösenord för återställningsnyckel",
- "New Recovery key password" : "Nytt lösenord för återställningsnyckel",
- "Repeat New Recovery key password" : "Upprepa lösenord för ny återställningsnyckel",
"Change Password" : "Byt lösenord",
"Your private key password no longer matches your log-in password." : "Ditt lösenord för din privata nyckel matchar inte längre ditt inloggningslösenord.",
"Set your old private key password to your current log-in password:" : "Sätt ditt gamla privatnyckellösenord till ditt aktuella inloggningslösenord:",
@@ -36,6 +29,8 @@ OC.L10N.register(
"Current log-in password" : "Nuvarande inloggningslösenord",
"Update Private Key Password" : "Uppdatera lösenordet för din privata nyckel",
"Enable password recovery:" : "Aktivera lösenordsåterställning",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord",
+ "Enabled" : "Aktiverad",
+ "Disabled" : "Inaktiverad"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/encryption/l10n/sv.json b/apps/encryption/l10n/sv.json
index 537316161fb..e977107ba21 100644
--- a/apps/encryption/l10n/sv.json
+++ b/apps/encryption/l10n/sv.json
@@ -17,15 +17,8 @@
"Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades utan problem.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ogiltig privat nyckel i krypteringsprogrammet. Vänligen uppdatera lösenordet till din privata nyckel under dina personliga inställningar för att återfå tillgång till dina krypterade filer.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Aktivera återställningsnyckel (för att kunna återfå användarens filer vid glömt eller förlorat lösenord):",
"Recovery key password" : "Lösenord för återställningsnyckel",
- "Repeat Recovery key password" : "Upprepa återställningsnyckelns lösenord",
- "Enabled" : "Aktiverad",
- "Disabled" : "Inaktiverad",
"Change recovery key password:" : "Ändra lösenord för återställningsnyckel:",
- "Old Recovery key password" : "Gammalt lösenord för återställningsnyckel",
- "New Recovery key password" : "Nytt lösenord för återställningsnyckel",
- "Repeat New Recovery key password" : "Upprepa lösenord för ny återställningsnyckel",
"Change Password" : "Byt lösenord",
"Your private key password no longer matches your log-in password." : "Ditt lösenord för din privata nyckel matchar inte längre ditt inloggningslösenord.",
"Set your old private key password to your current log-in password:" : "Sätt ditt gamla privatnyckellösenord till ditt aktuella inloggningslösenord:",
@@ -34,6 +27,8 @@
"Current log-in password" : "Nuvarande inloggningslösenord",
"Update Private Key Password" : "Uppdatera lösenordet för din privata nyckel",
"Enable password recovery:" : "Aktivera lösenordsåterställning",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Genom att aktivera detta alternativ kommer du kunna återfå tillgång till dina krypterade filer om du skulle förlora/glömma ditt lösenord",
+ "Enabled" : "Aktiverad",
+ "Disabled" : "Inaktiverad"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/tr.js b/apps/encryption/l10n/tr.js
index ef00578b5dc..f462437912e 100644
--- a/apps/encryption/l10n/tr.js
+++ b/apps/encryption/l10n/tr.js
@@ -8,11 +8,13 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Kurtarma anahtarı etkinleştirilemedi. Lütfen kurtarma anahtarı parolanızı kontrol edin!",
"Recovery key successfully disabled" : "Kurtarma anahtarı başarıyla devre dışı bırakıldı",
"Could not disable recovery key. Please check your recovery key password!" : "Kurtarma anahtarı devre dışı bırakılamadı. Lütfen kurtarma anahtarı parolanızı kontrol edin!",
+ "Missing parameters" : "Eksik parametreler",
"Please provide the old recovery password" : "Lütfen eski kurtarma parolasını girin",
"Please provide a new recovery password" : "Lütfen yeni bir kurtarma parolası girin",
"Please repeat the new recovery password" : "Lütfen yeni kurtarma parolasını yenileyin",
"Password successfully changed." : "Parola başarıyla değiştirildi.",
"Could not change the password. Maybe the old password was not correct." : "Parola değiştirilemedi. Eski parolanız doğru olmayabilir.",
+ "Recovery Key disabled" : "Kurtarma anahtarı kapalı",
"Recovery Key enabled" : "Kurtarma anahtarı etkin",
"Could not enable the recovery key, please try again or contact your administrator" : "Kurtarma anahtarını etkinleştirmek olmadı, tekrar deneyin ya da yöneticinize başvurun",
"Could not update the private key password." : "Özel anahtar parolası güncellenemedi",
@@ -21,17 +23,12 @@ OC.L10N.register(
"Private key password successfully updated." : "Özel anahtar parolası başarıyla güncellendi.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Şifreleme Uygulaması için geçersiz özel anahtar. Lütfen şifreli dosyalarınıza erişimi tekrar kazanabilmek için kişisel ayarlarınızdan özel anahtar parolanızı güncelleyin.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın",
- "ownCloud basic encryption module" : "ownCloud basit şifreleme modülü",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Kurtarma anahtarını etkinleştir (parola kaybı durumunda kullanıcı dosyalarının kurtarılmasına izin verir):",
+ "Enable recovery key" : "Kurtarma anahtarını aktif et",
+ "Disable recovery key" : "Kurtarma anahtarını kapat",
"Recovery key password" : "Kurtarma anahtarı parolası",
- "Repeat Recovery key password" : "Kurtarma anahtarı parolasını yineleyin",
- "Enabled" : "Etkin",
- "Disabled" : "Devre Dışı",
"Change recovery key password:" : "Kurtarma anahtarı parolasını değiştir:",
- "Old Recovery key password" : "Eski Kurtarma anahtarı parolası",
- "New Recovery key password" : "Yeni Kurtarma anahtarı parolası",
- "Repeat New Recovery key password" : "Yeni Kurtarma anahtarı parolasını yineleyin",
"Change Password" : "Parola Değiştir",
+ "ownCloud basic encryption module" : "ownCloud basit şifreleme modülü",
"Your private key password no longer matches your log-in password." : "Özel anahtar parolanız artık oturum açma parolanız ile eşleşmiyor.",
"Set your old private key password to your current log-in password:" : "Eski özel anahtar parolanızı, geçerli oturum açma parolanız olarak ayarlayın:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Eğer eski parolanızı hatırlamıyorsanız, yöneticinizden dosyalarınızı kurtarmasını talep edebilirsiniz.",
@@ -39,6 +36,8 @@ OC.L10N.register(
"Current log-in password" : "Geçerli oturum açma parolası",
"Update Private Key Password" : "Özel Anahtar Parolasını Güncelle",
"Enable password recovery:" : "Parola kurtarmayı etkinleştir:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu seçeneği etkinleştirmek, parola kaybı durumunda şifrelenmiş dosyalarınıza erişimi yeniden kazanmanızı sağlayacaktır"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu seçeneği etkinleştirmek, parola kaybı durumunda şifrelenmiş dosyalarınıza erişimi yeniden kazanmanızı sağlayacaktır",
+ "Enabled" : "Etkin",
+ "Disabled" : "Devre Dışı"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/encryption/l10n/tr.json b/apps/encryption/l10n/tr.json
index 38fbc6898d9..1f3dea88d57 100644
--- a/apps/encryption/l10n/tr.json
+++ b/apps/encryption/l10n/tr.json
@@ -6,11 +6,13 @@
"Could not enable recovery key. Please check your recovery key password!" : "Kurtarma anahtarı etkinleştirilemedi. Lütfen kurtarma anahtarı parolanızı kontrol edin!",
"Recovery key successfully disabled" : "Kurtarma anahtarı başarıyla devre dışı bırakıldı",
"Could not disable recovery key. Please check your recovery key password!" : "Kurtarma anahtarı devre dışı bırakılamadı. Lütfen kurtarma anahtarı parolanızı kontrol edin!",
+ "Missing parameters" : "Eksik parametreler",
"Please provide the old recovery password" : "Lütfen eski kurtarma parolasını girin",
"Please provide a new recovery password" : "Lütfen yeni bir kurtarma parolası girin",
"Please repeat the new recovery password" : "Lütfen yeni kurtarma parolasını yenileyin",
"Password successfully changed." : "Parola başarıyla değiştirildi.",
"Could not change the password. Maybe the old password was not correct." : "Parola değiştirilemedi. Eski parolanız doğru olmayabilir.",
+ "Recovery Key disabled" : "Kurtarma anahtarı kapalı",
"Recovery Key enabled" : "Kurtarma anahtarı etkin",
"Could not enable the recovery key, please try again or contact your administrator" : "Kurtarma anahtarını etkinleştirmek olmadı, tekrar deneyin ya da yöneticinize başvurun",
"Could not update the private key password." : "Özel anahtar parolası güncellenemedi",
@@ -19,17 +21,12 @@
"Private key password successfully updated." : "Özel anahtar parolası başarıyla güncellendi.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Şifreleme Uygulaması için geçersiz özel anahtar. Lütfen şifreli dosyalarınıza erişimi tekrar kazanabilmek için kişisel ayarlarınızdan özel anahtar parolanızı güncelleyin.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın",
- "ownCloud basic encryption module" : "ownCloud basit şifreleme modülü",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Kurtarma anahtarını etkinleştir (parola kaybı durumunda kullanıcı dosyalarının kurtarılmasına izin verir):",
+ "Enable recovery key" : "Kurtarma anahtarını aktif et",
+ "Disable recovery key" : "Kurtarma anahtarını kapat",
"Recovery key password" : "Kurtarma anahtarı parolası",
- "Repeat Recovery key password" : "Kurtarma anahtarı parolasını yineleyin",
- "Enabled" : "Etkin",
- "Disabled" : "Devre Dışı",
"Change recovery key password:" : "Kurtarma anahtarı parolasını değiştir:",
- "Old Recovery key password" : "Eski Kurtarma anahtarı parolası",
- "New Recovery key password" : "Yeni Kurtarma anahtarı parolası",
- "Repeat New Recovery key password" : "Yeni Kurtarma anahtarı parolasını yineleyin",
"Change Password" : "Parola Değiştir",
+ "ownCloud basic encryption module" : "ownCloud basit şifreleme modülü",
"Your private key password no longer matches your log-in password." : "Özel anahtar parolanız artık oturum açma parolanız ile eşleşmiyor.",
"Set your old private key password to your current log-in password:" : "Eski özel anahtar parolanızı, geçerli oturum açma parolanız olarak ayarlayın:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Eğer eski parolanızı hatırlamıyorsanız, yöneticinizden dosyalarınızı kurtarmasını talep edebilirsiniz.",
@@ -37,6 +34,8 @@
"Current log-in password" : "Geçerli oturum açma parolası",
"Update Private Key Password" : "Özel Anahtar Parolasını Güncelle",
"Enable password recovery:" : "Parola kurtarmayı etkinleştir:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu seçeneği etkinleştirmek, parola kaybı durumunda şifrelenmiş dosyalarınıza erişimi yeniden kazanmanızı sağlayacaktır"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu seçeneği etkinleştirmek, parola kaybı durumunda şifrelenmiş dosyalarınıza erişimi yeniden kazanmanızı sağlayacaktır",
+ "Enabled" : "Etkin",
+ "Disabled" : "Devre Dışı"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js
index 6abba2b9f9f..de044e5a506 100644
--- a/apps/encryption/l10n/uk.js
+++ b/apps/encryption/l10n/uk.js
@@ -21,17 +21,10 @@ OC.L10N.register(
"Private key password successfully updated." : "Пароль секретного ключа оновлено.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Невірний закритий ключ для доданку шифрування. Оновіть пароль до вашого закритого ключа в особистих налаштуваннях.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Доданок шифрування ввімкнено, але ваші ключі не ініціалізовано, вийдіть та зайдіть знову",
- "ownCloud basic encryption module" : "базовий модуль шифрування ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Ввімкнути ключ відновлення (дозволяє користувачам відновлювати файли при втраті паролю):",
"Recovery key password" : "Пароль ключа відновлення",
- "Repeat Recovery key password" : "Введіть ще раз пароль ключа відновлення",
- "Enabled" : "Увімкнено",
- "Disabled" : "Вимкнено",
"Change recovery key password:" : "Змінити пароль ключа відновлення:",
- "Old Recovery key password" : "Старий пароль ключа відновлення",
- "New Recovery key password" : "Новий пароль ключа відновлення",
- "Repeat New Recovery key password" : "Введіть ще раз новий пароль ключа відновлення",
"Change Password" : "Змінити Пароль",
+ "ownCloud basic encryption module" : "базовий модуль шифрування ownCloud",
"Your private key password no longer matches your log-in password." : "Пароль вашого закритого ключа більше не відповідає паролю від вашого облікового запису.",
"Set your old private key password to your current log-in password:" : "Замініть старий пароль від закритого ключа на новий пароль входу:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Якщо ви не пам'ятаєте ваш старий пароль, ви можете звернутися до адміністратора щоб його відновити.",
@@ -39,6 +32,8 @@ OC.L10N.register(
"Current log-in password" : "Поточний пароль входу",
"Update Private Key Password" : "Оновити пароль для закритого ключа",
"Enable password recovery:" : "Ввімкнути відновлення паролю:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включення цієї опції дозволить вам отримати доступ до своїх зашифрованих файлів у випадку втрати паролю"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включення цієї опції дозволить вам отримати доступ до своїх зашифрованих файлів у випадку втрати паролю",
+ "Enabled" : "Увімкнено",
+ "Disabled" : "Вимкнено"
},
"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/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json
index 31918de0499..f0ac6b8789a 100644
--- a/apps/encryption/l10n/uk.json
+++ b/apps/encryption/l10n/uk.json
@@ -19,17 +19,10 @@
"Private key password successfully updated." : "Пароль секретного ключа оновлено.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Невірний закритий ключ для доданку шифрування. Оновіть пароль до вашого закритого ключа в особистих налаштуваннях.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Доданок шифрування ввімкнено, але ваші ключі не ініціалізовано, вийдіть та зайдіть знову",
- "ownCloud basic encryption module" : "базовий модуль шифрування ownCloud",
- "Enable recovery key (allow to recover users files in case of password loss):" : "Ввімкнути ключ відновлення (дозволяє користувачам відновлювати файли при втраті паролю):",
"Recovery key password" : "Пароль ключа відновлення",
- "Repeat Recovery key password" : "Введіть ще раз пароль ключа відновлення",
- "Enabled" : "Увімкнено",
- "Disabled" : "Вимкнено",
"Change recovery key password:" : "Змінити пароль ключа відновлення:",
- "Old Recovery key password" : "Старий пароль ключа відновлення",
- "New Recovery key password" : "Новий пароль ключа відновлення",
- "Repeat New Recovery key password" : "Введіть ще раз новий пароль ключа відновлення",
"Change Password" : "Змінити Пароль",
+ "ownCloud basic encryption module" : "базовий модуль шифрування ownCloud",
"Your private key password no longer matches your log-in password." : "Пароль вашого закритого ключа більше не відповідає паролю від вашого облікового запису.",
"Set your old private key password to your current log-in password:" : "Замініть старий пароль від закритого ключа на новий пароль входу:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Якщо ви не пам'ятаєте ваш старий пароль, ви можете звернутися до адміністратора щоб його відновити.",
@@ -37,6 +30,8 @@
"Current log-in password" : "Поточний пароль входу",
"Update Private Key Password" : "Оновити пароль для закритого ключа",
"Enable password recovery:" : "Ввімкнути відновлення паролю:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включення цієї опції дозволить вам отримати доступ до своїх зашифрованих файлів у випадку втрати паролю"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включення цієї опції дозволить вам отримати доступ до своїх зашифрованих файлів у випадку втрати паролю",
+ "Enabled" : "Увімкнено",
+ "Disabled" : "Вимкнено"
},"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/encryption/l10n/vi.js b/apps/encryption/l10n/vi.js
index 1e835e4b9ad..6ba7db83cb2 100644
--- a/apps/encryption/l10n/vi.js
+++ b/apps/encryption/l10n/vi.js
@@ -9,14 +9,14 @@ OC.L10N.register(
"Could not change the password. Maybe the old password was not correct." : "Không thể đổi mật khẩu. Có lẽ do mật khẩu cũ không đúng.",
"Private key password successfully updated." : "Cập nhật thành công mật khẩu khóa cá nhân",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Ứng dụng mã hóa đã được kích hoạt nhưng bạn chưa khởi tạo khóa. Vui lòng đăng xuất ra và đăng nhập lại",
- "Enabled" : "Bật",
- "Disabled" : "Tắt",
"Change Password" : "Đổi Mật khẩu",
" If you don't remember your old password you can ask your administrator to recover your files." : "Nếu bạn không nhớ mật khẩu cũ, bạn có thể yêu cầu quản trị viên khôi phục tập tin của bạn.",
"Old log-in password" : "Mật khẩu đăng nhập cũ",
"Current log-in password" : "Mật khẩu đăng nhập hiện tại",
"Update Private Key Password" : "Cập nhật mật khẩu khóa cá nhân",
"Enable password recovery:" : "Kích hoạt khôi phục mật khẩu:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tùy chọn này sẽ cho phép bạn tái truy cập đến các tập tin mã hóa trong trường hợp mất mật khẩu"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tùy chọn này sẽ cho phép bạn tái truy cập đến các tập tin mã hóa trong trường hợp mất mật khẩu",
+ "Enabled" : "Bật",
+ "Disabled" : "Tắt"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/vi.json b/apps/encryption/l10n/vi.json
index 51973ceb65d..8d3fd994129 100644
--- a/apps/encryption/l10n/vi.json
+++ b/apps/encryption/l10n/vi.json
@@ -7,14 +7,14 @@
"Could not change the password. Maybe the old password was not correct." : "Không thể đổi mật khẩu. Có lẽ do mật khẩu cũ không đúng.",
"Private key password successfully updated." : "Cập nhật thành công mật khẩu khóa cá nhân",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Ứng dụng mã hóa đã được kích hoạt nhưng bạn chưa khởi tạo khóa. Vui lòng đăng xuất ra và đăng nhập lại",
- "Enabled" : "Bật",
- "Disabled" : "Tắt",
"Change Password" : "Đổi Mật khẩu",
" If you don't remember your old password you can ask your administrator to recover your files." : "Nếu bạn không nhớ mật khẩu cũ, bạn có thể yêu cầu quản trị viên khôi phục tập tin của bạn.",
"Old log-in password" : "Mật khẩu đăng nhập cũ",
"Current log-in password" : "Mật khẩu đăng nhập hiện tại",
"Update Private Key Password" : "Cập nhật mật khẩu khóa cá nhân",
"Enable password recovery:" : "Kích hoạt khôi phục mật khẩu:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tùy chọn này sẽ cho phép bạn tái truy cập đến các tập tin mã hóa trong trường hợp mất mật khẩu"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Tùy chọn này sẽ cho phép bạn tái truy cập đến các tập tin mã hóa trong trường hợp mất mật khẩu",
+ "Enabled" : "Bật",
+ "Disabled" : "Tắt"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/zh_CN.js b/apps/encryption/l10n/zh_CN.js
index 59d5b397435..05cfcca307c 100644
--- a/apps/encryption/l10n/zh_CN.js
+++ b/apps/encryption/l10n/zh_CN.js
@@ -17,21 +17,16 @@ OC.L10N.register(
"Private key password successfully updated." : "私钥密码成功更新。",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。",
- "Enable recovery key (allow to recover users files in case of password loss):" : "启用恢复密钥(允许你在密码丢失后恢复文件):",
"Recovery key password" : "恢复密钥密码",
- "Repeat Recovery key password" : "重复恢复密钥密码",
- "Enabled" : "开启",
- "Disabled" : "禁用",
"Change recovery key password:" : "更改恢复密钥密码",
- "Old Recovery key password" : "旧的恢复密钥密码",
- "New Recovery key password" : "新的恢复密钥密码",
- "Repeat New Recovery key password" : "重复新的密钥恢复密码",
"Change Password" : "修改密码",
" If you don't remember your old password you can ask your administrator to recover your files." : "如果您记不住旧的密码,您可以请求管理员恢复您的文件。",
"Old log-in password" : "旧登录密码",
"Current log-in password" : "当前登录密码",
"Update Private Key Password" : "更新私钥密码",
"Enable password recovery:" : "启用密码恢复:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "启用该项将允许你在密码丢失后取回您的加密文件"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "启用该项将允许你在密码丢失后取回您的加密文件",
+ "Enabled" : "开启",
+ "Disabled" : "禁用"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/zh_CN.json b/apps/encryption/l10n/zh_CN.json
index 590a6cf8471..4106228b0d5 100644
--- a/apps/encryption/l10n/zh_CN.json
+++ b/apps/encryption/l10n/zh_CN.json
@@ -15,21 +15,16 @@
"Private key password successfully updated." : "私钥密码成功更新。",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。",
- "Enable recovery key (allow to recover users files in case of password loss):" : "启用恢复密钥(允许你在密码丢失后恢复文件):",
"Recovery key password" : "恢复密钥密码",
- "Repeat Recovery key password" : "重复恢复密钥密码",
- "Enabled" : "开启",
- "Disabled" : "禁用",
"Change recovery key password:" : "更改恢复密钥密码",
- "Old Recovery key password" : "旧的恢复密钥密码",
- "New Recovery key password" : "新的恢复密钥密码",
- "Repeat New Recovery key password" : "重复新的密钥恢复密码",
"Change Password" : "修改密码",
" If you don't remember your old password you can ask your administrator to recover your files." : "如果您记不住旧的密码,您可以请求管理员恢复您的文件。",
"Old log-in password" : "旧登录密码",
"Current log-in password" : "当前登录密码",
"Update Private Key Password" : "更新私钥密码",
"Enable password recovery:" : "启用密码恢复:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "启用该项将允许你在密码丢失后取回您的加密文件"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "启用该项将允许你在密码丢失后取回您的加密文件",
+ "Enabled" : "开启",
+ "Disabled" : "禁用"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/zh_HK.js b/apps/encryption/l10n/zh_HK.js
index 83ee6604e27..fef3e6bf042 100644
--- a/apps/encryption/l10n/zh_HK.js
+++ b/apps/encryption/l10n/zh_HK.js
@@ -1,8 +1,8 @@
OC.L10N.register(
"encryption",
{
+ "Change Password" : "更改密碼",
"Enabled" : "啟用",
- "Disabled" : "停用",
- "Change Password" : "更改密碼"
+ "Disabled" : "停用"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/zh_HK.json b/apps/encryption/l10n/zh_HK.json
index 1dad5409c47..08976b5bb41 100644
--- a/apps/encryption/l10n/zh_HK.json
+++ b/apps/encryption/l10n/zh_HK.json
@@ -1,6 +1,6 @@
{ "translations": {
+ "Change Password" : "更改密碼",
"Enabled" : "啟用",
- "Disabled" : "停用",
- "Change Password" : "更改密碼"
+ "Disabled" : "停用"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/l10n/zh_TW.js b/apps/encryption/l10n/zh_TW.js
index a3915f15a6f..946dc001507 100644
--- a/apps/encryption/l10n/zh_TW.js
+++ b/apps/encryption/l10n/zh_TW.js
@@ -10,21 +10,16 @@ OC.L10N.register(
"Private key password successfully updated." : "私人金鑰密碼已成功更新。",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "無效的檔案加密私鑰,請在個人設定中更新您的私鑰密語以存取加密的檔案。",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "檔案加密已啓用,但是您的金鑰尚未初始化,請重新登入一次",
- "Enable recovery key (allow to recover users files in case of password loss):" : "啟用還原金鑰 (因忘記密碼仍允許還原使用者檔案):",
"Recovery key password" : "還原金鑰密碼",
- "Repeat Recovery key password" : "再輸入還原金鑰密碼一次",
- "Enabled" : "已啓用",
- "Disabled" : "已停用",
"Change recovery key password:" : "變更還原金鑰密碼:",
- "Old Recovery key password" : "舊的還原金鑰密碼",
- "New Recovery key password" : "新的還原金鑰密碼",
- "Repeat New Recovery key password" : "再輸入新的還原金鑰密碼一次",
"Change Password" : "變更密碼",
" If you don't remember your old password you can ask your administrator to recover your files." : "如果您忘記舊密碼,可以請求管理員協助取回檔案。",
"Old log-in password" : "舊登入密碼",
"Current log-in password" : "目前的登入密碼",
"Update Private Key Password" : "更新私人金鑰密碼",
"Enable password recovery:" : "啟用密碼還原:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "啟用這個選項將會允許您因忘記密碼但需要存取您的加密檔案"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "啟用這個選項將會允許您因忘記密碼但需要存取您的加密檔案",
+ "Enabled" : "已啓用",
+ "Disabled" : "已停用"
},
"nplurals=1; plural=0;");
diff --git a/apps/encryption/l10n/zh_TW.json b/apps/encryption/l10n/zh_TW.json
index 61523cc06f5..67878ea4bf4 100644
--- a/apps/encryption/l10n/zh_TW.json
+++ b/apps/encryption/l10n/zh_TW.json
@@ -8,21 +8,16 @@
"Private key password successfully updated." : "私人金鑰密碼已成功更新。",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "無效的檔案加密私鑰,請在個人設定中更新您的私鑰密語以存取加密的檔案。",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "檔案加密已啓用,但是您的金鑰尚未初始化,請重新登入一次",
- "Enable recovery key (allow to recover users files in case of password loss):" : "啟用還原金鑰 (因忘記密碼仍允許還原使用者檔案):",
"Recovery key password" : "還原金鑰密碼",
- "Repeat Recovery key password" : "再輸入還原金鑰密碼一次",
- "Enabled" : "已啓用",
- "Disabled" : "已停用",
"Change recovery key password:" : "變更還原金鑰密碼:",
- "Old Recovery key password" : "舊的還原金鑰密碼",
- "New Recovery key password" : "新的還原金鑰密碼",
- "Repeat New Recovery key password" : "再輸入新的還原金鑰密碼一次",
"Change Password" : "變更密碼",
" If you don't remember your old password you can ask your administrator to recover your files." : "如果您忘記舊密碼,可以請求管理員協助取回檔案。",
"Old log-in password" : "舊登入密碼",
"Current log-in password" : "目前的登入密碼",
"Update Private Key Password" : "更新私人金鑰密碼",
"Enable password recovery:" : "啟用密碼還原:",
- "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "啟用這個選項將會允許您因忘記密碼但需要存取您的加密檔案"
+ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "啟用這個選項將會允許您因忘記密碼但需要存取您的加密檔案",
+ "Enabled" : "已啓用",
+ "Disabled" : "已停用"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/encryption/lib/crypto/crypt.php b/apps/encryption/lib/crypto/crypt.php
index 9ada9200551..65af3a93d0a 100644
--- a/apps/encryption/lib/crypto/crypt.php
+++ b/apps/encryption/lib/crypto/crypt.php
@@ -210,6 +210,15 @@ class Crypt {
}
/**
+ * get legacy cipher
+ *
+ * @return string
+ */
+ public function getLegacyCipher() {
+ return self::LEGACY_CIPHER;
+ }
+
+ /**
* @param string $encryptedContent
* @param string $iv
* @return string
@@ -401,7 +410,7 @@ class Crypt {
* @return string
* @throws \Exception
*/
- public static function generateFileKey() {
+ public function generateFileKey() {
// Generate key
$key = base64_encode(openssl_random_pseudo_bytes(32, $strong));
if (!$key || !$strong) {
diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php
index 8498b4223e1..a4abcd7dc5a 100644
--- a/apps/encryption/lib/crypto/encryption.php
+++ b/apps/encryption/lib/crypto/encryption.php
@@ -25,9 +25,11 @@
namespace OCA\Encryption\Crypto;
+use OCA\Encryption\Exceptions\PublicKeyMissingException;
use OCA\Encryption\Util;
use OCP\Encryption\IEncryptionModule;
use OCA\Encryption\KeyManager;
+use OCP\ILogger;
class Encryption implements IEncryptionModule {
@@ -66,16 +68,25 @@ class Encryption implements IEncryptionModule {
/** @var Util */
private $util;
+
+ /** @var ILogger */
+ private $logger;
+
/**
*
- * @param \OCA\Encryption\Crypto\Crypt $crypt
+ * @param Crypt $crypt
* @param KeyManager $keyManager
* @param Util $util
+ * @param ILogger $logger
*/
- public function __construct(Crypt $crypt, KeyManager $keyManager, Util $util) {
+ public function __construct(Crypt $crypt,
+ KeyManager $keyManager,
+ Util $util,
+ ILogger $logger) {
$this->crypt = $crypt;
$this->keyManager = $keyManager;
$this->util = $util;
+ $this->logger = $logger;
}
/**
@@ -101,6 +112,7 @@ class Encryption implements IEncryptionModule {
*
* @param string $path to the file
* @param string $user who read/write the file
+ * @param string $mode php stream open mode
* @param array $header contains the header data read from the file
* @param array $accessList who has access to the file contains the key 'users' and 'public'
*
@@ -108,22 +120,38 @@ class Encryption implements IEncryptionModule {
* written to the header, in case of a write operation
* or if no additional data is needed return a empty array
*/
- public function begin($path, $user, array $header, array $accessList) {
-
- if (isset($header['cipher'])) {
- $this->cipher = $header['cipher'];
- } else {
- $this->cipher = $this->crypt->getCipher();
- }
+ public function begin($path, $user, $mode, array $header, array $accessList) {
$this->path = $this->getPathToRealFile($path);
$this->accessList = $accessList;
$this->user = $user;
- $this->writeCache = '';
$this->isWriteOperation = false;
+ $this->writeCache = '';
$this->fileKey = $this->keyManager->getFileKey($this->path, $this->user);
+ if (
+ $mode === 'w'
+ || $mode === 'w+'
+ || $mode === 'wb'
+ || $mode === 'wb+'
+ ) {
+ $this->isWriteOperation = true;
+ if (empty($this->fileKey)) {
+ $this->fileKey = $this->crypt->generateFileKey();
+ }
+ }
+
+ if (isset($header['cipher'])) {
+ $this->cipher = $header['cipher'];
+ } elseif ($this->isWriteOperation) {
+ $this->cipher = $this->crypt->getCipher();
+ } else {
+ // if we read a file without a header we fall-back to the legacy cipher
+ // which was used in <=oC6
+ $this->cipher = $this->crypt->getLegacyCipher();
+ }
+
return array('cipher' => $this->cipher);
}
@@ -135,6 +163,9 @@ class Encryption implements IEncryptionModule {
* @param string $path to the file
* @return string remained data which should be written to the file in case
* of a write operation
+ * @throws PublicKeyMissingException
+ * @throws \Exception
+ * @throws \OCA\Encryption\Exceptions\MultiKeyEncryptException
*/
public function end($path) {
$result = '';
@@ -145,10 +176,21 @@ class Encryption implements IEncryptionModule {
}
$publicKeys = array();
foreach ($this->accessList['users'] as $uid) {
- $publicKeys[$uid] = $this->keyManager->getPublicKey($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);
+ $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->user);
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
@@ -163,10 +205,6 @@ class Encryption implements IEncryptionModule {
* @return mixed encrypted data
*/
public function encrypt($data) {
- $this->isWriteOperation = true;
- if (empty($this->fileKey)) {
- $this->fileKey = $this->crypt->generateFileKey();
- }
// If extra data is left over from the last round, make sure it
// is integrated into the next 6126 / 8192 block
@@ -234,7 +272,7 @@ class Encryption implements IEncryptionModule {
public function decrypt($data) {
$result = '';
if (!empty($data)) {
- $result = $this->crypt->symmetricDecryptFileContent($data, $this->fileKey);
+ $result = $this->crypt->symmetricDecryptFileContent($data, $this->fileKey, $this->cipher);
}
return $result;
}
@@ -249,44 +287,32 @@ class Encryption implements IEncryptionModule {
*/
public function update($path, $uid, array $accessList) {
$fileKey = $this->keyManager->getFileKey($path, $uid);
- $publicKeys = array();
- foreach ($accessList['users'] as $user) {
- $publicKeys[$user] = $this->keyManager->getPublicKey($user);
- }
+
+ if (!empty($fileKey)) {
- $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys);
+ $publicKeys = array();
+ foreach ($accessList['users'] as $user) {
+ $publicKeys[$user] = $this->keyManager->getPublicKey($user);
+ }
- $encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
+ $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $uid);
- $this->keyManager->deleteAllFileKeys($path);
+ $encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
- $this->keyManager->setAllFileKeys($path, $encryptedFileKey);
+ $this->keyManager->deleteAllFileKeys($path);
- return true;
- }
+ $this->keyManager->setAllFileKeys($path, $encryptedFileKey);
- /**
- * add system keys such as the public share key and the recovery key
- *
- * @param array $accessList
- * @param array $publicKeys
- * @return array
- */
- public function addSystemKeys(array $accessList, array $publicKeys) {
- if (!empty($accessList['public'])) {
- $publicKeys[$this->keyManager->getPublicShareKeyId()] = $this->keyManager->getPublicShareKey();
- }
-
- if ($this->keyManager->recoveryKeyExists() &&
- $this->util->isRecoveryEnabledForUser()) {
+ } else {
+ $this->logger->debug('no file key found, we assume that the file "{file}" is not encrypted',
+ array('file' => $path, 'app' => 'encryption'));
- $publicKeys[$this->keyManager->getRecoveryKeyId()] = $this->keyManager->getRecoveryKey();
+ return false;
}
- return $publicKeys;
+ return true;
}
-
/**
* should the file be encrypted or not
*
diff --git a/apps/encryption/lib/keymanager.php b/apps/encryption/lib/keymanager.php
index b451b5c25a9..05d23873482 100644
--- a/apps/encryption/lib/keymanager.php
+++ b/apps/encryption/lib/keymanager.php
@@ -23,6 +23,7 @@
namespace OCA\Encryption;
use OC\Encryption\Exceptions\DecryptionFailedException;
+use OCA\Encryption\Crypto\Encryption;
use OCA\Encryption\Exceptions\PrivateKeyMissingException;
use OCA\Encryption\Exceptions\PublicKeyMissingException;
use OCA\Encryption\Crypto\Crypt;
@@ -130,22 +131,25 @@ class KeyManager {
$this->config->setAppValue('encryption', 'publicShareKeyId', $this->publicShareKeyId);
}
+ $this->keyId = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
+ $this->log = $log;
+ }
+
+ public function validateShareKey() {
$shareKey = $this->getPublicShareKey();
if (empty($shareKey)) {
$keyPair = $this->crypt->createKeyPair();
// Save public key
$this->keyStorage->setSystemUserKey(
- $this->publicShareKeyId . '.publicKey', $keyPair['publicKey']);
+ $this->publicShareKeyId . '.publicKey', $keyPair['publicKey'],
+ Encryption::ID);
// Encrypt private key empty passphrase
$encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'], '');
$header = $this->crypt->generateHeader();
$this->setSystemPrivateKey($this->publicShareKeyId, $header . $encryptedKey);
}
-
- $this->keyId = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
- $this->log = $log;
}
/**
@@ -162,7 +166,7 @@ class KeyManager {
* @return string
*/
public function getRecoveryKey() {
- return $this->keyStorage->getSystemUserKey($this->recoveryKeyId . '.publicKey');
+ return $this->keyStorage->getSystemUserKey($this->recoveryKeyId . '.publicKey', Encryption::ID);
}
/**
@@ -179,7 +183,7 @@ class KeyManager {
* @return bool
*/
public function checkRecoveryPassword($password) {
- $recoveryKey = $this->keyStorage->getSystemUserKey($this->recoveryKeyId . '.privateKey');
+ $recoveryKey = $this->keyStorage->getSystemUserKey($this->recoveryKeyId . '.privateKey', Encryption::ID);
$decryptedRecoveryKey = $this->crypt->decryptPrivateKey($recoveryKey,
$password);
@@ -217,7 +221,10 @@ class KeyManager {
*/
public function setRecoveryKey($password, $keyPair) {
// Save Public Key
- $this->keyStorage->setSystemUserKey($this->getRecoveryKeyId(). '.publicKey', $keyPair['publicKey']);
+ $this->keyStorage->setSystemUserKey($this->getRecoveryKeyId().
+ '.publicKey',
+ $keyPair['publicKey'],
+ Encryption::ID);
$encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'],
$password);
@@ -236,7 +243,7 @@ class KeyManager {
* @return bool
*/
public function setPublicKey($userId, $key) {
- return $this->keyStorage->setUserKey($userId, $this->publicKeyId, $key);
+ return $this->keyStorage->setUserKey($userId, $this->publicKeyId, $key, Encryption::ID);
}
/**
@@ -247,7 +254,8 @@ class KeyManager {
public function setPrivateKey($userId, $key) {
return $this->keyStorage->setUserKey($userId,
$this->privateKeyId,
- $key);
+ $key,
+ Encryption::ID);
}
/**
@@ -258,7 +266,7 @@ class KeyManager {
* @return boolean
*/
public function setFileKey($path, $key) {
- return $this->keyStorage->setFileKey($path, $this->fileKeyId, $key);
+ return $this->keyStorage->setFileKey($path, $this->fileKeyId, $key, Encryption::ID);
}
/**
@@ -284,7 +292,7 @@ class KeyManager {
*/
public function setShareKey($path, $uid, $key) {
$keyId = $uid . '.' . $this->shareKeyId;
- return $this->keyStorage->setFileKey($path, $keyId, $key);
+ return $this->keyStorage->setFileKey($path, $keyId, $key, Encryption::ID);
}
/**
@@ -324,7 +332,7 @@ class KeyManager {
*/
public function getPrivateKey($userId) {
$privateKey = $this->keyStorage->getUserKey($userId,
- $this->privateKeyId);
+ $this->privateKeyId, Encryption::ID);
if (strlen($privateKey) !== 0) {
return $privateKey;
@@ -338,12 +346,12 @@ class KeyManager {
* @return string
*/
public function getFileKey($path, $uid) {
- $encryptedFileKey = $this->keyStorage->getFileKey($path, $this->fileKeyId);
+ $encryptedFileKey = $this->keyStorage->getFileKey($path, $this->fileKeyId, Encryption::ID);
if (is_null($uid)) {
$uid = $this->getPublicShareKeyId();
$shareKey = $this->getShareKey($path, $uid);
- $privateKey = $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.privateKey');
+ $privateKey = $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.privateKey', Encryption::ID);
$privateKey = $this->crypt->decryptPrivateKey($privateKey);
} else {
$shareKey = $this->getShareKey($path, $uid);
@@ -367,7 +375,7 @@ class KeyManager {
*/
public function getEncryptedFileKey($path) {
$encryptedFileKey = $this->keyStorage->getFileKey($path,
- $this->fileKeyId);
+ $this->fileKeyId, Encryption::ID);
return $encryptedFileKey;
}
@@ -380,7 +388,10 @@ class KeyManager {
* @return boolean
*/
public function deleteShareKey($path, $keyId) {
- return $this->keyStorage->deleteFileKey($path, $keyId . '.' . $this->shareKeyId);
+ return $this->keyStorage->deleteFileKey(
+ $path,
+ $keyId . '.' . $this->shareKeyId,
+ Encryption::ID);
}
@@ -391,7 +402,7 @@ class KeyManager {
*/
public function getShareKey($path, $uid) {
$keyId = $uid . '.' . $this->shareKeyId;
- return $this->keyStorage->getFileKey($path, $keyId);
+ return $this->keyStorage->getFileKey($path, $keyId, Encryption::ID);
}
/**
@@ -416,7 +427,7 @@ class KeyManager {
* @throws PublicKeyMissingException
*/
public function getPublicKey($userId) {
- $publicKey = $this->keyStorage->getUserKey($userId, $this->publicKeyId);
+ $publicKey = $this->keyStorage->getUserKey($userId, $this->publicKeyId, Encryption::ID);
if (strlen($publicKey) !== 0) {
return $publicKey;
@@ -434,7 +445,7 @@ class KeyManager {
* @return string
*/
public function getPublicShareKey() {
- return $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.publicKey');
+ return $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.publicKey', Encryption::ID);
}
/**
@@ -460,7 +471,7 @@ class KeyManager {
* @return bool
*/
public function deletePublicKey($uid) {
- return $this->keyStorage->deleteUserKey($uid, $this->publicKeyId);
+ return $this->keyStorage->deleteUserKey($uid, $this->publicKeyId, Encryption::ID);
}
/**
@@ -468,7 +479,7 @@ class KeyManager {
* @return bool
*/
private function deletePrivateKey($uid) {
- return $this->keyStorage->deleteUserKey($uid, $this->privateKeyId);
+ return $this->keyStorage->deleteUserKey($uid, $this->privateKeyId, Encryption::ID);
}
public function deleteAllFileKeys($path) {
@@ -500,7 +511,7 @@ class KeyManager {
* @return string returns openssl key
*/
public function getSystemPrivateKey($keyId) {
- return $this->keyStorage->getSystemUserKey($keyId . '.' . $this->privateKeyId);
+ return $this->keyStorage->getSystemUserKey($keyId . '.' . $this->privateKeyId, Encryption::ID);
}
/**
@@ -509,7 +520,10 @@ class KeyManager {
* @return string returns openssl key
*/
public function setSystemPrivateKey($keyId, $key) {
- return $this->keyStorage->setSystemUserKey($keyId . '.' . $this->privateKeyId, $key);
+ return $this->keyStorage->setSystemUserKey(
+ $keyId . '.' . $this->privateKeyId,
+ $key,
+ Encryption::ID);
}
/**
@@ -517,10 +531,11 @@ class KeyManager {
*
* @param array $accessList
* @param array $publicKeys
+ * @param string $uid
* @return array
* @throws PublicKeyMissingException
*/
- public function addSystemKeys(array $accessList, array $publicKeys) {
+ public function addSystemKeys(array $accessList, array $publicKeys, $uid) {
if (!empty($accessList['public'])) {
$publicShareKey = $this->getPublicShareKey();
if (empty($publicShareKey)) {
@@ -530,7 +545,7 @@ class KeyManager {
}
if ($this->recoveryKeyExists() &&
- $this->util->isRecoveryEnabledForUser()) {
+ $this->util->isRecoveryEnabledForUser($uid)) {
$publicKeys[$this->getRecoveryKeyId()] = $this->getRecoveryKey();
}
diff --git a/apps/encryption/lib/recovery.php b/apps/encryption/lib/recovery.php
index cfaa3e49619..61a659e484e 100644
--- a/apps/encryption/lib/recovery.php
+++ b/apps/encryption/lib/recovery.php
@@ -228,7 +228,7 @@ class Recovery {
$publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
}
- $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys);
+ $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $this->user->getUID());
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
$this->keyManager->setAllFileKeys($filePath, $encryptedKeyfiles);
@@ -264,33 +264,39 @@ class Recovery {
$privateKey = $this->crypt->decryptPrivateKey($encryptedKey,
$recoveryPassword);
- $this->recoverAllFiles('/' . $user . '/files/', $privateKey);
+ $this->recoverAllFiles('/' . $user . '/files/', $privateKey, $user);
}
/**
- * @param $path
- * @param $privateKey
+ * recover users files
+ *
+ * @param string $path
+ * @param string $privateKey
+ * @param string $uid
*/
- private function recoverAllFiles($path, $privateKey) {
+ private function recoverAllFiles($path, $privateKey, $uid) {
$dirContent = $this->view->getDirectoryContent($path);
foreach ($dirContent as $item) {
// Get relative path from encryption/keyfiles
$filePath = $item->getPath();
if ($this->view->is_dir($filePath)) {
- $this->recoverAllFiles($filePath . '/', $privateKey);
+ $this->recoverAllFiles($filePath . '/', $privateKey, $uid);
} else {
- $this->recoverFile($filePath, $privateKey);
+ $this->recoverFile($filePath, $privateKey, $uid);
}
}
}
/**
+ * recover file
+ *
* @param string $path
* @param string $privateKey
+ * @param string $uid
*/
- private function recoverFile($path, $privateKey) {
+ private function recoverFile($path, $privateKey, $uid) {
$encryptedFileKey = $this->keyManager->getEncryptedFileKey($path);
$shareKey = $this->keyManager->getShareKey($path, $this->keyManager->getRecoveryKeyId());
@@ -303,11 +309,11 @@ class Recovery {
if (!empty($fileKey)) {
$accessList = $this->file->getAccessList($path);
$publicKeys = array();
- foreach ($accessList['users'] as $uid) {
- $publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
+ foreach ($accessList['users'] as $user) {
+ $publicKeys[$user] = $this->keyManager->getPublicKey($user);
}
- $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys);
+ $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $uid);
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
$this->keyManager->setAllFileKeys($path, $encryptedKeyfiles);
diff --git a/apps/encryption/lib/users/setup.php b/apps/encryption/lib/users/setup.php
index 2ec49b5c7fb..fd8261cc637 100644
--- a/apps/encryption/lib/users/setup.php
+++ b/apps/encryption/lib/users/setup.php
@@ -79,6 +79,7 @@ class Setup {
* @return bool
*/
public function setupServerSide($uid, $password) {
+ $this->keyManager->validateShareKey();
// 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 04e04028caf..51d5241122f 100644
--- a/apps/encryption/lib/util.php
+++ b/apps/encryption/lib/util.php
@@ -77,10 +77,13 @@ class Util {
}
/**
+ * check if recovery key is enabled for user
+ *
+ * @param string $uid
* @return bool
*/
- public function isRecoveryEnabledForUser() {
- $recoveryMode = $this->config->getUserValue($this->user->getUID(),
+ public function isRecoveryEnabledForUser($uid) {
+ $recoveryMode = $this->config->getUserValue($uid,
'encryption',
'recoveryEnabled',
0);
diff --git a/apps/encryption/settings/settings-personal.php b/apps/encryption/settings/settings-personal.php
index abbe62af615..003a27da71d 100644
--- a/apps/encryption/settings/settings-personal.php
+++ b/apps/encryption/settings/settings-personal.php
@@ -38,7 +38,7 @@ $util = new \OCA\Encryption\Util(
\OC::$server->getConfig());
$keyManager = new \OCA\Encryption\KeyManager(
- \OC::$server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
+ \OC::$server->getEncryptionKeyStorage(),
$crypt,
\OC::$server->getConfig(),
$userSession,
@@ -56,7 +56,7 @@ $privateKeySet = $session->isPrivateKeySet();
$initialized = $session->getStatus();
$recoveryAdminEnabled = \OC::$server->getConfig()->getAppValue('encryption', 'recoveryAdminEnabled');
-$recoveryEnabledForUser = $util->isRecoveryEnabledForUser();
+$recoveryEnabledForUser = $util->isRecoveryEnabledForUser($user);
$result = false;
diff --git a/apps/encryption/templates/settings-admin.php b/apps/encryption/templates/settings-admin.php
index b64e75512e7..81c7f0607d8 100644
--- a/apps/encryption/templates/settings-admin.php
+++ b/apps/encryption/templates/settings-admin.php
@@ -3,66 +3,57 @@
/** @var OC_L10N $l */
script('encryption', 'settings-admin');
script('core', 'multiselect');
+style('encryption', 'settings-admin');
?>
-<form id="encryption" class="section">
- <h2><?php p($l->t('ownCloud basic encryption module')); ?></h2>
-
+<form id="ocDefaultEncryptionModule" class="sub-section">
<?php if(!$_["initStatus"]): ?>
<?php p($l->t("Encryption App is enabled but your keys are not initialized, please log-out and log-in again")); ?>
<?php else: ?>
<p id="encryptionSetRecoveryKey">
- <?php p($l->t("Enable recovery key (allow to recover users files in case of password loss):")); ?>
+ <?php $_["recoveryEnabled"] === '0' ? p($l->t("Enable recovery key")) : p($l->t("Disable recovery key")); ?>
<span class="msg"></span>
<br/>
+ <em>
+ <?php p($l->t("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.")) ?>
+ </em>
<br/>
- <input type="password" name="encryptionRecoveryPassword" id="encryptionRecoveryPassword"/>
- <label for="recoveryPassword"><?php p($l->t("Recovery key password")); ?></label>
- <br/>
- <input type="password" name="encryptionRecoveryPassword" id="repeatEncryptionRecoveryPassword"/>
- <label for="repeatEncryptionRecoveryPassword"><?php p($l->t("Repeat Recovery key password")); ?></label>
- <br/>
- <input
- type='radio'
- id='adminEnableRecovery'
- name='adminEnableRecovery'
- value='1'
- <?php echo($_["recoveryEnabled"] === '1' ? 'checked="checked"' : ''); ?> />
- <label for="adminEnableRecovery"><?php p($l->t("Enabled")); ?></label>
- <br/>
-
- <input
- type='radio'
- id='adminDisableRecovery'
- name='adminEnableRecovery'
- value='0'
- <?php echo($_["recoveryEnabled"] === '0' ? 'checked="checked"' : ''); ?> />
- <label for="adminDisableRecovery"><?php p($l->t("Disabled")); ?></label>
+ <input type="password"
+ name="encryptionRecoveryPassword"
+ id="encryptionRecoveryPassword"
+ placeholder="<?php p($l->t("Recovery key password")); ?>"/>
+ <input type="password"
+ name="encryptionRecoveryPassword"
+ id="repeatEncryptionRecoveryPassword"
+ placeholder="<?php p($l->t("Repeat recovery key password")); ?>"/>
+ <input type="button"
+ name="enableRecoveryKey"
+ id="enableRecoveryKey"
+ status="<?php p($_["recoveryEnabled"]) ?>"
+ value="<?php $_["recoveryEnabled"] === '0' ? p($l->t("Enable recovery key")) : p($l->t("Disable recovery key")); ?>"/>
</p>
<br/><br/>
- <p name="changeRecoveryPasswordBlock" id="encryptionChangeRecoveryKey" <?php if ($_['recoveryEnabled'] === '0') print_unescaped('class="hidden"');?>>
- <strong><?php p($l->t("Change recovery key password:")); ?></strong>
+ <p name="changeRecoveryPasswordBlock" id="encryptionChangeRecoveryKey" <?php if($_['recoveryEnabled'] === '0') print_unescaped('class="hidden"');?>>
+ <?php p($l->t("Change recovery key password:")); ?>
<span class="msg"></span>
- <br/><br/>
+ <br/>
<input
type="password"
name="changeRecoveryPassword"
- id="oldEncryptionRecoveryPassword" />
- <label for="oldEncryptionRecoveryPassword"><?php p($l->t("Old Recovery key password")); ?></label>
- <br/>
- <br/>
+ id="oldEncryptionRecoveryPassword"
+ placeholder="<?php p($l->t("Old recovery key password")); ?>"/>
+ <br />
<input
type="password"
name="changeRecoveryPassword"
- id="newEncryptionRecoveryPassword" />
- <label for="newEncryptionRecoveryPassword"><?php p($l->t("New Recovery key password")); ?></label>
- <br/>
+ id="newEncryptionRecoveryPassword"
+ placeholder="<?php p($l->t("New recovery key password")); ?>"/>
<input
type="password"
name="changeRecoveryPassword"
- id="repeatedNewEncryptionRecoveryPassword" />
- <label for="repeatEncryptionRecoveryPassword"><?php p($l->t("Repeat New Recovery key password")); ?></label>
- <br/>
+ id="repeatedNewEncryptionRecoveryPassword"
+ placeholder="<?php p($l->t("Repeat new recovery key password")); ?>"/>
+
<button
type="button"
name="submitChangeRecoveryKey">
diff --git a/apps/encryption/templates/settings-personal.php b/apps/encryption/templates/settings-personal.php
index 6b8821ca8a8..e0a7fc22eeb 100644
--- a/apps/encryption/templates/settings-personal.php
+++ b/apps/encryption/templates/settings-personal.php
@@ -4,7 +4,7 @@
script('encryption', 'settings-personal');
script('core', 'multiselect');
?>
-<form id="encryption" class="section">
+<form id="ocDefaultEncryptionModule" class="section">
<h2><?php p($l->t('ownCloud basic encryption module')); ?></h2>
<?php if ($_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED ): ?>
diff --git a/apps/encryption/tests/controller/RecoveryControllerTest.php b/apps/encryption/tests/controller/RecoveryControllerTest.php
new file mode 100644
index 00000000000..89b541e7bd6
--- /dev/null
+++ b/apps/encryption/tests/controller/RecoveryControllerTest.php
@@ -0,0 +1,179 @@
+<?php
+/**
+ * @author Clark Tomlinson <clark@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ */
+
+
+namespace OCA\Encryption\Tests\Controller;
+
+
+use OCA\Encryption\Controller\RecoveryController;
+use OCP\AppFramework\Http;
+use Test\TestCase;
+
+class RecoveryControllerTest extends TestCase {
+ /**
+ * @var RecoveryController
+ */
+ private $controller;
+ private $appName;
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject
+ */
+ private $requestMock;
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject
+ */
+ private $configMock;
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject
+ */
+ private $l10nMock;
+ /**
+ * @var \PHPUnit_Framework_MockObject_MockObject
+ */
+ private $recoveryMock;
+
+ public function adminRecoveryProvider() {
+ return [
+ ['test', 'test', '1', 'Recovery key successfully enabled', HTTP::STATUS_OK],
+ ['', 'test', '1', 'Missing recovery key password', HTTP::STATUS_BAD_REQUEST],
+ ['test', '', '1', 'Please repeat the recovery key password', HTTP::STATUS_BAD_REQUEST],
+ ['test', 'soimething that doesn\'t match', '1', 'Repeated recovery key password does not match the provided recovery key password', HTTP::STATUS_BAD_REQUEST],
+ ['test', 'test', '0', 'Recovery key successfully disabled', HTTP::STATUS_OK],
+ ];
+ }
+
+ /**
+ * @dataProvider adminRecoveryProvider
+ * @param $recoveryPassword
+ * @param $passconfirm
+ * @param $enableRecovery
+ * @param $expectedMessage
+ * @param $expectedStatus
+ */
+ public function testAdminRecovery($recoveryPassword, $passconfirm, $enableRecovery, $expectedMessage, $expectedStatus) {
+
+
+ $this->recoveryMock->expects($this->any())
+ ->method('enableAdminRecovery')
+ ->willReturn(true);
+
+ $this->recoveryMock->expects($this->any())
+ ->method('disableAdminRecovery')
+ ->willReturn(true);
+
+ $response = $this->controller->adminRecovery($recoveryPassword,
+ $passconfirm,
+ $enableRecovery);
+
+
+ $this->assertEquals($expectedMessage, $response->getData()['data']['message']);
+ $this->assertEquals($expectedStatus, $response->getStatus());
+
+
+ }
+
+ public function changeRecoveryPasswordProvider() {
+ return [
+ ['test', 'test', 'oldtestFail', 'Could not change the password. Maybe the old password was not correct.', HTTP::STATUS_BAD_REQUEST],
+ ['test', 'test', 'oldtest', 'Password successfully changed.', HTTP::STATUS_OK],
+ ['test', 'notmatch', 'oldtest', 'Repeated recovery key password does not match the provided recovery key password', HTTP::STATUS_BAD_REQUEST],
+ ['', 'test', 'oldtest', 'Please provide a new recovery password', HTTP::STATUS_BAD_REQUEST],
+ ['test', 'test', '', 'Please provide the old recovery password', HTTP::STATUS_BAD_REQUEST]
+ ];
+ }
+
+ /**
+ * @dataProvider changeRecoveryPasswordProvider
+ * @param $password
+ * @param $confirmPassword
+ * @param $oldPassword
+ * @param $expectedMessage
+ * @param $expectedStatus
+ */
+ public function testChangeRecoveryPassword($password, $confirmPassword, $oldPassword, $expectedMessage, $expectedStatus) {
+ $this->recoveryMock->expects($this->any())
+ ->method('changeRecoveryKeyPassword')
+ ->with($password, $oldPassword)
+ ->will($this->returnValueMap([
+ ['test', 'oldTestFail', false],
+ ['test', 'oldtest', true]
+ ]));
+
+ $response = $this->controller->changeRecoveryPassword($password,
+ $oldPassword,
+ $confirmPassword);
+
+ $this->assertEquals($expectedMessage, $response->getData()['data']['message']);
+ $this->assertEquals($expectedStatus, $response->getStatus());
+
+
+ }
+
+ public function userSetRecoveryProvider() {
+ return [
+ ['1', 'Recovery Key enabled', Http::STATUS_OK],
+ ['0', 'Could not enable the recovery key, please try again or contact your administrator', Http::STATUS_BAD_REQUEST]
+ ];
+ }
+
+ /**
+ * @dataProvider userSetRecoveryProvider
+ * @param $enableRecovery
+ * @param $expectedMessage
+ * @param $expectedStatus
+ */
+ public function testUserSetRecovery($enableRecovery, $expectedMessage, $expectedStatus) {
+ $this->recoveryMock->expects($this->any())
+ ->method('setRecoveryForUser')
+ ->with($enableRecovery)
+ ->will($this->returnValueMap([
+ ['1', true],
+ ['0', false]
+ ]));
+
+
+ $response = $this->controller->userSetRecovery($enableRecovery);
+
+ $this->assertEquals($expectedMessage, $response->getData()['data']['message']);
+ $this->assertEquals($expectedStatus, $response->getStatus());
+
+ }
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->appName = 'encryption';
+ $this->requestMock = $this->getMockBuilder('\OCP\IRequest')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->configMock = $this->getMockBuilder('OCP\IConfig')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->l10nMock = $this->getMockBuilder('OCP\IL10N')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ // Make l10n work in our tests
+ $this->l10nMock->expects($this->any())
+ ->method('t')
+ ->willReturnArgument(0);
+
+ $this->recoveryMock = $this->getMockBuilder('OCA\Encryption\Recovery')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->controller = new RecoveryController($this->appName,
+ $this->requestMock,
+ $this->configMock,
+ $this->l10nMock,
+ $this->recoveryMock);
+ }
+
+}
diff --git a/apps/encryption/tests/hooks/UserHooksTest.php b/apps/encryption/tests/hooks/UserHooksTest.php
index bcfb33e86cb..b0cc9cc924a 100644
--- a/apps/encryption/tests/hooks/UserHooksTest.php
+++ b/apps/encryption/tests/hooks/UserHooksTest.php
@@ -11,6 +11,7 @@
namespace OCA\Encryption\Tests\Hooks;
+use OCA\Encryption\Crypto\Crypt;
use OCA\Encryption\Hooks\UserHooks;
use Test\TestCase;
@@ -101,8 +102,18 @@ class UserHooksTest extends TestCase {
->method('symmetricEncryptFileContent')
->willReturn(true);
+ $this->cryptMock->expects($this->any())
+ ->method('generateHeader')
+ ->willReturn(Crypt::HEADER_START . ':Cipher:test:' . Crypt::HEADER_END);
+
$this->keyManagerMock->expects($this->exactly(4))
- ->method('setPrivateKey');
+ ->method('setPrivateKey')
+ ->willReturnCallback(function ($user, $key) {
+ $header = substr($key, 0, strlen(Crypt::HEADER_START));
+ $this->assertSame(
+ Crypt::HEADER_START,
+ $header, 'every encrypted file should start with a header');
+ });
$this->assertNull($this->instance->setPassphrase($this->params));
$this->params['recoveryPassword'] = 'password';
diff --git a/apps/encryption/tests/lib/KeyManagerTest.php b/apps/encryption/tests/lib/KeyManagerTest.php
index 251628d99f2..6e9c6d15818 100644
--- a/apps/encryption/tests/lib/KeyManagerTest.php
+++ b/apps/encryption/tests/lib/KeyManagerTest.php
@@ -297,4 +297,63 @@ class KeyManagerTest extends TestCase {
$this->assertTrue($this->instance->deleteAllFileKeys('/'));
}
+
+ /**
+ * test add public share key and or recovery key to the list of public keys
+ *
+ * @dataProvider dataTestAddSystemKeys
+ *
+ * @param array $accessList
+ * @param array $publicKeys
+ * @param string $uid
+ * @param array $expectedKeys
+ */
+ public function testAddSystemKeys($accessList, $publicKeys, $uid, $expectedKeys) {
+
+ $publicShareKeyId = 'publicShareKey';
+ $recoveryKeyId = 'recoveryKey';
+
+ $this->keyStorageMock->expects($this->any())
+ ->method('getSystemUserKey')
+ ->willReturnCallback(function($keyId, $encryptionModuleId) {
+ return $keyId;
+ });
+
+ $this->utilMock->expects($this->any())
+ ->method('isRecoveryEnabledForUser')
+ ->willReturnCallback(function($uid) {
+ if ($uid === 'user1') {
+ return true;
+ }
+ return false;
+ });
+
+ // set key IDs
+ \Test_Helper::invokePrivate($this->instance, 'publicShareKeyId', [$publicShareKeyId]);
+ \Test_Helper::invokePrivate($this->instance, 'recoveryKeyId', [$recoveryKeyId]);
+
+ $result = $this->instance->addSystemKeys($accessList, $publicKeys, $uid);
+
+ foreach ($expectedKeys as $expected) {
+ $this->assertArrayHasKey($expected, $result);
+ }
+
+ $this->assertSameSize($expectedKeys, $result);
+ }
+
+ /**
+ * data provider for testAddSystemKeys()
+ *
+ * @return array
+ */
+ public function dataTestAddSystemKeys() {
+ return array(
+ array(['public' => true],[], 'user1', ['publicShareKey', 'recoveryKey']),
+ array(['public' => false], [], 'user1', ['recoveryKey']),
+ array(['public' => true],[], 'user2', ['publicShareKey']),
+ array(['public' => false], [], 'user2', []),
+ );
+ }
+
+
}
diff --git a/apps/encryption/tests/lib/RecoveryTest.php b/apps/encryption/tests/lib/RecoveryTest.php
index b3fd403949c..5bfafa3a98e 100644
--- a/apps/encryption/tests/lib/RecoveryTest.php
+++ b/apps/encryption/tests/lib/RecoveryTest.php
@@ -170,6 +170,7 @@ class RecoveryTest extends TestCase {
$this->keyManagerMock->expects($this->once())
->method('addSystemKeys')
+ ->with($this->anything(), $this->anything(), $this->equalTo('admin'))
->willReturn(['admin' => 'publicKey']);
@@ -181,7 +182,7 @@ class RecoveryTest extends TestCase {
$this->assertNull(\Test_Helper::invokePrivate($this->instance,
'recoverFile',
- ['/', 'testkey']));
+ ['/', 'testkey', 'admin']));
}
protected function setUp() {
diff --git a/apps/encryption/tests/lib/UtilTest.php b/apps/encryption/tests/lib/UtilTest.php
index 5f086a8e475..eab912b82d4 100644
--- a/apps/encryption/tests/lib/UtilTest.php
+++ b/apps/encryption/tests/lib/UtilTest.php
@@ -44,11 +44,11 @@ class UtilTest extends TestCase {
*
*/
public function testIsRecoveryEnabledForUser() {
- $this->assertTrue($this->instance->isRecoveryEnabledForUser());
+ $this->assertTrue($this->instance->isRecoveryEnabledForUser('admin'));
// Assert recovery will return default value if not set
unset(self::$tempStorage['recoveryEnabled']);
- $this->assertEquals(0, $this->instance->isRecoveryEnabledForUser());
+ $this->assertEquals(0, $this->instance->isRecoveryEnabledForUser('admin'));
}
public function testUserHasFiles() {
diff --git a/apps/encryption/tests/lib/crypto/cryptTest.php b/apps/encryption/tests/lib/crypto/cryptTest.php
index 3ea57668348..4114adb115a 100644
--- a/apps/encryption/tests/lib/crypto/cryptTest.php
+++ b/apps/encryption/tests/lib/crypto/cryptTest.php
@@ -20,7 +20,7 @@
*/
-namespace OCA\Encryption\Tests\Crypt;
+namespace OCA\Encryption\Tests\lib\Crypto;
use OCA\Encryption\Crypto\Crypt;
diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php
index 9e14a70ebb0..aa28a8b44a4 100644
--- a/apps/encryption/tests/lib/crypto/encryptionTest.php
+++ b/apps/encryption/tests/lib/crypto/encryptionTest.php
@@ -19,8 +19,9 @@
*
*/
-namespace OCA\Encryption\Tests\Crypto;
+namespace OCA\Encryption\Tests\lib\Crypto;
+use OCA\Encryption\Exceptions\PublicKeyMissingException;
use Test\TestCase;
use OCA\Encryption\Crypto\Encryption;
@@ -38,6 +39,9 @@ class EncryptionTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject */
private $utilMock;
+ /** @var \PHPUnit_Framework_MockObject_MockObject */
+ private $loggerMock;
+
public function setUp() {
parent::setUp();
@@ -50,8 +54,76 @@ class EncryptionTest extends TestCase {
$this->keyManagerMock = $this->getMockBuilder('OCA\Encryption\KeyManager')
->disableOriginalConstructor()
->getMock();
+ $this->loggerMock = $this->getMockBuilder('OCP\ILogger')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->instance = new Encryption(
+ $this->cryptMock,
+ $this->keyManagerMock,
+ $this->utilMock,
+ $this->loggerMock
+ );
+
+ }
+
+ /**
+ * test if public key from one of the recipients is missing
+ */
+ public function testEndUser1() {
+ $this->instance->begin('/foo/bar', 'user1', 'r', array(), array('users' => array('user1', 'user2', 'user3')));
+ $this->endTest();
+ }
+
+ /**
+ * test if public key from owner is missing
+ *
+ * @expectedException \OCA\Encryption\Exceptions\PublicKeyMissingException
+ */
+ public function testEndUser2() {
+ $this->instance->begin('/foo/bar', 'user2', 'r', array(), array('users' => array('user1', 'user2', 'user3')));
+ $this->endTest();
+ }
+
+ /**
+ * common part of testEndUser1 and testEndUser2
+ *
+ * @throws PublicKeyMissingException
+ */
+ public function endTest() {
+ // prepare internal variables
+ \Test_Helper::invokePrivate($this->instance, 'isWriteOperation', [true]);
+ \Test_Helper::invokePrivate($this->instance, 'writeCache', ['']);
+
+ $this->keyManagerMock->expects($this->any())
+ ->method('getPublicKey')
+ ->will($this->returnCallback([$this, 'getPublicKeyCallback']));
+ $this->keyManagerMock->expects($this->any())
+ ->method('addSystemKeys')
+ ->will($this->returnCallback([$this, 'addSystemKeysCallback']));
+ $this->cryptMock->expects($this->any())
+ ->method('multiKeyEncrypt')
+ ->willReturn(true);
+ $this->cryptMock->expects($this->any())
+ ->method('setAllFileKeys')
+ ->willReturn(true);
+
+ $this->instance->end('/foo/bar');
+ }
+
+
+ public function getPublicKeyCallback($uid) {
+ if ($uid === 'user2') {
+ throw new PublicKeyMissingException($uid);
+ }
+ return $uid;
+ }
- $this->instance = new Encryption($this->cryptMock, $this->keyManagerMock, $this->utilMock);
+ public function addSystemKeysCallback($accessList, $publicKeys) {
+ $this->assertSame(2, count($publicKeys));
+ $this->assertArrayHasKey('user1', $publicKeys);
+ $this->assertArrayHasKey('user3', $publicKeys);
+ return $publicKeys;
}
/**
@@ -72,5 +144,80 @@ class EncryptionTest extends TestCase {
);
}
+ /**
+ * @dataProvider dataTestBegin
+ */
+ public function testBegin($mode, $header, $legacyCipher, $defaultCipher, $fileKey, $expected) {
+
+ $this->cryptMock->expects($this->any())
+ ->method('getCipher')
+ ->willReturn($defaultCipher);
+ $this->cryptMock->expects($this->any())
+ ->method('getLegacyCipher')
+ ->willReturn($legacyCipher);
+ if (empty($fileKey)) {
+ $this->cryptMock->expects($this->once())
+ ->method('generateFileKey')
+ ->willReturn('fileKey');
+ } else {
+ $this->cryptMock->expects($this->never())
+ ->method('generateFileKey');
+ }
+
+ $this->keyManagerMock->expects($this->once())
+ ->method('getFileKey')
+ ->willReturn($fileKey);
+
+ $result = $this->instance->begin('/user/files/foo.txt', 'user', $mode, $header, []);
+
+ $this->assertArrayHasKey('cipher', $result);
+ $this->assertSame($expected, $result['cipher']);
+ if ($mode === 'w') {
+ $this->assertTrue(\Test_Helper::invokePrivate($this->instance, 'isWriteOperation'));
+ } else {
+ $this->assertFalse(\Test_Helper::invokePrivate($this->instance, 'isWriteOperation'));
+ }
+ }
+
+ public function dataTestBegin() {
+ return array(
+ array('w', ['cipher' => 'myCipher'], 'legacyCipher', 'defaultCipher', 'fileKey', 'myCipher'),
+ array('r', ['cipher' => 'myCipher'], 'legacyCipher', 'defaultCipher', 'fileKey', 'myCipher'),
+ array('w', [], 'legacyCipher', 'defaultCipher', '', 'defaultCipher'),
+ array('r', [], 'legacyCipher', 'defaultCipher', 'file_key', 'legacyCipher'),
+ );
+ }
+
+ /**
+ * @dataProvider dataTestUpdate
+ *
+ * @param string $fileKey
+ * @param boolean $expected
+ */
+ public function testUpdate($fileKey, $expected) {
+ $this->keyManagerMock->expects($this->once())
+ ->method('getFileKey')->willReturn($fileKey);
+
+ $this->keyManagerMock->expects($this->any())
+ ->method('getPublicKey')->willReturn('publicKey');
+
+ $this->keyManagerMock->expects($this->any())
+ ->method('addSystemKeys')
+ ->willReturnCallback(function($accessList, $publicKeys) {
+ return $publicKeys;
+ });
+
+ $this->assertSame($expected,
+ $this->instance->update('path', 'user1', ['users' => ['user1']])
+ );
+
+ }
+
+ public function dataTestUpdate() {
+ return array(
+ array('', false),
+ array('fileKey', true)
+ );
+ }
-} \ No newline at end of file
+}
diff --git a/apps/encryption_dummy/appinfo/app.php b/apps/encryption_dummy/appinfo/app.php
deleted file mode 100644
index f04886f9f1f..00000000000
--- a/apps/encryption_dummy/appinfo/app.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-$manager = \OC::$server->getEncryptionManager();
-$module = new \OCA\Encryption_Dummy\DummyModule();
-$manager->registerEncryptionModule('OC_DUMMY_MODULE', 'Dummy Encryption Module', $module);
-
diff --git a/apps/encryption_dummy/appinfo/info.xml b/apps/encryption_dummy/appinfo/info.xml
deleted file mode 100644
index f62f6fb5dd6..00000000000
--- a/apps/encryption_dummy/appinfo/info.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<info>
- <id>encryption_dummy</id>
- <name>dummy encryption module</name>
- <description>
- This module does nothing, it is used for testing purpose only
- </description>
- <licence>AGPL</licence>
- <author>Bjoern Schiessle</author>
- <requiremin>8</requiremin>
- <shipped>true</shipped>
- <rememberlogin>false</rememberlogin>
- <types>
- <filesystem/>
- </types>
- <ocsid>166047</ocsid>
- <dependencies>
- <lib>openssl</lib>
- </dependencies>
-</info>
diff --git a/apps/encryption_dummy/appinfo/version b/apps/encryption_dummy/appinfo/version
deleted file mode 100644
index 8acdd82b765..00000000000
--- a/apps/encryption_dummy/appinfo/version
+++ /dev/null
@@ -1 +0,0 @@
-0.0.1
diff --git a/apps/encryption_dummy/img/app.svg b/apps/encryption_dummy/img/app.svg
deleted file mode 100644
index 1157c71c66e..00000000000
--- a/apps/encryption_dummy/img/app.svg
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xml:space="preserve"
- height="16px"
- width="16px"
- version="1.1"
- y="0px"
- x="0px"
- viewBox="0 0 71 100"
- id="svg2"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="app.svg"><metadata
- id="metadata10"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs8" /><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1920"
- inkscape:window-height="1014"
- id="namedview6"
- showgrid="false"
- inkscape:zoom="14.75"
- inkscape:cx="-21.423729"
- inkscape:cy="8"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" /><path
- d="m8 1c-2.2091 0-4 1.7909-4 4v2h-1v7h10v-7h-1v-2c0-2.2091-1.791-4-4-4zm0 2c1.1046 0 2 0.89543 2 2v2h-4v-2c0-1.1046 0.8954-2 2-2z"
- transform="matrix(6.25,0,0,6.25,-14.5,0)"
- id="path4"
- style="fill:#ffffff;fill-opacity:1" /><path
- style="fill:none"
- d="m 3.0644068,10.508475 0,-3.4576275 0.4655371,0 0.465537,0 0.049537,-1.2033899 C 4.1094633,4.2818838 4.1578923,4.0112428 4.4962182,3.3259708 4.7075644,2.8978935 4.9002217,2.6327599 5.2605792,2.2740624 6.7855365,0.75613022 8.9920507,0.69157582 10.623172,2.1171729 c 0.384104,0.3357058 0.882069,1.0763131 1.054177,1.5678422 0.147302,0.4206856 0.262873,1.6086448 0.266436,2.7387137 l 0.002,0.6271187 0.508474,0 0.508475,0 0,3.4576275 0,3.457627 -4.9491527,0 -4.9491525,0 0,-3.457627 z M 10.065882,6.3559322 c -0.02012,-0.3822034 -0.04774,-0.7076271 -0.0614,-0.7231639 -0.013653,-0.015537 -0.024824,0.281921 -0.024824,0.661017 l 0,0.6892655 -1.9630041,0 -1.963004,0 -0.023717,-0.4576271 -0.023717,-0.4576271 -0.013279,0.4915254 -0.013279,0.4915255 2.0613978,0 2.0613972,0 -0.03657,-0.6949153 0,0 z M 6.5396275,3.7118644 C 6.648082,3.5720339 6.7197092,3.4576271 6.6987988,3.4576271 c -0.062956,0 -0.5835446,0.6841947 -0.5835446,0.7669359 0,0.042237 0.051116,0.00136 0.1135916,-0.090834 0.062475,-0.092195 0.2023271,-0.2820343 0.3107817,-0.4218648 z M 9.7498983,4.0169492 C 9.6961899,3.9144068 9.5352369,3.723769 9.392225,3.5933098 L 9.1322034,3.356111 9.3784249,3.6272081 c 0.1354218,0.1491033 0.2814105,0.3397411 0.3244192,0.4236394 0.043009,0.083898 0.093162,0.1525423 0.1114515,0.1525423 0.01829,0 -0.010689,-0.083898 -0.064397,-0.1864406 l 0,0 z M 7.3032896,3.1315382 C 7.2704731,3.0987216 6.877102,3.3089557 6.8306315,3.3841466 6.8091904,3.4188389 6.911918,3.3813452 7.0589148,3.300827 7.2059117,3.2203088 7.3158803,3.1441289 7.3032896,3.1315382 l 0,0 z"
- id="path3007"
- inkscape:connector-curvature="0"
- transform="matrix(6.25,0,0,6.25,-14.5,0)" /></svg> \ No newline at end of file
diff --git a/apps/encryption_dummy/lib/dummymodule.php b/apps/encryption_dummy/lib/dummymodule.php
deleted file mode 100644
index 813b50edcbd..00000000000
--- a/apps/encryption_dummy/lib/dummymodule.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/**
- * ownCloud
- *
- * @copyright (C) 2015 ownCloud, Inc.
- *
- * @author Bjoern Schiessle <schiessle@owncloud.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-namespace OCA\Encryption_Dummy;
-
-use OCP\Encryption\IEncryptionModule;
-
-class DummyModule implements IEncryptionModule {
-
- /** @var boolean */
- protected $isWriteOperation;
-
- /**
- * @return string defining the technical unique id
- */
- public function getId() {
- return "OC_DUMMY_MODULE";
- }
-
- /**
- * In comparison to getKey() this function returns a human readable (maybe translated) name
- *
- * @return string
- */
- public function getDisplayName() {
- return "Dummy Encryption Module";
- }
-
- /**
- * start receiving chunks from a file. This is the place where you can
- * perform some initial step before starting encrypting/decrypting the
- * chunks
- *
- * @param string $path to the file
- * @param string $user who read/write the file (null for public access)
- * @param array $header contains the header data read from the file
- * @param array $accessList who has access to the file contains the key 'users' and 'public'
- *
- * @return array $header contain data as key-value pairs which should be
- * written to the header, in case of a write operation
- * or if no additional data is needed return a empty array
- */
- public function begin($path, $user, array $header, array $accessList) {
- return array();
- }
-
- /**
- * last chunk received. This is the place where you can perform some final
- * operation and return some remaining data if something is left in your
- * buffer.
- *
- * @param string $path to the file
- * @return string remained data which should be written to the file in case
- * of a write operation
- */
- public function end($path) {
-
- if ($this->isWriteOperation) {
- $storage = \OC::$server->getEncryptionKeyStorage($this->getId());
- $storage->setFileKey($path, 'fileKey', 'foo');
- }
- return '';
- }
-
- /**
- * encrypt data
- *
- * @param string $data you want to encrypt
- * @return mixed encrypted data
- */
- public function encrypt($data) {
- $this->isWriteOperation = true;
- return $data;
- }
-
- /**
- * decrypt data
- *
- * @param string $data you want to decrypt
- * @param string $user decrypt as user (null for public access)
- * @return mixed decrypted data
- */
- public function decrypt($data) {
- $this->isWriteOperation=false;
- return $data;
- }
-
- /**
- * should the file be encrypted or not
- *
- * @param string $path
- * @return boolean
- */
- public function shouldEncrypt($path) {
- if (strpos($path, '/'. \OCP\User::getUser() . '/files/') === 0) {
- return true;
- }
-
- return false;
- }
-
- public function getUnencryptedBlockSize() {
- return 6126;
- }
-
- /**
- * update encrypted file, e.g. give additional users access to the file
- *
- * @param string $path path to the file which should be updated
- * @param string $uid of the user who performs the operation
- * @param array $accessList who has access to the file contains the key 'users' and 'public'
- * @return boolean
- */
- public function update($path, $uid, array $accessList) {
- return true;
- }
-}
diff --git a/apps/files/appinfo/remote.php b/apps/files/appinfo/remote.php
index 1e54fc10efa..325773a81ea 100644
--- a/apps/files/appinfo/remote.php
+++ b/apps/files/appinfo/remote.php
@@ -30,6 +30,8 @@
// no php execution timeout for webdav
set_time_limit(0);
+// Turn off output buffering to prevent memory problems
+\OC_Util::obEnd();
// Backends
$authBackend = new \OC\Connector\Sabre\Auth();
@@ -43,6 +45,7 @@ $server->setBaseUri($baseuri);
// Load plugins
$defaults = new OC_Defaults();
+$server->addPlugin(new \OC\Connector\Sabre\BlockLegacyClientPlugin(\OC::$server->getConfig()));
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, $defaults->getName()));
// FIXME: The following line is a workaround for legacy components relying on being able to send a GET to /
$server->addPlugin(new \OC\Connector\Sabre\DummyGetResponsePlugin());
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index bce85b7f5e7..e4bf791761d 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -581,7 +581,9 @@ a.action>img {
#fileList tr:hover a.action,
#fileList a.action.permanent,
#fileList tr:focus a.action,
-#fileList a.action.permanent
+#fileList a.action.permanent,
+#fileList tr:hover a.action.no-permission:hover,
+#fileList tr:focus a.action.no-permission:focus
/*#fileList .name:focus .action*/ {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
@@ -602,18 +604,19 @@ a.action>img {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
filter: alpha(opacity=30);
opacity: .3;
- height: 60px;
+ /* add whitespace to bottom of files list to correctly show dropdowns */
+ height: 300px;
}
-
.summary:hover,
.summary:focus,
.summary,
table tr.summary td {
background-color: transparent;
}
-
.summary td {
border-bottom: none;
+ vertical-align: top;
+ padding-top: 20px;
}
.summary .info {
margin-left: 40px;
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index ce8127c9887..6b6acdb5e01 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -611,7 +611,7 @@ OC.Upload = {
var lastPos;
var checkInput = function () {
var filename = input.val();
- if (Files.isFileNameValid(filename)) {
+ 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});
@@ -651,12 +651,6 @@ OC.Upload = {
FileList.lastAction();
}
var name = FileList.getUniqueName(newname);
- if (newname !== name) {
- FileList.checkName(name, newname, true);
- var hidden = true;
- } else {
- var hidden = false;
- }
switch(type) {
case 'file':
$.post(
@@ -667,7 +661,7 @@ OC.Upload = {
},
function(result) {
if (result.status === 'success') {
- FileList.add(result.data, {hidden: hidden, animate: true, scrollTo: true});
+ FileList.add(result.data, {animate: true, scrollTo: true});
} else {
OC.dialogs.alert(result.data.message, t('core', 'Could not create file'));
}
@@ -683,7 +677,7 @@ OC.Upload = {
},
function(result) {
if (result.status === 'success') {
- FileList.add(result.data, {hidden: hidden, animate: true, scrollTo: true});
+ FileList.add(result.data, {animate: true, scrollTo: true});
} else {
OC.dialogs.alert(result.data.message, t('core', 'Could not create folder'));
}
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index b335f1f6432..1956fda0077 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -288,9 +288,15 @@
} else if (mountType === 'shared-root') {
deleteTitle = t('files', 'Unshare');
}
+ var cssClasses = 'action delete icon-delete';
+ if((context.$file.data('permissions') & OC.PERMISSION_DELETE) === 0) {
+ // add css class no-permission to delete icon
+ cssClasses += ' no-permission';
+ deleteTitle = t('files', 'No permission to delete');
+ }
var $actionLink = $('<a href="#" original-title="' +
escapeHTML(deleteTitle) +
- '" class="action delete icon-delete">' +
+ '" class="' +cssClasses + '">' +
'<span class="hidden-visually">' + escapeHTML(deleteTitle) + '</span>' +
'</a>'
);
@@ -426,12 +432,17 @@
name: 'Delete',
displayName: '',
mime: 'all',
- permissions: OC.PERMISSION_DELETE,
+ // permission is READ because we show a hint instead if there is no permission
+ permissions: OC.PERMISSION_READ,
icon: function() {
return OC.imagePath('core', 'actions/delete');
},
render: _.bind(this._renderDeleteAction, this),
actionHandler: function(fileName, context) {
+ // if there is no permission to delete do nothing
+ if((context.$file.data('permissions') & OC.PERMISSION_DELETE) === 0) {
+ return;
+ }
context.fileList.do_delete(fileName, context.dir);
$('.tipsy').remove();
}
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 0181acab596..e88ea1ad5d7 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -950,7 +950,8 @@
if (fileData.isPreviewAvailable) {
var iconDiv = filenameTd.find('.thumbnail');
// lazy load / newly inserted td ?
- if (options.animate) {
+ // the typeof check ensures that the default value of animate is true
+ if (typeof(options.animate) === 'undefined' || !!options.animate) {
this.lazyLoadPreview({
path: path + '/' + fileData.name,
mime: mime,
diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js
index ef55e399946..68eb57fb335 100644
--- a/apps/files/l10n/ca.js
+++ b/apps/files/l10n/ca.js
@@ -70,6 +70,7 @@ OC.L10N.register(
"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",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar les notificacions sobre la creació i canvis dels seus <strong>arxius favorits</strong><em>(solament Stream)</em>",
"A file or folder has been <strong>deleted</strong>" : "S'ha <strong>elminiat</strong> un fitxer o una carpeta",
"A file or folder has been <strong>restored</strong>" : "S'ha <strong>restaurat</strong> un fitxer o una carpeta",
"You created %1$s" : "Has creat %1$s",
diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json
index f102b4f5fd3..8ca81cecdc7 100644
--- a/apps/files/l10n/ca.json
+++ b/apps/files/l10n/ca.json
@@ -68,6 +68,7 @@
"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",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitar les notificacions sobre la creació i canvis dels seus <strong>arxius favorits</strong><em>(solament Stream)</em>",
"A file or folder has been <strong>deleted</strong>" : "S'ha <strong>elminiat</strong> un fitxer o una carpeta",
"A file or folder has been <strong>restored</strong>" : "S'ha <strong>restaurat</strong> un fitxer o una carpeta",
"You created %1$s" : "Has creat %1$s",
diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js
index 84444eb360e..9c0d27d9f44 100644
--- a/apps/files/l10n/cs_CZ.js
+++ b/apps/files/l10n/cs_CZ.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Smazat",
"Disconnect storage" : "Odpojit úložiště",
"Unshare" : "Zrušit sdílení",
+ "No permission to delete" : "Chybí oprávnění mazat",
"Download" : "Stáhnout",
"Select" : "Vybrat",
"Pending" : "Nevyřízené",
diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json
index 24fa5840ad5..663161c5e42 100644
--- a/apps/files/l10n/cs_CZ.json
+++ b/apps/files/l10n/cs_CZ.json
@@ -40,6 +40,7 @@
"Delete" : "Smazat",
"Disconnect storage" : "Odpojit úložiště",
"Unshare" : "Zrušit sdílení",
+ "No permission to delete" : "Chybí oprávnění mazat",
"Download" : "Stáhnout",
"Select" : "Vybrat",
"Pending" : "Nevyřízené",
diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js
index b2cd08da2d3..9433acbf95e 100644
--- a/apps/files/l10n/da.js
+++ b/apps/files/l10n/da.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Slet",
"Disconnect storage" : "Frakobl lager",
"Unshare" : "Fjern deling",
+ "No permission to delete" : "Ingen rettigheder at slette",
"Download" : "Download",
"Select" : "Vælg",
"Pending" : "Afventer",
diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json
index 2b368767a44..0fb4159ef5c 100644
--- a/apps/files/l10n/da.json
+++ b/apps/files/l10n/da.json
@@ -40,6 +40,7 @@
"Delete" : "Slet",
"Disconnect storage" : "Frakobl lager",
"Unshare" : "Fjern deling",
+ "No permission to delete" : "Ingen rettigheder at slette",
"Download" : "Download",
"Select" : "Vælg",
"Pending" : "Afventer",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 721495a7335..a0584c3a7d5 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "No permission to delete" : "Keine Berechtigung zum Löschen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 467cbda63ea..a767f6dc129 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -40,6 +40,7 @@
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "No permission to delete" : "Keine Berechtigung zum Löschen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
diff --git a/apps/files/l10n/de_AT.js b/apps/files/l10n/de_AT.js
index a94d0486f4b..046e993f7f6 100644
--- a/apps/files/l10n/de_AT.js
+++ b/apps/files/l10n/de_AT.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"files",
{
+ "Unknown error" : "Unbekannter Fehler",
"Files" : "Dateien",
"Delete" : "Löschen",
"Unshare" : "Teilung zurücknehmen",
@@ -16,6 +17,9 @@ OC.L10N.register(
"You deleted %1$s" : "Du hast %1$s gelöscht",
"%2$s deleted %1$s" : "%2$s löschte %1$s",
"Save" : "Speichern",
- "Settings" : "Einstellungen"
+ "Settings" : "Einstellungen",
+ "New folder" : "Neuer Ordner",
+ "Upload" : "Hochladen",
+ "Cancel upload" : "Hochladen abbrechen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files/l10n/de_AT.json b/apps/files/l10n/de_AT.json
index 89b99b5d001..b31eb12c490 100644
--- a/apps/files/l10n/de_AT.json
+++ b/apps/files/l10n/de_AT.json
@@ -1,4 +1,5 @@
{ "translations": {
+ "Unknown error" : "Unbekannter Fehler",
"Files" : "Dateien",
"Delete" : "Löschen",
"Unshare" : "Teilung zurücknehmen",
@@ -14,6 +15,9 @@
"You deleted %1$s" : "Du hast %1$s gelöscht",
"%2$s deleted %1$s" : "%2$s löschte %1$s",
"Save" : "Speichern",
- "Settings" : "Einstellungen"
+ "Settings" : "Einstellungen",
+ "New folder" : "Neuer Ordner",
+ "Upload" : "Hochladen",
+ "Cancel upload" : "Hochladen abbrechen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 34239019ea4..1877607d449 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "No permission to delete" : "Keine Berechtigung zum Löschen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 2a061bda5f0..ab58d02491a 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -40,6 +40,7 @@
"Delete" : "Löschen",
"Disconnect storage" : "Speicher trennen",
"Unshare" : "Freigabe aufheben",
+ "No permission to delete" : "Keine Berechtigung zum Löschen",
"Download" : "Herunterladen",
"Select" : "Auswählen",
"Pending" : "Ausstehend",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index 24ebdfbfc6c..284b92a0c18 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Διαγραφή",
"Disconnect storage" : "Αποσυνδεδεμένος αποθηκευτικός χώρος",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "No permission to delete" : "Δεν έχετε άδεια να το διαγράψετε",
"Download" : "Λήψη",
"Select" : "Επιλογή",
"Pending" : "Εκκρεμεί",
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index c718e8323d2..9ff4a93567f 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -40,6 +40,7 @@
"Delete" : "Διαγραφή",
"Disconnect storage" : "Αποσυνδεδεμένος αποθηκευτικός χώρος",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "No permission to delete" : "Δεν έχετε άδεια να το διαγράψετε",
"Download" : "Λήψη",
"Select" : "Επιλογή",
"Pending" : "Εκκρεμεί",
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index fa0fa7307c8..80515d6890e 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -70,6 +70,7 @@ OC.L10N.register(
"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>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favourite files</strong> <em>(Stream only)</em>",
"A file or folder has been <strong>deleted</strong>" : "A file or folder has been <strong>deleted</strong>",
"A file or folder has been <strong>restored</strong>" : "A file or folder has been <strong>restored</strong>",
"You created %1$s" : "You created %1$s",
@@ -99,6 +100,7 @@ OC.L10N.register(
"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!",
"No entries found in this folder" : "No entries found in this folder",
"Select all" : "Select all",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index 8f3a23a1639..e22b24ca829 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -68,6 +68,7 @@
"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>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limit notifications about creation and changes to your <strong>favourite files</strong> <em>(Stream only)</em>",
"A file or folder has been <strong>deleted</strong>" : "A file or folder has been <strong>deleted</strong>",
"A file or folder has been <strong>restored</strong>" : "A file or folder has been <strong>restored</strong>",
"You created %1$s" : "You created %1$s",
@@ -97,6 +98,7 @@
"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!",
"No entries found in this folder" : "No entries found in this folder",
"Select all" : "Select all",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 90562ff52f5..bb1beafc12a 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar almacenamiento",
"Unshare" : "Dejar de compartir",
+ "No permission to delete" : "Ninguna autorización que borrar",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendiente",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index 62ed9b2defe..d2cef744146 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -40,6 +40,7 @@
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar almacenamiento",
"Unshare" : "Dejar de compartir",
+ "No permission to delete" : "Ninguna autorización que borrar",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendiente",
diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js
index db7dbca8f12..39fa18bd8ae 100644
--- a/apps/files/l10n/fi_FI.js
+++ b/apps/files/l10n/fi_FI.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Poista",
"Disconnect storage" : "Katkaise yhteys tallennustilaan",
"Unshare" : "Peru jakaminen",
+ "No permission to delete" : "Ei oikeutta poistaa",
"Download" : "Lataa",
"Select" : "Valitse",
"Pending" : "Odottaa",
diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json
index 8bfa09be9bc..82a1f64cc5b 100644
--- a/apps/files/l10n/fi_FI.json
+++ b/apps/files/l10n/fi_FI.json
@@ -40,6 +40,7 @@
"Delete" : "Poista",
"Disconnect storage" : "Katkaise yhteys tallennustilaan",
"Unshare" : "Peru jakaminen",
+ "No permission to delete" : "Ei oikeutta poistaa",
"Download" : "Lataa",
"Select" : "Valitse",
"Pending" : "Odottaa",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index 1c42ce7649c..b8f526af5c2 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Supprimer",
"Disconnect storage" : "Déconnecter ce support de stockage",
"Unshare" : "Ne plus partager",
+ "No permission to delete" : "Pas de permission de suppression",
"Download" : "Télécharger",
"Select" : "Sélectionner",
"Pending" : "En attente",
@@ -72,7 +73,7 @@ OC.L10N.register(
"A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limiter les notifications à ce qui concerne la création et la modification de vos <strong>fichiers favoris</strong> <em>(Flux uniquement)</em>",
"A file or folder has been <strong>deleted</strong>" : "Un fichier ou un répertoire a été <strong>supprimé</strong>",
- "A file or folder has been <strong>restored</strong>" : "Un fichier ou répertoire a été <strong>restauré</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un fichier ou un répertoire a été <strong>restauré</strong>",
"You created %1$s" : "Vous avez créé %1$s",
"%2$s created %1$s" : "%2$s a créé %1$s",
"%1$s was created in a public folder" : "%1$s a été créé dans un dossier public",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index c04ba115e8b..c177a4e6840 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -40,6 +40,7 @@
"Delete" : "Supprimer",
"Disconnect storage" : "Déconnecter ce support de stockage",
"Unshare" : "Ne plus partager",
+ "No permission to delete" : "Pas de permission de suppression",
"Download" : "Télécharger",
"Select" : "Sélectionner",
"Pending" : "En attente",
@@ -70,7 +71,7 @@
"A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limiter les notifications à ce qui concerne la création et la modification de vos <strong>fichiers favoris</strong> <em>(Flux uniquement)</em>",
"A file or folder has been <strong>deleted</strong>" : "Un fichier ou un répertoire a été <strong>supprimé</strong>",
- "A file or folder has been <strong>restored</strong>" : "Un fichier ou répertoire a été <strong>restauré</strong>",
+ "A file or folder has been <strong>restored</strong>" : "Un fichier ou un répertoire a été <strong>restauré</strong>",
"You created %1$s" : "Vous avez créé %1$s",
"%2$s created %1$s" : "%2$s a créé %1$s",
"%1$s was created in a public folder" : "%1$s a été créé dans un dossier public",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index c1c6ec11f45..cc1a61a32b6 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar o almacenamento",
"Unshare" : "Deixar de compartir",
+ "No permission to delete" : "Non ten permisos para eliminar",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendentes",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index 07c5efde382..e178d9ce831 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -40,6 +40,7 @@
"Delete" : "Eliminar",
"Disconnect storage" : "Desconectar o almacenamento",
"Unshare" : "Deixar de compartir",
+ "No permission to delete" : "Non ten permisos para eliminar",
"Download" : "Descargar",
"Select" : "Seleccionar",
"Pending" : "Pendentes",
diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js
index ffc8c909b91..97190ddf47a 100644
--- a/apps/files/l10n/id.js
+++ b/apps/files/l10n/id.js
@@ -67,8 +67,10 @@ OC.L10N.register(
"{dirs} and {files}" : "{dirs} dan {files}",
"Favorited" : "Difavoritkan",
"Favorite" : "Favorit",
+ "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>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Batas notifikasi tentang pembuatan dan perubahan <strong>berkas favorit</strong> Anda <em>(Hanya stream)</em>",
"A file or folder has been <strong>deleted</strong>" : "Sebuah berkas atau folder telah <strong>dihapus</strong>",
"A file or folder has been <strong>restored</strong>" : "Sebuah berkas atau folder telah <strong>dipulihkan</strong>",
"You created %1$s" : "Anda membuat %1$s",
@@ -87,6 +89,7 @@ OC.L10N.register(
"Maximum upload size" : "Ukuran pengunggahan maksimum",
"max. possible: " : "Kemungkinan maks.:",
"Save" : "Simpan",
+ "Can not be edited from here due to insufficient permissions." : "Tidak dapat diidit dari sini karena tidak memiliki izin.",
"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>",
@@ -97,6 +100,7 @@ OC.L10N.register(
"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!",
"No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini",
"Select all" : "Pilih Semua",
diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json
index 51d64896b0c..c3906da3c3d 100644
--- a/apps/files/l10n/id.json
+++ b/apps/files/l10n/id.json
@@ -65,8 +65,10 @@
"{dirs} and {files}" : "{dirs} dan {files}",
"Favorited" : "Difavoritkan",
"Favorite" : "Favorit",
+ "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>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Batas notifikasi tentang pembuatan dan perubahan <strong>berkas favorit</strong> Anda <em>(Hanya stream)</em>",
"A file or folder has been <strong>deleted</strong>" : "Sebuah berkas atau folder telah <strong>dihapus</strong>",
"A file or folder has been <strong>restored</strong>" : "Sebuah berkas atau folder telah <strong>dipulihkan</strong>",
"You created %1$s" : "Anda membuat %1$s",
@@ -85,6 +87,7 @@
"Maximum upload size" : "Ukuran pengunggahan maksimum",
"max. possible: " : "Kemungkinan maks.:",
"Save" : "Simpan",
+ "Can not be edited from here due to insufficient permissions." : "Tidak dapat diidit dari sini karena tidak memiliki izin.",
"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>",
@@ -95,6 +98,7 @@
"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!",
"No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini",
"Select all" : "Pilih Semua",
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index 00507bf43d9..6fea601bdfc 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -42,4 +42,4 @@ OC.L10N.register(
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.",
"Files are being scanned, please wait." : "Verið er að skima skrár, vinsamlegast hinkraðu."
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index e63dd585d17..1fe2dd93e2f 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -39,5 +39,5 @@
"Upload too large" : "Innsend skrá er of stór",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.",
"Files are being scanned, please wait." : "Verið er að skima skrár, vinsamlegast hinkraðu."
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 13f2ecd4dcb..64faf5318e0 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Elimina",
"Disconnect storage" : "Disconnetti archiviazione",
"Unshare" : "Rimuovi condivisione",
+ "No permission to delete" : "Nessun permesso per eliminare",
"Download" : "Scarica",
"Select" : "Seleziona",
"Pending" : "In corso",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index 40d3aa7f125..62861a64611 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -40,6 +40,7 @@
"Delete" : "Elimina",
"Disconnect storage" : "Disconnetti archiviazione",
"Unshare" : "Rimuovi condivisione",
+ "No permission to delete" : "Nessun permesso per eliminare",
"Download" : "Scarica",
"Select" : "Seleziona",
"Pending" : "In corso",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 80e1f478509..c8a8ddcbd48 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -51,7 +51,7 @@ OC.L10N.register(
"Error" : "エラー",
"Could not rename file" : "ファイルの名前変更ができませんでした",
"Error deleting file." : "ファイルの削除エラー。",
- "No entries in this folder match '{filter}'" : "このフォルダで '{filter}' にマッチするものはありません",
+ "No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません",
"Name" : "名前",
"Size" : "サイズ",
"Modified" : "更新日時",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index f3868ed14cf..2a127e347e5 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -49,7 +49,7 @@
"Error" : "エラー",
"Could not rename file" : "ファイルの名前変更ができませんでした",
"Error deleting file." : "ファイルの削除エラー。",
- "No entries in this folder match '{filter}'" : "このフォルダで '{filter}' にマッチするものはありません",
+ "No entries in this folder match '{filter}'" : "このフォルダー内で '{filter}' にマッチするものはありません",
"Name" : "名前",
"Size" : "サイズ",
"Modified" : "更新日時",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index ca961a8fbbd..b49fcd33bc5 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "삭제",
"Disconnect storage" : "저장소 연결 해제",
"Unshare" : "공유 해제",
+ "No permission to delete" : "삭제할 권한 없음",
"Download" : "다운로드",
"Select" : "선택",
"Pending" : "대기 중",
@@ -70,6 +71,7 @@ OC.L10N.register(
"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>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
"A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
"A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
"You created %1$s" : "내가 %1$s을(를) 생성함",
@@ -88,6 +90,7 @@ OC.L10N.register(
"Maximum upload size" : "최대 업로드 크기",
"max. possible: " : "최대 가능:",
"Save" : "저장",
+ "Can not be edited from here due to insufficient permissions." : "권한이 부족하므로 여기에서 편집할 수 없습니다.",
"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>",
@@ -98,6 +101,7 @@ OC.L10N.register(
"Folder" : "폴더",
"Upload" : "업로드",
"Cancel upload" : "업로드 취소",
+ "No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
"No entries found in this folder" : "이 폴더에 항목 없음",
"Select all" : "모두 선택",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index e8757da56b9..b9611b185b5 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -40,6 +40,7 @@
"Delete" : "삭제",
"Disconnect storage" : "저장소 연결 해제",
"Unshare" : "공유 해제",
+ "No permission to delete" : "삭제할 권한 없음",
"Download" : "다운로드",
"Select" : "선택",
"Pending" : "대기 중",
@@ -68,6 +69,7 @@
"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>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
"A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
"A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
"You created %1$s" : "내가 %1$s을(를) 생성함",
@@ -86,6 +88,7 @@
"Maximum upload size" : "최대 업로드 크기",
"max. possible: " : "최대 가능:",
"Save" : "저장",
+ "Can not be edited from here due to insufficient permissions." : "권한이 부족하므로 여기에서 편집할 수 없습니다.",
"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>",
@@ -96,6 +99,7 @@
"Folder" : "폴더",
"Upload" : "업로드",
"Cancel upload" : "업로드 취소",
+ "No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
"No entries found in this folder" : "이 폴더에 항목 없음",
"Select all" : "모두 선택",
diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js
index 8dc8269c0cc..8d4cf072cf6 100644
--- a/apps/files/l10n/lb.js
+++ b/apps/files/l10n/lb.js
@@ -29,9 +29,12 @@ OC.L10N.register(
"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",
"Upload too large" : "Upload ze grouss",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.",
"Files are being scanned, please wait." : "Fichieren gi gescannt, war weg."
diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json
index 524bd0c1cc9..b3b6ff1f632 100644
--- a/apps/files/l10n/lb.json
+++ b/apps/files/l10n/lb.json
@@ -27,9 +27,12 @@
"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",
"Upload too large" : "Upload ze grouss",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.",
"Files are being scanned, please wait." : "Fichieren gi gescannt, war weg."
diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js
index 13e21643c97..fbda6b4d1fb 100644
--- a/apps/files/l10n/mk.js
+++ b/apps/files/l10n/mk.js
@@ -51,6 +51,7 @@ OC.L10N.register(
"You deleted %1$s" : "Вие избришавте %1$s",
"%2$s deleted %1$s" : "%2$s избришани %1$s",
"%s could not be renamed" : "%s не може да биде преименуван",
+ "Upload (max. %s)" : "Префрлање (макс. %s)",
"File handling" : "Ракување со датотеки",
"Maximum upload size" : "Максимална големина за подигање",
"max. possible: " : "макс. можно:",
diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json
index 12c4edc25c5..7eb9488916f 100644
--- a/apps/files/l10n/mk.json
+++ b/apps/files/l10n/mk.json
@@ -49,6 +49,7 @@
"You deleted %1$s" : "Вие избришавте %1$s",
"%2$s deleted %1$s" : "%2$s избришани %1$s",
"%s could not be renamed" : "%s не може да биде преименуван",
+ "Upload (max. %s)" : "Префрлање (макс. %s)",
"File handling" : "Ракување со датотеки",
"Maximum upload size" : "Максимална големина за подигање",
"max. possible: " : "макс. можно:",
diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js
index 01363c80c27..84907aa2af7 100644
--- a/apps/files/l10n/nl.js
+++ b/apps/files/l10n/nl.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Verwijderen",
"Disconnect storage" : "Verbinding met opslag verbreken",
"Unshare" : "Stop met delen",
+ "No permission to delete" : "Geen permissie om te verwijderen",
"Download" : "Downloaden",
"Select" : "Selecteer",
"Pending" : "In behandeling",
diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json
index 1b8a2381de6..cee8ce6886d 100644
--- a/apps/files/l10n/nl.json
+++ b/apps/files/l10n/nl.json
@@ -40,6 +40,7 @@
"Delete" : "Verwijderen",
"Disconnect storage" : "Verbinding met opslag verbreken",
"Unshare" : "Stop met delen",
+ "No permission to delete" : "Geen permissie om te verwijderen",
"Download" : "Downloaden",
"Select" : "Selecteer",
"Pending" : "In behandeling",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 83343a9444e..a55e0e88b69 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Excluir",
"Disconnect storage" : "Desconectar armazenagem",
"Unshare" : "Descompartilhar",
+ "No permission to delete" : "Sem permissão para excluir",
"Download" : "Baixar",
"Select" : "Selecionar",
"Pending" : "Pendente",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 42bacf971b2..0129b544ab4 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -40,6 +40,7 @@
"Delete" : "Excluir",
"Disconnect storage" : "Desconectar armazenagem",
"Unshare" : "Descompartilhar",
+ "No permission to delete" : "Sem permissão para excluir",
"Download" : "Baixar",
"Select" : "Selecionar",
"Pending" : "Pendente",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index e6f3b43bf04..f69b4a9817e 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Удалить",
"Disconnect storage" : "Отсоединить хранилище",
"Unshare" : "Закрыть доступ",
+ "No permission to delete" : "Недостаточно прав для удаления",
"Download" : "Скачать",
"Select" : "Выбрать",
"Pending" : "Ожидание",
@@ -55,15 +56,15 @@ OC.L10N.register(
"Name" : "Имя",
"Size" : "Размер",
"Modified" : "Изменён",
- "_%n folder_::_%n folders_" : ["%n каталог","%n каталога","%n каталогов"],
- "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов"],
+ "_%n folder_::_%n folders_" : ["%n каталог","%n каталога","%n каталогов","%n каталогов"],
+ "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов","%n файлов"],
"You don’t have permission to upload or create files here" : "У вас нет прав для загрузки или создания файлов здесь.",
- "_Uploading %n file_::_Uploading %n files_" : ["Закачка %n файла","Закачка %n файлов","Закачка %n файлов"],
+ "_Uploading %n file_::_Uploading %n files_" : ["Закачка %n файла","Закачка %n файлов","Закачка %n файлов","Закачка %n файлов"],
"\"{name}\" is an invalid file name." : "\"{name}\" это неправильное имя файла.",
"File name cannot be empty." : "Имя файла не может быть пустым.",
"Your storage is full, files can not be updated or synced anymore!" : "Ваше хранилище заполнено, произведите очистку перед загрузкой новых файлов.",
"Your storage is almost full ({usedSpacePercent}%)" : "Ваше хранилище почти заполнено ({usedSpacePercent}%)",
- "_matches '{filter}'_::_match '{filter}'_" : ["соответствует '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'"],
+ "_matches '{filter}'_::_match '{filter}'_" : ["соответствует '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'"],
"{dirs} and {files}" : "{dirs} и {files}",
"Favorited" : "Избранное",
"Favorite" : "Избранное",
@@ -111,4 +112,4 @@ OC.L10N.register(
"No favorites" : "Нет избранного",
"Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index 66e059a160e..1099ca30b0d 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -40,6 +40,7 @@
"Delete" : "Удалить",
"Disconnect storage" : "Отсоединить хранилище",
"Unshare" : "Закрыть доступ",
+ "No permission to delete" : "Недостаточно прав для удаления",
"Download" : "Скачать",
"Select" : "Выбрать",
"Pending" : "Ожидание",
@@ -53,15 +54,15 @@
"Name" : "Имя",
"Size" : "Размер",
"Modified" : "Изменён",
- "_%n folder_::_%n folders_" : ["%n каталог","%n каталога","%n каталогов"],
- "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов"],
+ "_%n folder_::_%n folders_" : ["%n каталог","%n каталога","%n каталогов","%n каталогов"],
+ "_%n file_::_%n files_" : ["%n файл","%n файла","%n файлов","%n файлов"],
"You don’t have permission to upload or create files here" : "У вас нет прав для загрузки или создания файлов здесь.",
- "_Uploading %n file_::_Uploading %n files_" : ["Закачка %n файла","Закачка %n файлов","Закачка %n файлов"],
+ "_Uploading %n file_::_Uploading %n files_" : ["Закачка %n файла","Закачка %n файлов","Закачка %n файлов","Закачка %n файлов"],
"\"{name}\" is an invalid file name." : "\"{name}\" это неправильное имя файла.",
"File name cannot be empty." : "Имя файла не может быть пустым.",
"Your storage is full, files can not be updated or synced anymore!" : "Ваше хранилище заполнено, произведите очистку перед загрузкой новых файлов.",
"Your storage is almost full ({usedSpacePercent}%)" : "Ваше хранилище почти заполнено ({usedSpacePercent}%)",
- "_matches '{filter}'_::_match '{filter}'_" : ["соответствует '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'"],
+ "_matches '{filter}'_::_match '{filter}'_" : ["соответствует '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'","соответствуют '{filter}'"],
"{dirs} and {files}" : "{dirs} и {files}",
"Favorited" : "Избранное",
"Favorite" : "Избранное",
@@ -108,5 +109,5 @@
"Currently scanning" : "В настоящее время сканируется",
"No favorites" : "Нет избранного",
"Files and folders you mark as favorite will show up here" : "Здесь появятся файлы и каталоги, отмеченные как избранные"
-},"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);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js
index 712346c3cf9..a4a15c932e0 100644
--- a/apps/files/l10n/sl.js
+++ b/apps/files/l10n/sl.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Izbriši",
"Disconnect storage" : "Odklopi shrambo",
"Unshare" : "Prekini souporabo",
+ "No permission to delete" : "Nimate pravic za brisanje",
"Download" : "Prejmi",
"Select" : "Izberi",
"Pending" : "V čakanju ...",
diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json
index 75f96fcc1e4..9c6ed85e9a9 100644
--- a/apps/files/l10n/sl.json
+++ b/apps/files/l10n/sl.json
@@ -40,6 +40,7 @@
"Delete" : "Izbriši",
"Disconnect storage" : "Odklopi shrambo",
"Unshare" : "Prekini souporabo",
+ "No permission to delete" : "Nimate pravic za brisanje",
"Download" : "Prejmi",
"Select" : "Izberi",
"Pending" : "V čakanju ...",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 0064fd19818..eb0d35954e7 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Обриши",
"Disconnect storage" : "Искључи складиште",
"Unshare" : "Не дели",
+ "No permission to delete" : "Без дозволе за брисање",
"Download" : "Преузми",
"Select" : "Изабери",
"Pending" : "На чекању",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index 7a27e3d89fb..5451caae81b 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -40,6 +40,7 @@
"Delete" : "Обриши",
"Disconnect storage" : "Искључи складиште",
"Unshare" : "Не дели",
+ "No permission to delete" : "Без дозволе за брисање",
"Download" : "Преузми",
"Select" : "Изабери",
"Pending" : "На чекању",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 5e42cf4c6ae..e7c197c1adc 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Sil",
"Disconnect storage" : "Depolama bağlantısını kes",
"Unshare" : "Paylaşmayı Kaldır",
+ "No permission to delete" : "Silmeye izin yok",
"Download" : "İndir",
"Select" : "Seç",
"Pending" : "Bekliyor",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 34a26f72389..82c83bfc690 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -40,6 +40,7 @@
"Delete" : "Sil",
"Disconnect storage" : "Depolama bağlantısını kes",
"Unshare" : "Paylaşmayı Kaldır",
+ "No permission to delete" : "Silmeye izin yok",
"Download" : "İndir",
"Select" : "Seç",
"Pending" : "Bekliyor",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index a9496a55823..e8c0ccd8a6c 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -42,6 +42,7 @@ OC.L10N.register(
"Delete" : "Видалити",
"Disconnect storage" : "Від’єднати сховище",
"Unshare" : "Закрити доступ",
+ "No permission to delete" : "Недостатньо прав для видалення",
"Download" : "Завантажити",
"Select" : "Оберіть",
"Pending" : "Очікування",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index c34b8501ae9..82aa81d4cc1 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -40,6 +40,7 @@
"Delete" : "Видалити",
"Disconnect storage" : "Від’єднати сховище",
"Unshare" : "Закрити доступ",
+ "No permission to delete" : "Недостатньо прав для видалення",
"Download" : "Завантажити",
"Select" : "Оберіть",
"Pending" : "Очікування",
diff --git a/apps/files/tests/js/fileUploadSpec.js b/apps/files/tests/js/fileUploadSpec.js
index 49b7265ced1..817654c4fa9 100644
--- a/apps/files/tests/js/fileUploadSpec.js
+++ b/apps/files/tests/js/fileUploadSpec.js
@@ -35,7 +35,14 @@ describe('OC.Upload tests', function() {
$('#testArea').append(
'<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' +
'<input type="hidden" id="upload_limit" name="upload_limit" value="10000000">' + // 10 MB
- '<input type="hidden" id="free_space" name="free_space" value="50000000">' // 50 MB
+ '<input type="hidden" id="free_space" name="free_space" value="50000000">' + // 50 MB
+ // TODO: handlebars!
+ '<div id="new">' +
+ '<a>New</a>' +
+ '<ul>' +
+ '<li data-type="file" data-newname="New text file.txt"><p>Text file</p></li>' +
+ '</ul>' +
+ '</div>'
);
$dummyUploader = $('#file_upload_start');
});
@@ -111,4 +118,54 @@ 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/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js
index 828aec9b6b9..53fa8707674 100644
--- a/apps/files/tests/js/fileactionsSpec.js
+++ b/apps/files/tests/js/fileactionsSpec.js
@@ -157,6 +157,48 @@ describe('OCA.Files.FileActions tests', function() {
expect(deleteStub.getCall(0).args[1]).toEqual('/somepath/dir');
deleteStub.restore();
});
+ it('shows delete hint when no permission to delete', function() {
+ var deleteStub = sinon.stub(fileList, 'do_delete');
+ var fileData = {
+ id: 18,
+ type: 'file',
+ name: 'testName.txt',
+ path: '/somepath/dir',
+ mimetype: 'text/plain',
+ size: '1234',
+ etag: 'a01234c',
+ mtime: '123456',
+ permissions: OC.PERMISSION_READ
+ };
+ var $tr = fileList.add(fileData);
+ FileActions.display($tr.find('td.filename'), true, fileList);
+
+ var $action = $tr.find('.action.delete');
+
+ expect($action.hasClass('no-permission')).toEqual(true);
+ deleteStub.restore();
+ });
+ it('shows delete hint not when permission to delete', function() {
+ var deleteStub = sinon.stub(fileList, 'do_delete');
+ var fileData = {
+ id: 18,
+ type: 'file',
+ name: 'testName.txt',
+ path: '/somepath/dir',
+ mimetype: 'text/plain',
+ size: '1234',
+ etag: 'a01234c',
+ mtime: '123456',
+ permissions: OC.PERMISSION_DELETE
+ };
+ var $tr = fileList.add(fileData);
+ FileActions.display($tr.find('td.filename'), true, fileList);
+
+ var $action = $tr.find('.action.delete');
+
+ expect($action.hasClass('no-permission')).toEqual(false);
+ deleteStub.restore();
+ });
it('passes context to action handler', function() {
var actionStub = sinon.stub();
var fileData = {
diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json
index 8992220d843..9680d92e548 100644
--- a/apps/files_external/3rdparty/composer.json
+++ b/apps/files_external/3rdparty/composer.json
@@ -6,7 +6,7 @@
"vendor-dir": "."
},
"require": {
- "icewind/smb": "1.0.0",
+ "icewind/smb": "1.0.1",
"icewind/streams": "0.2"
}
}
diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock
index ffd5c7c3c65..84fbb046d5a 100644
--- a/apps/files_external/3rdparty/composer.lock
+++ b/apps/files_external/3rdparty/composer.lock
@@ -4,24 +4,24 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "2554253c9f91c67cd0db753a69105bc0",
+ "hash": "7b46d64e33feb600c5f0ec830b211e6f",
"packages": [
{
"name": "icewind/smb",
- "version": "v1.0.0",
+ "version": "v1.0.1",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "4f5d9db3a9397e30476f92eb753751b54d6d4fa5"
+ "reference": "8041bc1960bf2da94e60b88b34e5c78300eac476"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/4f5d9db3a9397e30476f92eb753751b54d6d4fa5",
- "reference": "4f5d9db3a9397e30476f92eb753751b54d6d4fa5",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/8041bc1960bf2da94e60b88b34e5c78300eac476",
+ "reference": "8041bc1960bf2da94e60b88b34e5c78300eac476",
"shasum": ""
},
"require": {
- "icewind/streams": "0.2.x",
+ "icewind/streams": "0.2.*",
"php": ">=5.3"
},
"require-dev": {
@@ -45,7 +45,7 @@
}
],
"description": "php wrapper for smbclient and libsmbclient-php",
- "time": "2015-04-10 12:10:08"
+ "time": "2015-04-20 11:16:24"
},
{
"name": "icewind/streams",
diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json
index 441ed1f14fa..42e8fdd29db 100644
--- a/apps/files_external/3rdparty/composer/installed.json
+++ b/apps/files_external/3rdparty/composer/installed.json
@@ -43,27 +43,27 @@
},
{
"name": "icewind/smb",
- "version": "v1.0.0",
- "version_normalized": "1.0.0.0",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "4f5d9db3a9397e30476f92eb753751b54d6d4fa5"
+ "reference": "8041bc1960bf2da94e60b88b34e5c78300eac476"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/4f5d9db3a9397e30476f92eb753751b54d6d4fa5",
- "reference": "4f5d9db3a9397e30476f92eb753751b54d6d4fa5",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/8041bc1960bf2da94e60b88b34e5c78300eac476",
+ "reference": "8041bc1960bf2da94e60b88b34e5c78300eac476",
"shasum": ""
},
"require": {
- "icewind/streams": "0.2.x",
+ "icewind/streams": "0.2.*",
"php": ">=5.3"
},
"require-dev": {
"satooshi/php-coveralls": "dev-master"
},
- "time": "2015-04-10 12:10:08",
+ "time": "2015-04-20 11:16:24",
"type": "library",
"installation-source": "source",
"autoload": {
diff --git a/apps/files_external/3rdparty/icewind/smb/composer.json b/apps/files_external/3rdparty/icewind/smb/composer.json
index 92f4280d775..593eb728716 100644
--- a/apps/files_external/3rdparty/icewind/smb/composer.json
+++ b/apps/files_external/3rdparty/icewind/smb/composer.json
@@ -10,7 +10,7 @@
],
"require" : {
"php": ">=5.3",
- "icewind/streams": "0.2.x"
+ "icewind/streams": "0.2.*"
},
"require-dev": {
"satooshi/php-coveralls" : "dev-master"
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Parser.php b/apps/files_external/3rdparty/icewind/smb/src/Parser.php
index 8b4de7825e4..6af70143c52 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Parser.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Parser.php
@@ -91,7 +91,6 @@ class Parser {
$mode = 0;
$size = 0;
foreach ($output as $line) {
- list($name, $value) = explode(':', $line, 2);
// A line = explode statement may not fill all array elements
// properly. May happen when accessing non Windows Fileservers
$words = explode(':', $line, 2);
diff --git a/apps/files_external/l10n/de_AT.js b/apps/files_external/l10n/de_AT.js
index c4a56bb7a5f..5dbc69e2966 100644
--- a/apps/files_external/l10n/de_AT.js
+++ b/apps/files_external/l10n/de_AT.js
@@ -4,9 +4,11 @@ OC.L10N.register(
"Location" : "Ort",
"Port" : "Port",
"Host" : "Host",
+ "Username" : "Benutzername",
"Password" : "Passwort",
"Share" : "Freigeben",
"Personal" : "Persönlich",
+ "Folder name" : "Ordner Name",
"Delete" : "Löschen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de_AT.json b/apps/files_external/l10n/de_AT.json
index 3dea5f2cd58..7fd1d456c58 100644
--- a/apps/files_external/l10n/de_AT.json
+++ b/apps/files_external/l10n/de_AT.json
@@ -2,9 +2,11 @@
"Location" : "Ort",
"Port" : "Port",
"Host" : "Host",
+ "Username" : "Benutzername",
"Password" : "Passwort",
"Share" : "Freigeben",
"Personal" : "Persönlich",
+ "Folder name" : "Ordner Name",
"Delete" : "Löschen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js
index 4f9bf8adc3c..e4dfb3effcc 100644
--- a/apps/files_external/l10n/en_GB.js
+++ b/apps/files_external/l10n/en_GB.js
@@ -64,6 +64,7 @@ OC.L10N.register(
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
"No external storage configured" : "No external storage configured",
+ "You can add external storages in the personal settings" : "You can add external storages in the personal settings",
"Name" : "Name",
"Storage type" : "Storage type",
"Scope" : "Scope",
@@ -72,6 +73,7 @@ OC.L10N.register(
"Configuration" : "Configuration",
"Available for" : "Available for",
"Add storage" : "Add storage",
+ "Advanced settings" : "Advanced settings",
"Delete" : "Delete",
"Enable User External Storage" : "Enable User External Storage",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage"
diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json
index ca49348ab72..6b66198cef4 100644
--- a/apps/files_external/l10n/en_GB.json
+++ b/apps/files_external/l10n/en_GB.json
@@ -62,6 +62,7 @@
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.",
"No external storage configured" : "No external storage configured",
+ "You can add external storages in the personal settings" : "You can add external storages in the personal settings",
"Name" : "Name",
"Storage type" : "Storage type",
"Scope" : "Scope",
@@ -70,6 +71,7 @@
"Configuration" : "Configuration",
"Available for" : "Available for",
"Add storage" : "Add storage",
+ "Advanced settings" : "Advanced settings",
"Delete" : "Delete",
"Enable User External Storage" : "Enable User External Storage",
"Allow users to mount the following external storage" : "Allow users to mount the following external storage"
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index f63553fe50a..4b6b3b7d305 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -37,7 +37,7 @@ OC.L10N.register(
"Password (required for OpenStack Object Storage)" : "Mot de passe (requis pour OpenStack Object Storage)",
"Service Name (required for OpenStack Object Storage)" : "Nom du service (requis pour le stockage OpenStack)",
"URL of identity endpoint (required for OpenStack Object Storage)" : "URL du point d'accès d'identité (requis pour le stockage OpenStack)",
- "Timeout of HTTP requests in seconds" : "Temps maximal de requête HTTP en seconde",
+ "Timeout of HTTP requests in seconds" : "Délai d'attente maximal des requêtes HTTP en secondes",
"Share" : "Partager",
"SMB / CIFS using OC login" : "SMB / CIFS en utilisant les identifiants OC",
"Username as share" : "Nom d'utilisateur comme nom de partage",
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index af99c2c935a..add46dd3021 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -35,7 +35,7 @@
"Password (required for OpenStack Object Storage)" : "Mot de passe (requis pour OpenStack Object Storage)",
"Service Name (required for OpenStack Object Storage)" : "Nom du service (requis pour le stockage OpenStack)",
"URL of identity endpoint (required for OpenStack Object Storage)" : "URL du point d'accès d'identité (requis pour le stockage OpenStack)",
- "Timeout of HTTP requests in seconds" : "Temps maximal de requête HTTP en seconde",
+ "Timeout of HTTP requests in seconds" : "Délai d'attente maximal des requêtes HTTP en secondes",
"Share" : "Partager",
"SMB / CIFS using OC login" : "SMB / CIFS en utilisant les identifiants OC",
"Username as share" : "Nom d'utilisateur comme nom de partage",
diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js
index c4b262945ea..81d243b12ae 100644
--- a/apps/files_external/l10n/id.js
+++ b/apps/files_external/l10n/id.js
@@ -44,6 +44,9 @@ OC.L10N.register(
"URL" : "URL",
"Secure https://" : "Secure https://",
"Public key" : "Kunci Public",
+ "Storage with id \"%i\" not found" : "Penyimpanan dengan id \"%i\" tidak ditemukan",
+ "Invalid mount point" : "Mount point salah",
+ "Invalid storage backend \"%s\"" : "Backend penyimpanan \"%s\" salah",
"Access granted" : "Akses diberikan",
"Error configuring Dropbox storage" : "Kesalahan dalam mengonfigurasi penyimpanan Dropbox",
"Grant access" : "Berikan hak akses",
@@ -53,10 +56,15 @@ OC.L10N.register(
"All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.",
"(group)" : "(grup)",
"Saved" : "Disimpan",
+ "Generate keys" : "Hasilkan kunci",
+ "Error generating key pair" : "Kesalahan saat menghasilkan pasangan kunci",
"<b>Note:</b> " : "<b>Catatan:</b> ",
+ "and" : "dan",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
+ "No external storage configured" : "Penyimpanan eksternal tidak dikonfigurasi",
+ "You can add external storages in the personal settings" : "Anda dapat menambahkan penyimpanan eksternal di pengaturan pribadi",
"Name" : "Nama",
"Storage type" : "Tipe penyimpanan",
"Scope" : "Skop",
@@ -65,6 +73,7 @@ OC.L10N.register(
"Configuration" : "Konfigurasi",
"Available for" : "Tersedia untuk",
"Add storage" : "Tambahkan penyimpanan",
+ "Advanced settings" : "Pengaturan Lanjutan",
"Delete" : "Hapus",
"Enable User External Storage" : "Aktifkan Penyimpanan Eksternal Pengguna",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut"
diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json
index da9f676d772..b8acdedfd2d 100644
--- a/apps/files_external/l10n/id.json
+++ b/apps/files_external/l10n/id.json
@@ -42,6 +42,9 @@
"URL" : "URL",
"Secure https://" : "Secure https://",
"Public key" : "Kunci Public",
+ "Storage with id \"%i\" not found" : "Penyimpanan dengan id \"%i\" tidak ditemukan",
+ "Invalid mount point" : "Mount point salah",
+ "Invalid storage backend \"%s\"" : "Backend penyimpanan \"%s\" salah",
"Access granted" : "Akses diberikan",
"Error configuring Dropbox storage" : "Kesalahan dalam mengonfigurasi penyimpanan Dropbox",
"Grant access" : "Berikan hak akses",
@@ -51,10 +54,15 @@
"All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.",
"(group)" : "(grup)",
"Saved" : "Disimpan",
+ "Generate keys" : "Hasilkan kunci",
+ "Error generating key pair" : "Kesalahan saat menghasilkan pasangan kunci",
"<b>Note:</b> " : "<b>Catatan:</b> ",
+ "and" : "dan",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.",
+ "No external storage configured" : "Penyimpanan eksternal tidak dikonfigurasi",
+ "You can add external storages in the personal settings" : "Anda dapat menambahkan penyimpanan eksternal di pengaturan pribadi",
"Name" : "Nama",
"Storage type" : "Tipe penyimpanan",
"Scope" : "Skop",
@@ -63,6 +71,7 @@
"Configuration" : "Konfigurasi",
"Available for" : "Tersedia untuk",
"Add storage" : "Tambahkan penyimpanan",
+ "Advanced settings" : "Pengaturan Lanjutan",
"Delete" : "Hapus",
"Enable User External Storage" : "Aktifkan Penyimpanan Eksternal Pengguna",
"Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut"
diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js
index 0ef3945c353..644c4a06546 100644
--- a/apps/files_external/l10n/is.js
+++ b/apps/files_external/l10n/is.js
@@ -20,4 +20,4 @@ OC.L10N.register(
"Delete" : "Eyða",
"Enable User External Storage" : "Virkja ytra gagnasvæði notenda"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json
index c5d55bea9ce..512f0ed76b9 100644
--- a/apps/files_external/l10n/is.json
+++ b/apps/files_external/l10n/is.json
@@ -17,5 +17,5 @@
"Configuration" : "Uppsetning",
"Delete" : "Eyða",
"Enable User External Storage" : "Virkja ytra gagnasvæði notenda"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js
index 164a6b4f5b0..61996d8ba27 100644
--- a/apps/files_external/l10n/ko.js
+++ b/apps/files_external/l10n/ko.js
@@ -44,6 +44,9 @@ OC.L10N.register(
"URL" : "URL",
"Secure https://" : "보안 https://",
"Public key" : "공개 키",
+ "Storage with id \"%i\" not found" : "ID가 \"%i\"인 저장소를 찾을 수 없음",
+ "Invalid mount point" : "잘못된 마운트 지점",
+ "Invalid storage backend \"%s\"" : "잘못된 저장소 백엔드 \"%s\"",
"Access granted" : "접근 허가됨",
"Error configuring Dropbox storage" : "Dropbox 저장소 설정 오류",
"Grant access" : "접근 권한 부여",
@@ -53,12 +56,15 @@ OC.L10N.register(
"All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오",
"(group)" : "(그룹)",
"Saved" : "저장됨",
+ "Generate keys" : "키 생성",
+ "Error generating key pair" : "키 쌍을 생성하는 중 오류 발생",
"<b>Note:</b> " : "<b>메모:</b>",
"and" : "그리고",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP cURL 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP FTP 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> \"%s\"이(가) 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"No external storage configured" : "외부 저장소가 설정되지 않았음",
+ "You can add external storages in the personal settings" : "개인 설정에서 외부 저장소를 추가할 수 있습니다",
"Name" : "이름",
"Storage type" : "저장소 종류",
"Scope" : "범위",
@@ -67,6 +73,7 @@ OC.L10N.register(
"Configuration" : "설정",
"Available for" : "다음으로 사용 가능",
"Add storage" : "저장소 추가",
+ "Advanced settings" : "고급 설정",
"Delete" : "삭제",
"Enable User External Storage" : "사용자 외부 저장소 사용",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용"
diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json
index b68e18e2581..d0fabd105e1 100644
--- a/apps/files_external/l10n/ko.json
+++ b/apps/files_external/l10n/ko.json
@@ -42,6 +42,9 @@
"URL" : "URL",
"Secure https://" : "보안 https://",
"Public key" : "공개 키",
+ "Storage with id \"%i\" not found" : "ID가 \"%i\"인 저장소를 찾을 수 없음",
+ "Invalid mount point" : "잘못된 마운트 지점",
+ "Invalid storage backend \"%s\"" : "잘못된 저장소 백엔드 \"%s\"",
"Access granted" : "접근 허가됨",
"Error configuring Dropbox storage" : "Dropbox 저장소 설정 오류",
"Grant access" : "접근 권한 부여",
@@ -51,12 +54,15 @@
"All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오",
"(group)" : "(그룹)",
"Saved" : "저장됨",
+ "Generate keys" : "키 생성",
+ "Error generating key pair" : "키 쌍을 생성하는 중 오류 발생",
"<b>Note:</b> " : "<b>메모:</b>",
"and" : "그리고",
"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP cURL 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> PHP FTP 모듈이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>메모:</b> \"%s\"이(가) 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.",
"No external storage configured" : "외부 저장소가 설정되지 않았음",
+ "You can add external storages in the personal settings" : "개인 설정에서 외부 저장소를 추가할 수 있습니다",
"Name" : "이름",
"Storage type" : "저장소 종류",
"Scope" : "범위",
@@ -65,6 +71,7 @@
"Configuration" : "설정",
"Available for" : "다음으로 사용 가능",
"Add storage" : "저장소 추가",
+ "Advanced settings" : "고급 설정",
"Delete" : "삭제",
"Enable User External Storage" : "사용자 외부 저장소 사용",
"Allow users to mount the following external storage" : "사용자가 다음 외부 저장소를 마운트할 수 있도록 허용"
diff --git a/apps/files_external/l10n/lb.js b/apps/files_external/l10n/lb.js
index 6bd258b4234..eb46704c970 100644
--- a/apps/files_external/l10n/lb.js
+++ b/apps/files_external/l10n/lb.js
@@ -9,6 +9,7 @@ OC.L10N.register(
"Share" : "Deelen",
"URL" : "URL",
"Personal" : "Perséinlech",
+ "Saved" : "Gespäichert",
"Name" : "Numm",
"Folder name" : "Dossiers Numm:",
"Delete" : "Läschen"
diff --git a/apps/files_external/l10n/lb.json b/apps/files_external/l10n/lb.json
index 0c5143c4f0d..a1e3e397636 100644
--- a/apps/files_external/l10n/lb.json
+++ b/apps/files_external/l10n/lb.json
@@ -7,6 +7,7 @@
"Share" : "Deelen",
"URL" : "URL",
"Personal" : "Perséinlech",
+ "Saved" : "Gespäichert",
"Name" : "Numm",
"Folder name" : "Dossiers Numm:",
"Delete" : "Läschen"
diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js
index 07bd765ff80..aafb4b36551 100644
--- a/apps/files_external/l10n/ru.js
+++ b/apps/files_external/l10n/ru.js
@@ -78,4 +78,4 @@ OC.L10N.register(
"Enable User External Storage" : "Включить пользовательские внешние хранилища",
"Allow users to mount the following external storage" : "Разрешить пользователям монтировать следующие сервисы хранения данных"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json
index 40ea8e23563..b01779e83d1 100644
--- a/apps/files_external/l10n/ru.json
+++ b/apps/files_external/l10n/ru.json
@@ -75,5 +75,5 @@
"Delete" : "Удалить",
"Enable User External Storage" : "Включить пользовательские внешние хранилища",
"Allow users to mount the following external storage" : "Разрешить пользователям монтировать следующие сервисы хранения данных"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sr.js b/apps/files_external/l10n/sr.js
index 0187a2526eb..8e88a5cd4f0 100644
--- a/apps/files_external/l10n/sr.js
+++ b/apps/files_external/l10n/sr.js
@@ -39,13 +39,13 @@ OC.L10N.register(
"URL of identity endpoint (required for OpenStack Object Storage)" : "Адреса идентитета крајње тачке (потребно за OpenStack Object Storage)",
"Timeout of HTTP requests in seconds" : "Време истека ХТТП захтева у секундама",
"Share" : "Дели",
- "SMB / CIFS using OC login" : "СМБ/ЦИФС користећи Оунклауд пријаву",
+ "SMB / CIFS using OC login" : "СМБ/ЦИФС користећи оунКлауд пријаву",
"Username as share" : "Корисничко име као дељење",
"URL" : "УРЛ",
"Secure https://" : "Сигурни https://",
"Public key" : "Јавни кључ",
"Storage with id \"%i\" not found" : "Складиште са идентификацијом \"%i\" није пронађено",
- "Invalid mount point" : "Неважећа тачка постављања",
+ "Invalid mount point" : "Неисправна тачка монтирања",
"Invalid storage backend \"%s\"" : "Неважећа позадина складишта \"%s\"",
"Access granted" : "Приступ одобрен",
"Error configuring Dropbox storage" : "Грешка при подешавању Дропбокс складишта",
@@ -73,7 +73,7 @@ OC.L10N.register(
"Configuration" : "Подешавање",
"Available for" : "Доступно за",
"Add storage" : "Додај складиште",
- "Advanced settings" : "Напредне подешавања",
+ "Advanced settings" : "Напредне поставке",
"Delete" : "Обриши",
"Enable User External Storage" : "Укључи корисничко спољашње складиште",
"Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта"
diff --git a/apps/files_external/l10n/sr.json b/apps/files_external/l10n/sr.json
index 76d12974695..957df08276e 100644
--- a/apps/files_external/l10n/sr.json
+++ b/apps/files_external/l10n/sr.json
@@ -37,13 +37,13 @@
"URL of identity endpoint (required for OpenStack Object Storage)" : "Адреса идентитета крајње тачке (потребно за OpenStack Object Storage)",
"Timeout of HTTP requests in seconds" : "Време истека ХТТП захтева у секундама",
"Share" : "Дели",
- "SMB / CIFS using OC login" : "СМБ/ЦИФС користећи Оунклауд пријаву",
+ "SMB / CIFS using OC login" : "СМБ/ЦИФС користећи оунКлауд пријаву",
"Username as share" : "Корисничко име као дељење",
"URL" : "УРЛ",
"Secure https://" : "Сигурни https://",
"Public key" : "Јавни кључ",
"Storage with id \"%i\" not found" : "Складиште са идентификацијом \"%i\" није пронађено",
- "Invalid mount point" : "Неважећа тачка постављања",
+ "Invalid mount point" : "Неисправна тачка монтирања",
"Invalid storage backend \"%s\"" : "Неважећа позадина складишта \"%s\"",
"Access granted" : "Приступ одобрен",
"Error configuring Dropbox storage" : "Грешка при подешавању Дропбокс складишта",
@@ -71,7 +71,7 @@
"Configuration" : "Подешавање",
"Available for" : "Доступно за",
"Add storage" : "Додај складиште",
- "Advanced settings" : "Напредне подешавања",
+ "Advanced settings" : "Напредне поставке",
"Delete" : "Обриши",
"Enable User External Storage" : "Укључи корисничко спољашње складиште",
"Allow users to mount the following external storage" : "Дозволи корисницима да монтирају следећа спољашња складишта"
diff --git a/apps/files_external/l10n/th_TH.js b/apps/files_external/l10n/th_TH.js
index a86b399fde0..70646a59a02 100644
--- a/apps/files_external/l10n/th_TH.js
+++ b/apps/files_external/l10n/th_TH.js
@@ -15,6 +15,7 @@ OC.L10N.register(
"Grant access" : "อนุญาตให้เข้าถึงได้",
"Error configuring Google Drive storage" : "เกิดข้อผิดพลาดในการกำหนดค่าการจัดเก็บข้อมูลในพื้นที่ของ Google Drive",
"Personal" : "ส่วนตัว",
+ "Saved" : "บันทึกแล้ว",
"Name" : "ชื่อ",
"External Storage" : "พื้นทีจัดเก็บข้อมูลจากภายนอก",
"Folder name" : "ชื่อโฟลเดอร์",
diff --git a/apps/files_external/l10n/th_TH.json b/apps/files_external/l10n/th_TH.json
index a5612ff444e..a69043a0c55 100644
--- a/apps/files_external/l10n/th_TH.json
+++ b/apps/files_external/l10n/th_TH.json
@@ -13,6 +13,7 @@
"Grant access" : "อนุญาตให้เข้าถึงได้",
"Error configuring Google Drive storage" : "เกิดข้อผิดพลาดในการกำหนดค่าการจัดเก็บข้อมูลในพื้นที่ของ Google Drive",
"Personal" : "ส่วนตัว",
+ "Saved" : "บันทึกแล้ว",
"Name" : "ชื่อ",
"External Storage" : "พื้นทีจัดเก็บข้อมูลจากภายนอก",
"Folder name" : "ชื่อโฟลเดอร์",
diff --git a/apps/files_external/tests/env/start-ftp-morrisjobke.sh b/apps/files_external/tests/env/start-ftp-morrisjobke.sh
index 3831e788e5e..a082e6195fb 100755
--- a/apps/files_external/tests/env/start-ftp-morrisjobke.sh
+++ b/apps/files_external/tests/env/start-ftp-morrisjobke.sh
@@ -23,7 +23,7 @@ echo "Fetch recent morrisjobke/docker-proftpd docker image"
docker pull morrisjobke/docker-proftpd
# retrieve current folder to place the config in the parent folder
-thisFolder=`echo $0 | replace "env/start-ftp-morrisjobke.sh" ""`
+thisFolder=`echo $0 | sed 's#env/start-ftp-morrisjobke\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/start-sftp-atmoz.sh b/apps/files_external/tests/env/start-sftp-atmoz.sh
index f77c7a3fddd..04b829add59 100755
--- a/apps/files_external/tests/env/start-sftp-atmoz.sh
+++ b/apps/files_external/tests/env/start-sftp-atmoz.sh
@@ -23,7 +23,7 @@ echo "Fetch recent atmoz/sftp docker image"
docker pull atmoz/sftp
# retrieve current folder to place the config in the parent folder
-thisFolder=`echo $0 | replace "env/start-sftp-atmoz.sh" ""`
+thisFolder=`echo $0 | sed 's#env/start-sftp-atmoz\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/start-smb-silvershell.sh b/apps/files_external/tests/env/start-smb-silvershell.sh
index f72ad3f9e23..afada44d4f7 100755
--- a/apps/files_external/tests/env/start-smb-silvershell.sh
+++ b/apps/files_external/tests/env/start-smb-silvershell.sh
@@ -23,7 +23,7 @@ echo "Fetch recent silvershell/samba docker image"
docker pull silvershell/samba
# retrieve current folder to place the config in the parent folder
-thisFolder=`echo $0 | replace "env/start-smb-silvershell.sh" ""`
+thisFolder=`echo $0 | sed 's#env/start-smb-silvershell\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/start-smb-windows.sh b/apps/files_external/tests/env/start-smb-windows.sh
index d56b0d4f0b5..a5a19ff1bcf 100755
--- a/apps/files_external/tests/env/start-smb-windows.sh
+++ b/apps/files_external/tests/env/start-smb-windows.sh
@@ -9,7 +9,7 @@
#
# retrieve current folder to place the config in the parent folder
-thisFolder=`echo $0 | replace "env/start-smb-windows.sh" ""`
+thisFolder=`echo $0 | sed 's#env/start-smb-windows\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/start-webdav-ownCloud.sh b/apps/files_external/tests/env/start-webdav-ownCloud.sh
index 58b87e8f05d..d6b36c8d90c 100755
--- a/apps/files_external/tests/env/start-webdav-ownCloud.sh
+++ b/apps/files_external/tests/env/start-webdav-ownCloud.sh
@@ -26,7 +26,7 @@ echo "Fetch recent morrisjobke/owncloud docker image"
docker pull morrisjobke/owncloud
# retrieve current folder to place the config in the parent folder
-thisFolder=`echo $0 | replace "env/start-webdav-ownCloud.sh" ""`
+thisFolder=`echo $0 | sed 's#env/start-webdav-ownCloud\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/stop-ftp-morrisjobke.sh b/apps/files_external/tests/env/stop-ftp-morrisjobke.sh
index d8c6cc4f307..899b9a53971 100755
--- a/apps/files_external/tests/env/stop-ftp-morrisjobke.sh
+++ b/apps/files_external/tests/env/stop-ftp-morrisjobke.sh
@@ -17,7 +17,7 @@ fi
echo "Docker executable found - stop and remove docker containers"
# retrieve current folder to remove the config from the parent folder
-thisFolder=`echo $0 | replace "env/stop-ftp-morrisjobke.sh" ""`
+thisFolder=`echo $0 | sed 's#env/stop-ftp-morrisjobke\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/stop-sftp-atmoz.sh b/apps/files_external/tests/env/stop-sftp-atmoz.sh
index 829855c807c..64570cfd68d 100755
--- a/apps/files_external/tests/env/stop-sftp-atmoz.sh
+++ b/apps/files_external/tests/env/stop-sftp-atmoz.sh
@@ -17,7 +17,7 @@ fi
echo "Docker executable found - stop and remove docker containers"
# retrieve current folder to remove the config from the parent folder
-thisFolder=`echo $0 | replace "env/stop-sftp-atmoz.sh" ""`
+thisFolder=`echo $0 | sed 's#env/stop-sftp-atmoz\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/stop-smb-silvershell.sh b/apps/files_external/tests/env/stop-smb-silvershell.sh
index 6ae28d15506..aae954284e9 100755
--- a/apps/files_external/tests/env/stop-smb-silvershell.sh
+++ b/apps/files_external/tests/env/stop-smb-silvershell.sh
@@ -17,7 +17,7 @@ fi
echo "Docker executable found - stop and remove docker containers"
# retrieve current folder to remove the config from the parent folder
-thisFolder=`echo $0 | replace "env/stop-smb-silvershell.sh" ""`
+thisFolder=`echo $0 | sed 's#env/stop-smb-silvershell\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/stop-smb-windows.sh b/apps/files_external/tests/env/stop-smb-windows.sh
index 8e9c82b9569..4f89451ce11 100755
--- a/apps/files_external/tests/env/stop-smb-windows.sh
+++ b/apps/files_external/tests/env/stop-smb-windows.sh
@@ -7,7 +7,7 @@
#
# retrieve current folder to remove the config from the parent folder
-thisFolder=`echo $0 | replace "env/stop-smb-windows.sh" ""`
+thisFolder=`echo $0 | sed 's#env/stop-smb-windows\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/env/stop-webdav-ownCloud.sh b/apps/files_external/tests/env/stop-webdav-ownCloud.sh
index 9d75c2bbd03..c87760a1052 100755
--- a/apps/files_external/tests/env/stop-webdav-ownCloud.sh
+++ b/apps/files_external/tests/env/stop-webdav-ownCloud.sh
@@ -17,7 +17,7 @@ fi
echo "Docker executable found - stop and remove docker containers"
# retrieve current folder to remove the config from the parent folder
-thisFolder=`echo $0 | replace "env/stop-webdav-ownCloud.sh" ""`
+thisFolder=`echo $0 | sed 's#env/stop-webdav-ownCloud\.sh##'`
if [ -z "$thisFolder" ]; then
thisFolder="."
diff --git a/apps/files_external/tests/js/mountsfilelistSpec.js b/apps/files_external/tests/js/mountsfilelistSpec.js
index a4e4fec1177..c7ea819d2fe 100644
--- a/apps/files_external/tests/js/mountsfilelistSpec.js
+++ b/apps/files_external/tests/js/mountsfilelistSpec.js
@@ -128,7 +128,7 @@ describe('OCA.External.FileList tests', function() {
'?dir=/another%20mount%20points/sftp%20mount'
);
expect($tr.find('.nametext').text().trim()).toEqual('sftp mount');
- expect($tr.find('.column-scope').text().trim()).toEqual('System');
+ expect($tr.find('.column-scope > span').text().trim()).toEqual('System');
expect($tr.find('.column-backend').text().trim()).toEqual('SFTP');
$tr = $rows.eq(1);
diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php
index 00509bcee69..03812800c17 100644
--- a/apps/files_sharing/api/local.php
+++ b/apps/files_sharing/api/local.php
@@ -68,6 +68,7 @@ class Local {
if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) {
$share['isPreviewAvailable'] = true;
}
+ $share['icon'] = substr(\OC_Helper::mimetypeIcon($share['mimetype']), 0, -3) . 'svg';
}
}
return new \OC_OCS_Result($shares);
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php
index d009fbca3b9..19d3b6cd9cc 100644
--- a/apps/files_sharing/appinfo/app.php
+++ b/apps/files_sharing/appinfo/app.php
@@ -25,31 +25,38 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
+namespace OCA\Files_Sharing\Appinfo;
+
$l = \OC::$server->getL10N('files_sharing');
-OC::$CLASSPATH['OC_Share_Backend_File'] = 'files_sharing/lib/share/file.php';
-OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'files_sharing/lib/share/folder.php';
-OC::$CLASSPATH['OC\Files\Storage\Shared'] = 'files_sharing/lib/sharedstorage.php';
-OC::$CLASSPATH['OC\Files\Cache\SharedScanner'] = 'files_sharing/lib/scanner.php';
-OC::$CLASSPATH['OC\Files\Cache\Shared_Cache'] = 'files_sharing/lib/cache.php';
-OC::$CLASSPATH['OC\Files\Cache\Shared_Permissions'] = 'files_sharing/lib/permissions.php';
-OC::$CLASSPATH['OC\Files\Cache\Shared_Updater'] = 'files_sharing/lib/updater.php';
-OC::$CLASSPATH['OC\Files\Cache\Shared_Watcher'] = 'files_sharing/lib/watcher.php';
-OC::$CLASSPATH['OCA\Files\Share\Maintainer'] = 'files_sharing/lib/maintainer.php';
-OC::$CLASSPATH['OCA\Files\Share\Proxy'] = 'files_sharing/lib/proxy.php';
+\OC::$CLASSPATH['OC_Share_Backend_File'] = 'files_sharing/lib/share/file.php';
+\OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'files_sharing/lib/share/folder.php';
+\OC::$CLASSPATH['OC\Files\Storage\Shared'] = 'files_sharing/lib/sharedstorage.php';
+\OC::$CLASSPATH['OC\Files\Cache\SharedScanner'] = 'files_sharing/lib/scanner.php';
+\OC::$CLASSPATH['OC\Files\Cache\Shared_Cache'] = 'files_sharing/lib/cache.php';
+\OC::$CLASSPATH['OC\Files\Cache\Shared_Permissions'] = 'files_sharing/lib/permissions.php';
+\OC::$CLASSPATH['OC\Files\Cache\Shared_Updater'] = 'files_sharing/lib/updater.php';
+\OC::$CLASSPATH['OC\Files\Cache\Shared_Watcher'] = 'files_sharing/lib/watcher.php';
+\OC::$CLASSPATH['OCA\Files\Share\Maintainer'] = 'files_sharing/lib/maintainer.php';
+\OC::$CLASSPATH['OCA\Files\Share\Proxy'] = 'files_sharing/lib/proxy.php';
// Exceptions
-OC::$CLASSPATH['OCA\Files_Sharing\Exceptions\BrokenPath'] = 'files_sharing/lib/exceptions.php';
+\OC::$CLASSPATH['OCA\Files_Sharing\Exceptions\BrokenPath'] = 'files_sharing/lib/exceptions.php';
+
+$application = new Application();
+$application->registerMountProviders();
+$application->setupPropagation();
\OCP\App::registerAdmin('files_sharing', 'settings-admin');
\OCA\Files_Sharing\Helper::registerHooks();
-OCP\Share::registerBackend('file', 'OC_Share_Backend_File');
-OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file');
+\OCP\Share::registerBackend('file', 'OC_Share_Backend_File');
+\OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file');
-OCP\Util::addScript('files_sharing', 'share');
-OCP\Util::addScript('files_sharing', 'external');
+\OCP\Util::addScript('files_sharing', 'share');
+\OCP\Util::addScript('files_sharing', 'external');
// FIXME: registering a job here will cause additional useless SQL queries
// when the route is not cron.php, needs a better way
diff --git a/apps/files_sharing/appinfo/application.php b/apps/files_sharing/appinfo/application.php
new file mode 100644
index 00000000000..0eb20945070
--- /dev/null
+++ b/apps/files_sharing/appinfo/application.php
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_Sharing\Appinfo;
+
+use OCA\Files_Sharing\Helper;
+use OCA\Files_Sharing\MountProvider;
+use OCA\Files_Sharing\Propagation\PropagationManager;
+use OCP\AppFramework\App;
+use OC\AppFramework\Utility\SimpleContainer;
+use OCA\Files_Sharing\Controllers\ExternalSharesController;
+use OCA\Files_Sharing\Controllers\ShareController;
+use OCA\Files_Sharing\Middleware\SharingCheckMiddleware;
+use \OCP\IContainer;
+
+class Application extends App {
+ public function __construct(array $urlParams = array()) {
+ parent::__construct('files_sharing', $urlParams);
+
+ $container = $this->getContainer();
+ $server = $container->getServer();
+
+ /**
+ * Controllers
+ */
+ $container->registerService('ShareController', function (SimpleContainer $c) use ($server) {
+ return new ShareController(
+ $c->query('AppName'),
+ $c->query('Request'),
+ $c->query('UserSession'),
+ $server->getAppConfig(),
+ $server->getConfig(),
+ $c->query('URLGenerator'),
+ $c->query('UserManager'),
+ $server->getLogger(),
+ $server->getActivityManager()
+ );
+ });
+ $container->registerService('ExternalSharesController', function (SimpleContainer $c) {
+ return new ExternalSharesController(
+ $c->query('AppName'),
+ $c->query('Request'),
+ $c->query('IsIncomingShareEnabled'),
+ $c->query('ExternalManager')
+ );
+ });
+
+ /**
+ * Core class wrappers
+ */
+ $container->registerService('UserSession', function (SimpleContainer $c) use ($server) {
+ return $server->getUserSession();
+ });
+ $container->registerService('URLGenerator', function (SimpleContainer $c) use ($server) {
+ return $server->getUrlGenerator();
+ });
+ $container->registerService('UserManager', function (SimpleContainer $c) use ($server) {
+ return $server->getUserManager();
+ });
+ $container->registerService('IsIncomingShareEnabled', function (SimpleContainer $c) {
+ return Helper::isIncomingServer2serverShareEnabled();
+ });
+ $container->registerService('ExternalManager', function (SimpleContainer $c) use ($server) {
+ $user = $server->getUserSession()->getUser();
+ $uid = $user ? $user->getUID() : null;
+ return new \OCA\Files_Sharing\External\Manager(
+ $server->getDatabaseConnection(),
+ \OC\Files\Filesystem::getMountManager(),
+ \OC\Files\Filesystem::getLoader(),
+ $server->getHTTPHelper(),
+ $uid
+ );
+ });
+
+ /**
+ * Middleware
+ */
+ $container->registerService('SharingCheckMiddleware', function (SimpleContainer $c) use ($server) {
+ return new SharingCheckMiddleware(
+ $c->query('AppName'),
+ $server->getConfig(),
+ $server->getAppManager()
+ );
+ });
+
+ // Execute middlewares
+ $container->registerMiddleware('SharingCheckMiddleware');
+
+ $container->registerService('MountProvider', function (IContainer $c) {
+ /** @var \OCP\IServerContainer $server */
+ $server = $c->query('ServerContainer');
+ return new MountProvider(
+ $server->getConfig(),
+ $c->query('PropagationManager')
+ );
+ });
+
+ $container->registerService('PropagationManager', function (IContainer $c) {
+ /** @var \OCP\IServerContainer $server */
+ $server = $c->query('ServerContainer');
+ return new PropagationManager(
+ $server->getUserSession(),
+ $server->getConfig()
+ );
+ });
+ }
+
+ public function registerMountProviders() {
+ /** @var \OCP\IServerContainer $server */
+ $server = $this->getContainer()->query('ServerContainer');
+ $mountProviderCollection = $server->getMountProviderCollection();
+ $mountProviderCollection->registerProvider($this->getContainer()->query('MountProvider'));
+ }
+
+ public function setupPropagation() {
+ $propagationManager = $this->getContainer()->query('PropagationManager');
+ \OCP\Util::connectHook('OC_Filesystem', 'setup', $propagationManager, 'globalSetup');
+ }
+}
diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php
index 9ac3a1f731a..78fa138f5b5 100644
--- a/apps/files_sharing/appinfo/routes.php
+++ b/apps/files_sharing/appinfo/routes.php
@@ -25,7 +25,6 @@
*/
namespace OCA\Files_Sharing\AppInfo;
-use OCA\Files_Sharing\Application;
use OCP\API;
$application = new Application();
diff --git a/apps/files_sharing/application.php b/apps/files_sharing/application.php
deleted file mode 100644
index 62c07ffe404..00000000000
--- a/apps/files_sharing/application.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @author Lukas Reschke <lukas@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @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\AppFramework\Utility\SimpleContainer;
-use OCA\Files_Sharing\Controllers\ExternalSharesController;
-use OCA\Files_Sharing\Controllers\ShareController;
-use OCA\Files_Sharing\Middleware\SharingCheckMiddleware;
-use \OCP\AppFramework\App;
-
-/**
- * @package OCA\Files_Sharing
- */
-class Application extends App {
-
-
- /**
- * @param array $urlParams
- */
- public function __construct(array $urlParams=array()){
- parent::__construct('files_sharing', $urlParams);
-
- $container = $this->getContainer();
- $server = $container->getServer();
-
- /**
- * Controllers
- */
- $container->registerService('ShareController', function(SimpleContainer $c) use ($server) {
- return new ShareController(
- $c->query('AppName'),
- $c->query('Request'),
- $c->query('UserSession'),
- $server->getAppConfig(),
- $server->getConfig(),
- $c->query('URLGenerator'),
- $c->query('UserManager'),
- $server->getLogger(),
- $server->getActivityManager()
- );
- });
- $container->registerService('ExternalSharesController', function(SimpleContainer $c) {
- return new ExternalSharesController(
- $c->query('AppName'),
- $c->query('Request'),
- $c->query('IsIncomingShareEnabled'),
- $c->query('ExternalManager')
- );
- });
-
- /**
- * Core class wrappers
- */
- $container->registerService('UserSession', function(SimpleContainer $c) use ($server) {
- return $server->getUserSession();
- });
- $container->registerService('URLGenerator', function(SimpleContainer $c) use ($server){
- return $server->getUrlGenerator();
- });
- $container->registerService('UserManager', function(SimpleContainer $c) use ($server){
- return $server->getUserManager();
- });
- $container->registerService('IsIncomingShareEnabled', function(SimpleContainer $c) {
- return Helper::isIncomingServer2serverShareEnabled();
- });
- $container->registerService('ExternalManager', function(SimpleContainer $c) use ($server){
- $user = $server->getUserSession()->getUser();
- $uid = $user ? $user->getUID() : null;
- return new \OCA\Files_Sharing\External\Manager(
- $server->getDatabaseConnection(),
- \OC\Files\Filesystem::getMountManager(),
- \OC\Files\Filesystem::getLoader(),
- $server->getHTTPHelper(),
- $uid
- );
- });
-
- /**
- * Middleware
- */
- $container->registerService('SharingCheckMiddleware', function(SimpleContainer $c) use ($server){
- return new SharingCheckMiddleware(
- $c->query('AppName'),
- $server->getConfig(),
- $server->getAppManager()
- );
- });
-
- // Execute middlewares
- $container->registerMiddleware('SharingCheckMiddleware');
- }
-
-}
diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css
index ef013ca07d7..fc78ced0b76 100644
--- a/apps/files_sharing/css/public.css
+++ b/apps/files_sharing/css/public.css
@@ -2,7 +2,6 @@
background: #fff;
text-align: center;
margin: 45px auto 0;
- min-height: 600px;
}
#preview .notCreatable {
@@ -28,6 +27,27 @@
max-width:100%;
}
+#imgframe .text-preview {
+ display: inline-block;
+ position: relative;
+ text-align: left;
+ white-space: pre-wrap;
+ overflow-y: hidden;
+ height: auto;
+ min-height: 200px;
+ max-height: 800px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+#imgframe .ellipsis {
+ font-size: 1.2em;
+}
+
/* fix multiselect bar offset on shared page */
thead {
left: 0 !important;
diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js
index 41bfeba031f..79bd0bb0c47 100644
--- a/apps/files_sharing/js/public.js
+++ b/apps/files_sharing/js/public.js
@@ -87,12 +87,17 @@ OCA.Sharing.PublicApp = {
// dynamically load image previews
+ var token = $('#sharingToken').val();
+ var bottomMargin = 350;
+ var previewWidth = $(window).width() * window.devicePixelRatio;
+ var previewHeight = $(window).height() - bottomMargin * window.devicePixelRatio;
+ previewHeight = Math.max(200, previewHeight);
var params = {
- x: $(document).width() * window.devicePixelRatio,
- y: $(document).height() * window.devicePixelRatio,
+ x: previewWidth,
+ y: previewHeight,
a: 'true',
file: encodeURIComponent(this.initialDir + $('#filename').val()),
- t: $('#sharingToken').val(),
+ t: token,
scalingup: 0
};
@@ -105,6 +110,18 @@ OCA.Sharing.PublicApp = {
(maxGifSize === -1 || fileSize <= (maxGifSize * 1024 * 1024))) {
img.attr('src', $('#downloadURL').val());
img.appendTo('#imgframe');
+ } else if (mimetype.substr(0, mimetype.indexOf('/')) === 'text') {
+ // Undocumented Url to public WebDAV endpoint
+ var url = parent.location.protocol + '//' + location.host + OC.linkTo('', 'public.php/webdav');
+ $.ajax({
+ url: url,
+ headers: {
+ Authorization: 'Basic ' + btoa(token + ':'),
+ Range: 'bytes=0-1000'
+ }
+ }).then(function (data) {
+ self._showTextPreview(data, previewHeight);
+ });
} else if (previewSupported === 'true' ||
mimetype.substr(0, mimetype.indexOf('/')) === 'image' &&
mimetype !== 'image/svg+xml') {
@@ -123,26 +140,21 @@ OCA.Sharing.PublicApp = {
filename = JSON.stringify(filename);
}
var path = dir || FileList.getCurrentDirectory();
- var token = $('#sharingToken').val();
var params = {
path: path,
files: filename
};
- return OC.generateUrl('/s/'+token+'/download') + '?' + OC.buildQueryString(params);
+ return OC.generateUrl('/s/' + token + '/download', params);
};
this.fileList.getAjaxUrl = function (action, params) {
params = params || {};
- params.t = $('#sharingToken').val();
+ params.t = token;
return OC.filePath('files_sharing', 'ajax', action + '.php') + '?' + OC.buildQueryString(params);
};
this.fileList.linkTo = function (dir) {
- var token = $('#sharingToken').val();
- var params = {
- dir: dir
- };
- return OC.generateUrl('/s/'+token+'') + '?' + OC.buildQueryString(params);
+ return OC.generateUrl('/s/' + token + '', {dir: dir});
};
this.fileList.generatePreviewUrl = function (urlSpec) {
@@ -214,6 +226,21 @@ OCA.Sharing.PublicApp = {
window.FileList = this.fileList;
},
+ _showTextPreview: function (data, previewHeight) {
+ var textDiv = $('<div/>').addClass('text-preview');
+ textDiv.text(data);
+ textDiv.appendTo('#imgframe');
+ var divHeight = textDiv.height();
+ if (data.length > 999) {
+ var ellipsis = $('<div/>').addClass('ellipsis');
+ ellipsis.html('(&#133;)');
+ ellipsis.appendTo('#imgframe');
+ }
+ if (divHeight > previewHeight) {
+ textDiv.height(previewHeight);
+ }
+ },
+
_onDirectoryChanged: function (e) {
OC.Util.History.pushState({
// arghhhh, why is this not called "dir" !?
@@ -225,7 +252,7 @@ OCA.Sharing.PublicApp = {
this.fileList.changeDirectory(params.path || params.dir, false, true);
},
- _saveToOwnCloud: function(remote, token, owner, name, isProtected) {
+ _saveToOwnCloud: function (remote, token, owner, name, isProtected) {
var location = window.location.protocol + '//' + window.location.host + OC.webroot;
var url = remote + '/index.php/apps/files#' + 'remote=' + encodeURIComponent(location) // our location is the remote for the other server
diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js
index 2c7d6c7d43a..ca187940a08 100644
--- a/apps/files_sharing/js/sharedfilelist.js
+++ b/apps/files_sharing/js/sharedfilelist.js
@@ -176,6 +176,7 @@
.map(function(share) {
var file = {
id: share.file_source,
+ icon: share.icon,
mimetype: share.mimetype
};
if (share.item_type === 'folder') {
diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js
index d6bd498ce52..d1d89a15999 100644
--- a/apps/files_sharing/l10n/cs_CZ.js
+++ b/apps/files_sharing/l10n/cs_CZ.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Heslo ke vzdálenému úložišti",
"Cancel" : "Zrušit",
"Add remote share" : "Přidat vzdálené úložiště",
+ "You can upload into this folder" : "Můžete nahrávat do tohoto adresáře",
"No ownCloud installation (7 or higher) found at {remote}" : "Nebyla nalezena instalace ownCloud (7 nebo vyšší) na {remote}",
"Invalid ownCloud url" : "Neplatná ownCloud url",
"Share" : "Sdílet",
diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json
index be42df94b7b..95fea4806cf 100644
--- a/apps/files_sharing/l10n/cs_CZ.json
+++ b/apps/files_sharing/l10n/cs_CZ.json
@@ -19,6 +19,7 @@
"Remote share password" : "Heslo ke vzdálenému úložišti",
"Cancel" : "Zrušit",
"Add remote share" : "Přidat vzdálené úložiště",
+ "You can upload into this folder" : "Můžete nahrávat do tohoto adresáře",
"No ownCloud installation (7 or higher) found at {remote}" : "Nebyla nalezena instalace ownCloud (7 nebo vyšší) na {remote}",
"Invalid ownCloud url" : "Neplatná ownCloud url",
"Share" : "Sdílet",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 8022b53bc97..e5b7b7bcb32 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Passwort für die entfernte Freigabe",
"Cancel" : "Abbrechen",
"Add remote share" : "Entfernte Freigabe hinzufügen",
+ "You can upload into this folder" : "Du kannst in diesen Ordner hochladen",
"No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
"Invalid ownCloud url" : "Ungültige OwnCloud-URL",
"Share" : "Teilen",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 4bc9eaee223..a323072083d 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -19,6 +19,7 @@
"Remote share password" : "Passwort für die entfernte Freigabe",
"Cancel" : "Abbrechen",
"Add remote share" : "Entfernte Freigabe hinzufügen",
+ "You can upload into this folder" : "Du kannst in diesen Ordner hochladen",
"No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
"Invalid ownCloud url" : "Ungültige OwnCloud-URL",
"Share" : "Teilen",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index c95941de665..b75864375e2 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Passwort für die entfernte Freigabe",
"Cancel" : "Abbrechen",
"Add remote share" : "Entfernte Freigabe hinzufügen",
+ "You can upload into this folder" : "Sie können in diesen Ordner hochladen",
"No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
"Invalid ownCloud url" : "Ungültige OwnCloud-Adresse",
"Share" : "Teilen",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 75d99afb019..730ec010017 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -19,6 +19,7 @@
"Remote share password" : "Passwort für die entfernte Freigabe",
"Cancel" : "Abbrechen",
"Add remote share" : "Entfernte Freigabe hinzufügen",
+ "You can upload into this folder" : "Sie können in diesen Ordner hochladen",
"No ownCloud installation (7 or higher) found at {remote}" : "Keine OwnCloud-Installation (7 oder höher) auf {remote} gefunden",
"Invalid ownCloud url" : "Ungültige OwnCloud-Adresse",
"Share" : "Teilen",
diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js
index 293641b8a08..9e3cbf9621a 100644
--- a/apps/files_sharing/l10n/el.js
+++ b/apps/files_sharing/l10n/el.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Κωδικός πρόσβασης απομακρυσμένου κοινόχρηστου φακέλου",
"Cancel" : "Άκυρο",
"Add remote share" : "Προσθήκη απομακρυσμένου κοινόχρηστου φακέλου",
+ "You can upload into this folder" : "Μπορείτε να μεταφορτώσετε σε αυτόν τον φάκελο",
"No ownCloud installation (7 or higher) found at {remote}" : "Δεν βρέθηκε εγκατάστση ownCloud (7 ή νεώτερη) στο {remote}",
"Invalid ownCloud url" : "Άκυρη url ownCloud ",
"Share" : "Διαμοιράστε",
diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json
index 702ef8fc650..3a796c25ae4 100644
--- a/apps/files_sharing/l10n/el.json
+++ b/apps/files_sharing/l10n/el.json
@@ -19,6 +19,7 @@
"Remote share password" : "Κωδικός πρόσβασης απομακρυσμένου κοινόχρηστου φακέλου",
"Cancel" : "Άκυρο",
"Add remote share" : "Προσθήκη απομακρυσμένου κοινόχρηστου φακέλου",
+ "You can upload into this folder" : "Μπορείτε να μεταφορτώσετε σε αυτόν τον φάκελο",
"No ownCloud installation (7 or higher) found at {remote}" : "Δεν βρέθηκε εγκατάστση ownCloud (7 ή νεώτερη) στο {remote}",
"Invalid ownCloud url" : "Άκυρη url ownCloud ",
"Share" : "Διαμοιράστε",
diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js
index 6ba75c4fc30..75956e85025 100644
--- a/apps/files_sharing/l10n/en_GB.js
+++ b/apps/files_sharing/l10n/en_GB.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Remote share password",
"Cancel" : "Cancel",
"Add remote share" : "Add remote share",
+ "You can upload into this folder" : "You can upload into this folder",
"No ownCloud installation (7 or higher) found at {remote}" : "No ownCloud installation (7 or higher) found at {remote}",
"Invalid ownCloud url" : "Invalid ownCloud URL",
"Share" : "Share",
@@ -56,6 +57,7 @@ OC.L10N.register(
"Download %s" : "Download %s",
"Direct link" : "Direct link",
"Federated Cloud Sharing" : "Federated Cloud Sharing",
+ "Open documentation" : "Open documentation",
"Allow users on this server to send shares to other servers" : "Allow users on this server to send shares to other servers",
"Allow users on this server to receive shares from other servers" : "Allow users on this server to receive shares from other servers"
},
diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json
index 94bb78cfb66..85d6ac5a2f8 100644
--- a/apps/files_sharing/l10n/en_GB.json
+++ b/apps/files_sharing/l10n/en_GB.json
@@ -19,6 +19,7 @@
"Remote share password" : "Remote share password",
"Cancel" : "Cancel",
"Add remote share" : "Add remote share",
+ "You can upload into this folder" : "You can upload into this folder",
"No ownCloud installation (7 or higher) found at {remote}" : "No ownCloud installation (7 or higher) found at {remote}",
"Invalid ownCloud url" : "Invalid ownCloud URL",
"Share" : "Share",
@@ -54,6 +55,7 @@
"Download %s" : "Download %s",
"Direct link" : "Direct link",
"Federated Cloud Sharing" : "Federated Cloud Sharing",
+ "Open documentation" : "Open documentation",
"Allow users on this server to send shares to other servers" : "Allow users on this server to send shares to other servers",
"Allow users on this server to receive shares from other servers" : "Allow users on this server to receive shares from other servers"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 4f9e5e7c823..e77217a8427 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Contraseña del compartido remoto",
"Cancel" : "Cancelar",
"Add remote share" : "Añadir recurso compartido remoto",
+ "You can upload into this folder" : "Usted puede cargar en esta carpeta",
"No ownCloud installation (7 or higher) found at {remote}" : "No se encontró una instalación de ownCloud (7 o mayor) en {remote}",
"Invalid ownCloud url" : "URL de ownCloud inválida",
"Share" : "Compartir",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 08f13f113c9..c3c414dcaba 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -19,6 +19,7 @@
"Remote share password" : "Contraseña del compartido remoto",
"Cancel" : "Cancelar",
"Add remote share" : "Añadir recurso compartido remoto",
+ "You can upload into this folder" : "Usted puede cargar en esta carpeta",
"No ownCloud installation (7 or higher) found at {remote}" : "No se encontró una instalación de ownCloud (7 o mayor) en {remote}",
"Invalid ownCloud url" : "URL de ownCloud inválida",
"Share" : "Compartir",
diff --git a/apps/files_sharing/l10n/fi_FI.js b/apps/files_sharing/l10n/fi_FI.js
index 951ca5338c3..7d9cc87dcba 100644
--- a/apps/files_sharing/l10n/fi_FI.js
+++ b/apps/files_sharing/l10n/fi_FI.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Etäjaon salasana",
"Cancel" : "Peru",
"Add remote share" : "Lisää etäjako",
+ "You can upload into this folder" : "Voit lähettää tiedostoja tähän kansioon",
"No ownCloud installation (7 or higher) found at {remote}" : "ownCloud-asennusta (versiota 7 tai uudempaa) ei löytynyt osoitteesta {remote}",
"Invalid ownCloud url" : "Virheellinen ownCloud-osoite",
"Share" : "Jaa",
diff --git a/apps/files_sharing/l10n/fi_FI.json b/apps/files_sharing/l10n/fi_FI.json
index f2ae2c47418..3c7f40bd76c 100644
--- a/apps/files_sharing/l10n/fi_FI.json
+++ b/apps/files_sharing/l10n/fi_FI.json
@@ -19,6 +19,7 @@
"Remote share password" : "Etäjaon salasana",
"Cancel" : "Peru",
"Add remote share" : "Lisää etäjako",
+ "You can upload into this folder" : "Voit lähettää tiedostoja tähän kansioon",
"No ownCloud installation (7 or higher) found at {remote}" : "ownCloud-asennusta (versiota 7 tai uudempaa) ei löytynyt osoitteesta {remote}",
"Invalid ownCloud url" : "Virheellinen ownCloud-osoite",
"Share" : "Jaa",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index 0ed5c63a209..6fd7bf4a9d9 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -21,13 +21,14 @@ OC.L10N.register(
"Remote share password" : "Mot de passe du partage distant",
"Cancel" : "Annuler",
"Add remote share" : "Ajouter un partage distant",
+ "You can upload into this folder" : "Vous pouvez téléverser dans ce dossier",
"No ownCloud installation (7 or higher) found at {remote}" : "Aucune installation ownCloud (7 ou supérieur) trouvée sur {remote}",
"Invalid ownCloud url" : "URL ownCloud non valide",
"Share" : "Partager",
"Shared by" : "Partagé par",
"A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "Un fichier ou un répertoire partagé a été <strong>téléchargé</strong>",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Un fichier ou un répertoire partagé publiquement a été <strong>téléchargé</strong>",
"You received a new remote share from %s" : "Vous avez reçu un partage distant de %s",
"%1$s accepted remote share %2$s" : "%1$s a accepté le partage distant %2$s",
"%1$s declined remote share %2$s" : "%1$s a refusé le partage distant %2$s",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index b997b89ae57..07629def1d3 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -19,13 +19,14 @@
"Remote share password" : "Mot de passe du partage distant",
"Cancel" : "Annuler",
"Add remote share" : "Ajouter un partage distant",
+ "You can upload into this folder" : "Vous pouvez téléverser dans ce dossier",
"No ownCloud installation (7 or higher) found at {remote}" : "Aucune installation ownCloud (7 ou supérieur) trouvée sur {remote}",
"Invalid ownCloud url" : "URL ownCloud non valide",
"Share" : "Partager",
"Shared by" : "Partagé par",
"A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>",
"A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>",
- "A public shared file or folder was <strong>downloaded</strong>" : "Un fichier ou un répertoire partagé a été <strong>téléchargé</strong>",
+ "A public shared file or folder was <strong>downloaded</strong>" : "Un fichier ou un répertoire partagé publiquement a été <strong>téléchargé</strong>",
"You received a new remote share from %s" : "Vous avez reçu un partage distant de %s",
"%1$s accepted remote share %2$s" : "%1$s a accepté le partage distant %2$s",
"%1$s declined remote share %2$s" : "%1$s a refusé le partage distant %2$s",
diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js
index 6198fd4365c..11cc0348f34 100644
--- a/apps/files_sharing/l10n/gl.js
+++ b/apps/files_sharing/l10n/gl.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Contrasinal da compartición remota",
"Cancel" : "Cancelar",
"Add remote share" : "Engadir unha compartición remota",
+ "You can upload into this folder" : "Pode envialo a este cartafol",
"No ownCloud installation (7 or higher) found at {remote}" : "Non se atopa unha instalación de ownCloud (7 ou superior) en {remote}",
"Invalid ownCloud url" : "URL incorrecto do ownCloud",
"Share" : "Compartir",
diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json
index 6bb428cb372..01972ddee16 100644
--- a/apps/files_sharing/l10n/gl.json
+++ b/apps/files_sharing/l10n/gl.json
@@ -19,6 +19,7 @@
"Remote share password" : "Contrasinal da compartición remota",
"Cancel" : "Cancelar",
"Add remote share" : "Engadir unha compartición remota",
+ "You can upload into this folder" : "Pode envialo a este cartafol",
"No ownCloud installation (7 or higher) found at {remote}" : "Non se atopa unha instalación de ownCloud (7 ou superior) en {remote}",
"Invalid ownCloud url" : "URL incorrecto do ownCloud",
"Share" : "Compartir",
diff --git a/apps/files_sharing/l10n/id.js b/apps/files_sharing/l10n/id.js
index 7ffd5fdd4cf..fd8b3dd810e 100644
--- a/apps/files_sharing/l10n/id.js
+++ b/apps/files_sharing/l10n/id.js
@@ -56,6 +56,7 @@ OC.L10N.register(
"Download %s" : "Unduh %s",
"Direct link" : "Tautan langsung",
"Federated Cloud Sharing" : "Federated Cloud Sharing",
+ "Open documentation" : "Buka dokumentasi",
"Allow users on this server to send shares to other servers" : "Izinkan para pengguna di server ini untuk mengirimkan berbagi ke server lainnya.",
"Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya."
},
diff --git a/apps/files_sharing/l10n/id.json b/apps/files_sharing/l10n/id.json
index 724f86139bc..e82b6966d24 100644
--- a/apps/files_sharing/l10n/id.json
+++ b/apps/files_sharing/l10n/id.json
@@ -54,6 +54,7 @@
"Download %s" : "Unduh %s",
"Direct link" : "Tautan langsung",
"Federated Cloud Sharing" : "Federated Cloud Sharing",
+ "Open documentation" : "Buka dokumentasi",
"Allow users on this server to send shares to other servers" : "Izinkan para pengguna di server ini untuk mengirimkan berbagi ke server lainnya.",
"Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya."
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js
index 57e49f68ec4..93f63e25314 100644
--- a/apps/files_sharing/l10n/is.js
+++ b/apps/files_sharing/l10n/is.js
@@ -8,4 +8,4 @@ OC.L10N.register(
"Name" : "Nafn",
"Download" : "Niðurhal"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json
index f7094b9cbe8..69493847d9b 100644
--- a/apps/files_sharing/l10n/is.json
+++ b/apps/files_sharing/l10n/is.json
@@ -5,5 +5,5 @@
"Password" : "Lykilorð",
"Name" : "Nafn",
"Download" : "Niðurhal"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 720902b8764..33cb2e81bcf 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Password della condivisione remota",
"Cancel" : "Annulla",
"Add remote share" : "Aggiungi condivisione remota",
+ "You can upload into this folder" : "Puoi caricare in questa cartella",
"No ownCloud installation (7 or higher) found at {remote}" : "Nessuna installazione di ownCloud (7 o superiore) trovata su {remote}",
"Invalid ownCloud url" : "URL di ownCloud non valido",
"Share" : "Condividi",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index a2e73bd8949..a738a79154e 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -19,6 +19,7 @@
"Remote share password" : "Password della condivisione remota",
"Cancel" : "Annulla",
"Add remote share" : "Aggiungi condivisione remota",
+ "You can upload into this folder" : "Puoi caricare in questa cartella",
"No ownCloud installation (7 or higher) found at {remote}" : "Nessuna installazione di ownCloud (7 o superiore) trovata su {remote}",
"Invalid ownCloud url" : "URL di ownCloud non valido",
"Share" : "Condividi",
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index 1118713257b..dde011c8b4d 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "リモート共有のパスワード",
"Cancel" : "キャンセル",
"Add remote share" : "リモート共有を追加",
+ "You can upload into this folder" : "このフォルダーにアップロードできます",
"No ownCloud installation (7 or higher) found at {remote}" : "{remote} にはownCloud (7以上)がインストールされていません",
"Invalid ownCloud url" : "無効なownCloud URL です",
"Share" : "共有",
@@ -32,7 +33,7 @@ OC.L10N.register(
"%1$s accepted remote share %2$s" : "%1$s は %2$s のリモート共有を承認しました。",
"%1$s declined remote share %2$s" : "%1$s は %2$s のリモート共有を拒否しました。",
"%1$s unshared %2$s from you" : "%1$s は あなたと%2$s の共有を止めました。",
- "Public shared folder %1$s was downloaded" : "公開共有フォルダ %1$s がダウンロードされました",
+ "Public shared folder %1$s was downloaded" : "公開共有フォルダー %1$s がダウンロードされました",
"Public shared file %1$s was downloaded" : "公開共有ファイル %1$s がダウンロードされました",
"You shared %1$s with %2$s" : "あなたは %1$s を %2$s と共有しました",
"You shared %1$s with group %2$s" : "あなたは %1$s をグループ %2$s と共有しました",
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 960cc59e0ed..76d8d8e8968 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -19,6 +19,7 @@
"Remote share password" : "リモート共有のパスワード",
"Cancel" : "キャンセル",
"Add remote share" : "リモート共有を追加",
+ "You can upload into this folder" : "このフォルダーにアップロードできます",
"No ownCloud installation (7 or higher) found at {remote}" : "{remote} にはownCloud (7以上)がインストールされていません",
"Invalid ownCloud url" : "無効なownCloud URL です",
"Share" : "共有",
@@ -30,7 +31,7 @@
"%1$s accepted remote share %2$s" : "%1$s は %2$s のリモート共有を承認しました。",
"%1$s declined remote share %2$s" : "%1$s は %2$s のリモート共有を拒否しました。",
"%1$s unshared %2$s from you" : "%1$s は あなたと%2$s の共有を止めました。",
- "Public shared folder %1$s was downloaded" : "公開共有フォルダ %1$s がダウンロードされました",
+ "Public shared folder %1$s was downloaded" : "公開共有フォルダー %1$s がダウンロードされました",
"Public shared file %1$s was downloaded" : "公開共有ファイル %1$s がダウンロードされました",
"You shared %1$s with %2$s" : "あなたは %1$s を %2$s と共有しました",
"You shared %1$s with group %2$s" : "あなたは %1$s をグループ %2$s と共有しました",
diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js
index 4d94b883890..0373de3ca9d 100644
--- a/apps/files_sharing/l10n/ko.js
+++ b/apps/files_sharing/l10n/ko.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "원격 공유 암호",
"Cancel" : "취소",
"Add remote share" : "원격 공유 추가",
+ "You can upload into this folder" : "이 폴더에 업로드할 수 있습니다",
"No ownCloud installation (7 or higher) found at {remote}" : "{remote}에 ownCloud 7 이상이 설치되어 있지 않음",
"Invalid ownCloud url" : "잘못된 ownCloud URL",
"Share" : "공유",
diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json
index cc0e793977d..054194ee7a7 100644
--- a/apps/files_sharing/l10n/ko.json
+++ b/apps/files_sharing/l10n/ko.json
@@ -19,6 +19,7 @@
"Remote share password" : "원격 공유 암호",
"Cancel" : "취소",
"Add remote share" : "원격 공유 추가",
+ "You can upload into this folder" : "이 폴더에 업로드할 수 있습니다",
"No ownCloud installation (7 or higher) found at {remote}" : "{remote}에 ownCloud 7 이상이 설치되어 있지 않음",
"Invalid ownCloud url" : "잘못된 ownCloud URL",
"Share" : "공유",
diff --git a/apps/files_sharing/l10n/lb.js b/apps/files_sharing/l10n/lb.js
index 3ba992bf6de..1bdb37e38e3 100644
--- a/apps/files_sharing/l10n/lb.js
+++ b/apps/files_sharing/l10n/lb.js
@@ -1,12 +1,17 @@
OC.L10N.register(
"files_sharing",
{
+ "Nothing shared yet" : "Nach näischt gedeelt",
+ "No shared links" : "Keng gedeelte Linken",
"Cancel" : "Ofbriechen",
"Share" : "Deelen",
"Shared by" : "Gedeelt vun",
"The password is wrong. Try again." : "Den Passwuert ass incorrect. Probeier ed nach eng keier.",
"Password" : "Passwuert",
+ "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Name" : "Numm",
- "Download" : "Download"
+ "Download" : "Download",
+ "Direct link" : "Direkte Link",
+ "Open documentation" : "Dokumentatioun opmaachen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/lb.json b/apps/files_sharing/l10n/lb.json
index 760bb015a98..ec78da1f171 100644
--- a/apps/files_sharing/l10n/lb.json
+++ b/apps/files_sharing/l10n/lb.json
@@ -1,10 +1,15 @@
{ "translations": {
+ "Nothing shared yet" : "Nach näischt gedeelt",
+ "No shared links" : "Keng gedeelte Linken",
"Cancel" : "Ofbriechen",
"Share" : "Deelen",
"Shared by" : "Gedeelt vun",
"The password is wrong. Try again." : "Den Passwuert ass incorrect. Probeier ed nach eng keier.",
"Password" : "Passwuert",
+ "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Name" : "Numm",
- "Download" : "Download"
+ "Download" : "Download",
+ "Direct link" : "Direkte Link",
+ "Open documentation" : "Dokumentatioun opmaachen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index 73e0ef6a802..5bebbcfdae0 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Wachtwoord externe share",
"Cancel" : "Annuleren",
"Add remote share" : "Toevoegen externe share",
+ "You can upload into this folder" : "U kunt uploaden naar deze map",
"No ownCloud installation (7 or higher) found at {remote}" : "Geen recente ownCloud installatie (7 of hoger) gevonden op {remote}",
"Invalid ownCloud url" : "Ongeldige ownCloud url",
"Share" : "Deel",
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index 30446fbb20b..e5d1d7c3a7f 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -19,6 +19,7 @@
"Remote share password" : "Wachtwoord externe share",
"Cancel" : "Annuleren",
"Add remote share" : "Toevoegen externe share",
+ "You can upload into this folder" : "U kunt uploaden naar deze map",
"No ownCloud installation (7 or higher) found at {remote}" : "Geen recente ownCloud installatie (7 of hoger) gevonden op {remote}",
"Invalid ownCloud url" : "Ongeldige ownCloud url",
"Share" : "Deel",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index ece7742d2ce..308cdc4a161 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Senha do compartilhamento remoto",
"Cancel" : "Cancelar",
"Add remote share" : "Adicionar compartilhamento remoto",
+ "You can upload into this folder" : "Você não pode enviar arquivos para esta pasta",
"No ownCloud installation (7 or higher) found at {remote}" : "Nenhuma instalação ownCloud (7 ou superior) foi encontrada em {remote}",
"Invalid ownCloud url" : "Url invalida para ownCloud",
"Share" : "Compartilhar",
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index b2c4db8007f..9941074430a 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -19,6 +19,7 @@
"Remote share password" : "Senha do compartilhamento remoto",
"Cancel" : "Cancelar",
"Add remote share" : "Adicionar compartilhamento remoto",
+ "You can upload into this folder" : "Você não pode enviar arquivos para esta pasta",
"No ownCloud installation (7 or higher) found at {remote}" : "Nenhuma instalação ownCloud (7 ou superior) foi encontrada em {remote}",
"Invalid ownCloud url" : "Url invalida para ownCloud",
"Share" : "Compartilhar",
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index 7ba25212c58..b0c6aa04563 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Пароль для удаленного общего ресурса",
"Cancel" : "Отменить",
"Add remote share" : "Добавить удалённый общий ресурс",
+ "You can upload into this folder" : "Вы можете загружать в эту папку",
"No ownCloud installation (7 or higher) found at {remote}" : "На удаленном ресурсе {remote} не установлен ownCloud версии 7 или выше",
"Invalid ownCloud url" : "Неверный адрес ownCloud",
"Share" : "Поделиться",
@@ -60,4 +61,4 @@ 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" : "Разрешить пользователям использовать общие ресурсы с других серверов"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index d735f17d2b5..0896cab7dd2 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -19,6 +19,7 @@
"Remote share password" : "Пароль для удаленного общего ресурса",
"Cancel" : "Отменить",
"Add remote share" : "Добавить удалённый общий ресурс",
+ "You can upload into this folder" : "Вы можете загружать в эту папку",
"No ownCloud installation (7 or higher) found at {remote}" : "На удаленном ресурсе {remote} не установлен ownCloud версии 7 или выше",
"Invalid ownCloud url" : "Неверный адрес ownCloud",
"Share" : "Поделиться",
@@ -57,5 +58,5 @@
"Open documentation" : "Открыть документацию",
"Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов",
"Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов"
-},"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);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index 0e16dfaf48c..2666c8e3eaa 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -56,6 +56,7 @@ OC.L10N.register(
"Download %s" : "Prejmi %s",
"Direct link" : "Neposredna povezava",
"Federated Cloud Sharing" : "Upravljana souporaba oblaka",
+ "Open documentation" : "Odprta dokumentacija",
"Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
"Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov."
},
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index 6bd7181561a..a301a495cf1 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -54,6 +54,7 @@
"Download %s" : "Prejmi %s",
"Direct link" : "Neposredna povezava",
"Federated Cloud Sharing" : "Upravljana souporaba oblaka",
+ "Open documentation" : "Odprta dokumentacija",
"Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
"Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js
index a71286a10c3..97b4b3aee24 100644
--- a/apps/files_sharing/l10n/sr.js
+++ b/apps/files_sharing/l10n/sr.js
@@ -21,8 +21,9 @@ OC.L10N.register(
"Remote share password" : "Лозинка удаљеног дељења",
"Cancel" : "Одустани",
"Add remote share" : "Додај удаљено дељење",
- "No ownCloud installation (7 or higher) found at {remote}" : "Нема ОунКлауд инсталације верзије 7 или више на {remote}",
- "Invalid ownCloud url" : "Неисправан ОунКлауд УРЛ",
+ "You can upload into this folder" : "Можете да отпремате у ову фасциклу",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Нема оунКлауд инсталације верзије 7 или више на {remote}",
+ "Invalid ownCloud url" : "Неисправан оунКлауд УРЛ",
"Share" : "Дељење",
"Shared by" : "Дели",
"A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>",
@@ -51,7 +52,7 @@ OC.L10N.register(
"the link expired" : "веза је истекла",
"sharing is disabled" : "дељење је искључено",
"For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.",
- "Add to your ownCloud" : "Додај у свој ОунКлауд",
+ "Add to your ownCloud" : "Додај у свој облак",
"Download" : "Преузми",
"Download %s" : "Преузми %s",
"Direct link" : "Директна веза",
diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json
index 711ceade23f..f28772afe57 100644
--- a/apps/files_sharing/l10n/sr.json
+++ b/apps/files_sharing/l10n/sr.json
@@ -19,8 +19,9 @@
"Remote share password" : "Лозинка удаљеног дељења",
"Cancel" : "Одустани",
"Add remote share" : "Додај удаљено дељење",
- "No ownCloud installation (7 or higher) found at {remote}" : "Нема ОунКлауд инсталације верзије 7 или више на {remote}",
- "Invalid ownCloud url" : "Неисправан ОунКлауд УРЛ",
+ "You can upload into this folder" : "Можете да отпремате у ову фасциклу",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Нема оунКлауд инсталације верзије 7 или више на {remote}",
+ "Invalid ownCloud url" : "Неисправан оунКлауд УРЛ",
"Share" : "Дељење",
"Shared by" : "Дели",
"A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>",
@@ -49,7 +50,7 @@
"the link expired" : "веза је истекла",
"sharing is disabled" : "дељење је искључено",
"For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.",
- "Add to your ownCloud" : "Додај у свој ОунКлауд",
+ "Add to your ownCloud" : "Додај у свој облак",
"Download" : "Преузми",
"Download %s" : "Преузми %s",
"Direct link" : "Директна веза",
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index 54797731465..6bcfce0cca2 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Uzak paylaşım parolası",
"Cancel" : "İptal",
"Add remote share" : "Uzak paylaşım ekle",
+ "You can upload into this folder" : "Bu dizine yükleme yapabilirsin",
"No ownCloud installation (7 or higher) found at {remote}" : "{remote} üzerinde ownCloud (7 veya daha üstü) kurulumu bulunamadı",
"Invalid ownCloud url" : "Geçersiz ownCloud adresi",
"Share" : "Paylaş",
@@ -56,6 +57,7 @@ OC.L10N.register(
"Download %s" : "İndir: %s",
"Direct link" : "Doğrudan bağlantı",
"Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı",
+ "Open documentation" : "Dokümantasyonu aç",
"Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcıların diğer sunuculara paylaşım göndermelerine izin ver",
"Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcıların diğer sunuculardan paylaşım almalarına izin ver"
},
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index ba545a11909..de2770b963a 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -19,6 +19,7 @@
"Remote share password" : "Uzak paylaşım parolası",
"Cancel" : "İptal",
"Add remote share" : "Uzak paylaşım ekle",
+ "You can upload into this folder" : "Bu dizine yükleme yapabilirsin",
"No ownCloud installation (7 or higher) found at {remote}" : "{remote} üzerinde ownCloud (7 veya daha üstü) kurulumu bulunamadı",
"Invalid ownCloud url" : "Geçersiz ownCloud adresi",
"Share" : "Paylaş",
@@ -54,6 +55,7 @@
"Download %s" : "İndir: %s",
"Direct link" : "Doğrudan bağlantı",
"Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı",
+ "Open documentation" : "Dokümantasyonu aç",
"Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcıların diğer sunuculara paylaşım göndermelerine izin ver",
"Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcıların diğer sunuculardan paylaşım almalarına izin ver"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js
index 5561d011710..18a6dde9e3a 100644
--- a/apps/files_sharing/l10n/uk.js
+++ b/apps/files_sharing/l10n/uk.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Пароль для віддаленої загальної теки",
"Cancel" : "Відмінити",
"Add remote share" : "Додати віддалену загальну теку",
+ "You can upload into this folder" : "Ви можете завантажити до цієї теки",
"No ownCloud installation (7 or higher) found at {remote}" : "Немає установленого OwnCloud (7 або вище), можна знайти на {remote}",
"Invalid ownCloud url" : "Невірний ownCloud URL",
"Share" : "Поділитися",
diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json
index 13f2ac4fc6a..de200a1fe8f 100644
--- a/apps/files_sharing/l10n/uk.json
+++ b/apps/files_sharing/l10n/uk.json
@@ -19,6 +19,7 @@
"Remote share password" : "Пароль для віддаленої загальної теки",
"Cancel" : "Відмінити",
"Add remote share" : "Додати віддалену загальну теку",
+ "You can upload into this folder" : "Ви можете завантажити до цієї теки",
"No ownCloud installation (7 or higher) found at {remote}" : "Немає установленого OwnCloud (7 або вище), можна знайти на {remote}",
"Invalid ownCloud url" : "Невірний ownCloud URL",
"Share" : "Поділитися",
diff --git a/apps/files_sharing/lib/controllers/externalsharescontroller.php b/apps/files_sharing/lib/controllers/externalsharescontroller.php
index c94cb60982c..da0951d8e7c 100644
--- a/apps/files_sharing/lib/controllers/externalsharescontroller.php
+++ b/apps/files_sharing/lib/controllers/externalsharescontroller.php
@@ -43,6 +43,7 @@ class ExternalSharesController extends Controller {
/**
* @param string $appName
* @param IRequest $request
+ * @param bool $incomingShareEnabled
* @param \OCA\Files_Sharing\External\Manager $externalManager
*/
public function __construct($appName,
diff --git a/apps/files_sharing/lib/deleteorphanedsharesjob.php b/apps/files_sharing/lib/deleteorphanedsharesjob.php
index f39078b778f..0654c82dd94 100644
--- a/apps/files_sharing/lib/deleteorphanedsharesjob.php
+++ b/apps/files_sharing/lib/deleteorphanedsharesjob.php
@@ -22,8 +22,6 @@
namespace OCA\Files_sharing\Lib;
-use Doctrine\DBAL\Platforms\SqlitePlatform;
-use OCP\IDBConnection;
use OC\BackgroundJob\TimedJob;
/**
@@ -39,6 +37,13 @@ class DeleteOrphanedSharesJob extends TimedJob {
protected $defaultIntervalMin = 15;
/**
+ * sets the correct interval for this timed job
+ */
+ public function __construct(){
+ $this->interval = $this->defaultIntervalMin * 60;
+ }
+
+ /**
* Makes the background job do its work
*
* @param array $argument unused argument
@@ -53,7 +58,7 @@ class DeleteOrphanedSharesJob extends TimedJob {
'AND NOT EXISTS (SELECT `fileid` FROM `*PREFIX*filecache` WHERE `file_source` = `fileid`)';
$deletedEntries = $connection->executeUpdate($sql);
- $logger->info("$deletedEntries orphaned share(s) deleted", ['app' => 'DeleteOrphanedSharesJob']);
+ $logger->debug("$deletedEntries orphaned share(s) deleted", ['app' => 'DeleteOrphanedSharesJob']);
}
}
diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php
index 7b8b756dd5e..0246e2d9c80 100644
--- a/apps/files_sharing/lib/external/manager.php
+++ b/apps/files_sharing/lib/external/manager.php
@@ -174,7 +174,7 @@ class Manager {
*/
private function getShare($id) {
$getShare = $this->connection->prepare('
- SELECT `remote`, `share_token`, `name`
+ SELECT `remote`, `remote_id`, `share_token`, `name`
FROM `*PREFIX*share_external`
WHERE `id` = ? AND `user` = ?');
$result = $getShare->execute(array($id, $this->uid));
@@ -203,7 +203,7 @@ class Manager {
`mountpoint_hash` = ?
WHERE `id` = ? AND `user` = ?');
$acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid));
- $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $id, 'accept');
+ $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept');
}
}
@@ -220,7 +220,7 @@ class Manager {
$removeShare = $this->connection->prepare('
DELETE FROM `*PREFIX*share_external` WHERE `id` = ? AND `user` = ?');
$removeShare->execute(array($id, $this->uid));
- $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $id, 'decline');
+ $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline');
}
}
@@ -229,13 +229,13 @@ class Manager {
*
* @param string $remote
* @param string $token
- * @param int $id
+ * @param int $remoteId Share id on the remote host
* @param string $feedback
* @return boolean
*/
- private function sendFeedbackToRemote($remote, $token, $id, $feedback) {
+ private function sendFeedbackToRemote($remote, $token, $remoteId, $feedback) {
- $url = $remote . \OCP\Share::BASE_PATH_TO_SHARE_API . '/' . $id . '/' . $feedback . '?format=' . \OCP\Share::RESPONSE_FORMAT;
+ $url = rtrim($remote, '/') . \OCP\Share::BASE_PATH_TO_SHARE_API . '/' . $remoteId . '/' . $feedback . '?format=' . \OCP\Share::RESPONSE_FORMAT;
$fields = array('token' => $token);
$result = $this->httpHelper->post($url, $fields);
diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php
index 5b5525e244f..05b0352ca1f 100644
--- a/apps/files_sharing/lib/helper.php
+++ b/apps/files_sharing/lib/helper.php
@@ -30,9 +30,7 @@ namespace OCA\Files_Sharing;
class Helper {
public static function registerHooks() {
- \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
\OCP\Util::connectHook('OC_Filesystem', 'setup', '\OCA\Files_Sharing\External\Manager', 'setup');
- \OCP\Util::connectHook('OC_Filesystem', 'post_write', '\OC\Files\Cache\Shared_Updater', 'writeHook');
\OCP\Util::connectHook('OC_Filesystem', 'delete', '\OC\Files\Cache\Shared_Updater', 'deleteHook');
\OCP\Util::connectHook('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Shared_Updater', 'renameHook');
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\Files_Sharing\Hooks', 'unshareChildren');
diff --git a/apps/files_sharing/lib/mountprovider.php b/apps/files_sharing/lib/mountprovider.php
new file mode 100644
index 00000000000..94fb473883d
--- /dev/null
+++ b/apps/files_sharing/lib/mountprovider.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_Sharing;
+
+use OC\Files\Filesystem;
+use OCA\Files_Sharing\Propagation\PropagationManager;
+use OCP\Files\Config\IMountProvider;
+use OCP\Files\Storage\IStorageFactory;
+use OCP\IConfig;
+use OCP\IUser;
+
+class MountProvider implements IMountProvider {
+ /**
+ * @var \OCP\IConfig
+ */
+ protected $config;
+
+ /**
+ * @var \OCA\Files_Sharing\Propagation\PropagationManager
+ */
+ protected $propagationManager;
+
+ /**
+ * @param \OCP\IConfig $config
+ * @param \OCA\Files_Sharing\Propagation\PropagationManager $propagationManager
+ */
+ public function __construct(IConfig $config, PropagationManager $propagationManager) {
+ $this->config = $config;
+ $this->propagationManager = $propagationManager;
+ }
+
+
+ /**
+ * Get all mountpoints applicable for the user and check for shares where we need to update the etags
+ *
+ * @param \OCP\IUser $user
+ * @param \OCP\Files\Storage\IStorageFactory $storageFactory
+ * @return \OCP\Files\Mount\IMountPoint[]
+ */
+ public function getMountsForUser(IUser $user, IStorageFactory $storageFactory) {
+ $shares = \OCP\Share::getItemsSharedWithUser('file', $user->getUID());
+ $propagator = $this->propagationManager->getSharePropagator($user->getUID());
+ $propagator->propagateDirtyMountPoints($shares);
+ $shares = array_filter($shares, function ($share) {
+ return $share['permissions'] > 0;
+ });
+ return array_map(function ($share) use ($user, $storageFactory) {
+ Filesystem::initMountPoints($share['uid_owner']);
+ // for updating etags for the share owner when we make changes to this share.
+ $ownerPropagator = $this->propagationManager->getChangePropagator($share['uid_owner']);
+
+ // for updating our etags when changes are made to the share from the owners side (probably indirectly by us trough another share)
+ $this->propagationManager->listenToOwnerChanges($share['uid_owner'], $user->getUID());
+ return new SharedMount(
+ '\OC\Files\Storage\Shared',
+ '/' . $user->getUID() . '/' . $share['file_target'],
+ array(
+ 'propagator' => $ownerPropagator,
+ 'share' => $share,
+ 'user' => $user->getUID()
+ ),
+ $storageFactory
+ );
+ }, $shares);
+ }
+}
diff --git a/apps/files_sharing/lib/propagation/changewatcher.php b/apps/files_sharing/lib/propagation/changewatcher.php
new file mode 100644
index 00000000000..483f436e289
--- /dev/null
+++ b/apps/files_sharing/lib/propagation/changewatcher.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_Sharing\Propagation;
+
+use OC\Files\Cache\ChangePropagator;
+use OC\Files\Filesystem;
+use OC\Files\View;
+use OCA\Files_Sharing\SharedMount;
+
+/**
+ * Watch for changes made in a shared mount and propagate the changes to the share owner
+ */
+class ChangeWatcher {
+ /**
+ * The user view for the logged in user
+ *
+ * @var \OC\Files\View
+ */
+ private $baseView;
+
+ /**
+ * @param \OC\Files\View $baseView the view for the logged in user
+ */
+ public function __construct(View $baseView) {
+ $this->baseView = $baseView;
+ }
+
+
+ public function writeHook($params) {
+ $path = $params['path'];
+ $fullPath = $this->baseView->getAbsolutePath($path);
+ $mount = $this->baseView->getMount($path);
+ if ($mount instanceof SharedMount) {
+ $this->propagateForOwner($mount->getShare(), $mount->getInternalPath($fullPath), $mount->getOwnerPropagator());
+ }
+ }
+
+ public function renameHook($params) {
+ $path1 = $params['oldpath'];
+ $path2 = $params['newpath'];
+ $fullPath1 = $this->baseView->getAbsolutePath($path1);
+ $fullPath2 = $this->baseView->getAbsolutePath($path2);
+ $mount1 = $this->baseView->getMount($path1);
+ $mount2 = $this->baseView->getMount($path2);
+ if ($mount1 instanceof SharedMount and $mount1->getInternalPath($fullPath1) !== '') {
+ $this->propagateForOwner($mount1->getShare(), $mount1->getInternalPath($fullPath1), $mount1->getOwnerPropagator());
+ }
+ if ($mount1 !== $mount2 and $mount2 instanceof SharedMount and $mount2->getInternalPath($fullPath2) !== '') {
+ $this->propagateForOwner($mount2->getShare(), $mount2->getInternalPath($fullPath2), $mount2->getOwnerPropagator());
+ }
+ }
+
+ /**
+ * @param array $share
+ * @param string $internalPath
+ * @param \OC\Files\Cache\ChangePropagator $propagator
+ */
+ private function propagateForOwner($share, $internalPath, ChangePropagator $propagator) {
+ // note that we have already set up the filesystem for the owner when mounting the share
+ $view = new View('/' . $share['uid_owner'] . '/files');
+
+ $shareRootPath = $view->getPath($share['item_source']);
+ if (!is_null($shareRootPath)) {
+ $path = $shareRootPath . '/' . $internalPath;
+ $path = Filesystem::normalizePath($path);
+ $propagator->addChange($path);
+ $propagator->propagateChanges();
+ }
+ }
+}
diff --git a/apps/files_sharing/lib/propagation/propagationmanager.php b/apps/files_sharing/lib/propagation/propagationmanager.php
new file mode 100644
index 00000000000..fa073be7f60
--- /dev/null
+++ b/apps/files_sharing/lib/propagation/propagationmanager.php
@@ -0,0 +1,112 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_Sharing\Propagation;
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+use OCP\IConfig;
+use OCP\IUserSession;
+
+
+/**
+ * Keep track of all change and share propagators by owner
+ */
+class PropagationManager {
+ /**
+ * @var \OCP\IUserSession
+ */
+ private $userSession;
+
+ /**
+ * @var \OCP\IConfig
+ */
+ private $config;
+
+ /**
+ * Change propagators for share owner
+ *
+ * @var \OC\Files\Cache\ChangePropagator[]
+ */
+ private $changePropagators = [];
+
+ /**
+ * Recipient propagators
+ *
+ * @var \OCA\Files_Sharing\Propagation\RecipientPropagator[]
+ */
+ private $sharePropagators = [];
+
+ public function __construct(IUserSession $userSession, IConfig $config) {
+ $this->userSession = $userSession;
+ $this->config = $config;
+ }
+
+ /**
+ * @param string $user
+ * @return \OC\Files\Cache\ChangePropagator
+ */
+ public function getChangePropagator($user) {
+ $activeUser = $this->userSession->getUser();
+
+ // for the local user we want to propagator from the active view, not any cached one
+ if ($activeUser && $activeUser->getUID() === $user && Filesystem::getView() instanceof View) {
+ // it's important that we take the existing propagator here to make sure we can listen to external changes
+ $this->changePropagators[$user] = Filesystem::getView()->getUpdater()->getPropagator();
+ }
+ if (isset($this->changePropagators[$user])) {
+ return $this->changePropagators[$user];
+ }
+ $view = new View('/' . $user . '/files');
+ $this->changePropagators[$user] = $view->getUpdater()->getPropagator();
+ return $this->changePropagators[$user];
+ }
+
+ /**
+ * @param string $user
+ * @return \OCA\Files_Sharing\Propagation\RecipientPropagator
+ */
+ public function getSharePropagator($user) {
+ if (isset($this->sharePropagators[$user])) {
+ return $this->sharePropagators[$user];
+ }
+ $this->sharePropagators[$user] = new RecipientPropagator($user, $this->getChangePropagator($user), $this->config);
+ return $this->sharePropagators[$user];
+ }
+
+ /**
+ * Attach the recipient propagator for $user to the change propagator of a share owner to mark shares as dirty when the owner makes a change to a share
+ *
+ * @param string $shareOwner
+ * @param string $user
+ */
+ public function listenToOwnerChanges($shareOwner, $user) {
+ $sharePropagator = $this->getSharePropagator($user);
+ $ownerPropagator = $this->getChangePropagator($shareOwner);
+ $sharePropagator->attachToPropagator($ownerPropagator, $shareOwner);
+ }
+
+ /**
+ * To be called from setupFS trough a hook
+ *
+ * Sets up listening to changes made to shares owned by the current user
+ */
+ public function globalSetup() {
+ $user = $this->userSession->getUser();
+ if (!$user) {
+ return;
+ }
+ $watcher = new ChangeWatcher(Filesystem::getView());
+
+ // for marking shares owned by the active user as dirty when a file inside them changes
+ $this->listenToOwnerChanges($user->getUID(), $user->getUID());
+ \OC_Hook::connect('OC_Filesystem', 'post_write', $watcher, 'writeHook');
+ \OC_Hook::connect('OC_Filesystem', 'post_delete', $watcher, 'writeHook');
+ \OC_Hook::connect('OC_Filesystem', 'post_rename', $watcher, 'renameHook');
+ }
+}
diff --git a/apps/files_sharing/lib/propagation/recipientpropagator.php b/apps/files_sharing/lib/propagation/recipientpropagator.php
new file mode 100644
index 00000000000..5b7651f2ce7
--- /dev/null
+++ b/apps/files_sharing/lib/propagation/recipientpropagator.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_Sharing\Propagation;
+
+use OC\Files\Cache\ChangePropagator;
+use OC\Files\View;
+use OC\Share\Share;
+
+/**
+ * Propagate etags for share recipients
+ */
+class RecipientPropagator {
+ /**
+ * @var string
+ */
+ protected $userId;
+
+ /**
+ * @var \OC\Files\Cache\ChangePropagator
+ */
+ protected $changePropagator;
+
+ /**
+ * @var \OCP\IConfig
+ */
+ protected $config;
+
+ /**
+ * @param string $userId current user, must match the propagator's
+ * user
+ * @param \OC\Files\Cache\ChangePropagator $changePropagator change propagator
+ * initialized with a view for $user
+ * @param \OCP\IConfig $config
+ */
+ public function __construct($userId, $changePropagator, $config) {
+ $this->userId = $userId;
+ $this->changePropagator = $changePropagator;
+ $this->config = $config;
+ }
+
+ /**
+ * Propagate the etag changes for all shares marked as dirty and mark the shares as clean
+ *
+ * @param array $shares the shares for the users
+ * @param int $time
+ */
+ public function propagateDirtyMountPoints(array $shares, $time = null) {
+ if ($time === null) {
+ $time = microtime(true);
+ }
+ $dirtyShares = $this->getDirtyShares($shares);
+ foreach ($dirtyShares as $share) {
+ $this->changePropagator->addChange($share['file_target']);
+ }
+ if (count($dirtyShares)) {
+ $this->config->setUserValue($this->userId, 'files_sharing', 'last_propagate', $time);
+ $this->changePropagator->propagateChanges(floor($time));
+ }
+ }
+
+ /**
+ * Get all shares we need to update the etag for
+ *
+ * @param array $shares the shares for the users
+ * @return string[]
+ */
+ protected function getDirtyShares($shares) {
+ $dirty = [];
+ $userTime = $this->config->getUserValue($this->userId, 'files_sharing', 'last_propagate', 0);
+ foreach ($shares as $share) {
+ $updateTime = $this->config->getAppValue('files_sharing', $share['id'], 0);
+ if ($updateTime >= $userTime) {
+ $dirty[] = $share;
+ }
+ }
+ return $dirty;
+ }
+
+ /**
+ * @param array $share
+ * @param int $time
+ */
+ public function markDirty($share, $time = null) {
+ if ($time === null) {
+ $time = microtime(true);
+ }
+ $this->config->setAppValue('files_sharing', $share['id'], $time);
+ }
+
+ /**
+ * Listen on the propagator for updates made to shares owned by a user
+ *
+ * @param \OC\Files\Cache\ChangePropagator $propagator
+ * @param string $owner
+ */
+ public function attachToPropagator(ChangePropagator $propagator, $owner) {
+ $propagator->listen('\OC\Files', 'propagate', function ($path, $entry) use ($owner) {
+ $shares = Share::getAllSharesForFileId($entry['fileid']);
+ foreach ($shares as $share) {
+ // propagate down the share tree
+ $this->markDirty($share, microtime(true));
+
+ // propagate up the share tree
+ $user = $share['uid_owner'];
+ $view = new View('/' . $user . '/files');
+ $path = $view->getPath($share['file_source']);
+ $watcher = new ChangeWatcher($view);
+ $watcher->writeHook(['path' => $path]);
+ }
+ });
+ }
+}
diff --git a/apps/files_sharing/lib/readonlywrapper.php b/apps/files_sharing/lib/readonlywrapper.php
index 067000ff47c..a5d84f7f5a2 100644
--- a/apps/files_sharing/lib/readonlywrapper.php
+++ b/apps/files_sharing/lib/readonlywrapper.php
@@ -23,7 +23,9 @@
namespace OCA\Files_Sharing;
+use OC\Files\Cache\Wrapper\CachePermissionsMask;
use OC\Files\Storage\Wrapper\Wrapper;
+use OCP\Constants;
class ReadOnlyWrapper extends Wrapper {
public function isUpdatable($path) {
@@ -66,6 +68,7 @@ class ReadOnlyWrapper extends Wrapper {
if (!$storage) {
$storage = $this;
}
- return new ReadOnlyCache($storage);
+ $sourceCache = $this->storage->getCache($path, $storage);
+ return new CachePermissionsMask($sourceCache, Constants::PERMISSION_READ | Constants::PERMISSION_SHARE);
}
}
diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php
index da00549541b..15aea0aa52a 100644
--- a/apps/files_sharing/lib/sharedmount.php
+++ b/apps/files_sharing/lib/sharedmount.php
@@ -25,6 +25,7 @@ namespace OCA\Files_Sharing;
use OC\Files\Mount\MountPoint;
use OC\Files\Mount\MoveableMount;
+use OC\Files\View;
/**
* Shared mount points can be moved by the user
@@ -35,8 +36,14 @@ class SharedMount extends MountPoint implements MoveableMount {
*/
protected $storage = null;
+ /**
+ * @var \OC\Files\Cache\ChangePropagator
+ */
+ protected $ownerPropagator;
+
public function __construct($storage, $mountpoint, $arguments = null, $loader = null) {
// first update the mount point before creating the parent
+ $this->ownerPropagator = $arguments['propagator'];
$newMountPoint = $this->verifyMountPoint($arguments['share'], $arguments['user']);
$absMountPoint = '/' . $arguments['user'] . '/files' . $newMountPoint;
parent::__construct($storage, $absMountPoint, $arguments, $loader);
@@ -49,8 +56,9 @@ class SharedMount extends MountPoint implements MoveableMount {
$mountPoint = basename($share['file_target']);
$parent = dirname($share['file_target']);
+ $view = new View('/' . $user . '/files');
- if (!\OC\Files\Filesystem::is_dir($parent)) {
+ if (!$view->is_dir($parent)) {
$parent = Helper::getShareFolder();
}
@@ -174,4 +182,15 @@ class SharedMount extends MountPoint implements MoveableMount {
return $result;
}
+
+ public function getShare() {
+ return $this->getStorage()->getShare();
+ }
+
+ /**
+ * @return \OC\Files\Cache\ChangePropagator
+ */
+ public function getOwnerPropagator() {
+ return $this->ownerPropagator;
+ }
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 8c2f03b1419..33b7f887e19 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -28,8 +28,11 @@
*/
namespace OC\Files\Storage;
+
+use OC\Files\Cache\ChangePropagator;
use OC\Files\Filesystem;
use OCA\Files_Sharing\ISharedStorage;
+use OCA\Files_Sharing\Propagator;
use OCA\Files_Sharing\SharedMount;
/**
@@ -47,6 +50,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* get id of the mount point
+ *
* @return string
*/
public function getId() {
@@ -55,14 +59,16 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* get file cache of the shared item source
+ *
* @return int
*/
public function getSourceId() {
- return (int) $this->share['file_source'];
+ return (int)$this->share['file_source'];
}
/**
* Get the source file path, permissions, and owner for a shared file
+ *
* @param string $target Shared target file path
* @return Returns array with the keys path, permissions, and owner or false if not found
*/
@@ -86,6 +92,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* Get the source file path for a shared file
+ *
* @param string $target Shared target file path
* @return string|false source file path or false if not found
*/
@@ -109,6 +116,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* Get the permissions granted for a shared file
+ *
* @param string $target Shared target file path
* @return int CRUDS permissions granted
*/
@@ -138,13 +146,14 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* Delete the directory if DELETE permission is granted
+ *
* @param string $path
* @return boolean
*/
public function rmdir($path) {
// never delete a share mount point
- if(empty($path)) {
+ if (empty($path)) {
return false;
}
@@ -277,6 +286,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* Delete the file if DELETE permission is granted
+ *
* @param string $path
* @return boolean
*/
@@ -316,30 +326,32 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
}
}
- // for part files we need to ask for the owner and path from the parent directory because
- // the file cache doesn't return any results for part files
- if ($isPartFile) {
- list($user1, $path1) = \OCA\Files_Sharing\Helper::getUidAndFilename($pathinfo['dirname']);
- $path1 = $path1 . '/' . $pathinfo['basename'];
- } else {
- list($user1, $path1) = \OCA\Files_Sharing\Helper::getUidAndFilename($relPath1);
- }
- $targetFilename = basename($relPath2);
- list($user2, $path2) = \OCA\Files_Sharing\Helper::getUidAndFilename(dirname($relPath2));
- $rootView = new \OC\Files\View('');
- $rootView->getUpdater()->disable(); // dont update the cache here
- $result = $rootView->rename('/' . $user1 . '/files/' . $path1, '/' . $user2 . '/files/' . $path2 . '/' . $targetFilename);
- $rootView->getUpdater()->enable();
- return $result;
+
+ /**
+ * @var \OC\Files\Storage\Storage $sourceStorage
+ */
+ list($sourceStorage, $sourceInternalPath) = $this->resolvePath($path1);
+ /**
+ * @var \OC\Files\Storage\Storage $targetStorage
+ */
+ list($targetStorage, $targetInternalPath) = $this->resolvePath($path2);
+
+ return $targetStorage->moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
}
public function copy($path1, $path2) {
// Copy the file if CREATE permission is granted
if ($this->isCreatable(dirname($path2))) {
- $oldSource = $this->getSourcePath($path1);
- $newSource = $this->getSourcePath(dirname($path2)) . '/' . basename($path2);
- $rootView = new \OC\Files\View('');
- return $rootView->copy($oldSource, $newSource);
+ /**
+ * @var \OC\Files\Storage\Storage $sourceStorage
+ */
+ list($sourceStorage, $sourceInternalPath) = $this->resolvePath($path1);
+ /**
+ * @var \OC\Files\Storage\Storage $targetStorage
+ */
+ list($targetStorage, $targetInternalPath) = $this->resolvePath($path2);
+
+ return $targetStorage->copyFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
}
return false;
}
@@ -426,37 +438,6 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
return false;
}
- public static function setup($options) {
- $user = $options['user'];
- $shares = \OCP\Share::getItemsSharedWithUser('file', $user);
- $manager = Filesystem::getMountManager();
- $loader = Filesystem::getLoader();
- if (
- !isset(self::$isInitialized[$user]) && (
- !\OCP\User::isLoggedIn()
- || \OCP\User::getUser() != $options['user']
- || $shares
- )
- ) {
- foreach ($shares as $share) {
- // don't mount shares where we have no permissions
- if ($share['permissions'] > 0) {
- $mount = new SharedMount(
- '\OC\Files\Storage\Shared',
- $options['user_dir'] . '/' . $share['file_target'],
- array(
- 'share' => $share,
- 'user' => $user
- ),
- $loader
- );
- $manager->addMount($mount);
- }
- }
- }
- self::$isInitialized[$user] = true;
- }
-
/**
* return mount point of share, relative to data/user/files
*
@@ -476,6 +457,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* does the group share already has a user specific unique name
+ *
* @return bool
*/
public function uniqueNameSet() {
@@ -493,6 +475,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* get share ID
+ *
* @return integer unique share ID
*/
public function getShareId() {
@@ -501,6 +484,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* get the user who shared the file
+ *
* @return string
*/
public function getSharedFrom() {
@@ -516,6 +500,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
/**
* return share type, can be "file" or "folder"
+ *
* @return string
*/
public function getItemType() {
diff --git a/apps/files_sharing/lib/updater.php b/apps/files_sharing/lib/updater.php
index 322c031f2f1..88bb68aa36e 100644
--- a/apps/files_sharing/lib/updater.php
+++ b/apps/files_sharing/lib/updater.php
@@ -28,13 +28,15 @@ namespace OC\Files\Cache;
class Shared_Updater {
/**
- * walk up the users file tree and update the etags
- * @param string $user
- * @param string $path
+ * Walk up the users file tree and update the etags.
+ *
+ * @param string $user user id
+ * @param string $path share mount point path, relative to the user's "files" folder
*/
static private function correctUsersFolder($user, $path) {
// $path points to the mount point which is a virtual folder, so we start with
// the parent
+ $path = '/' . ltrim($path, '/');
$path = '/files' . dirname($path);
\OC\Files\Filesystem::initMountPoints($user);
$view = new \OC\Files\View('/' . $user);
@@ -50,47 +52,9 @@ class Shared_Updater {
}
/**
- * Correct the parent folders' ETags for all users shared the file at $target
- *
- * @param string $target
- */
- static public function correctFolders($target) {
-
- // ignore part files
- if (pathinfo($target, PATHINFO_EXTENSION) === 'part') {
- return false;
- }
-
- // Correct Shared folders of other users shared with
- $shares = \OCA\Files_Sharing\Helper::getSharesFromItem($target);
-
- foreach ($shares as $share) {
- if ((int)$share['share_type'] === \OCP\Share::SHARE_TYPE_USER) {
- self::correctUsersFolder($share['share_with'], $share['file_target']);
- } elseif ((int)$share['share_type'] === \OCP\Share::SHARE_TYPE_GROUP) {
- $users = \OC_Group::usersInGroup($share['share_with']);
- foreach ($users as $user) {
- self::correctUsersFolder($user, $share['file_target']);
- }
- } else { //unique name for group share
- self::correctUsersFolder($share['share_with'], $share['file_target']);
- }
- }
- }
-
- /**
- * @param array $params
- */
- static public function writeHook($params) {
- self::correctFolders($params['path']);
- }
-
- /**
* @param array $params
*/
static public function renameHook($params) {
- self::correctFolders($params['newpath']);
- self::correctFolders(pathinfo($params['oldpath'], PATHINFO_DIRNAME));
self::renameChildren($params['oldpath'], $params['newpath']);
}
@@ -99,7 +63,6 @@ class Shared_Updater {
*/
static public function deleteHook($params) {
$path = $params['path'];
- self::correctFolders($path);
}
/**
@@ -140,10 +103,10 @@ class Shared_Updater {
foreach ($deletedShares as $share) {
if ($share['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) {
foreach (\OC_Group::usersInGroup($share['shareWith']) as $user) {
- self::correctUsersFolder($user, dirname($share['fileTarget']));
+ self::correctUsersFolder($user, $share['fileTarget']);
}
} else {
- self::correctUsersFolder($share['shareWith'], dirname($share['fileTarget']));
+ self::correctUsersFolder($share['shareWith'], $share['fileTarget']);
}
}
}
@@ -158,10 +121,10 @@ class Shared_Updater {
foreach ($params['unsharedItems'] as $item) {
if ($item['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) {
foreach (\OC_Group::usersInGroup($item['shareWith']) as $user) {
- self::correctUsersFolder($user, dirname($item['fileTarget']));
+ self::correctUsersFolder($user, $item['fileTarget']);
}
} else {
- self::correctUsersFolder($item['shareWith'], dirname($item['fileTarget']));
+ self::correctUsersFolder($item['shareWith'], $item['fileTarget']);
}
}
}
diff --git a/apps/files_sharing/publicwebdav.php b/apps/files_sharing/publicwebdav.php
index 3a961f5d757..3be464c64f0 100644
--- a/apps/files_sharing/publicwebdav.php
+++ b/apps/files_sharing/publicwebdav.php
@@ -56,7 +56,8 @@ $server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', \OC::
// wait with registering these until auth is handled and the filesystem is setup
$server->on('beforeMethod', function () use ($server, $objectTree, $authBackend) {
$share = $authBackend->getShare();
- $owner = $share['uid_owner'];
+ $rootShare = \OCP\Share::resolveReShare($share);
+ $owner = $rootShare['uid_owner'];
$isWritable = $share['permissions'] & (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_CREATE);
$fileId = $share['file_source'];
diff --git a/apps/files_sharing/tests/cache.php b/apps/files_sharing/tests/cache.php
index 882c8afadc3..7e7e5ee26d5 100644
--- a/apps/files_sharing/tests/cache.php
+++ b/apps/files_sharing/tests/cache.php
@@ -113,7 +113,9 @@ class Test_Files_Sharing_Cache extends TestCase {
}
protected function tearDown() {
- $this->sharedCache->clear();
+ if($this->sharedCache) {
+ $this->sharedCache->clear();
+ }
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
diff --git a/apps/files_sharing/tests/controller/sharecontroller.php b/apps/files_sharing/tests/controller/sharecontroller.php
index c3bd41b0402..64ee5b8ce51 100644
--- a/apps/files_sharing/tests/controller/sharecontroller.php
+++ b/apps/files_sharing/tests/controller/sharecontroller.php
@@ -26,7 +26,7 @@
namespace OCA\Files_Sharing\Controllers;
use OC\Files\Filesystem;
-use OCA\Files_Sharing\Application;
+use OCA\Files_Sharing\AppInfo\Application;
use OCP\AppFramework\Http\NotFoundResponse;
use OCP\AppFramework\IAppContainer;
use OCP\Files;
diff --git a/apps/files_sharing/tests/etagpropagation.php b/apps/files_sharing/tests/etagpropagation.php
new file mode 100644
index 00000000000..60b7c525e35
--- /dev/null
+++ b/apps/files_sharing/tests/etagpropagation.php
@@ -0,0 +1,387 @@
+<?php
+/**
+ * @author Vincent Petry <pvince81@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\Tests;
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+
+class EtagPropagation extends TestCase {
+ /**
+ * @var \OC\Files\View
+ */
+ private $rootView;
+ protected $fileIds = []; // [$user=>[$path=>$id]]
+ protected $fileEtags = []; // [$id=>$etag]
+
+ public static function setUpBeforeClass() {
+ parent::setUpBeforeClass();
+ \OCA\Files_Sharing\Helper::registerHooks();
+ }
+
+ protected function setUp() {
+ parent::setUp();
+ $this->setUpShares();
+ }
+
+ protected function tearDown() {
+ \OC_Hook::clear('OC_Filesystem', 'post_write');
+ \OC_Hook::clear('OC_Filesystem', 'post_delete');
+ \OC_Hook::clear('OC_Filesystem', 'post_rename');
+ parent::tearDown();
+ }
+
+ /**
+ * "user1" is the admin who shares a folder "sub1/sub2/folder" with "user2" and "user3"
+ * "user2" receives the folder and puts it in "sub1/sub2/folder"
+ * "user3" receives the folder and puts it in "sub1/sub2/folder"
+ * "user2" reshares the subdir "sub1/sub2/folder/inside" with "user4"
+ * "user4" puts the received "inside" folder into "sub1/sub2/inside" (this is to check if it propagates across multiple subfolders)
+ */
+ private function setUpShares() {
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER1] = [];
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER2] = [];
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER3] = [];
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER4] = [];
+
+ $this->rootView = new View('');
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ $view1 = new View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files');
+ $view1->mkdir('/sub1/sub2/folder/inside');
+ $view1->mkdir('/directReshare');
+ $view1->mkdir('/sub1/sub2/folder/other');
+ $view1->mkdir('/sub1/sub2/folder/other');
+ $view1->file_put_contents('/sub1/sub2/folder/file.txt', 'foobar');
+ $view1->file_put_contents('/sub1/sub2/folder/inside/file.txt', 'foobar');
+ $folderInfo = $view1->getFileInfo('/sub1/sub2/folder');
+ \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31);
+ \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER3, 31);
+ $folderInfo = $view1->getFileInfo('/directReshare');
+ \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31);
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER1][''] = $view1->getFileInfo('')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['sub1'] = $view1->getFileInfo('sub1')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['sub1/sub2'] = $view1->getFileInfo('sub1/sub2')->getId();
+
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ $view2 = new View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
+ $view2->mkdir('/sub1/sub2');
+ $view2->rename('/folder', '/sub1/sub2/folder');
+ $insideInfo = $view2->getFileInfo('/sub1/sub2/folder/inside');
+ \OCP\Share::shareItem('folder', $insideInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER4, 31);
+ $folderInfo = $view2->getFileInfo('/directReshare');
+ \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER4, 31);
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER2][''] = $view2->getFileInfo('')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['sub1'] = $view2->getFileInfo('sub1')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['sub1/sub2'] = $view2->getFileInfo('sub1/sub2')->getId();
+
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER3);
+ $view3 = new View('/' . self::TEST_FILES_SHARING_API_USER3 . '/files');
+ $view3->mkdir('/sub1/sub2');
+ $view3->rename('/folder', '/sub1/sub2/folder');
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER3][''] = $view3->getFileInfo('')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER3]['sub1'] = $view3->getFileInfo('sub1')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER3]['sub1/sub2'] = $view3->getFileInfo('sub1/sub2')->getId();
+
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER4);
+ $view4 = new View('/' . self::TEST_FILES_SHARING_API_USER4 . '/files');
+ $view4->mkdir('/sub1/sub2');
+ $view4->rename('/inside', '/sub1/sub2/inside');
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER4][''] = $view4->getFileInfo('')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER4]['sub1'] = $view4->getFileInfo('sub1')->getId();
+ $this->fileIds[self::TEST_FILES_SHARING_API_USER4]['sub1/sub2'] = $view4->getFileInfo('sub1/sub2')->getId();
+
+ foreach ($this->fileIds as $user => $ids) {
+ $this->loginAsUser($user);
+ foreach ($ids as $id) {
+ $path = $this->rootView->getPath($id);
+ $this->fileEtags[$id] = $this->rootView->getFileInfo($path)->getEtag();
+ }
+ }
+ }
+
+ /**
+ * @param string[] $users
+ * @param string $subPath
+ */
+ private function assertEtagsChanged($users, $subPath = '') {
+ $oldUser = \OC::$server->getUserSession()->getUser();
+ foreach ($users as $user) {
+ $this->loginAsUser($user);
+ $id = $this->fileIds[$user][$subPath];
+ $path = $this->rootView->getPath($id);
+ $etag = $this->rootView->getFileInfo($path)->getEtag();
+ $this->assertNotEquals($this->fileEtags[$id], $etag, 'Failed asserting that the etag for "' . $subPath . '" of user ' . $user . ' has changed');
+ $this->fileEtags[$id] = $etag;
+ }
+ $this->loginAsUser($oldUser->getUID());
+ }
+
+ /**
+ * @param string[] $users
+ * @param string $subPath
+ */
+ private function assertEtagsNotChanged($users, $subPath = '') {
+ $oldUser = \OC::$server->getUserSession()->getUser();
+ foreach ($users as $user) {
+ $this->loginAsUser($user);
+ $id = $this->fileIds[$user][$subPath];
+ $path = $this->rootView->getPath($id);
+ $etag = $this->rootView->getFileInfo($path)->getEtag();
+ $this->assertEquals($this->fileEtags[$id], $etag, 'Failed asserting that the etag for "' . $subPath . '" of user ' . $user . ' has not changed');
+ $this->fileEtags[$id] = $etag;
+ }
+ $this->loginAsUser($oldUser->getUID());
+ }
+
+ /**
+ * Assert that the etags for the root, /sub1 and /sub1/sub2 have changed
+ *
+ * @param string[] $users
+ */
+ private function assertEtagsForFoldersChanged($users) {
+ $this->assertEtagsChanged($users);
+
+ $this->assertEtagsChanged($users, 'sub1');
+ $this->assertEtagsChanged($users, 'sub1/sub2');
+ }
+
+ private function assertAllUnchaged() {
+ $users = [self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4];
+ $this->assertEtagsNotChanged($users);
+ }
+
+ public function testOwnerWritesToShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::file_put_contents('/sub1/sub2/folder/asd.txt', 'bar');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4]);
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerWritesToShareWithReshare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::file_put_contents('/sub1/sub2/folder/inside/bar.txt', 'bar');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerRenameInShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4]);
+ Filesystem::rename('/sub1/sub2/folder/file.txt', '/sub1/sub2/folder/renamed.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerRenameInReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::rename('/sub1/sub2/folder/inside/file.txt', '/sub1/sub2/folder/inside/renamed.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerRenameIntoReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::rename('/sub1/sub2/folder/file.txt', '/sub1/sub2/folder/inside/renamed.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerRenameOutOfReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::rename('/sub1/sub2/folder/inside/file.txt', '/sub1/sub2/folder/renamed.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerDeleteInShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::unlink('/sub1/sub2/folder/file.txt');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4]);
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerDeleteInReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ Filesystem::unlink('/sub1/sub2/folder/inside/file.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testOwnerUnshares() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1);
+ $folderInfo = $this->rootView->getFileInfo('/' . self::TEST_FILES_SHARING_API_USER1 . '/files/sub1/sub2/folder');
+ $folderId = $folderInfo->getId();
+ $this->assertTrue(
+ \OCP\Share::unshare(
+ 'folder',
+ $folderId,
+ \OCP\Share::SHARE_TYPE_USER,
+ self::TEST_FILES_SHARING_API_USER2
+ )
+ );
+ $this->assertEtagsForFoldersChanged([
+ // direct recipient affected
+ self::TEST_FILES_SHARING_API_USER2,
+ // reshare recipient affected
+ self::TEST_FILES_SHARING_API_USER4,
+ ]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientUnsharesFromSelf() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ $this->assertTrue(
+ $this->rootView->unlink('/' . self::TEST_FILES_SHARING_API_USER2 . '/files/sub1/sub2/folder')
+ );
+ $this->assertEtagsForFoldersChanged([
+ // direct recipient affected
+ self::TEST_FILES_SHARING_API_USER2,
+ // reshare recipient affected
+ self::TEST_FILES_SHARING_API_USER4,
+ ]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientWritesToShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::file_put_contents('/sub1/sub2/folder/asd.txt', 'bar');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4]);
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientWritesToReshare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::file_put_contents('/sub1/sub2/folder/inside/asd.txt', 'bar');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientWritesToOtherRecipientsReshare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER3);
+ Filesystem::file_put_contents('/sub1/sub2/folder/inside/asd.txt', 'bar');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientRenameInShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::rename('/sub1/sub2/folder/file.txt', '/sub1/sub2/folder/renamed.txt');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4]);
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientRenameInReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::rename('/sub1/sub2/folder/inside/file.txt', '/sub1/sub2/folder/inside/renamed.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientRenameResharedFolder() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::rename('/directReshare', '/sub1/directReshare');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+ $this->assertEtagsChanged([self::TEST_FILES_SHARING_API_USER2]);
+
+ $this->assertEtagsChanged([self::TEST_FILES_SHARING_API_USER2], 'sub1');
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientDeleteInShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::unlink('/sub1/sub2/folder/file.txt');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER4]);
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testRecipientDeleteInReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::unlink('/sub1/sub2/folder/inside/file.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testReshareRecipientWritesToReshare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER4);
+ Filesystem::file_put_contents('/sub1/sub2/inside/asd.txt', 'bar');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testReshareRecipientRenameInReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER4);
+ Filesystem::rename('/sub1/sub2/inside/file.txt', '/sub1/sub2/inside/renamed.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+
+ public function testReshareRecipientDeleteInReShare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER4);
+ Filesystem::unlink('/sub1/sub2/inside/file.txt');
+ $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
+}
diff --git a/apps/files_sharing/tests/external/managertest.php b/apps/files_sharing/tests/external/managertest.php
index 3fd1f5444b2..f7b216530d5 100644
--- a/apps/files_sharing/tests/external/managertest.php
+++ b/apps/files_sharing/tests/external/managertest.php
@@ -22,16 +22,20 @@
namespace OCA\Files_Sharing\Tests\External;
use OC\Files\Storage\StorageFactory;
+use OCA\Files_Sharing\External\Manager;
use OCA\Files_Sharing\Tests\TestCase;
class ManagerTest extends TestCase {
- /** @var \OCA\Files_Sharing\External\Manager **/
+ /** @var Manager **/
private $manager;
/** @var \OC\Files\Mount\Manager */
private $mountManager;
+ /** @var \PHPUnit_Framework_MockObject_MockObject */
+ private $httpHelper;
+
private $uid;
protected function setUp() {
@@ -39,16 +43,19 @@ class ManagerTest extends TestCase {
$this->uid = $this->getUniqueID('user');
$this->mountManager = new \OC\Files\Mount\Manager();
- $this->manager = new \OCA\Files_Sharing\External\Manager(
+ $this->httpHelper = $httpHelper = $this->getMockBuilder('\OC\HTTPHelper')->disableOriginalConstructor()->getMock();
+ /** @var \OC\HTTPHelper $httpHelper */
+ $this->manager = new Manager(
\OC::$server->getDatabaseConnection(),
$this->mountManager,
new StorageFactory(),
- $this->getMockBuilder('\OC\HTTPHelper')->disableOriginalConstructor()->getMock(),
+ $httpHelper,
$this->uid
);
}
public function testAddShare() {
+
$shareData1 = [
'remote' => 'http://localhost',
'token' => 'token1',
@@ -86,6 +93,10 @@ class ManagerTest extends TestCase {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}');
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');
+ $this->httpHelper->expects($this->at(0))
+ ->method('post')
+ ->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $openShares[0]['remote_id']), $this->anything());
+
// Accept the first share
$this->manager->acceptShare($openShares[0]['id']);
@@ -117,6 +128,10 @@ class ManagerTest extends TestCase {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}');
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');
+ $this->httpHelper->expects($this->at(0))
+ ->method('post')
+ ->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $openShares[1]['remote_id'] . '/decline'), $this->anything());
+
// Decline the third share
$this->manager->declineShare($openShares[1]['id']);
@@ -140,6 +155,13 @@ class ManagerTest extends TestCase {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}');
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');
+ $this->httpHelper->expects($this->at(0))
+ ->method('post')
+ ->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $openShares[0]['remote_id'] . '/decline'), $this->anything());
+ $this->httpHelper->expects($this->at(1))
+ ->method('post')
+ ->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $acceptedShares[0]['remote_id'] . '/decline'), $this->anything());
+
$this->manager->removeUserShares($this->uid);
$this->assertEmpty(\Test_Helper::invokePrivate($this->manager, 'getShares', [null]), 'Asserting all shares for the user have been deleted');
diff --git a/apps/files_sharing/tests/permissions.php b/apps/files_sharing/tests/permissions.php
index 92703f4a905..91f0347163a 100644
--- a/apps/files_sharing/tests/permissions.php
+++ b/apps/files_sharing/tests/permissions.php
@@ -103,7 +103,9 @@ class Test_Files_Sharing_Permissions extends OCA\Files_sharing\Tests\TestCase {
}
protected function tearDown() {
- $this->sharedCache->clear();
+ if ($this->sharedCache) {
+ $this->sharedCache->clear();
+ }
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
diff --git a/apps/files_sharing/tests/readonlycache.php b/apps/files_sharing/tests/readonlycache.php
deleted file mode 100644
index 5da200fa78f..00000000000
--- a/apps/files_sharing/tests/readonlycache.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-/**
- * @author Olivier Paroz <owncloud@interfasys.ch>
- *
- * @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\Tests;
-
-class ReadOnlyCache extends TestCase {
-
- /** @var \OC\Files\Storage\Storage */
- protected $storage;
-
- /** @var \OC\Files\Storage\StorageFactory */
- protected $loader;
-
- /** @var \OC\Files\Mount\MountPoint */
- protected $readOnlyMount;
-
- /** @var \OCA\Files_Sharing\ReadOnlyWrapper */
- protected $readOnlyStorage;
-
- /** @var \OC\Files\Cache\Cache */
- protected $readOnlyCache;
-
- protected function setUp() {
- parent::setUp();
-
- $this->view->mkdir('readonly');
- $this->view->file_put_contents('readonly/foo.txt', 'foo');
- $this->view->file_put_contents('readonly/bar.txt', 'bar');
-
- list($this->storage) = $this->view->resolvePath('');
- $this->loader = new \OC\Files\Storage\StorageFactory();
- $this->readOnlyMount = new \OC\Files\Mount\MountPoint($this->storage,
- '/readonly', [[]], $this->loader);
- $this->readOnlyStorage = $this->loader->getInstance($this->readOnlyMount,
- '\OCA\Files_Sharing\ReadOnlyWrapper', ['storage' => $this->storage]);
-
- $this->readOnlyCache = $this->readOnlyStorage->getCache();
- }
-
- public function testSetup() {
- $this->assertTrue($this->view->file_exists('/readonly/foo.txt'));
-
- $perms = $this->readOnlyStorage->getPermissions('files/readonly/foo.txt');
- $this->assertEquals(17, $perms);
-
- $this->assertFalse($this->readOnlyStorage->unlink('files/readonly/foo.txt'));
- $this->assertTrue($this->readOnlyStorage->file_exists('files/readonly/foo.txt'));
-
- $this->assertInstanceOf('\OCA\Files_Sharing\ReadOnlyCache', $this->readOnlyCache);
- }
-
- public function testGetWhenFileExists() {
- $result = $this->readOnlyCache->get('files/readonly/foo.txt');
- $this->assertNotEmpty($result);
- }
-
- public function testGetWhenFileDoesNotExist() {
- $result = $this->readOnlyCache->get('files/readonly/proof does not exist.md');
- $this->assertFalse($result);
- }
-
- public function testGetFolderContentsWhenFolderExists() {
- $results = $this->readOnlyCache->getFolderContents('files/readonly');
- $this->assertNotEmpty($results);
-
- foreach ($results as $result) {
- $this->assertNotEmpty($result);
- }
- }
-
- public function testGetFolderContentsWhenFolderDoesNotExist() {
- $results = $this->readOnlyCache->getFolderContents('files/iamaghost');
- $this->assertEmpty($results);
- }
-
-}
diff --git a/apps/files_sharing/tests/sharedstorage.php b/apps/files_sharing/tests/sharedstorage.php
index a1469a74687..7c28d0431e1 100644
--- a/apps/files_sharing/tests/sharedstorage.php
+++ b/apps/files_sharing/tests/sharedstorage.php
@@ -368,7 +368,10 @@ class Test_Files_Sharing_Storage extends OCA\Files_sharing\Tests\TestCase {
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
$this->assertTrue($rootView->file_exists('/' . self::TEST_FILES_SHARING_API_USER2 . '/files/' . $this->folder));
- OC_Hook::emit('OC_Filesystem', 'setup', array('user' => self::TEST_FILES_SHARING_API_USER3, 'user_dir' => \OC_User::getHome(self::TEST_FILES_SHARING_API_USER3)));
+
+ $mountConfigManager = \OC::$server->getMountProviderCollection();
+ $mounts = $mountConfigManager->getMountsForUser(\OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER3));
+ array_walk($mounts, array(\OC\Files\Filesystem::getMountManager(), 'addMount'));
$this->assertTrue($rootView->file_exists('/' . self::TEST_FILES_SHARING_API_USER3 . '/files/' . $this->filename));
diff --git a/apps/files_sharing/tests/propagation.php b/apps/files_sharing/tests/sizepropagation.php
index 546f67556f2..4ab3475ccfc 100644
--- a/apps/files_sharing/tests/propagation.php
+++ b/apps/files_sharing/tests/sizepropagation.php
@@ -19,11 +19,11 @@
*
*/
-namespace OCA\Files_Sharing\Tests;
+namespace OCA\Files_sharing\Tests;
use OC\Files\View;
-class Propagation extends TestCase {
+class SizePropagation extends TestCase {
public function testSizePropagationWhenOwnerChangesFile() {
$this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
diff --git a/apps/files_sharing/tests/testcase.php b/apps/files_sharing/tests/testcase.php
index b9f8658a69e..b9e9f077201 100644
--- a/apps/files_sharing/tests/testcase.php
+++ b/apps/files_sharing/tests/testcase.php
@@ -31,6 +31,7 @@ namespace OCA\Files_Sharing\Tests;
use OC\Files\Filesystem;
use OCA\Files\Share;
+use OCA\Files_Sharing\Appinfo\Application;
/**
* Class Test_Files_Sharing_Base
@@ -42,6 +43,7 @@ abstract class TestCase extends \Test\TestCase {
const TEST_FILES_SHARING_API_USER1 = "test-share-user1";
const TEST_FILES_SHARING_API_USER2 = "test-share-user2";
const TEST_FILES_SHARING_API_USER3 = "test-share-user3";
+ const TEST_FILES_SHARING_API_USER4 = "test-share-user4";
const TEST_FILES_SHARING_API_GROUP1 = "test-share-group1";
@@ -57,6 +59,10 @@ abstract class TestCase extends \Test\TestCase {
public static function setUpBeforeClass() {
parent::setUpBeforeClass();
+ $application = new Application();
+ $application->registerMountProviders();
+ $application->setupPropagation();
+
// reset backend
\OC_User::clearBackends();
\OC_Group::clearBackends();
@@ -64,7 +70,6 @@ abstract class TestCase extends \Test\TestCase {
// clear share hooks
\OC_Hook::clear('OCP\\Share');
\OC::registerShareHooks();
- \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
// create users
$backend = new \OC_User_Dummy();
@@ -72,6 +77,7 @@ abstract class TestCase extends \Test\TestCase {
$backend->createUser(self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER1);
$backend->createUser(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER2);
$backend->createUser(self::TEST_FILES_SHARING_API_USER3, self::TEST_FILES_SHARING_API_USER3);
+ $backend->createUser(self::TEST_FILES_SHARING_API_USER4, self::TEST_FILES_SHARING_API_USER4);
// create group
$groupBackend = new \OC_Group_Dummy();
@@ -147,6 +153,7 @@ abstract class TestCase extends \Test\TestCase {
\OC::$server->getUserSession()->setUser(null);
\OC\Files\Filesystem::tearDown();
\OC::$server->getUserSession()->login($user, $password);
+
\OC_Util::setupFS($user);
}
diff --git a/apps/files_sharing/tests/updater.php b/apps/files_sharing/tests/updater.php
index 67c76c28ed2..294388bfe26 100644
--- a/apps/files_sharing/tests/updater.php
+++ b/apps/files_sharing/tests/updater.php
@@ -147,79 +147,6 @@ class Test_Files_Sharing_Updater extends OCA\Files_Sharing\Tests\TestCase {
}
/**
- * if a file gets unshared by the owner the etag for the recipients root should change
- */
- function testUnshareFile() {
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $fileinfo = \OC\Files\Filesystem::getFileInfo($this->folder);
- $result = \OCP\Share::shareItem('folder', $fileinfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31);
- $this->assertTrue($result);
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- $beforeUnshare = \OC\Files\Filesystem::getFileInfo('');
- $etagBeforeUnshare = $beforeUnshare->getEtag();
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $result = \OCP\Share::unshare('folder', $fileinfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2);
- $this->assertTrue($result);
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- $afterUnshare = \OC\Files\Filesystem::getFileInfo('');
- $etagAfterUnshare = $afterUnshare->getEtag();
-
- $this->assertTrue(is_string($etagBeforeUnshare));
- $this->assertTrue(is_string($etagAfterUnshare));
- $this->assertTrue($etagBeforeUnshare !== $etagAfterUnshare);
-
- }
-
- /**
- * if a file gets unshared from self the etag for the recipients root should change
- */
- function testUnshareFromSelfFile() {
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $fileinfo = \OC\Files\Filesystem::getFileInfo($this->folder);
- $result = \OCP\Share::shareItem('folder', $fileinfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31);
- $this->assertTrue($result);
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- $result = \OCP\Share::shareItem('folder', $fileinfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER3, 31);
-
- $beforeUnshareUser2 = \OC\Files\Filesystem::getFileInfo('');
- $etagBeforeUnshareUser2 = $beforeUnshareUser2->getEtag();
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER3);
-
- $beforeUnshareUser3 = \OC\Files\Filesystem::getFileInfo('');
- $etagBeforeUnshareUser3 = $beforeUnshareUser3->getEtag();
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- $result = \OC\Files\Filesystem::unlink($this->folder);
- $this->assertTrue($result);
-
- $afterUnshareUser2 = \OC\Files\Filesystem::getFileInfo('');
- $etagAfterUnshareUser2 = $afterUnshareUser2->getEtag();
-
- $this->loginHelper(self::TEST_FILES_SHARING_API_USER3);
-
- $afterUnshareUser3 = \OC\Files\Filesystem::getFileInfo('');
- $etagAfterUnshareUser3 = $afterUnshareUser3->getEtag();
-
- $this->assertTrue(is_string($etagBeforeUnshareUser2));
- $this->assertTrue(is_string($etagBeforeUnshareUser3));
- $this->assertTrue(is_string($etagAfterUnshareUser2));
- $this->assertTrue(is_string($etagAfterUnshareUser3));
- $this->assertTrue($etagBeforeUnshareUser2 !== $etagAfterUnshareUser2);
- $this->assertTrue($etagBeforeUnshareUser3 !== $etagAfterUnshareUser3);
-
- }
-
- /**
* if a folder gets renamed all children mount points should be renamed too
*/
function testRename() {
diff --git a/apps/files_sharing/tests/watcher.php b/apps/files_sharing/tests/watcher.php
index a2e440069a4..4af5de6aaae 100644
--- a/apps/files_sharing/tests/watcher.php
+++ b/apps/files_sharing/tests/watcher.php
@@ -76,7 +76,9 @@ class Test_Files_Sharing_Watcher extends OCA\Files_sharing\Tests\TestCase {
}
protected function tearDown() {
- $this->sharedCache->clear();
+ if ($this->sharedCache) {
+ $this->sharedCache->clear();
+ }
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
diff --git a/apps/files_trashbin/command/expire.php b/apps/files_trashbin/command/expire.php
index f0526d42830..e617fa47c90 100644
--- a/apps/files_trashbin/command/expire.php
+++ b/apps/files_trashbin/command/expire.php
@@ -52,5 +52,6 @@ class Expire implements ICommand {
\OC_Util::tearDownFS();
\OC_Util::setupFS($this->user);
Trashbin::expire($this->trashBinSize, $this->user);
+ \OC_Util::tearDownFS();
}
}
diff --git a/apps/files_trashbin/l10n/is.js b/apps/files_trashbin/l10n/is.js
index 916875decea..de8522ed671 100644
--- a/apps/files_trashbin/l10n/is.js
+++ b/apps/files_trashbin/l10n/is.js
@@ -5,4 +5,4 @@ OC.L10N.register(
"Name" : "Nafn",
"Delete" : "Eyða"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/files_trashbin/l10n/is.json b/apps/files_trashbin/l10n/is.json
index 35e1620df95..5ce58fc128b 100644
--- a/apps/files_trashbin/l10n/is.json
+++ b/apps/files_trashbin/l10n/is.json
@@ -2,5 +2,5 @@
"Error" : "Villa",
"Name" : "Nafn",
"Delete" : "Eyða"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/lb.js b/apps/files_trashbin/l10n/lb.js
index 001f64200c5..c83d9a3a28b 100644
--- a/apps/files_trashbin/l10n/lb.js
+++ b/apps/files_trashbin/l10n/lb.js
@@ -1,8 +1,19 @@
OC.L10N.register(
"files_trashbin",
{
+ "Couldn't delete %s permanently" : "Konnt %s net permanent läschen",
+ "Couldn't restore %s" : "Konnt %s net erëmhierstellen",
+ "Deleted files" : "Geläscht Fichieren",
+ "Restore" : "Erëmhierstellen",
+ "Delete permanently" : "Permanent läschen",
"Error" : "Fehler",
+ "restored" : "erëmhiergestallt",
+ "No deleted files" : "Keng geläscht Fichieren",
+ "You will be able to recover deleted files from here" : "Du kanns geläscht Fichieren aus desëm Dossier erëmhierstellen",
+ "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
+ "Select all" : "All auswielen",
"Name" : "Numm",
+ "Deleted" : "Geläscht",
"Delete" : "Läschen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_trashbin/l10n/lb.json b/apps/files_trashbin/l10n/lb.json
index 2019dad0b75..ca13342cb3b 100644
--- a/apps/files_trashbin/l10n/lb.json
+++ b/apps/files_trashbin/l10n/lb.json
@@ -1,6 +1,17 @@
{ "translations": {
+ "Couldn't delete %s permanently" : "Konnt %s net permanent läschen",
+ "Couldn't restore %s" : "Konnt %s net erëmhierstellen",
+ "Deleted files" : "Geläscht Fichieren",
+ "Restore" : "Erëmhierstellen",
+ "Delete permanently" : "Permanent läschen",
"Error" : "Fehler",
+ "restored" : "erëmhiergestallt",
+ "No deleted files" : "Keng geläscht Fichieren",
+ "You will be able to recover deleted files from here" : "Du kanns geläscht Fichieren aus desëm Dossier erëmhierstellen",
+ "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
+ "Select all" : "All auswielen",
"Name" : "Numm",
+ "Deleted" : "Geläscht",
"Delete" : "Läschen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/l10n/ru.js b/apps/files_trashbin/l10n/ru.js
index 47b971180c3..b51486b6eb0 100644
--- a/apps/files_trashbin/l10n/ru.js
+++ b/apps/files_trashbin/l10n/ru.js
@@ -16,4 +16,4 @@ OC.L10N.register(
"Deleted" : "Удалён",
"Delete" : "Удалить"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"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_trashbin/l10n/ru.json b/apps/files_trashbin/l10n/ru.json
index 3d38b545ad7..9fecb3a9641 100644
--- a/apps/files_trashbin/l10n/ru.json
+++ b/apps/files_trashbin/l10n/ru.json
@@ -13,5 +13,5 @@
"Name" : "Имя",
"Deleted" : "Удалён",
"Delete" : "Удалить"
-},"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);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/files_trashbin/lib/storage.php b/apps/files_trashbin/lib/storage.php
index 418d7d2f1fd..006971fb242 100644
--- a/apps/files_trashbin/lib/storage.php
+++ b/apps/files_trashbin/lib/storage.php
@@ -81,14 +81,39 @@ class Storage extends Wrapper {
/**
* Deletes the given file by moving it into the trashbin.
*
- * @param string $path
+ * @param string $path path of file or folder to delete
+ *
+ * @return bool true if the operation succeeded, false otherwise
*/
public function unlink($path) {
+ return $this->doDelete($path, 'unlink');
+ }
+
+ /**
+ * Deletes the given folder by moving it into the trashbin.
+ *
+ * @param string $path path of folder to delete
+ *
+ * @return bool true if the operation succeeded, false otherwise
+ */
+ public function rmdir($path) {
+ return $this->doDelete($path, 'rmdir');
+ }
+
+ /**
+ * Run the delete operation with the given method
+ *
+ * @param string $path path of file or folder to delete
+ * @param string $method either "unlink" or "rmdir"
+ *
+ * @return bool true if the operation succeeded, false otherwise
+ */
+ private function doDelete($path, $method) {
if (self::$disableTrash
|| !\OC_App::isEnabled('files_trashbin')
|| (pathinfo($path, PATHINFO_EXTENSION) === 'part')
) {
- return $this->storage->unlink($path);
+ return call_user_func_array([$this->storage, $method], [$path]);
}
$normalized = Filesystem::normalizePath($this->mountPoint . '/' . $path);
$result = true;
@@ -101,14 +126,14 @@ class Storage extends Wrapper {
// in cross-storage cases the file will be copied
// but not deleted, so we delete it here
if ($result) {
- $this->storage->unlink($path);
+ call_user_func_array([$this->storage, $method], [$path]);
}
} else {
- $result = $this->storage->unlink($path);
+ $result = call_user_func_array([$this->storage, $method], [$path]);
}
unset($this->deletedFiles[$normalized]);
} else if ($this->storage->file_exists($path)) {
- $result = $this->storage->unlink($path);
+ $result = call_user_func_array([$this->storage, $method], [$path]);
}
return $result;
diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php
index 1c880735b5a..31d77c01c91 100644
--- a/apps/files_trashbin/lib/trashbin.php
+++ b/apps/files_trashbin/lib/trashbin.php
@@ -277,16 +277,16 @@ class Trashbin {
}
/**
- * restore files from trash bin
+ * Restore a file or folder from trash bin
*
- * @param string $file path to the deleted file
- * @param string $filename name of the file
- * @param int $timestamp time when the file was deleted
+ * @param string $file path to the deleted file/folder relative to "files_trashbin/files/",
+ * including the timestamp suffix ".d12345678"
+ * @param string $filename name of the file/folder
+ * @param int $timestamp time when the file/folder was deleted
*
- * @return bool
+ * @return bool true on success, false otherwise
*/
public static function restore($file, $filename, $timestamp) {
-
$user = \OCP\User::getUser();
$view = new \OC\Files\View('/' . $user);
@@ -311,6 +311,9 @@ class Trashbin {
$source = \OC\Files\Filesystem::normalizePath('files_trashbin/files/' . $file);
$target = \OC\Files\Filesystem::normalizePath('files/' . $location . '/' . $uniqueFilename);
+ if (!$view->file_exists($source)) {
+ return false;
+ }
$mtime = $view->filemtime($source);
// restore file
@@ -762,6 +765,8 @@ class Trashbin {
$name = pathinfo($filename, PATHINFO_FILENAME);
$l = \OC::$server->getL10N('files_trashbin');
+ $location = '/' . trim($location, '/');
+
// if extension is not empty we set a dot in front of it
if ($ext !== '') {
$ext = '.' . $ext;
diff --git a/apps/files_trashbin/tests/storage.php b/apps/files_trashbin/tests/storage.php
index d1468522dc2..7415aba09e9 100644
--- a/apps/files_trashbin/tests/storage.php
+++ b/apps/files_trashbin/tests/storage.php
@@ -62,6 +62,8 @@ class Storage extends \Test\TestCase {
$this->userView = new \OC\Files\View('/' . $this->user . '/files/');
$this->userView->file_put_contents('test.txt', 'foo');
+ $this->userView->mkdir('folder');
+ $this->userView->file_put_contents('folder/inside.txt', 'bar');
}
protected function tearDown() {
@@ -75,7 +77,7 @@ class Storage extends \Test\TestCase {
/**
* Test that deleting a file puts it into the trashbin.
*/
- public function testSingleStorageDelete() {
+ public function testSingleStorageDeleteFile() {
$this->assertTrue($this->userView->file_exists('test.txt'));
$this->userView->unlink('test.txt');
list($storage,) = $this->userView->resolvePath('test.txt');
@@ -90,12 +92,34 @@ class Storage extends \Test\TestCase {
}
/**
+ * Test that deleting a folder puts it into the trashbin.
+ */
+ public function testSingleStorageDeleteFolder() {
+ $this->assertTrue($this->userView->file_exists('folder/inside.txt'));
+ $this->userView->rmdir('folder');
+ list($storage,) = $this->userView->resolvePath('folder/inside.txt');
+ $storage->getScanner()->scan(''); // make sure we check the storage
+ $this->assertFalse($this->userView->getFileInfo('folder'));
+
+ // check if folder is in trashbin
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
+ $this->assertEquals(1, count($results));
+ $name = $results[0]->getName();
+ $this->assertEquals('folder', substr($name, 0, strrpos($name, '.')));
+
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/' . $name . '/');
+ $this->assertEquals(1, count($results));
+ $name = $results[0]->getName();
+ $this->assertEquals('inside.txt', $name);
+ }
+
+ /**
* Test that deleting a file from another mounted storage properly
* lands in the trashbin. This is a cross-storage situation because
* the trashbin folder is in the root storage while the mounted one
* isn't.
*/
- public function testCrossStorageDelete() {
+ public function testCrossStorageDeleteFile() {
$storage2 = new Temporary(array());
\OC\Files\Filesystem::mount($storage2, array(), $this->user . '/files/substorage');
@@ -116,9 +140,41 @@ class Storage extends \Test\TestCase {
}
/**
+ * Test that deleting a folder from another mounted storage properly
+ * lands in the trashbin. This is a cross-storage situation because
+ * the trashbin folder is in the root storage while the mounted one
+ * isn't.
+ */
+ public function testCrossStorageDeleteFolder() {
+ $storage2 = new Temporary(array());
+ \OC\Files\Filesystem::mount($storage2, array(), $this->user . '/files/substorage');
+
+ $this->userView->mkdir('substorage/folder');
+ $this->userView->file_put_contents('substorage/folder/subfile.txt', 'bar');
+ $storage2->getScanner()->scan('');
+ $this->assertTrue($storage2->file_exists('folder/subfile.txt'));
+ $this->userView->rmdir('substorage/folder');
+
+ $storage2->getScanner()->scan('');
+ $this->assertFalse($this->userView->getFileInfo('substorage/folder'));
+ $this->assertFalse($storage2->file_exists('folder/subfile.txt'));
+
+ // check if folder is in trashbin
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
+ $this->assertEquals(1, count($results));
+ $name = $results[0]->getName();
+ $this->assertEquals('folder', substr($name, 0, strrpos($name, '.')));
+
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/' . $name . '/');
+ $this->assertEquals(1, count($results));
+ $name = $results[0]->getName();
+ $this->assertEquals('subfile.txt', $name);
+ }
+
+ /**
* Test that deleted versions properly land in the trashbin.
*/
- public function testDeleteVersions() {
+ public function testDeleteVersionsOfFile() {
\OCA\Files_Versions\Hooks::connectHooks();
// trigger a version (multiple would not work because of the expire logic)
@@ -137,7 +193,38 @@ class Storage extends \Test\TestCase {
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions');
$this->assertEquals(1, count($results));
$name = $results[0]->getName();
- $this->assertEquals('test.txt', substr($name, 0, strlen('test.txt')));
+ $this->assertEquals('test.txt.v', substr($name, 0, strlen('test.txt.v')));
+ }
+
+ /**
+ * Test that deleted versions properly land in the trashbin.
+ */
+ public function testDeleteVersionsOfFolder() {
+ \OCA\Files_Versions\Hooks::connectHooks();
+
+ // trigger a version (multiple would not work because of the expire logic)
+ $this->userView->file_put_contents('folder/inside.txt', 'v1');
+
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_versions/folder/');
+ $this->assertEquals(1, count($results));
+
+ $this->userView->rmdir('folder');
+
+ // rescan trash storage
+ list($rootStorage,) = $this->rootView->resolvePath($this->user . '/files_trashbin');
+ $rootStorage->getScanner()->scan('');
+
+ // check if versions are in trashbin
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions');
+ $this->assertEquals(1, count($results));
+ $name = $results[0]->getName();
+ $this->assertEquals('folder.d', substr($name, 0, strlen('folder.d')));
+
+ // check if versions are in trashbin
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions/' . $name . '/');
+ $this->assertEquals(1, count($results));
+ $name = $results[0]->getName();
+ $this->assertEquals('inside.txt.v', substr($name, 0, strlen('inside.txt.v')));
}
/**
@@ -145,7 +232,7 @@ class Storage extends \Test\TestCase {
* storages. This is because rename() between storages would call
* unlink() which should NOT trigger the version deletion logic.
*/
- public function testKeepFileAndVersionsWhenMovingBetweenStorages() {
+ public function testKeepFileAndVersionsWhenMovingFileBetweenStorages() {
\OCA\Files_Versions\Hooks::connectHooks();
$storage2 = new Temporary(array());
@@ -162,7 +249,7 @@ class Storage extends \Test\TestCase {
// move to another storage
$this->userView->rename('test.txt', 'substorage/test.txt');
- $this->userView->file_exists('substorage/test.txt');
+ $this->assertTrue($this->userView->file_exists('substorage/test.txt'));
// rescan trash storage
list($rootStorage,) = $this->rootView->resolvePath($this->user . '/files_trashbin');
@@ -182,9 +269,50 @@ class Storage extends \Test\TestCase {
}
/**
+ * Test that versions are not auto-trashed when moving a file between
+ * storages. This is because rename() between storages would call
+ * unlink() which should NOT trigger the version deletion logic.
+ */
+ public function testKeepFileAndVersionsWhenMovingFolderBetweenStorages() {
+ \OCA\Files_Versions\Hooks::connectHooks();
+
+ $storage2 = new Temporary(array());
+ \OC\Files\Filesystem::mount($storage2, array(), $this->user . '/files/substorage');
+
+ // trigger a version (multiple would not work because of the expire logic)
+ $this->userView->file_put_contents('folder/inside.txt', 'v1');
+
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
+ $this->assertEquals(0, count($results));
+
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_versions/folder/');
+ $this->assertEquals(1, count($results));
+
+ // move to another storage
+ $this->userView->rename('folder', 'substorage/folder');
+ $this->assertTrue($this->userView->file_exists('substorage/folder/inside.txt'));
+
+ // rescan trash storage
+ list($rootStorage,) = $this->rootView->resolvePath($this->user . '/files_trashbin');
+ $rootStorage->getScanner()->scan('');
+
+ // versions were moved too
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_versions/substorage/folder/');
+ $this->assertEquals(1, count($results));
+
+ // check that nothing got trashed by the rename's unlink() call
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files');
+ $this->assertEquals(0, count($results));
+
+ // check that versions were moved and not trashed
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/versions/');
+ $this->assertEquals(0, count($results));
+ }
+
+ /**
* Delete should fail is the source file cant be deleted
*/
- public function testSingleStorageDeleteFail() {
+ public function testSingleStorageDeleteFileFail() {
/**
* @var \OC\Files\Storage\Temporary | \PHPUnit_Framework_MockObject_MockObject $storage
*/
@@ -194,9 +322,6 @@ class Storage extends \Test\TestCase {
->getMock();
$storage->expects($this->any())
- ->method('rename')
- ->will($this->returnValue(false));
- $storage->expects($this->any())
->method('unlink')
->will($this->returnValue(false));
@@ -214,4 +339,38 @@ class Storage extends \Test\TestCase {
$results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
$this->assertEquals(0, count($results));
}
+
+ /**
+ * Delete should fail is the source folder cant be deleted
+ */
+ public function testSingleStorageDeleteFolderFail() {
+ /**
+ * @var \OC\Files\Storage\Temporary | \PHPUnit_Framework_MockObject_MockObject $storage
+ */
+ $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary')
+ ->setConstructorArgs([[]])
+ ->setMethods(['rename', 'unlink', 'rmdir'])
+ ->getMock();
+
+ $storage->expects($this->any())
+ ->method('rmdir')
+ ->will($this->returnValue(false));
+
+ $cache = $storage->getCache();
+
+ Filesystem::mount($storage, [], '/' . $this->user);
+ $storage->mkdir('files');
+ $this->userView->mkdir('folder');
+ $this->userView->file_put_contents('folder/test.txt', 'foo');
+ $this->assertTrue($storage->file_exists('files/folder/test.txt'));
+ $this->assertFalse($this->userView->rmdir('files/folder'));
+ $this->assertTrue($storage->file_exists('files/folder'));
+ $this->assertTrue($storage->file_exists('files/folder/test.txt'));
+ $this->assertTrue($cache->inCache('files/folder'));
+ $this->assertTrue($cache->inCache('files/folder/test.txt'));
+
+ // file should not be in the trashbin
+ $results = $this->rootView->getDirectoryContent($this->user . '/files_trashbin/files/');
+ $this->assertEquals(0, count($results));
+ }
}
diff --git a/apps/files_trashbin/tests/trashbin.php b/apps/files_trashbin/tests/trashbin.php
index bf6446389f1..85c47b527b7 100644
--- a/apps/files_trashbin/tests/trashbin.php
+++ b/apps/files_trashbin/tests/trashbin.php
@@ -40,6 +40,11 @@ class Test_Trashbin extends \Test\TestCase {
private static $rememberAutoExpire;
/**
+ * @var bool
+ */
+ private static $trashBinStatus;
+
+ /**
* @var \OC\Files\View
*/
private $rootView;
@@ -47,6 +52,9 @@ class Test_Trashbin extends \Test\TestCase {
public static function setUpBeforeClass() {
parent::setUpBeforeClass();
+ $appManager = \OC::$server->getAppManager();
+ self::$trashBinStatus = $appManager->isEnabledForUser('files_trashbin');
+
// reset backend
\OC_User::clearBackends();
\OC_User::useBackend('database');
@@ -54,7 +62,9 @@ class Test_Trashbin extends \Test\TestCase {
// clear share hooks
\OC_Hook::clear('OCP\\Share');
\OC::registerShareHooks();
- \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
+ $application = new \OCA\Files_Sharing\AppInfo\Application();
+ $application->registerMountProviders();
+ $application->setupPropagation();
//disable encryption
\OC_App::disable('files_encryption');
@@ -87,12 +97,18 @@ class Test_Trashbin extends \Test\TestCase {
\OC\Files\Filesystem::getLoader()->removeStorageWrapper('oc_trashbin');
+ if (self::$trashBinStatus) {
+ \OC::$server->getAppManager()->enableApp('files_trashbin');
+ }
+
parent::tearDownAfterClass();
}
protected function setUp() {
parent::setUp();
+ \OC::$server->getAppManager()->enableApp('files_trashbin');
+
$this->trashRoot1 = '/' . self::TEST_TRASHBIN_USER1 . '/files_trashbin';
$this->trashRoot2 = '/' . self::TEST_TRASHBIN_USER2 . '/files_trashbin';
$this->rootView = new \OC\Files\View();
@@ -100,9 +116,18 @@ class Test_Trashbin extends \Test\TestCase {
}
protected function tearDown() {
+ // disable trashbin to be able to properly clean up
+ \OC::$server->getAppManager()->disableApp('files_trashbin');
+
+ $this->rootView->deleteAll('/' . self::TEST_TRASHBIN_USER1 . '/files');
+ $this->rootView->deleteAll('/' . self::TEST_TRASHBIN_USER2 . '/files');
$this->rootView->deleteAll($this->trashRoot1);
$this->rootView->deleteAll($this->trashRoot2);
+ // clear trash table
+ $connection = \OC::$server->getDatabaseConnection();
+ $connection->executeUpdate('DELETE FROM `*PREFIX*files_trash`');
+
parent::tearDown();
}
@@ -293,6 +318,310 @@ class Test_Trashbin extends \Test\TestCase {
}
/**
+ * Test restoring a file
+ */
+ public function testRestoreFileInRoot() {
+ $userFolder = \OC::$server->getUserFolder();
+ $file = $userFolder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('file1.txt'));
+
+ $file->delete();
+
+ $this->assertFalse($userFolder->nodeExists('file1.txt'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'file1.txt.d' . $trashedFile->getMtime(),
+ $trashedFile->getName(),
+ $trashedFile->getMtime()
+ )
+ );
+
+ $file = $userFolder->get('file1.txt');
+ $this->assertEquals('foo', $file->getContent());
+ }
+
+ /**
+ * Test restoring a file in subfolder
+ */
+ public function testRestoreFileInSubfolder() {
+ $userFolder = \OC::$server->getUserFolder();
+ $folder = $userFolder->newFolder('folder');
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('folder/file1.txt'));
+
+ $file->delete();
+
+ $this->assertFalse($userFolder->nodeExists('folder/file1.txt'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'file1.txt.d' . $trashedFile->getMtime(),
+ $trashedFile->getName(),
+ $trashedFile->getMtime()
+ )
+ );
+
+ $file = $userFolder->get('folder/file1.txt');
+ $this->assertEquals('foo', $file->getContent());
+ }
+
+ /**
+ * Test restoring a folder
+ */
+ public function testRestoreFolder() {
+ $userFolder = \OC::$server->getUserFolder();
+ $folder = $userFolder->newFolder('folder');
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('folder'));
+
+ $folder->delete();
+
+ $this->assertFalse($userFolder->nodeExists('folder'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFolder = $filesInTrash[0];
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'folder.d' . $trashedFolder->getMtime(),
+ $trashedFolder->getName(),
+ $trashedFolder->getMtime()
+ )
+ );
+
+ $file = $userFolder->get('folder/file1.txt');
+ $this->assertEquals('foo', $file->getContent());
+ }
+
+ /**
+ * Test restoring a file from inside a trashed folder
+ */
+ public function testRestoreFileFromTrashedSubfolder() {
+ $userFolder = \OC::$server->getUserFolder();
+ $folder = $userFolder->newFolder('folder');
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('folder'));
+
+ $folder->delete();
+
+ $this->assertFalse($userFolder->nodeExists('folder'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'folder.d' . $trashedFile->getMtime() . '/file1.txt',
+ 'file1.txt',
+ $trashedFile->getMtime()
+ )
+ );
+
+ $file = $userFolder->get('file1.txt');
+ $this->assertEquals('foo', $file->getContent());
+ }
+
+ /**
+ * Test restoring a file whenever the source folder was removed.
+ * The file should then land in the root.
+ */
+ public function testRestoreFileWithMissingSourceFolder() {
+ $userFolder = \OC::$server->getUserFolder();
+ $folder = $userFolder->newFolder('folder');
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('folder/file1.txt'));
+
+ $file->delete();
+
+ $this->assertFalse($userFolder->nodeExists('folder/file1.txt'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ // delete source folder
+ $folder->delete();
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'file1.txt.d' . $trashedFile->getMtime(),
+ $trashedFile->getName(),
+ $trashedFile->getMtime()
+ )
+ );
+
+ $file = $userFolder->get('file1.txt');
+ $this->assertEquals('foo', $file->getContent());
+ }
+
+ /**
+ * Test restoring a file in the root folder whenever there is another file
+ * with the same name in the root folder
+ */
+ public function testRestoreFileDoesNotOverwriteExistingInRoot() {
+ $userFolder = \OC::$server->getUserFolder();
+ $file = $userFolder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('file1.txt'));
+
+ $file->delete();
+
+ $this->assertFalse($userFolder->nodeExists('file1.txt'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ // create another file
+ $file = $userFolder->newFile('file1.txt');
+ $file->putContent('bar');
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'file1.txt.d' . $trashedFile->getMtime(),
+ $trashedFile->getName(),
+ $trashedFile->getMtime()
+ )
+ );
+
+ $anotherFile = $userFolder->get('file1.txt');
+ $this->assertEquals('bar', $anotherFile->getContent());
+
+ $restoredFile = $userFolder->get('file1 (restored).txt');
+ $this->assertEquals('foo', $restoredFile->getContent());
+ }
+
+ /**
+ * Test restoring a file whenever there is another file
+ * with the same name in the source folder
+ */
+ public function testRestoreFileDoesNotOverwriteExistingInSubfolder() {
+ $userFolder = \OC::$server->getUserFolder();
+ $folder = $userFolder->newFolder('folder');
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('folder/file1.txt'));
+
+ $file->delete();
+
+ $this->assertFalse($userFolder->nodeExists('folder/file1.txt'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ // create another file
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('bar');
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'file1.txt.d' . $trashedFile->getMtime(),
+ $trashedFile->getName(),
+ $trashedFile->getMtime()
+ )
+ );
+
+ $anotherFile = $userFolder->get('folder/file1.txt');
+ $this->assertEquals('bar', $anotherFile->getContent());
+
+ $restoredFile = $userFolder->get('folder/file1 (restored).txt');
+ $this->assertEquals('foo', $restoredFile->getContent());
+ }
+
+ /**
+ * Test restoring a non-existing file from trashbin, returns false
+ */
+ public function testRestoreUnexistingFile() {
+ $this->assertFalse(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'unexist.txt.d123456',
+ 'unexist.txt',
+ '123456'
+ )
+ );
+ }
+
+ /**
+ * Test restoring a file into a read-only folder, will restore
+ * the file to root instead
+ */
+ public function testRestoreFileIntoReadOnlySourceFolder() {
+ $userFolder = \OC::$server->getUserFolder();
+ $folder = $userFolder->newFolder('folder');
+ $file = $folder->newFile('file1.txt');
+ $file->putContent('foo');
+
+ $this->assertTrue($userFolder->nodeExists('folder/file1.txt'));
+
+ $file->delete();
+
+ $this->assertFalse($userFolder->nodeExists('folder/file1.txt'));
+
+ $filesInTrash = OCA\Files_Trashbin\Helper::getTrashFiles('/', self::TEST_TRASHBIN_USER1, 'mtime');
+ $this->assertCount(1, $filesInTrash);
+
+ /** @var \OCP\Files\FileInfo */
+ $trashedFile = $filesInTrash[0];
+
+ // delete source folder
+ list($storage, $internalPath) = $this->rootView->resolvePath('/' . self::TEST_TRASHBIN_USER1 . '/files/folder');
+ $folderAbsPath = $storage->getSourcePath($internalPath);
+ // make folder read-only
+ chmod($folderAbsPath, 0555);
+
+ $this->assertTrue(
+ OCA\Files_Trashbin\Trashbin::restore(
+ 'file1.txt.d' . $trashedFile->getMtime(),
+ $trashedFile->getName(),
+ $trashedFile->getMtime()
+ )
+ );
+
+ $file = $userFolder->get('file1.txt');
+ $this->assertEquals('foo', $file->getContent());
+
+ chmod($folderAbsPath, 0755);
+ }
+
+ /**
* @param string $user
* @param bool $create
* @param bool $password
diff --git a/apps/files_versions/l10n/lb.js b/apps/files_versions/l10n/lb.js
new file mode 100644
index 00000000000..1678cad569d
--- /dev/null
+++ b/apps/files_versions/l10n/lb.js
@@ -0,0 +1,11 @@
+OC.L10N.register(
+ "files_versions",
+ {
+ "Could not revert: %s" : "Konnt net zrécksetzen: %s",
+ "Versions" : "Versiounen",
+ "Failed to revert {file} to revision {timestamp}." : "Konnt {file} net op d'Versioun {timestamp} zrécksetzen.",
+ "More versions..." : "Méi Versiounen...",
+ "No other versions available" : "Keng aner Versiounen disponibel",
+ "Restore" : "Zrécksetzen"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_versions/l10n/lb.json b/apps/files_versions/l10n/lb.json
new file mode 100644
index 00000000000..e5fbb6c220c
--- /dev/null
+++ b/apps/files_versions/l10n/lb.json
@@ -0,0 +1,9 @@
+{ "translations": {
+ "Could not revert: %s" : "Konnt net zrécksetzen: %s",
+ "Versions" : "Versiounen",
+ "Failed to revert {file} to revision {timestamp}." : "Konnt {file} net op d'Versioun {timestamp} zrécksetzen.",
+ "More versions..." : "Méi Versiounen...",
+ "No other versions available" : "Keng aner Versiounen disponibel",
+ "Restore" : "Zrécksetzen"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/files_versions/l10n/mk.js b/apps/files_versions/l10n/mk.js
index a730ea89404..fa295501320 100644
--- a/apps/files_versions/l10n/mk.js
+++ b/apps/files_versions/l10n/mk.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"files_versions",
{
"Could not revert: %s" : "Не можев да го вратам: %s",
- "Versions" : "Версии",
+ "Versions" : "Верзии",
"Failed to revert {file} to revision {timestamp}." : "Не успеав да го вратам {file} на ревизијата {timestamp}.",
"More versions..." : "Повеќе верзии...",
"No other versions available" : "Не постојат други верзии",
diff --git a/apps/files_versions/l10n/mk.json b/apps/files_versions/l10n/mk.json
index 7e57aa91b55..cdef37ecde3 100644
--- a/apps/files_versions/l10n/mk.json
+++ b/apps/files_versions/l10n/mk.json
@@ -1,6 +1,6 @@
{ "translations": {
"Could not revert: %s" : "Не можев да го вратам: %s",
- "Versions" : "Версии",
+ "Versions" : "Верзии",
"Failed to revert {file} to revision {timestamp}." : "Не успеав да го вратам {file} на ревизијата {timestamp}.",
"More versions..." : "Повеќе верзии...",
"No other versions available" : "Не постојат други верзии",
diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index 125fb5d983c..98e486690b6 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -158,7 +158,7 @@ class Storage {
// 1.5 times as large as the current version -> 2.5
$neededSpace = $files_view->filesize($filename) * 2.5;
- self::scheduleExpire($filename, $versionsSize, $neededSpace);
+ self::scheduleExpire($uid, $filename, $versionsSize, $neededSpace);
// store a new version of a file
$mtime = $users_view->filemtime('files/' . $filename);
@@ -223,50 +223,75 @@ class Storage {
}
/**
- * rename or copy versions of a file
- * @param string $old_path
- * @param string $new_path
+ * Rename or copy versions of a file of the given paths
+ *
+ * @param string $sourcePath source path of the file to move, relative to
+ * the currently logged in user's "files" folder
+ * @param string $targetPath target path of the file to move, relative to
+ * the currently logged in user's "files" folder
* @param string $operation can be 'copy' or 'rename'
*/
- public static function renameOrCopy($old_path, $new_path, $operation) {
- list($uid, $oldpath) = self::getSourcePathAndUser($old_path);
+ public static function renameOrCopy($sourcePath, $targetPath, $operation) {
+ list($sourceOwner, $sourcePath) = self::getSourcePathAndUser($sourcePath);
// it was a upload of a existing file if no old path exists
// in this case the pre-hook already called the store method and we can
// stop here
- if ($oldpath === false) {
+ if ($sourcePath === false) {
return true;
}
- list($uidn, $newpath) = self::getUidAndFilename($new_path);
- $versions_view = new \OC\Files\View('/'.$uid .'/files_versions');
- $files_view = new \OC\Files\View('/'.$uid .'/files');
+ list($targetOwner, $targetPath) = self::getUidAndFilename($targetPath);
+
+ $sourcePath = ltrim($sourcePath, '/');
+ $targetPath = ltrim($targetPath, '/');
+ $rootView = new \OC\Files\View('');
+ // did we move a directory ?
+ if ($rootView->is_dir('/' . $targetOwner . '/files/' . $targetPath)) {
+ // does the directory exists for versions too ?
+ if ($rootView->is_dir('/' . $sourceOwner . '/files_versions/' . $sourcePath)) {
+ // create missing dirs if necessary
+ self::createMissingDirectories($targetPath, new \OC\Files\View('/'. $targetOwner));
- if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) {
- $versions_view->$operation($oldpath, $newpath);
- } else if ( ($versions = Storage::getVersions($uid, $oldpath)) ) {
+ // move the directory containing the versions
+ $rootView->$operation(
+ '/' . $sourceOwner . '/files_versions/' . $sourcePath,
+ '/' . $targetOwner . '/files_versions/' . $targetPath
+ );
+ }
+ } else if ($versions = Storage::getVersions($sourceOwner, '/' . $sourcePath)) {
// create missing dirs if necessary
- self::createMissingDirectories($newpath, new \OC\Files\View('/'. $uidn));
+ self::createMissingDirectories($targetPath, new \OC\Files\View('/'. $targetOwner));
foreach ($versions as $v) {
- $versions_view->$operation($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
+ // move each version one by one to the target directory
+ $rootView->$operation(
+ '/' . $sourceOwner . '/files_versions/' . $sourcePath.'.v' . $v['version'],
+ '/' . $targetOwner . '/files_versions/' . $targetPath.'.v'.$v['version']
+ );
}
}
- if (!$files_view->is_dir($newpath)) {
- self::scheduleExpire($newpath);
+ // if we moved versions directly for a file, schedule expiration check for that file
+ if (!$rootView->is_dir('/' . $targetOwner . '/files/' . $targetPath)) {
+ self::scheduleExpire($targetOwner, $targetPath);
}
}
/**
- * rollback to an old version of a file.
+ * Rollback to an old version of a file.
+ *
+ * @param string $file file name
+ * @param int $revision revision timestamp
*/
public static function rollback($file, $revision) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+ // add expected leading slash
+ $file = '/' . ltrim($file, '/');
list($uid, $filename) = self::getUidAndFilename($file);
$users_view = new \OC\Files\View('/'.$uid);
$files_view = new \OC\Files\View('/'.\OCP\User::getUser().'/files');
@@ -282,12 +307,11 @@ class Storage {
}
// rollback
- if( @$users_view->rename('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
+ if (self::copyFileContents($users_view, 'files_versions' . $filename . '.v' . $revision, 'files' . $filename)) {
$files_view->touch($file, $revision);
- Storage::scheduleExpire($file);
+ Storage::scheduleExpire($uid, $file);
return true;
-
- }else if ( $versionCreated ) {
+ } else if ($versionCreated) {
self::deleteVersion($users_view, $version);
}
}
@@ -295,6 +319,23 @@ class Storage {
}
+ /**
+ * Stream copy file contents from $path1 to $path2
+ *
+ * @param \OC\Files\View $view view to use for copying
+ * @param string $path1 source file to copy
+ * @param string $path2 target file
+ *
+ * @return bool true for success, false otherwise
+ */
+ private static function copyFileContents($view, $path1, $path2) {
+ list($storage1, $internalPath1) = $view->resolvePath($path1);
+ list($storage2, $internalPath2) = $view->resolvePath($path2);
+
+ $result = $storage2->moveFromStorage($storage1, $internalPath1, $internalPath2);
+
+ return ($result !== false);
+ }
/**
* get a list of all available versions of a file in descending chronological order
@@ -305,6 +346,9 @@ class Storage {
*/
public static function getVersions($uid, $filename, $userFullPath = '') {
$versions = array();
+ if ($filename === '') {
+ return $versions;
+ }
// fetch for old versions
$view = new \OC\Files\View('/' . $uid . '/');
@@ -488,12 +532,15 @@ class Storage {
}
/**
- * @param string $fileName
- * @param int|null $versionsSize
- * @param int $neededSpace
+ * Schedule versions expiration for the given file
+ *
+ * @param string $uid owner of the file
+ * @param string $fileName file/folder for which to schedule expiration
+ * @param int|null $versionsSize current versions size
+ * @param int $neededSpace requested versions size
*/
- private static function scheduleExpire($fileName, $versionsSize = null, $neededSpace = 0) {
- $command = new Expire(\OC::$server->getUserSession()->getUser()->getUID(), $fileName, $versionsSize, $neededSpace);
+ private static function scheduleExpire($uid, $fileName, $versionsSize = null, $neededSpace = 0) {
+ $command = new Expire($uid, $fileName, $versionsSize, $neededSpace);
\OC::$server->getCommandBus()->push($command);
}
@@ -601,8 +648,11 @@ class Storage {
}
/**
- * create recursively missing directories
- * @param string $filename $path to a file
+ * Create recursively missing directories inside of files_versions
+ * that match the given path to a file.
+ *
+ * @param string $filename $path to a file, relative to the user's
+ * "files" folder
* @param \OC\Files\View $view view on data/user/
*/
private static function createMissingDirectories($filename, $view) {
diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php
index f8bfe38df4d..97afcf715cb 100644
--- a/apps/files_versions/tests/versions.php
+++ b/apps/files_versions/tests/versions.php
@@ -25,6 +25,8 @@
require_once __DIR__ . '/../appinfo/app.php';
+use OC\Files\Storage\Temporary;
+
/**
* Class Test_Files_versions
* this class provide basic files versions test
@@ -43,11 +45,9 @@ class Test_Files_Versioning extends \Test\TestCase {
public static function setUpBeforeClass() {
parent::setUpBeforeClass();
- // clear share hooks
- \OC_Hook::clear('OCP\\Share');
- \OC::registerShareHooks();
- \OCA\Files_Versions\Hooks::connectHooks();
- \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
+ $application = new \OCA\Files_Sharing\AppInfo\Application();
+ $application->registerMountProviders();
+ $application->setupPropagation();
// create test user
self::loginHelper(self::TEST_VERSIONS_USER2, true);
@@ -65,6 +65,11 @@ class Test_Files_Versioning extends \Test\TestCase {
protected function setUp() {
parent::setUp();
+ // clear hooks
+ \OC_Hook::clear();
+ \OC::registerShareHooks();
+ \OCA\Files_Versions\Hooks::connectHooks();
+
self::loginHelper(self::TEST_VERSIONS_USER);
$this->rootView = new \OC\Files\View();
if (!$this->rootView->file_exists(self::USERS_VERSIONS_ROOT)) {
@@ -73,7 +78,12 @@ class Test_Files_Versioning extends \Test\TestCase {
}
protected function tearDown() {
- $this->rootView->deleteAll(self::USERS_VERSIONS_ROOT);
+ $this->rootView->deleteAll(self::TEST_VERSIONS_USER . '/files/');
+ $this->rootView->deleteAll(self::TEST_VERSIONS_USER2 . '/files/');
+ $this->rootView->deleteAll(self::TEST_VERSIONS_USER . '/files_versions/');
+ $this->rootView->deleteAll(self::TEST_VERSIONS_USER2 . '/files_versions/');
+
+ \OC_Hook::clear();
parent::tearDown();
}
@@ -253,9 +263,6 @@ class Test_Files_Versioning extends \Test\TestCase {
$this->assertTrue($this->rootView->file_exists($v1Renamed));
$this->assertTrue($this->rootView->file_exists($v2Renamed));
-
- //cleanup
- \OC\Files\Filesystem::unlink('test2.txt');
}
public function testRenameInSharedFolder() {
@@ -300,9 +307,136 @@ class Test_Files_Versioning extends \Test\TestCase {
$this->assertTrue($this->rootView->file_exists($v1Renamed));
$this->assertTrue($this->rootView->file_exists($v2Renamed));
+ }
- //cleanup
- \OC\Files\Filesystem::unlink('/folder1/folder2/test.txt');
+ public function testMoveFolder() {
+
+ \OC\Files\Filesystem::mkdir('folder1');
+ \OC\Files\Filesystem::mkdir('folder2');
+ \OC\Files\Filesystem::file_put_contents('folder1/test.txt', 'test file');
+
+ $t1 = time();
+ // second version is two weeks older, this way we make sure that no
+ // version will be expired
+ $t2 = $t1 - 60 * 60 * 24 * 14;
+
+ // create some versions
+ $this->rootView->mkdir(self::USERS_VERSIONS_ROOT . '/folder1');
+ $v1 = self::USERS_VERSIONS_ROOT . '/folder1/test.txt.v' . $t1;
+ $v2 = self::USERS_VERSIONS_ROOT . '/folder1/test.txt.v' . $t2;
+ $v1Renamed = self::USERS_VERSIONS_ROOT . '/folder2/folder1/test.txt.v' . $t1;
+ $v2Renamed = self::USERS_VERSIONS_ROOT . '/folder2/folder1/test.txt.v' . $t2;
+
+ $this->rootView->file_put_contents($v1, 'version1');
+ $this->rootView->file_put_contents($v2, 'version2');
+
+ // execute rename hook of versions app
+ \OC\Files\Filesystem::rename('folder1', 'folder2/folder1');
+
+ $this->runCommands();
+
+ $this->assertFalse($this->rootView->file_exists($v1));
+ $this->assertFalse($this->rootView->file_exists($v2));
+
+ $this->assertTrue($this->rootView->file_exists($v1Renamed));
+ $this->assertTrue($this->rootView->file_exists($v2Renamed));
+ }
+
+
+ public function testMoveFileIntoSharedFolderAsRecipient() {
+
+ \OC\Files\Filesystem::mkdir('folder1');
+ $fileInfo = \OC\Files\Filesystem::getFileInfo('folder1');
+
+ \OCP\Share::shareItem(
+ 'folder',
+ $fileInfo['fileid'],
+ \OCP\Share::SHARE_TYPE_USER,
+ self::TEST_VERSIONS_USER2,
+ \OCP\Constants::PERMISSION_ALL
+ );
+
+ self::loginHelper(self::TEST_VERSIONS_USER2);
+ $versionsFolder2 = '/' . self::TEST_VERSIONS_USER2 . '/files_versions';
+ \OC\Files\Filesystem::file_put_contents('test.txt', 'test file');
+
+ $t1 = time();
+ // second version is two weeks older, this way we make sure that no
+ // version will be expired
+ $t2 = $t1 - 60 * 60 * 24 * 14;
+
+ $this->rootView->mkdir($versionsFolder2);
+ // create some versions
+ $v1 = $versionsFolder2 . '/test.txt.v' . $t1;
+ $v2 = $versionsFolder2 . '/test.txt.v' . $t2;
+
+ $this->rootView->file_put_contents($v1, 'version1');
+ $this->rootView->file_put_contents($v2, 'version2');
+
+ // move file into the shared folder as recipient
+ \OC\Files\Filesystem::rename('/test.txt', '/folder1/test.txt');
+
+ $this->assertFalse($this->rootView->file_exists($v1));
+ $this->assertFalse($this->rootView->file_exists($v2));
+
+ self::loginHelper(self::TEST_VERSIONS_USER);
+
+ $versionsFolder1 = '/' . self::TEST_VERSIONS_USER . '/files_versions';
+
+ $v1Renamed = $versionsFolder1 . '/folder1/test.txt.v' . $t1;
+ $v2Renamed = $versionsFolder1 . '/folder1/test.txt.v' . $t2;
+
+ $this->assertTrue($this->rootView->file_exists($v1Renamed));
+ $this->assertTrue($this->rootView->file_exists($v2Renamed));
+ }
+
+ public function testMoveFolderIntoSharedFolderAsRecipient() {
+
+ \OC\Files\Filesystem::mkdir('folder1');
+ $fileInfo = \OC\Files\Filesystem::getFileInfo('folder1');
+
+ \OCP\Share::shareItem(
+ 'folder',
+ $fileInfo['fileid'],
+ \OCP\Share::SHARE_TYPE_USER,
+ self::TEST_VERSIONS_USER2,
+ \OCP\Constants::PERMISSION_ALL
+ );
+
+ self::loginHelper(self::TEST_VERSIONS_USER2);
+ $versionsFolder2 = '/' . self::TEST_VERSIONS_USER2 . '/files_versions';
+ \OC\Files\Filesystem::mkdir('folder2');
+ \OC\Files\Filesystem::file_put_contents('folder2/test.txt', 'test file');
+
+ $t1 = time();
+ // second version is two weeks older, this way we make sure that no
+ // version will be expired
+ $t2 = $t1 - 60 * 60 * 24 * 14;
+
+ $this->rootView->mkdir($versionsFolder2);
+ $this->rootView->mkdir($versionsFolder2 . '/folder2');
+ // create some versions
+ $v1 = $versionsFolder2 . '/folder2/test.txt.v' . $t1;
+ $v2 = $versionsFolder2 . '/folder2/test.txt.v' . $t2;
+
+ $this->rootView->file_put_contents($v1, 'version1');
+ $this->rootView->file_put_contents($v2, 'version2');
+
+ // move file into the shared folder as recipient
+ \OC\Files\Filesystem::rename('/folder2', '/folder1/folder2');
+
+ $this->assertFalse($this->rootView->file_exists($v1));
+ $this->assertFalse($this->rootView->file_exists($v2));
+
+ self::loginHelper(self::TEST_VERSIONS_USER);
+
+ $versionsFolder1 = '/' . self::TEST_VERSIONS_USER . '/files_versions';
+
+ $v1Renamed = $versionsFolder1 . '/folder1/folder2/test.txt.v' . $t1;
+ $v2Renamed = $versionsFolder1 . '/folder1/folder2/test.txt.v' . $t2;
+
+ $this->assertTrue($this->rootView->file_exists($v1Renamed));
+ $this->assertTrue($this->rootView->file_exists($v2Renamed));
}
public function testRenameSharedFile() {
@@ -345,9 +479,6 @@ class Test_Files_Versioning extends \Test\TestCase {
$this->assertFalse($this->rootView->file_exists($v1Renamed));
$this->assertFalse($this->rootView->file_exists($v2Renamed));
-
- //cleanup
- \OC\Files\Filesystem::unlink('/test.txt');
}
public function testCopy() {
@@ -378,10 +509,6 @@ class Test_Files_Versioning extends \Test\TestCase {
$this->assertTrue($this->rootView->file_exists($v1Copied));
$this->assertTrue($this->rootView->file_exists($v2Copied));
-
- //cleanup
- \OC\Files\Filesystem::unlink('test.txt');
- \OC\Files\Filesystem::unlink('test2.txt');
}
/**
@@ -407,7 +534,7 @@ class Test_Files_Versioning extends \Test\TestCase {
// execute copy hook of versions app
$versions = \OCA\Files_Versions\Storage::getVersions(self::TEST_VERSIONS_USER, '/subfolder/test.txt');
- $this->assertSame(2, count($versions));
+ $this->assertCount(2, $versions);
foreach ($versions as $version) {
$this->assertSame('/subfolder/test.txt', $version['path']);
@@ -419,6 +546,190 @@ class Test_Files_Versioning extends \Test\TestCase {
}
/**
+ * test if we find all versions and if the versions array contain
+ * the correct 'path' and 'name'
+ */
+ public function testGetVersionsEmptyFile() {
+ // execute copy hook of versions app
+ $versions = \OCA\Files_Versions\Storage::getVersions(self::TEST_VERSIONS_USER, '');
+
+ $this->assertCount(0, $versions);
+ }
+
+ public function testRestoreSameStorage() {
+ \OC\Files\Filesystem::mkdir('sub');
+ $this->doTestRestore();
+ }
+
+ public function testRestoreCrossStorage() {
+ $storage2 = new Temporary(array());
+ \OC\Files\Filesystem::mount($storage2, array(), self::TEST_VERSIONS_USER . '/files/sub');
+
+ $this->doTestRestore();
+ }
+
+ private function doTestRestore() {
+ $filePath = self::TEST_VERSIONS_USER . '/files/sub/test.txt';
+ $this->rootView->file_put_contents($filePath, 'test file');
+
+ $t0 = $this->rootView->filemtime($filePath);
+
+ // not exactly the same timestamp as the file
+ $t1 = time() - 60;
+ // second version is two weeks older
+ $t2 = $t1 - 60 * 60 * 24 * 14;
+
+ // create some versions
+ $v1 = self::USERS_VERSIONS_ROOT . '/sub/test.txt.v' . $t1;
+ $v2 = self::USERS_VERSIONS_ROOT . '/sub/test.txt.v' . $t2;
+
+ $this->rootView->mkdir(self::USERS_VERSIONS_ROOT . '/sub');
+ $this->rootView->file_put_contents($v1, 'version1');
+ $this->rootView->file_put_contents($v2, 'version2');
+
+ $oldVersions = \OCA\Files_Versions\Storage::getVersions(
+ self::TEST_VERSIONS_USER, '/sub/test.txt'
+ );
+
+ $this->assertCount(2, $oldVersions);
+
+ $this->assertEquals('test file', $this->rootView->file_get_contents($filePath));
+ $info1 = $this->rootView->getFileInfo($filePath);
+
+ \OCA\Files_Versions\Storage::rollback('sub/test.txt', $t2);
+
+ $this->assertEquals('version2', $this->rootView->file_get_contents($filePath));
+ $info2 = $this->rootView->getFileInfo($filePath);
+
+ $this->assertNotEquals(
+ $info2['etag'],
+ $info1['etag'],
+ 'Etag must change after rolling back version'
+ );
+ $this->assertEquals(
+ $info2['fileid'],
+ $info1['fileid'],
+ 'File id must not change after rolling back version'
+ );
+ $this->assertEquals(
+ $info2['mtime'],
+ $t2,
+ 'Restored file has mtime from version'
+ );
+
+ $newVersions = \OCA\Files_Versions\Storage::getVersions(
+ self::TEST_VERSIONS_USER, '/sub/test.txt'
+ );
+
+ $this->assertTrue(
+ $this->rootView->file_exists(self::USERS_VERSIONS_ROOT . '/sub/test.txt.v' . $t0),
+ 'A version file was created for the file before restoration'
+ );
+ $this->assertTrue(
+ $this->rootView->file_exists($v1),
+ 'Untouched version file is still there'
+ );
+ $this->assertFalse(
+ $this->rootView->file_exists($v2),
+ 'Restored version file gone from files_version folder'
+ );
+
+ $this->assertCount(2, $newVersions, 'Additional version created');
+
+ $this->assertTrue(
+ isset($newVersions[$t0 . '#' . 'test.txt']),
+ 'A version was created for the file before restoration'
+ );
+ $this->assertTrue(
+ isset($newVersions[$t1 . '#' . 'test.txt']),
+ 'Untouched version is still there'
+ );
+ $this->assertFalse(
+ isset($newVersions[$t2 . '#' . 'test.txt']),
+ 'Restored version is not in the list any more'
+ );
+ }
+
+ /**
+ * Test whether versions are created when overwriting as owner
+ */
+ public function testStoreVersionAsOwner() {
+ $this->loginAsUser(self::TEST_VERSIONS_USER);
+
+ $this->createAndCheckVersions(
+ \OC\Files\Filesystem::getView(),
+ 'test.txt'
+ );
+ }
+
+ /**
+ * Test whether versions are created when overwriting as share recipient
+ */
+ public function testStoreVersionAsRecipient() {
+ $this->loginAsUser(self::TEST_VERSIONS_USER);
+
+ \OC\Files\Filesystem::mkdir('folder');
+ \OC\Files\Filesystem::file_put_contents('folder/test.txt', 'test file');
+ $fileInfo = \OC\Files\Filesystem::getFileInfo('folder');
+
+ \OCP\Share::shareItem(
+ 'folder',
+ $fileInfo['fileid'],
+ \OCP\Share::SHARE_TYPE_USER,
+ self::TEST_VERSIONS_USER2,
+ \OCP\Constants::PERMISSION_ALL
+ );
+
+ $this->loginAsUser(self::TEST_VERSIONS_USER2);
+
+ $this->createAndCheckVersions(
+ \OC\Files\Filesystem::getView(),
+ 'folder/test.txt'
+ );
+ }
+
+ /**
+ * Test whether versions are created when overwriting anonymously.
+ *
+ * When uploading through a public link or publicwebdav, no user
+ * is logged in. File modification must still be able to find
+ * the owner and create versions.
+ */
+ public function testStoreVersionAsAnonymous() {
+ $this->logout();
+
+ // note: public link upload does this,
+ // needed to make the hooks fire
+ \OC_Util::setupFS(self::TEST_VERSIONS_USER);
+
+ $userView = new \OC\Files\View('/' . self::TEST_VERSIONS_USER . '/files');
+ $this->createAndCheckVersions(
+ $userView,
+ 'test.txt'
+ );
+ }
+
+ private function createAndCheckVersions($view, $path) {
+ $view->file_put_contents($path, 'test file');
+ $view->file_put_contents($path, 'version 1');
+ $view->file_put_contents($path, 'version 2');
+
+ $this->loginAsUser(self::TEST_VERSIONS_USER);
+
+ // need to scan for the versions
+ list($rootStorage,) = $this->rootView->resolvePath(self::TEST_VERSIONS_USER . '/files_versions');
+ $rootStorage->getScanner()->scan('files_versions');
+
+ $versions = \OCA\Files_Versions\Storage::getVersions(
+ self::TEST_VERSIONS_USER, '/' . $path
+ );
+
+ // note: we cannot predict how many versions are created due to
+ // test run timing
+ $this->assertGreaterThan(0, count($versions));
+ }
+
+ /**
* @param string $user
* @param bool $create
* @param bool $password
diff --git a/apps/user_ldap/ajax/getNewServerConfigPrefix.php b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
index d0135917886..897e4a9924f 100644
--- a/apps/user_ldap/ajax/getNewServerConfigPrefix.php
+++ b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
@@ -35,14 +35,15 @@ $nk = 's'.str_pad($ln+1, 2, '0', STR_PAD_LEFT);
$resultData = array('configPrefix' => $nk);
+$newConfig = new \OCA\user_ldap\lib\Configuration($nk, false);
if(isset($_POST['copyConfig'])) {
$originalConfig = new \OCA\user_ldap\lib\Configuration($_POST['copyConfig']);
- $newConfig = new \OCA\user_ldap\lib\Configuration($nk, false);
$newConfig->setConfiguration($originalConfig->getConfiguration());
- $newConfig->saveConfiguration();
} else {
$configuration = new \OCA\user_ldap\lib\Configuration($nk, false);
+ $newConfig->setConfiguration($configuration->getDefaults());
$resultData['defaults'] = $configuration->getDefaults();
}
+$newConfig->saveConfiguration();
OCP\JSON::success($resultData);
diff --git a/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js b/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js
index 702c30a5a69..c9c3aeb241d 100644
--- a/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js
+++ b/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js
@@ -158,15 +158,19 @@ OCA = OCA || {};
/**
* sets the selected groups
*
- * @param {Array} groups
+ * @param {string} groups
*/
setGroups: function(groups) {
+ if(typeof groups === 'string') {
+ groups = groups.split("\n");
+ }
if(!this.isComplexGroupChooser) {
this.setElementValue(this.getGroupsItem().$element, groups);
this.getGroupsItem().$element.multiselect('refresh');
} else {
var $element = $(this.tabID).find('.ldapGroupListSelected');
this.equipMultiSelect($element, groups);
+ this.updateFilterOnType('selected');
}
},
@@ -224,10 +228,10 @@ OCA = OCA || {};
$selectedGroups, $(this.tabID).find('.ldapManyGroupsSearch')
));
} else {
- if(_.isUndefined || only.toLowerCase() === 'available') {
+ if(_.isUndefined(only) || only.toLowerCase() === 'available') {
this.filterOnType[0].updateOptions();
}
- if(_.isUndefined || only.toLowerCase() === 'selected') {
+ if(_.isUndefined(only) || only.toLowerCase() === 'selected') {
this.filterOnType[1].updateOptions();
}
}
@@ -357,7 +361,7 @@ OCA = OCA || {};
this._saveGroups(selected.concat($available.val()));
$available.find('option:selected').prependTo($selected);
- this.updateFilterOnType();
+ this.updateFilterOnType('available'); // selected groups are not updated yet
},
/**
@@ -370,7 +374,7 @@ OCA = OCA || {};
this._saveGroups(selected);
$selected.find('option:selected').appendTo($available);
- this.updateFilterOnType();
+ this.updateFilterOnType('available'); // selected groups are not updated yet
}
});
diff --git a/apps/user_ldap/js/wizard/wizardTabElementary.js b/apps/user_ldap/js/wizard/wizardTabElementary.js
index c7767b9cf66..b8ab367dfd1 100644
--- a/apps/user_ldap/js/wizard/wizardTabElementary.js
+++ b/apps/user_ldap/js/wizard/wizardTabElementary.js
@@ -14,6 +14,9 @@ OCA = OCA || {};
* in the LDAP wizard.
*/
var WizardTabElementary = OCA.LDAP.Wizard.WizardTabGeneric.subClass({
+ /** @property {number} */
+ _configChooserNextServerNumber: 1,
+
/**
* initializes the instance. Always call it after initialization.
*
@@ -24,7 +27,7 @@ OCA = OCA || {};
tabIndex = 0;
this._super(tabIndex, tabID);
this.isActive = true;
- this.configChooserID = '#ldap_serverconfig_chooser';
+ this.$configChooser = $('#ldap_serverconfig_chooser');
var items = {
ldap_host: {
@@ -88,7 +91,7 @@ OCA = OCA || {};
* @returns {string}
*/
getConfigID: function() {
- return $(this.configChooserID).val();
+ return this.$configChooser.val();
},
/**
@@ -204,9 +207,16 @@ OCA = OCA || {};
*/
onNewConfiguration: function(view, result) {
if(result.isSuccess === true) {
- $(view.configChooserID + ' option:selected').removeAttr('selected');
- var html = '<option value="'+result.configPrefix+'" selected="selected">'+t('user_ldap','{nthServer}. Server', {nthServer: $(view.configChooserID + ' option').length + 1})+'</option>';
- $(view.configChooserID + ' option:last').after(html);
+ var nthServer = view._configChooserNextServerNumber;
+ view.$configChooser.find('option:selected').removeAttr('selected');
+ var html = '<option value="'+result.configPrefix+'" selected="selected">'+t('user_ldap','{nthServer}. Server', {nthServer: nthServer})+'</option>';
+ if(view.$configChooser.find('option:last').length > 0) {
+ view.$configChooser.find('option:last').after(html);
+ } else {
+ view.$configChooser.html(html);
+ }
+
+ view._configChooserNextServerNumber++;
}
},
@@ -222,16 +232,16 @@ OCA = OCA || {};
if(view.getConfigID() === result.configPrefix) {
// if the deleted value is still the selected one (99% of
// the cases), remove it from the list and load the topmost
- $(view.configChooserID + ' option:selected').remove();
- $(view.configChooserID + ' option:first').select();
- if($(view.configChooserID + ' option').length < 2) {
+ view.$configChooser.find('option:selected').remove();
+ view.$configChooser.find('option:first').select();
+ if(view.$configChooser.find(' option').length < 1) {
view.configModel.newConfig(false);
} else {
view.configModel.load(view.getConfigID());
}
} else {
// otherwise just remove the entry
- $(view.configChooserID + ' option[value=' + result.configPrefix + ']').remove();
+ view.$configChooser.find('option[value=' + result.configPrefix + ']').remove();
}
} else {
OC.Notification.showTemporary(result.errorMessage);
@@ -252,7 +262,7 @@ OCA = OCA || {};
if(objectsFound < 1) {
message = t('user_ldap', 'No object found in the given Base DN. Please revise.');
} else if(objectsFound > 1000) {
- message = t('user_ldap', 'More then 1.000 directory entries available.');
+ message = t('user_ldap', 'More than 1.000 directory entries available.');
} else {
message = t('user_ldap', objectsFound + ' entries available within the provided Base DN');
}
@@ -303,9 +313,10 @@ OCA = OCA || {};
* @private
*/
_enableConfigChooser: function() {
+ this._configChooserNextServerNumber = this.$configChooser.find(' option').length + 1;
var view = this;
- $(this.configChooserID).change(function(){
- var value = $(view.configChooserID + ' option:selected:first').attr('value');
+ this.$configChooser.change(function(){
+ var value = view.$configChooser.find(' option:selected:first').attr('value');
view.configModel.load(value);
});
},
diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js
index 1ae219b25e6..3cc4b7d6b08 100644
--- a/apps/user_ldap/l10n/ast.js
+++ b/apps/user_ldap/l10n/ast.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Ayuda",
"Groups meeting these criteria are available in %s:" : "Los grupos que cumplen estos criterios tán disponibles en %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "El filtru especifica qué grupos LDAP van tener accesu a %s.",
- "Test Filter" : "Filtru de preba",
"Other Attributes:" : "Otros atributos:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define'l filtru a aplicar cuando s'intenta identificar. %%uid va trocar al nome d'usuariu nel procesu d'identificación. Por exemplu: \"uid=%%uid\"",
"1. Server" : "1. Sirvidor",
diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json
index 408febfb899..19b8c5fad14 100644
--- a/apps/user_ldap/l10n/ast.json
+++ b/apps/user_ldap/l10n/ast.json
@@ -29,7 +29,6 @@
"Help" : "Ayuda",
"Groups meeting these criteria are available in %s:" : "Los grupos que cumplen estos criterios tán disponibles en %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "El filtru especifica qué grupos LDAP van tener accesu a %s.",
- "Test Filter" : "Filtru de preba",
"Other Attributes:" : "Otros atributos:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define'l filtru a aplicar cuando s'intenta identificar. %%uid va trocar al nome d'usuariu nel procesu d'identificación. Por exemplu: \"uid=%%uid\"",
"1. Server" : "1. Sirvidor",
diff --git a/apps/user_ldap/l10n/be.js b/apps/user_ldap/l10n/be.js
index dda51e8ac42..99117026327 100644
--- a/apps/user_ldap/l10n/be.js
+++ b/apps/user_ldap/l10n/be.js
@@ -3,4 +3,4 @@ OC.L10N.register(
{
"Advanced" : "Дасведчаны"
},
-"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/user_ldap/l10n/be.json b/apps/user_ldap/l10n/be.json
index f70adabdbe1..987589ccd81 100644
--- a/apps/user_ldap/l10n/be.json
+++ b/apps/user_ldap/l10n/be.json
@@ -1,4 +1,4 @@
{ "translations": {
"Advanced" : "Дасведчаны"
-},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/bg_BG.js b/apps/user_ldap/l10n/bg_BG.js
index e363f1c897b..b2e12165deb 100644
--- a/apps/user_ldap/l10n/bg_BG.js
+++ b/apps/user_ldap/l10n/bg_BG.js
@@ -30,7 +30,6 @@ OC.L10N.register(
"Help" : "Помощ",
"Groups meeting these criteria are available in %s:" : "Групи спазващи тези критерии са разположени в %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Филтърът посочва кои LDAP групи ще имат достъп до %s инсталацията.",
- "Test Filter" : "Тестов Филтър",
"Other Attributes:" : "Други Атрибути:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Заявява филтърът, който да бъде приложен при опит за вписване. %%uid замества потребителското име в полето login action. Пример: \"uid=%%uid\".",
"Test Loginname" : "Проверка на Потребителско име",
diff --git a/apps/user_ldap/l10n/bg_BG.json b/apps/user_ldap/l10n/bg_BG.json
index 250be5f00a3..39fc9b1e49b 100644
--- a/apps/user_ldap/l10n/bg_BG.json
+++ b/apps/user_ldap/l10n/bg_BG.json
@@ -28,7 +28,6 @@
"Help" : "Помощ",
"Groups meeting these criteria are available in %s:" : "Групи спазващи тези критерии са разположени в %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Филтърът посочва кои LDAP групи ще имат достъп до %s инсталацията.",
- "Test Filter" : "Тестов Филтър",
"Other Attributes:" : "Други Атрибути:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Заявява филтърът, който да бъде приложен при опит за вписване. %%uid замества потребителското име в полето login action. Пример: \"uid=%%uid\".",
"Test Loginname" : "Проверка на Потребителско име",
diff --git a/apps/user_ldap/l10n/cs_CZ.js b/apps/user_ldap/l10n/cs_CZ.js
index 54c4df27910..a5eb704c3e6 100644
--- a/apps/user_ldap/l10n/cs_CZ.js
+++ b/apps/user_ldap/l10n/cs_CZ.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Nelze automaticky detekovat Base DN, zadejte prosím ručně.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "V zadané Base DN nebyl objekt nalezen. Ověřte.",
- "More then 1.000 directory entries available." : "Je dostupných více než 1000 adresářových záznamů.",
+ "More than 1.000 directory entries available." : "Je dostupných více než 1000 adresářů.",
" entries available within the provided Base DN" : "záznamů dostupných v zadané Base DN",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Došlo k chybě. Ověře prosím Base DN společně s nastavením připojení a přihlašovacími údaji.",
"Do you really want to delete the current Server Configuration?" : "Opravdu si přejete smazat současné nastavení serveru?",
@@ -30,7 +30,18 @@ OC.L10N.register(
"Mappings cleared successfully!" : "Mapování úspěšně vyčištěno!",
"Error while clearing the mappings." : "Chyba při čištění mapování.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Ukládání selhalo. Ujistěte se, že databáze funguje. Načtěte znovu, než budete pokračovat.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Přepnutí módu povolí automatické LDAP dotazy. V závislosti na velikosti vašeho LDAP může vyhledávání chvíli trvat. Opravdu si přejete přepnout mód?",
+ "Mode switch" : "Přepnutí módu",
"Select attributes" : "Vyberte atributy",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
+ "User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru.",
+ "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Chybí zástupný znak %uid. Bude nahrazen přihlašovacím jménem při dotazování LDAP / AD.",
+ "Please provide a login name to test against" : "Zadejte prosím přihlašovací jméno pro otestování",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Skupinové pole bylo vypnuto, protože LDAP / AD server nepodporuje memberOf.",
"_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"],
"_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.",
@@ -38,35 +49,49 @@ OC.L10N.register(
"Invalid Host" : "Neplatný hostitel",
"Server" : "Server",
"Users" : "Uživatelé",
+ "Login Attributes" : "Přihlašovací atributy",
"Groups" : "Skupiny",
"Test Configuration" : "Vyzkoušet nastavení",
"Help" : "Nápověda",
"Groups meeting these criteria are available in %s:" : "Skupiny splňující tyto podmínky jsou k dispozici v %s:",
+ "Only these object classes:" : "Pouze tyto třídy objektů:",
+ "Only from these groups:" : "Pouze z těchto skupin:",
"Search groups" : "Prohledat skupiny",
"Available groups" : "Dostupné skupiny",
"Selected groups" : "Vybrané skupiny",
"Edit LDAP Query" : "Upravit LDAP požadavek",
"LDAP Filter:" : "LDAP filtr:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.",
- "Test Filter" : "Otestovat filtr",
+ "Verify settings and count groups" : "Ověřit nastavení a spočítat skupiny",
+ "When logging in, %s will find the user based on the following attributes:" : "Při přihlašování, %s bude hledat uživatele na základě následujících atributů:",
+ "LDAP / AD Username:" : "LDAP / AD uživatelské jméno:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Umožňuje přihlášení s LDAP / AD uživatelským jménem, které má rozpoznatelnou hodnotu pro uid nebo samaccountname.",
+ "LDAP / AD Email Address:" : "LDAP / AD emailová adresa:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Umožňuje přihlášení s atributem emailu. Jsou povoleny Mail a mailPrimaryAddress.",
"Other Attributes:" : "Další atributy:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Určuje použitý filtr při pokusu o přihlášení. %%uid nahrazuje uživatelské jméno v činnosti přihlášení. Příklad: \"uid=%%uid\"",
+ "Test Loginname" : "Testovací přihlašovací jméno",
"Verify settings" : "Ověřit nastavení",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Počítač",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Můžete vynechat protokol, vyjma pokud požadujete SSL. Tehdy začněte s ldaps://",
"Port" : "Port",
+ "Detect Port" : "Detekovat port",
"User DN" : "Uživatelské DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN klientského uživatele, ke kterému tvoříte vazbu, např. uid=agent,dc=example,dc=com. Pro anonymní přístup ponechte DN a heslo prázdné.",
"Password" : "Heslo",
"For anonymous access, leave DN and Password empty." : "Pro anonymní přístup ponechte údaje DN and heslo prázdné.",
"One Base DN per line" : "Jedna základní DN na řádku",
"You can specify Base DN for users and groups in the Advanced tab" : "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny",
+ "Detect Base DN" : "Detekovat Base DN",
+ "Test Base DN" : "Otestovat Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)",
"Limit %s access to users meeting these criteria:" : "Omezit přístup %s uživatelům splňujícím tyto podmínky:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Nejčastější třídy objektů pro uživatele jsou organizationalPerson, person, user a inetOrgPerson. Pokud si nejste jisti které třídy objektů zvolit, obraťte se na svého adresářového správce.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.",
+ "Verify settings and count users" : "Ověřit nastavení a spočítat uživatele",
"Saving" : "Ukládá se",
"Back" : "Zpět",
"Continue" : "Pokračovat",
diff --git a/apps/user_ldap/l10n/cs_CZ.json b/apps/user_ldap/l10n/cs_CZ.json
index edca5412b2a..dbe157bb1ba 100644
--- a/apps/user_ldap/l10n/cs_CZ.json
+++ b/apps/user_ldap/l10n/cs_CZ.json
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Nelze automaticky detekovat Base DN, zadejte prosím ručně.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "V zadané Base DN nebyl objekt nalezen. Ověřte.",
- "More then 1.000 directory entries available." : "Je dostupných více než 1000 adresářových záznamů.",
+ "More than 1.000 directory entries available." : "Je dostupných více než 1000 adresářů.",
" entries available within the provided Base DN" : "záznamů dostupných v zadané Base DN",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Došlo k chybě. Ověře prosím Base DN společně s nastavením připojení a přihlašovacími údaji.",
"Do you really want to delete the current Server Configuration?" : "Opravdu si přejete smazat současné nastavení serveru?",
@@ -28,7 +28,18 @@
"Mappings cleared successfully!" : "Mapování úspěšně vyčištěno!",
"Error while clearing the mappings." : "Chyba při čištění mapování.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Ukládání selhalo. Ujistěte se, že databáze funguje. Načtěte znovu, než budete pokračovat.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Přepnutí módu povolí automatické LDAP dotazy. V závislosti na velikosti vašeho LDAP může vyhledávání chvíli trvat. Opravdu si přejete přepnout mód?",
+ "Mode switch" : "Přepnutí módu",
"Select attributes" : "Vyberte atributy",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Uživatel nenalezen. Zkontrolujte prosím své přihlašovací údaje a jméno. Použitý filtr (pro zkopírování a ověření v příkazovém řádku): <br/>",
+ "User found and settings verified." : "Uživatel nalezen a nastavení ověřeno.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavení ověřena, nalezen jeden uživatel. Pouze první se bude moci přihlásit. Zvažte nasazení užšího filtru.",
+ "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Chybí zástupný znak %uid. Bude nahrazen přihlašovacím jménem při dotazování LDAP / AD.",
+ "Please provide a login name to test against" : "Zadejte prosím přihlašovací jméno pro otestování",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Skupinové pole bylo vypnuto, protože LDAP / AD server nepodporuje memberOf.",
"_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"],
"_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.",
@@ -36,35 +47,49 @@
"Invalid Host" : "Neplatný hostitel",
"Server" : "Server",
"Users" : "Uživatelé",
+ "Login Attributes" : "Přihlašovací atributy",
"Groups" : "Skupiny",
"Test Configuration" : "Vyzkoušet nastavení",
"Help" : "Nápověda",
"Groups meeting these criteria are available in %s:" : "Skupiny splňující tyto podmínky jsou k dispozici v %s:",
+ "Only these object classes:" : "Pouze tyto třídy objektů:",
+ "Only from these groups:" : "Pouze z těchto skupin:",
"Search groups" : "Prohledat skupiny",
"Available groups" : "Dostupné skupiny",
"Selected groups" : "Vybrané skupiny",
"Edit LDAP Query" : "Upravit LDAP požadavek",
"LDAP Filter:" : "LDAP filtr:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.",
- "Test Filter" : "Otestovat filtr",
+ "Verify settings and count groups" : "Ověřit nastavení a spočítat skupiny",
+ "When logging in, %s will find the user based on the following attributes:" : "Při přihlašování, %s bude hledat uživatele na základě následujících atributů:",
+ "LDAP / AD Username:" : "LDAP / AD uživatelské jméno:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Umožňuje přihlášení s LDAP / AD uživatelským jménem, které má rozpoznatelnou hodnotu pro uid nebo samaccountname.",
+ "LDAP / AD Email Address:" : "LDAP / AD emailová adresa:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Umožňuje přihlášení s atributem emailu. Jsou povoleny Mail a mailPrimaryAddress.",
"Other Attributes:" : "Další atributy:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Určuje použitý filtr při pokusu o přihlášení. %%uid nahrazuje uživatelské jméno v činnosti přihlášení. Příklad: \"uid=%%uid\"",
+ "Test Loginname" : "Testovací přihlašovací jméno",
"Verify settings" : "Ověřit nastavení",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Počítač",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Můžete vynechat protokol, vyjma pokud požadujete SSL. Tehdy začněte s ldaps://",
"Port" : "Port",
+ "Detect Port" : "Detekovat port",
"User DN" : "Uživatelské DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN klientského uživatele, ke kterému tvoříte vazbu, např. uid=agent,dc=example,dc=com. Pro anonymní přístup ponechte DN a heslo prázdné.",
"Password" : "Heslo",
"For anonymous access, leave DN and Password empty." : "Pro anonymní přístup ponechte údaje DN and heslo prázdné.",
"One Base DN per line" : "Jedna základní DN na řádku",
"You can specify Base DN for users and groups in the Advanced tab" : "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny",
+ "Detect Base DN" : "Detekovat Base DN",
+ "Test Base DN" : "Otestovat Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)",
"Limit %s access to users meeting these criteria:" : "Omezit přístup %s uživatelům splňujícím tyto podmínky:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Nejčastější třídy objektů pro uživatele jsou organizationalPerson, person, user a inetOrgPerson. Pokud si nejste jisti které třídy objektů zvolit, obraťte se na svého adresářového správce.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.",
+ "Verify settings and count users" : "Ověřit nastavení a spočítat uživatele",
"Saving" : "Ukládá se",
"Back" : "Zpět",
"Continue" : "Pokračovat",
diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js
index b5a0183f9f0..f19e3ffa837 100644
--- a/apps/user_ldap/l10n/da.js
+++ b/apps/user_ldap/l10n/da.js
@@ -22,11 +22,10 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Kunne ikke registrere Base DN - angiv den venligst manuelt.",
"{nthServer}. Server" : "{nthServer}. server",
"No object found in the given Base DN. Please revise." : "Intet objekt fundet i den givne Base DN. Gennemse venligst.",
- "More then 1.000 directory entries available." : "Mere end 1.000 tilgængelige katalogposter.",
" entries available within the provided Base DN" : "poster tilgængelige inden for det angivne Base DN.",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Der opstod en fejl. Tjek venligst Base DN, såvel som forbindelsesindstillingerne og brugeroplysningerne.",
"Do you really want to delete the current Server Configuration?" : "Ønsker du virkelig at slette den nuværende Server Konfiguration?",
- "Confirm Deletion" : "Bekræft Sletning",
+ "Confirm Deletion" : "Bekræft sletning",
"Mappings cleared successfully!" : "Kortlægningerne blev ryddet af vejen!",
"Error while clearing the mappings." : "Fejl under rydning af kortlægninger.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Lagringen mislykkedes. Sørg venligst for at databasen er i drift. Genindlæs for der fortsættes.",
@@ -51,7 +50,7 @@ OC.L10N.register(
"Users" : "Brugere",
"Login Attributes" : "Login-attributter",
"Groups" : "Grupper",
- "Test Configuration" : "Test Konfiguration",
+ "Test Configuration" : "Test konfigurationen",
"Help" : "Hjælp",
"Groups meeting these criteria are available in %s:" : "Grupper som opfylder disse kriterier er tilgængelige i %s:",
"Only these object classes:" : "Kun disse objektklasser:",
@@ -62,7 +61,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Redigér LDAP-forespørgsel",
"LDAP Filter:" : "LDAP-filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret angiver hvilke LDAP-grupper, der skal have adgang til instansen %s.",
- "Test Filter" : "Test filter",
"Verify settings and count groups" : "Verificér indstillinger og optællingsgrupper",
"When logging in, %s will find the user based on the following attributes:" : "Når der logges ind, så vil %s finde brugeren baseret på følgende attributter:",
"LDAP / AD Username:" : "LDAP/AD-brugernavn:",
diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json
index f57c8d212ef..0e3702e3e80 100644
--- a/apps/user_ldap/l10n/da.json
+++ b/apps/user_ldap/l10n/da.json
@@ -20,11 +20,10 @@
"Could not detect Base DN, please enter it manually." : "Kunne ikke registrere Base DN - angiv den venligst manuelt.",
"{nthServer}. Server" : "{nthServer}. server",
"No object found in the given Base DN. Please revise." : "Intet objekt fundet i den givne Base DN. Gennemse venligst.",
- "More then 1.000 directory entries available." : "Mere end 1.000 tilgængelige katalogposter.",
" entries available within the provided Base DN" : "poster tilgængelige inden for det angivne Base DN.",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Der opstod en fejl. Tjek venligst Base DN, såvel som forbindelsesindstillingerne og brugeroplysningerne.",
"Do you really want to delete the current Server Configuration?" : "Ønsker du virkelig at slette den nuværende Server Konfiguration?",
- "Confirm Deletion" : "Bekræft Sletning",
+ "Confirm Deletion" : "Bekræft sletning",
"Mappings cleared successfully!" : "Kortlægningerne blev ryddet af vejen!",
"Error while clearing the mappings." : "Fejl under rydning af kortlægninger.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Lagringen mislykkedes. Sørg venligst for at databasen er i drift. Genindlæs for der fortsættes.",
@@ -49,7 +48,7 @@
"Users" : "Brugere",
"Login Attributes" : "Login-attributter",
"Groups" : "Grupper",
- "Test Configuration" : "Test Konfiguration",
+ "Test Configuration" : "Test konfigurationen",
"Help" : "Hjælp",
"Groups meeting these criteria are available in %s:" : "Grupper som opfylder disse kriterier er tilgængelige i %s:",
"Only these object classes:" : "Kun disse objektklasser:",
@@ -60,7 +59,6 @@
"Edit LDAP Query" : "Redigér LDAP-forespørgsel",
"LDAP Filter:" : "LDAP-filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret angiver hvilke LDAP-grupper, der skal have adgang til instansen %s.",
- "Test Filter" : "Test filter",
"Verify settings and count groups" : "Verificér indstillinger og optællingsgrupper",
"When logging in, %s will find the user based on the following attributes:" : "Når der logges ind, så vil %s finde brugeren baseret på følgende attributter:",
"LDAP / AD Username:" : "LDAP/AD-brugernavn:",
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index 419e4cff59c..c06922818ca 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -16,26 +16,32 @@ OC.L10N.register(
"Configuration OK" : "Konfiguration OK",
"Select groups" : "Gruppen auswählen",
"Select object classes" : "Objektklassen auswählen",
- "Please check the credentials, they seem to be wrong." : "Bitte prüfe die Anmeldeinformationen, sie scheinen nicht richtig zu sein.",
- "Please specify the port, it could not be auto-detected." : "Bitte den Port manuell eingeben, er konnte nicht automatisch erkannt werden.",
+ "Please check the credentials, they seem to be wrong." : "Bitte überprüfe die Anmeldeinformationen, sie sind anscheinend falsch.",
+ "Please specify the port, it could not be auto-detected." : "Bitte gib den Port an, er konnte nicht automatisch erkannt werden.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfe die Anmeldeinformationen, den Host und den Port.",
"Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte manuell eingeben.",
"{nthServer}. Server" : "{nthServer}. - Server",
"No object found in the given Base DN. Please revise." : "Keine Objekte in der Base DN gefunden, bitte überprüfen.",
- "More then 1.000 directory entries available." : "Es sind mehr als 1.000 Verzeichnis Einträge verfügbar.",
+ "More than 1.000 directory entries available." : "Mehr als 1.000 Verzeichniseinträge verfügbar.",
" entries available within the provided Base DN" : "Einträge in der Vorgesehenen Base DN verfügbar",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte prüfe die Base DN und auch die Verbindungs- und Anmeldeeinstellungen.",
"Do you really want to delete the current Server Configuration?" : "Soll die aktuelle Serverkonfiguration wirklich gelöscht werden?",
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
- "Error while clearing the mappings." : "Fehler während dem löschen der Zuordnungen!",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte sicherstellen dass die Datenbank arbeitet. Neuladen vor dem Fortfahren.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe kann dies eine Weile dauern. Wollen Sie immer noch den Modus wechseln?",
+ "Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stelle sicher, dass die Datenbank in Betrieb ist. Bitte lade vor dem Fortfahren neu.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Willst Du immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User nicht gefunden. Prüfe Deine Login Attribute und den Usernamen. Effektiver Filter (copy-and-paste für die Kommando Zeilen Überprüfung): <br/>",
- "User found and settings verified." : "User gefunden und Einstellungen überprüft.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es trat ein Verbindungsfehler zu LDAP / AD auf, bitte prüfen sie den Server, den Port und dieAnmeldeinformationen.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Loginattribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfe Host, Port und Anmeldeinformationen.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.",
+ "Please provide a login name to test against" : "Bitte gib einen Benutzernamen an, um gegen diesen zu testen",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es in den erweiterten LDAP-Einstellungen selber an.",
@@ -43,46 +49,49 @@ OC.L10N.register(
"Invalid Host" : "Ungültiger Host",
"Server" : "Server",
"Users" : "Benutzer",
- "Login Attributes" : "Anmelde Attribute",
+ "Login Attributes" : "Loginattribute",
"Groups" : "Gruppen",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
"Groups meeting these criteria are available in %s:" : "Gruppen, auf die diese Kriterien zutreffen, sind verfügbar in %s:",
- "Only these object classes:" : "Nur diese Objekt Klassen:",
- "Only from these groups:" : "Nur von diesen Gruppen:",
- "Search groups" : "Suche Gruppen",
+ "Only these object classes:" : "Nur diese Objektklassen:",
+ "Only from these groups:" : "Nur aus diesen Gruppen:",
+ "Search groups" : "Gruppen suchen",
"Available groups" : "Verfügbare Gruppen",
"Selected groups" : "Ausgewählte Gruppen",
- "Edit LDAP Query" : "Editiere die LDAP Abfrage",
- "LDAP Filter:" : "LDAP Filter:",
+ "Edit LDAP Query" : "LDAP-Abfrage bearbeiten",
+ "LDAP Filter:" : "LDAP-Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.",
- "Test Filter" : "Testfilter",
- "Verify settings and count groups" : "Überprüfe die Einstellungen und zähle Gruppen",
- "LDAP / AD Username:" : "LDAP / AD Benutzername:",
- "LDAP / AD Email Address:" : "LDAP / AD Email Adresse:",
+ "Verify settings and count groups" : "Einstellungen überprüfen und Gruppen zählen",
+ "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s die Nutzerbasis mit folgenden Attributen vorfinden:",
+ "LDAP / AD Username:" : "LDAP-/AD-Benutzername:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Erlaubt das Anmelden gegen den LDAP / AD Nutzernamen, welcher entweder eine UID oder samaccountname ist und automatisch erkannt wird.",
+ "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.",
"Other Attributes:" : "Andere Attribute:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Bestimmt den Filter, welcher bei einer Anmeldung angewandt wird. %%uid ersetzt den Benutzernamen bei der Anmeldung. Beispiel: \"uid=%%uid\"",
- "Test Loginname" : "Teste den Benutzernamen",
- "Verify settings" : "Überprüfe Einstellungen",
+ "Test Loginname" : "Loginnamen testen",
+ "Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du kannst das Protokoll auslassen, außer wenn Du SSL benötigst. Beginne dann mit ldaps://",
"Port" : "Port",
- "Detect Port" : "Ermittle den Port",
+ "Detect Port" : "Port ermitteln",
"User DN" : "Benutzer-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Der DN des Benutzers, mit dem der LDAP-Bind durchgeführt werden soll, z.B. uid=agent,dc=example,dc=com. Für anonymen Zugriff lasse DN und Passwort leer.",
"Password" : "Passwort",
"For anonymous access, leave DN and Password empty." : "Lasse die Felder DN und Passwort für anonymen Zugang leer.",
"One Base DN per line" : "Einen Basis-DN pro Zeile",
- "You can specify Base DN for users and groups in the Advanced tab" : "Du kannst die Basis-DN für Benutzer und Gruppen im Reiter „Fortgeschritten“ angeben",
- "Detect Base DN" : "Ermittle die Base DN",
- "Test Base DN" : "Teste die Base DN",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Du kannst die Base DN für Benutzer und Gruppen im Reiter „Fortgeschritten“ angeben",
+ "Detect Base DN" : "Base DN ermitteln",
+ "Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
"Limit %s access to users meeting these criteria:" : "Den %s-Zugriff auf Benutzer, die den folgenden Kriterien entsprechen, beschränken:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Sie nicht sicher, welche Objektklasse Sie wählen sollen, fragen Sie bitte Ihren Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
- "Verify settings and count users" : "Überprüfe Einstellungen und zähle Benutzer",
+ "Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
"Saving" : "Speichern",
"Back" : "Zurück",
"Continue" : "Fortsetzen",
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 47fc89ddb59..7c6cb120559 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -14,26 +14,32 @@
"Configuration OK" : "Konfiguration OK",
"Select groups" : "Gruppen auswählen",
"Select object classes" : "Objektklassen auswählen",
- "Please check the credentials, they seem to be wrong." : "Bitte prüfe die Anmeldeinformationen, sie scheinen nicht richtig zu sein.",
- "Please specify the port, it could not be auto-detected." : "Bitte den Port manuell eingeben, er konnte nicht automatisch erkannt werden.",
+ "Please check the credentials, they seem to be wrong." : "Bitte überprüfe die Anmeldeinformationen, sie sind anscheinend falsch.",
+ "Please specify the port, it could not be auto-detected." : "Bitte gib den Port an, er konnte nicht automatisch erkannt werden.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfe die Anmeldeinformationen, den Host und den Port.",
"Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte manuell eingeben.",
"{nthServer}. Server" : "{nthServer}. - Server",
"No object found in the given Base DN. Please revise." : "Keine Objekte in der Base DN gefunden, bitte überprüfen.",
- "More then 1.000 directory entries available." : "Es sind mehr als 1.000 Verzeichnis Einträge verfügbar.",
+ "More than 1.000 directory entries available." : "Mehr als 1.000 Verzeichniseinträge verfügbar.",
" entries available within the provided Base DN" : "Einträge in der Vorgesehenen Base DN verfügbar",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte prüfe die Base DN und auch die Verbindungs- und Anmeldeeinstellungen.",
"Do you really want to delete the current Server Configuration?" : "Soll die aktuelle Serverkonfiguration wirklich gelöscht werden?",
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
- "Error while clearing the mappings." : "Fehler während dem löschen der Zuordnungen!",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte sicherstellen dass die Datenbank arbeitet. Neuladen vor dem Fortfahren.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe kann dies eine Weile dauern. Wollen Sie immer noch den Modus wechseln?",
+ "Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stelle sicher, dass die Datenbank in Betrieb ist. Bitte lade vor dem Fortfahren neu.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Willst Du immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User nicht gefunden. Prüfe Deine Login Attribute und den Usernamen. Effektiver Filter (copy-and-paste für die Kommando Zeilen Überprüfung): <br/>",
- "User found and settings verified." : "User gefunden und Einstellungen überprüft.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es trat ein Verbindungsfehler zu LDAP / AD auf, bitte prüfen sie den Server, den Port und dieAnmeldeinformationen.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Loginattribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfe Host, Port und Anmeldeinformationen.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.",
+ "Please provide a login name to test against" : "Bitte gib einen Benutzernamen an, um gegen diesen zu testen",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es in den erweiterten LDAP-Einstellungen selber an.",
@@ -41,46 +47,49 @@
"Invalid Host" : "Ungültiger Host",
"Server" : "Server",
"Users" : "Benutzer",
- "Login Attributes" : "Anmelde Attribute",
+ "Login Attributes" : "Loginattribute",
"Groups" : "Gruppen",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
"Groups meeting these criteria are available in %s:" : "Gruppen, auf die diese Kriterien zutreffen, sind verfügbar in %s:",
- "Only these object classes:" : "Nur diese Objekt Klassen:",
- "Only from these groups:" : "Nur von diesen Gruppen:",
- "Search groups" : "Suche Gruppen",
+ "Only these object classes:" : "Nur diese Objektklassen:",
+ "Only from these groups:" : "Nur aus diesen Gruppen:",
+ "Search groups" : "Gruppen suchen",
"Available groups" : "Verfügbare Gruppen",
"Selected groups" : "Ausgewählte Gruppen",
- "Edit LDAP Query" : "Editiere die LDAP Abfrage",
- "LDAP Filter:" : "LDAP Filter:",
+ "Edit LDAP Query" : "LDAP-Abfrage bearbeiten",
+ "LDAP Filter:" : "LDAP-Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.",
- "Test Filter" : "Testfilter",
- "Verify settings and count groups" : "Überprüfe die Einstellungen und zähle Gruppen",
- "LDAP / AD Username:" : "LDAP / AD Benutzername:",
- "LDAP / AD Email Address:" : "LDAP / AD Email Adresse:",
+ "Verify settings and count groups" : "Einstellungen überprüfen und Gruppen zählen",
+ "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s die Nutzerbasis mit folgenden Attributen vorfinden:",
+ "LDAP / AD Username:" : "LDAP-/AD-Benutzername:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Erlaubt das Anmelden gegen den LDAP / AD Nutzernamen, welcher entweder eine UID oder samaccountname ist und automatisch erkannt wird.",
+ "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.",
"Other Attributes:" : "Andere Attribute:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Bestimmt den Filter, welcher bei einer Anmeldung angewandt wird. %%uid ersetzt den Benutzernamen bei der Anmeldung. Beispiel: \"uid=%%uid\"",
- "Test Loginname" : "Teste den Benutzernamen",
- "Verify settings" : "Überprüfe Einstellungen",
+ "Test Loginname" : "Loginnamen testen",
+ "Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Du kannst das Protokoll auslassen, außer wenn Du SSL benötigst. Beginne dann mit ldaps://",
"Port" : "Port",
- "Detect Port" : "Ermittle den Port",
+ "Detect Port" : "Port ermitteln",
"User DN" : "Benutzer-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Der DN des Benutzers, mit dem der LDAP-Bind durchgeführt werden soll, z.B. uid=agent,dc=example,dc=com. Für anonymen Zugriff lasse DN und Passwort leer.",
"Password" : "Passwort",
"For anonymous access, leave DN and Password empty." : "Lasse die Felder DN und Passwort für anonymen Zugang leer.",
"One Base DN per line" : "Einen Basis-DN pro Zeile",
- "You can specify Base DN for users and groups in the Advanced tab" : "Du kannst die Basis-DN für Benutzer und Gruppen im Reiter „Fortgeschritten“ angeben",
- "Detect Base DN" : "Ermittle die Base DN",
- "Test Base DN" : "Teste die Base DN",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Du kannst die Base DN für Benutzer und Gruppen im Reiter „Fortgeschritten“ angeben",
+ "Detect Base DN" : "Base DN ermitteln",
+ "Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
"Limit %s access to users meeting these criteria:" : "Den %s-Zugriff auf Benutzer, die den folgenden Kriterien entsprechen, beschränken:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Sie nicht sicher, welche Objektklasse Sie wählen sollen, fragen Sie bitte Ihren Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
- "Verify settings and count users" : "Überprüfe Einstellungen und zähle Benutzer",
+ "Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
"Saving" : "Speichern",
"Back" : "Zurück",
"Continue" : "Fortsetzen",
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index 132780c74bf..7f36fe64be0 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -16,26 +16,32 @@ OC.L10N.register(
"Configuration OK" : "Konfiguration OK",
"Select groups" : "Gruppen auswählen",
"Select object classes" : "Objektklassen auswählen",
- "Please check the credentials, they seem to be wrong." : "Bitte prüfe die Anmeldeinformationen, sie scheinen nicht richtig zu sein.",
- "Please specify the port, it could not be auto-detected." : "Bitte den Port manuell eingeben, er konnte nicht automatisch erkannt werden.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfe die Anmeldeinformationen, den Host und den Port.",
- "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte manuell eingeben.",
+ "Please check the credentials, they seem to be wrong." : "Bitte überprüfen Sie die Anmeldeinformationen, sie sind anscheinend falsch.",
+ "Please specify the port, it could not be auto-detected." : "Bitte geben Sie den Port an, er konnte nicht automatisch erkannt werden.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfen Sie Anmeldeinformationen, Host und Port.",
+ "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte geben Sie sie manuell ein.",
"{nthServer}. Server" : "{nthServer}. - Server",
- "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base DN gefunden, bitte überprüfen.",
- "More then 1.000 directory entries available." : "Es sind mehr als 1.000 Verzeichnis Einträge verfügbar.",
- " entries available within the provided Base DN" : "Einträge in der Vorgesehenen Base DN verfügbar",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte prüfe die Base DN und auch die Verbindungs- und Anmeldeeinstellungen.",
+ "No object found in the given Base DN. Please revise." : "Keine Objekte in der angegebenen Base DN gefunden, bitte überprüfen.",
+ "More than 1.000 directory entries available." : "Mehr als 1.000 Verzeichniseinträge verfügbar.",
+ " entries available within the provided Base DN" : "Einträge in der angegebenen Base DN verfügbar",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Es ist ein Fehler aufgetreten. Bitte überprüfen Sie die Base DN wie auch die Verbindungseinstellungen und Anmeldeinformationen.",
"Do you really want to delete the current Server Configuration?" : "Soll die aktuelle Serverkonfiguration wirklich gelöscht werden?",
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
- "Error while clearing the mappings." : "Fehler während dem löschen der Zuordnungen!",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte sicherstellen dass die Datenbank arbeitet. Neuladen vor dem Fortfahren.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe kann dies eine Weile dauern. Wollen Sie immer noch den Modus wechseln",
+ "Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stellen Sie sicher, dass die Datenbank in Betrieb ist. Bitte laden Sie vor dem Fortfahren neu.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User nicht gefunden. Prüfe Deine Login Attribute und den Usernamen. Effektiver Filter (copy-and-paste für die Kommando Zeilen Überprüfung): <br/>",
- "User found and settings verified." : "User gefunden und Einstellungen überprüft.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es trat ein Verbindungsfehler zu LDAP / AD auf, bitte prüfen sie den Server, den Port und dieAnmeldeinformationen.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Loginattribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.",
+ "Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.",
@@ -43,46 +49,49 @@ OC.L10N.register(
"Invalid Host" : "Ungültiger Host",
"Server" : "Server",
"Users" : "Benutzer",
- "Login Attributes" : "Anmelde Attribute",
+ "Login Attributes" : "Anmeldeattribute",
"Groups" : "Gruppen",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
"Groups meeting these criteria are available in %s:" : "Gruppen, auf die diese Kriterien zutreffen, sind verfügbar in %s:",
- "Only these object classes:" : "Nur diese Objekt Klassen:",
- "Only from these groups:" : "Nur von diesen Gruppen:",
- "Search groups" : "Suche Gruppen",
+ "Only these object classes:" : "Nur diese Objektklassen:",
+ "Only from these groups:" : "Nur aus diesen Gruppen:",
+ "Search groups" : "Gruppen suchen",
"Available groups" : "Verfügbare Gruppen",
"Selected groups" : "Ausgewählte Gruppen",
- "Edit LDAP Query" : "Editiere die LDAP Abfrage",
- "LDAP Filter:" : "LDAP Filter:",
+ "Edit LDAP Query" : "LDAP-Abfrage bearbeiten",
+ "LDAP Filter:" : "LDAP-Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.",
- "Test Filter" : "Testfilter",
- "Verify settings and count groups" : "Überprüfe die Einstellungen und zähle Gruppen",
- "LDAP / AD Username:" : "LDAP / AD Benutzername:",
- "LDAP / AD Email Address:" : "LDAP / AD Email Adresse:",
+ "Verify settings and count groups" : "Einstellungen überprüfen und Gruppen zählen",
+ "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s die Nutzerbasis mit folgenden Attributen vorfinden:",
+ "LDAP / AD Username:" : "LDAP-/AD-Benutzername:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Erlaubt das Anmelden gegen den LDAP / AD Nutzernamen, welcher entweder eine UID oder samaccountname ist und automatisch erkannt wird.",
+ "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.",
"Other Attributes:" : "Andere Attribute:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Bestimmt den Filter, welcher bei einer Anmeldung angewandt wird. %%uid ersetzt den Benutzernamen bei der Anmeldung. Beispiel: \"uid=%%uid\"",
- "Test Loginname" : "Teste den Benutzernamen",
- "Verify settings" : "Überprüfe Einstellungen",
+ "Test Loginname" : "Loginnamen testen",
+ "Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://",
"Port" : "Port",
- "Detect Port" : "Ermittle den Port",
+ "Detect Port" : "Port ermitteln",
"User DN" : "Benutzer-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Der DN des Benutzers, mit dem der LDAP-Bind durchgeführt werden soll, z.B. uid=agent,dc=example,dc=com. Für einen anonymen Zugriff lassen Sie DN und Passwort leer.",
"Password" : "Passwort",
"For anonymous access, leave DN and Password empty." : "Lassen Sie die Felder DN und Passwort für einen anonymen Zugang leer.",
"One Base DN per line" : "Einen Basis-DN pro Zeile",
"You can specify Base DN for users and groups in the Advanced tab" : " Sie können die Basis-DN für Benutzer und Gruppen im Reiter „Fortgeschritten“ angeben",
- "Detect Base DN" : "Ermittle die Base DN",
- "Test Base DN" : "Teste die Base DN",
+ "Detect Base DN" : "Base DN ermitteln",
+ "Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
"Limit %s access to users meeting these criteria:" : "Den %s-Zugriff auf Benutzer, die den folgenden Kriterien entsprechen, beschränken:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Sie nicht sicher, welche Objektklasse Sie wählen sollen, fragen Sie bitte Ihren Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
- "Verify settings and count users" : "Überprüfe Einstellungen und zähle Benutzer",
+ "Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
"Saving" : "Speichern",
"Back" : "Zurück",
"Continue" : "Fortsetzen",
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index a4661c72581..27190826a20 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -14,26 +14,32 @@
"Configuration OK" : "Konfiguration OK",
"Select groups" : "Gruppen auswählen",
"Select object classes" : "Objektklassen auswählen",
- "Please check the credentials, they seem to be wrong." : "Bitte prüfe die Anmeldeinformationen, sie scheinen nicht richtig zu sein.",
- "Please specify the port, it could not be auto-detected." : "Bitte den Port manuell eingeben, er konnte nicht automatisch erkannt werden.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfe die Anmeldeinformationen, den Host und den Port.",
- "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte manuell eingeben.",
+ "Please check the credentials, they seem to be wrong." : "Bitte überprüfen Sie die Anmeldeinformationen, sie sind anscheinend falsch.",
+ "Please specify the port, it could not be auto-detected." : "Bitte geben Sie den Port an, er konnte nicht automatisch erkannt werden.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Die Base DN konnte nicht automatisch erkannt werden, bitte überprüfen Sie Anmeldeinformationen, Host und Port.",
+ "Could not detect Base DN, please enter it manually." : "Die Base DN konnte nicht erkannt werden, bitte geben Sie sie manuell ein.",
"{nthServer}. Server" : "{nthServer}. - Server",
- "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base DN gefunden, bitte überprüfen.",
- "More then 1.000 directory entries available." : "Es sind mehr als 1.000 Verzeichnis Einträge verfügbar.",
- " entries available within the provided Base DN" : "Einträge in der Vorgesehenen Base DN verfügbar",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte prüfe die Base DN und auch die Verbindungs- und Anmeldeeinstellungen.",
+ "No object found in the given Base DN. Please revise." : "Keine Objekte in der angegebenen Base DN gefunden, bitte überprüfen.",
+ "More than 1.000 directory entries available." : "Mehr als 1.000 Verzeichniseinträge verfügbar.",
+ " entries available within the provided Base DN" : "Einträge in der angegebenen Base DN verfügbar",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Es ist ein Fehler aufgetreten. Bitte überprüfen Sie die Base DN wie auch die Verbindungseinstellungen und Anmeldeinformationen.",
"Do you really want to delete the current Server Configuration?" : "Soll die aktuelle Serverkonfiguration wirklich gelöscht werden?",
"Confirm Deletion" : "Löschen bestätigen",
"Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
- "Error while clearing the mappings." : "Fehler während dem löschen der Zuordnungen!",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte sicherstellen dass die Datenbank arbeitet. Neuladen vor dem Fortfahren.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe kann dies eine Weile dauern. Wollen Sie immer noch den Modus wechseln",
+ "Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stellen Sie sicher, dass die Datenbank in Betrieb ist. Bitte laden Sie vor dem Fortfahren neu.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Ihrer LDAP-Größe können diese einige Zeit in Anspruch nehmen. Wollen Sie immer noch den Modus wechseln?",
"Mode switch" : "Modus umschalten",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User nicht gefunden. Prüfe Deine Login Attribute und den Usernamen. Effektiver Filter (copy-and-paste für die Kommando Zeilen Überprüfung): <br/>",
- "User found and settings verified." : "User gefunden und Einstellungen überprüft.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es trat ein Verbindungsfehler zu LDAP / AD auf, bitte prüfen sie den Server, den Port und dieAnmeldeinformationen.",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfen Sie Ihre Loginattribute und Ihren Benutzernamen. Gültiger Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.",
+ "Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.",
"_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"],
"_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es in den erweiterten LDAP-Einstellungen selber an.",
@@ -41,46 +47,49 @@
"Invalid Host" : "Ungültiger Host",
"Server" : "Server",
"Users" : "Benutzer",
- "Login Attributes" : "Anmelde Attribute",
+ "Login Attributes" : "Anmeldeattribute",
"Groups" : "Gruppen",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
"Groups meeting these criteria are available in %s:" : "Gruppen, auf die diese Kriterien zutreffen, sind verfügbar in %s:",
- "Only these object classes:" : "Nur diese Objekt Klassen:",
- "Only from these groups:" : "Nur von diesen Gruppen:",
- "Search groups" : "Suche Gruppen",
+ "Only these object classes:" : "Nur diese Objektklassen:",
+ "Only from these groups:" : "Nur aus diesen Gruppen:",
+ "Search groups" : "Gruppen suchen",
"Available groups" : "Verfügbare Gruppen",
"Selected groups" : "Ausgewählte Gruppen",
- "Edit LDAP Query" : "Editiere die LDAP Abfrage",
- "LDAP Filter:" : "LDAP Filter:",
+ "Edit LDAP Query" : "LDAP-Abfrage bearbeiten",
+ "LDAP Filter:" : "LDAP-Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.",
- "Test Filter" : "Testfilter",
- "Verify settings and count groups" : "Überprüfe die Einstellungen und zähle Gruppen",
- "LDAP / AD Username:" : "LDAP / AD Benutzername:",
- "LDAP / AD Email Address:" : "LDAP / AD Email Adresse:",
+ "Verify settings and count groups" : "Einstellungen überprüfen und Gruppen zählen",
+ "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s die Nutzerbasis mit folgenden Attributen vorfinden:",
+ "LDAP / AD Username:" : "LDAP-/AD-Benutzername:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Erlaubt das Anmelden gegen den LDAP / AD Nutzernamen, welcher entweder eine UID oder samaccountname ist und automatisch erkannt wird.",
+ "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.",
"Other Attributes:" : "Andere Attribute:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Bestimmt den Filter, welcher bei einer Anmeldung angewandt wird. %%uid ersetzt den Benutzernamen bei der Anmeldung. Beispiel: \"uid=%%uid\"",
- "Test Loginname" : "Teste den Benutzernamen",
- "Verify settings" : "Überprüfe Einstellungen",
+ "Test Loginname" : "Loginnamen testen",
+ "Verify settings" : "Einstellungen überprüfen",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://",
"Port" : "Port",
- "Detect Port" : "Ermittle den Port",
+ "Detect Port" : "Port ermitteln",
"User DN" : "Benutzer-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Der DN des Benutzers, mit dem der LDAP-Bind durchgeführt werden soll, z.B. uid=agent,dc=example,dc=com. Für einen anonymen Zugriff lassen Sie DN und Passwort leer.",
"Password" : "Passwort",
"For anonymous access, leave DN and Password empty." : "Lassen Sie die Felder DN und Passwort für einen anonymen Zugang leer.",
"One Base DN per line" : "Einen Basis-DN pro Zeile",
"You can specify Base DN for users and groups in the Advanced tab" : " Sie können die Basis-DN für Benutzer und Gruppen im Reiter „Fortgeschritten“ angeben",
- "Detect Base DN" : "Ermittle die Base DN",
- "Test Base DN" : "Teste die Base DN",
+ "Detect Base DN" : "Base DN ermitteln",
+ "Test Base DN" : "Base DN testen",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.",
"Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)",
"Limit %s access to users meeting these criteria:" : "Den %s-Zugriff auf Benutzer, die den folgenden Kriterien entsprechen, beschränken:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Sie nicht sicher, welche Objektklasse Sie wählen sollen, fragen Sie bitte Ihren Verzeichnis-Admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.",
- "Verify settings and count users" : "Überprüfe Einstellungen und zähle Benutzer",
+ "Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen",
"Saving" : "Speichern",
"Back" : "Zurück",
"Continue" : "Fortsetzen",
diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js
index 53e2e418a7f..939edd4d045 100644
--- a/apps/user_ldap/l10n/el.js
+++ b/apps/user_ldap/l10n/el.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Αδυναμία ανίχνευσης Base DN, παρακαλώ να το εισάγετε χειροκίνητα.",
"{nthServer}. Server" : "{nthServer}. Διακομιστής",
"No object found in the given Base DN. Please revise." : "Δεν βρέθηκε αντικείμενο στο δηλωθέν Base DN. Παρακαλώ αναθεωρήστε.",
- "More then 1.000 directory entries available." : "Είναι διαθέσιμες περισσότερες από 1.000 εγγραφές καταλόγου.",
+ "More than 1.000 directory entries available." : "Περισσότερες από 1.000 εγγραφές καταλόγων διαθέσιμες.",
" entries available within the provided Base DN" : "διαθέσιμες καταχωρήσεις εντός του δηλωθέντος ",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Παρουσιάστηκε σφάλμα. Παρακαλούμε ελέγξτε το Base DN καθώς και τις ρυθμίσεις και τα διαπιστευτήρια σύνδεσης.",
"Do you really want to delete the current Server Configuration?" : "Θέλετε να διαγράψετε τις τρέχουσες ρυθμίσεις του διακομιστή;",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Επεξεργασία ερωτήματος ",
"LDAP Filter:" : "Φίλτρο LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιες ομάδες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.",
- "Test Filter" : "Φίλτρο Ελέγχου",
"Verify settings and count groups" : "Επιβεβαίωση ρυθμίσεων και καταμέτρηση ομάδων",
"When logging in, %s will find the user based on the following attributes:" : "Κατά τη σύνδεση, το %s θα βρει το χρήστη βασιζόμενος στις ακόλουθες ιδιότητες:",
"LDAP / AD Username:" : "Όνομα χρήστη LDAP / AD:",
diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json
index 99a969e677f..1e0add9ee44 100644
--- a/apps/user_ldap/l10n/el.json
+++ b/apps/user_ldap/l10n/el.json
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Αδυναμία ανίχνευσης Base DN, παρακαλώ να το εισάγετε χειροκίνητα.",
"{nthServer}. Server" : "{nthServer}. Διακομιστής",
"No object found in the given Base DN. Please revise." : "Δεν βρέθηκε αντικείμενο στο δηλωθέν Base DN. Παρακαλώ αναθεωρήστε.",
- "More then 1.000 directory entries available." : "Είναι διαθέσιμες περισσότερες από 1.000 εγγραφές καταλόγου.",
+ "More than 1.000 directory entries available." : "Περισσότερες από 1.000 εγγραφές καταλόγων διαθέσιμες.",
" entries available within the provided Base DN" : "διαθέσιμες καταχωρήσεις εντός του δηλωθέντος ",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Παρουσιάστηκε σφάλμα. Παρακαλούμε ελέγξτε το Base DN καθώς και τις ρυθμίσεις και τα διαπιστευτήρια σύνδεσης.",
"Do you really want to delete the current Server Configuration?" : "Θέλετε να διαγράψετε τις τρέχουσες ρυθμίσεις του διακομιστή;",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Επεξεργασία ερωτήματος ",
"LDAP Filter:" : "Φίλτρο LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Το φίλτρο καθορίζει ποιες ομάδες LDAP θα έχουν πρόσβαση στην εγκατάσταση %s.",
- "Test Filter" : "Φίλτρο Ελέγχου",
"Verify settings and count groups" : "Επιβεβαίωση ρυθμίσεων και καταμέτρηση ομάδων",
"When logging in, %s will find the user based on the following attributes:" : "Κατά τη σύνδεση, το %s θα βρει το χρήστη βασιζόμενος στις ακόλουθες ιδιότητες:",
"LDAP / AD Username:" : "Όνομα χρήστη LDAP / AD:",
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index 4cfbae15ced..86c93e972d7 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -10,15 +10,37 @@ OC.L10N.register(
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
" Could not set configuration %s" : " Could not set configuration %s",
+ "Action does not exist" : "Action does not exist",
"Configuration incorrect" : "Configuration incorrect",
"Configuration incomplete" : "Configuration incomplete",
"Configuration OK" : "Configuration OK",
"Select groups" : "Select groups",
"Select object classes" : "Select object classes",
+ "Please check the credentials, they seem to be wrong." : "Please check the credentials, they seem to be wrong.",
+ "Please specify the port, it could not be auto-detected." : "Please specify the port, it could not be auto-detected.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN could not be auto-detected, please revise credentials, host and port.",
+ "Could not detect Base DN, please enter it manually." : "Could not detect Base DN, please enter it manually.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "No object found in the given Base DN. Please revise." : "No object found in the given Base DN. Please revise.",
+ " entries available within the provided Base DN" : " entries available within the provided Base DN",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "An error occurred. Please check the Base DN, as well as connection settings and credentials.",
"Do you really want to delete the current Server Configuration?" : "Do you really want to delete the current Server Configuration?",
"Confirm Deletion" : "Confirm Deletion",
+ "Mappings cleared successfully!" : "Mappings cleared successfully!",
+ "Error while clearing the mappings." : "Error whilst clearing the mappings.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Saving failed. Please make sure the database is in operation. Reload before continuing.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?",
+ "Mode switch" : "Mode switch",
"Select attributes" : "Select attributes",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>",
+ "User found and settings verified." : "User found and settings verified.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD.",
+ "Please provide a login name to test against" : "Please provide a login name to test against",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "The group box was disabled, because the LDAP / AD server does not support memberOf.",
"_%s group found_::_%s groups found_" : ["%s group found","%s groups found"],
"_%s user found_::_%s users found_" : ["%s user found","%s users found"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.",
@@ -26,29 +48,49 @@ OC.L10N.register(
"Invalid Host" : "Invalid Host",
"Server" : "Server",
"Users" : "Users",
+ "Login Attributes" : "Login Attributes",
"Groups" : "Groups",
"Test Configuration" : "Test Configuration",
"Help" : "Help",
"Groups meeting these criteria are available in %s:" : "Groups meeting these criteria are available in %s:",
+ "Only these object classes:" : "Only these object classes:",
+ "Only from these groups:" : "Only from these groups:",
+ "Search groups" : "Search groups",
+ "Available groups" : "Available groups",
+ "Selected groups" : "Selected groups",
+ "Edit LDAP Query" : "Edit LDAP Query",
+ "LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "The filter specifies which LDAP groups shall have access to the %s instance.",
- "Test Filter" : "Test Filter",
+ "Verify settings and count groups" : "Verify settings and count groups",
+ "When logging in, %s will find the user based on the following attributes:" : "When logging in, %s will find the user based on the following attributes:",
+ "LDAP / AD Username:" : "LDAP / AD Username:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected.",
+ "LDAP / AD Email Address:" : "LDAP / AD Email Address:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed.",
"Other Attributes:" : "Other Attributes:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"",
+ "Test Loginname" : "Test Loginname",
+ "Verify settings" : "Verify settings",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "You can omit the protocol, except you require SSL. Then start with ldaps://",
"Port" : "Port",
+ "Detect Port" : "Detect Port",
"User DN" : "User DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty.",
"Password" : "Password",
"For anonymous access, leave DN and Password empty." : "For anonymous access, leave DN and Password empty.",
"One Base DN per line" : "One Base DN per line",
"You can specify Base DN for users and groups in the Advanced tab" : "You can specify Base DN for users and groups in the Advanced tab",
+ "Detect Base DN" : "Detect Base DN",
+ "Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge.",
"Manually enter LDAP filters (recommended for large directories)" : "Manually enter LDAP filters (recommended for large directories)",
"Limit %s access to users meeting these criteria:" : "Limit %s access to users meeting these criteria:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "The filter specifies which LDAP users shall have access to the %s instance.",
+ "Verify settings and count users" : "Verify settings and count users",
"Saving" : "Saving",
"Back" : "Back",
"Continue" : "Continue",
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index 5a352c0ffa6..39366fd146b 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -8,15 +8,37 @@
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
" Could not set configuration %s" : " Could not set configuration %s",
+ "Action does not exist" : "Action does not exist",
"Configuration incorrect" : "Configuration incorrect",
"Configuration incomplete" : "Configuration incomplete",
"Configuration OK" : "Configuration OK",
"Select groups" : "Select groups",
"Select object classes" : "Select object classes",
+ "Please check the credentials, they seem to be wrong." : "Please check the credentials, they seem to be wrong.",
+ "Please specify the port, it could not be auto-detected." : "Please specify the port, it could not be auto-detected.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN could not be auto-detected, please revise credentials, host and port.",
+ "Could not detect Base DN, please enter it manually." : "Could not detect Base DN, please enter it manually.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "No object found in the given Base DN. Please revise." : "No object found in the given Base DN. Please revise.",
+ " entries available within the provided Base DN" : " entries available within the provided Base DN",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "An error occurred. Please check the Base DN, as well as connection settings and credentials.",
"Do you really want to delete the current Server Configuration?" : "Do you really want to delete the current Server Configuration?",
"Confirm Deletion" : "Confirm Deletion",
+ "Mappings cleared successfully!" : "Mappings cleared successfully!",
+ "Error while clearing the mappings." : "Error whilst clearing the mappings.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Saving failed. Please make sure the database is in operation. Reload before continuing.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?",
+ "Mode switch" : "Mode switch",
"Select attributes" : "Select attributes",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>",
+ "User found and settings verified." : "User found and settings verified.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "An unspecified error occurred. Please check the settings and the log.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "The search filter is invalid, probably due to syntax issues like an uneven number of opened and closed brackets. Please revise.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "A connection error to LDAP / AD occurred, please check host, port and credentials.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD.",
+ "Please provide a login name to test against" : "Please provide a login name to test against",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "The group box was disabled, because the LDAP / AD server does not support memberOf.",
"_%s group found_::_%s groups found_" : ["%s group found","%s groups found"],
"_%s user found_::_%s users found_" : ["%s user found","%s users found"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.",
@@ -24,29 +46,49 @@
"Invalid Host" : "Invalid Host",
"Server" : "Server",
"Users" : "Users",
+ "Login Attributes" : "Login Attributes",
"Groups" : "Groups",
"Test Configuration" : "Test Configuration",
"Help" : "Help",
"Groups meeting these criteria are available in %s:" : "Groups meeting these criteria are available in %s:",
+ "Only these object classes:" : "Only these object classes:",
+ "Only from these groups:" : "Only from these groups:",
+ "Search groups" : "Search groups",
+ "Available groups" : "Available groups",
+ "Selected groups" : "Selected groups",
+ "Edit LDAP Query" : "Edit LDAP Query",
+ "LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "The filter specifies which LDAP groups shall have access to the %s instance.",
- "Test Filter" : "Test Filter",
+ "Verify settings and count groups" : "Verify settings and count groups",
+ "When logging in, %s will find the user based on the following attributes:" : "When logging in, %s will find the user based on the following attributes:",
+ "LDAP / AD Username:" : "LDAP / AD Username:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected.",
+ "LDAP / AD Email Address:" : "LDAP / AD Email Address:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed.",
"Other Attributes:" : "Other Attributes:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"",
+ "Test Loginname" : "Test Loginname",
+ "Verify settings" : "Verify settings",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
"Host" : "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "You can omit the protocol, except you require SSL. Then start with ldaps://",
"Port" : "Port",
+ "Detect Port" : "Detect Port",
"User DN" : "User DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty.",
"Password" : "Password",
"For anonymous access, leave DN and Password empty." : "For anonymous access, leave DN and Password empty.",
"One Base DN per line" : "One Base DN per line",
"You can specify Base DN for users and groups in the Advanced tab" : "You can specify Base DN for users and groups in the Advanced tab",
+ "Detect Base DN" : "Detect Base DN",
+ "Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge.",
"Manually enter LDAP filters (recommended for large directories)" : "Manually enter LDAP filters (recommended for large directories)",
"Limit %s access to users meeting these criteria:" : "Limit %s access to users meeting these criteria:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.",
"The filter specifies which LDAP users shall have access to the %s instance." : "The filter specifies which LDAP users shall have access to the %s instance.",
+ "Verify settings and count users" : "Verify settings and count users",
"Saving" : "Saving",
"Back" : "Back",
"Continue" : "Continue",
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index 84297d32ba5..fd90625352b 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -10,27 +10,27 @@ OC.L10N.register(
"No configuration specified" : "No se ha especificado la configuración",
"No data specified" : "No se han especificado los datos",
" Could not set configuration %s" : "No se pudo establecer la configuración %s",
- "Action does not exist" : "Acción no existe.",
+ "Action does not exist" : "La acción no existe.",
"Configuration incorrect" : "Configuración Incorrecta",
"Configuration incomplete" : "Configuración incompleta",
"Configuration OK" : "Configuración correcta",
"Select groups" : "Seleccionar grupos",
"Select object classes" : "Seleccionar la clase de objeto",
"Please check the credentials, they seem to be wrong." : "Por favor verifique las credenciales, parecen no ser correctas.",
- "Please specify the port, it could not be auto-detected." : "Por favor especifique el puerto, no pudo ser auto-detectado.",
+ "Please specify the port, it could not be auto-detected." : "Por favor especifique el puerto, no pudo ser autodetectado.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no puede ser detectada automáticamente, por favor revise credenciales, host y puerto.",
"Could not detect Base DN, please enter it manually." : "No se pudo detectar Base DN, por favor ingrésela manualmente.",
"{nthServer}. Server" : "{nthServer}. servidor",
"No object found in the given Base DN. Please revise." : "No se encuentra ningún objeto en la Base DN dada. Por favor revisar.",
- "More then 1.000 directory entries available." : "Más de 1.000 entradas de directorios disponibles.",
+ "More than 1.000 directory entries available." : "Más de 1.000 directorios disponibles.",
" entries available within the provided Base DN" : "entradas disponibles dentro de la BaseDN provista",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Un error ocurrió. Por favor revise la Base DN, también como la configuración de la conexión y credenciales.",
"Do you really want to delete the current Server Configuration?" : "¿Realmente desea eliminar la configuración actual del servidor?",
"Confirm Deletion" : "Confirmar eliminación",
- "Mappings cleared successfully!" : "Asignaciones borrado exitosamente!",
+ "Mappings cleared successfully!" : "¡Asignaciones borradas exitosamente!",
"Error while clearing the mappings." : "Error mientras se borraban las asignaciones.",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Guardado fallido. Por favor, asegúrese que la base de datos esta en Operación. Actualizar antes de continuar.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. Desea cambiar el modo?",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Guardado fallido. Por favor, asegúrese de que la base de datos está en Operación. Actualizar antes de continuar.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. ¿Desea cambiar el modo?",
"Mode switch" : "Modo interruptor",
"Select attributes" : "Seleccionar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):<br/>",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Editar consulta LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica que grupos LDAP tendrán acceso a %s.",
- "Test Filter" : "Filtro de prueba",
"Verify settings and count groups" : "Verificar configuraciones y contar grupos",
"When logging in, %s will find the user based on the following attributes:" : "Cuando se inicia sesión, %s encontrará al usuario basado en los siguientes atributos:",
"LDAP / AD Username:" : "Nombre de usuario LDAP /AD:",
@@ -90,7 +89,7 @@ OC.L10N.register(
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automáticas al LDAP. Mejor para grandes configuraciones, pero requiere cierto conocimiento de LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ingrese manualmente los filtros LDAP (Recomendado para grandes directorios)",
"Limit %s access to users meeting these criteria:" : "Limitar el acceso a %s a los usuarios que cumplan estos criterios:",
- "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Los objetos de clases más comunes para los usuarios son organizationalPerson, persona, usuario y inetOrgPerson. Si no está seguro que objeto de clase seleccionar, por favor consulte con su administrador de directorio. ",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Los objetos de clases más comunes para los usuarios son organizationalPerson, persona, usuario y inetOrgPerson. Si no está seguro de qué objeto de clase seleccionar, por favor, consulte con su administrador de directorio. ",
"The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica que usuarios LDAP pueden tener acceso a %s.",
"Verify settings and count users" : "Verificar configuración y contar usuarios",
"Saving" : "Guardando",
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index 7a9448882fe..3e939e07de2 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -8,27 +8,27 @@
"No configuration specified" : "No se ha especificado la configuración",
"No data specified" : "No se han especificado los datos",
" Could not set configuration %s" : "No se pudo establecer la configuración %s",
- "Action does not exist" : "Acción no existe.",
+ "Action does not exist" : "La acción no existe.",
"Configuration incorrect" : "Configuración Incorrecta",
"Configuration incomplete" : "Configuración incompleta",
"Configuration OK" : "Configuración correcta",
"Select groups" : "Seleccionar grupos",
"Select object classes" : "Seleccionar la clase de objeto",
"Please check the credentials, they seem to be wrong." : "Por favor verifique las credenciales, parecen no ser correctas.",
- "Please specify the port, it could not be auto-detected." : "Por favor especifique el puerto, no pudo ser auto-detectado.",
+ "Please specify the port, it could not be auto-detected." : "Por favor especifique el puerto, no pudo ser autodetectado.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN no puede ser detectada automáticamente, por favor revise credenciales, host y puerto.",
"Could not detect Base DN, please enter it manually." : "No se pudo detectar Base DN, por favor ingrésela manualmente.",
"{nthServer}. Server" : "{nthServer}. servidor",
"No object found in the given Base DN. Please revise." : "No se encuentra ningún objeto en la Base DN dada. Por favor revisar.",
- "More then 1.000 directory entries available." : "Más de 1.000 entradas de directorios disponibles.",
+ "More than 1.000 directory entries available." : "Más de 1.000 directorios disponibles.",
" entries available within the provided Base DN" : "entradas disponibles dentro de la BaseDN provista",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Un error ocurrió. Por favor revise la Base DN, también como la configuración de la conexión y credenciales.",
"Do you really want to delete the current Server Configuration?" : "¿Realmente desea eliminar la configuración actual del servidor?",
"Confirm Deletion" : "Confirmar eliminación",
- "Mappings cleared successfully!" : "Asignaciones borrado exitosamente!",
+ "Mappings cleared successfully!" : "¡Asignaciones borradas exitosamente!",
"Error while clearing the mappings." : "Error mientras se borraban las asignaciones.",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Guardado fallido. Por favor, asegúrese que la base de datos esta en Operación. Actualizar antes de continuar.",
- "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. Desea cambiar el modo?",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Guardado fallido. Por favor, asegúrese de que la base de datos está en Operación. Actualizar antes de continuar.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Cambiando el modo habilitará automáticamente las consultas LDAP. Dependiendo del tamaño de su LDAP puede tardar un rato. ¿Desea cambiar el modo?",
"Mode switch" : "Modo interruptor",
"Select attributes" : "Seleccionar atributos",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Usuario no encontrado. Por favor verifique los atributos de inicio de sesión y nombre de usuario. Filtro eficaz (copie-y-pegue para validar desde la línea de comando):<br/>",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Editar consulta LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica que grupos LDAP tendrán acceso a %s.",
- "Test Filter" : "Filtro de prueba",
"Verify settings and count groups" : "Verificar configuraciones y contar grupos",
"When logging in, %s will find the user based on the following attributes:" : "Cuando se inicia sesión, %s encontrará al usuario basado en los siguientes atributos:",
"LDAP / AD Username:" : "Nombre de usuario LDAP /AD:",
@@ -88,7 +87,7 @@
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automáticas al LDAP. Mejor para grandes configuraciones, pero requiere cierto conocimiento de LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ingrese manualmente los filtros LDAP (Recomendado para grandes directorios)",
"Limit %s access to users meeting these criteria:" : "Limitar el acceso a %s a los usuarios que cumplan estos criterios:",
- "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Los objetos de clases más comunes para los usuarios son organizationalPerson, persona, usuario y inetOrgPerson. Si no está seguro que objeto de clase seleccionar, por favor consulte con su administrador de directorio. ",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Los objetos de clases más comunes para los usuarios son organizationalPerson, persona, usuario y inetOrgPerson. Si no está seguro de qué objeto de clase seleccionar, por favor, consulte con su administrador de directorio. ",
"The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica que usuarios LDAP pueden tener acceso a %s.",
"Verify settings and count users" : "Verificar configuración y contar usuarios",
"Saving" : "Guardando",
diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js
index 08c696977d8..cfe06cf0d6e 100644
--- a/apps/user_ldap/l10n/et_EE.js
+++ b/apps/user_ldap/l10n/et_EE.js
@@ -30,7 +30,6 @@ OC.L10N.register(
"Help" : "Abiinfo",
"Groups meeting these criteria are available in %s:" : "Kriteeriumiga sobivad grupid on saadaval %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter määrab millised LDAP grupid saavad ligipääsu sellele %s instantsile.",
- "Test Filter" : "Testi filtrit",
"Other Attributes:" : "Muud atribuudid:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime. Näide: \"uid=%%uid\"",
"1. Server" : "1. Server",
diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json
index 21b25b52d1a..b592f01087d 100644
--- a/apps/user_ldap/l10n/et_EE.json
+++ b/apps/user_ldap/l10n/et_EE.json
@@ -28,7 +28,6 @@
"Help" : "Abiinfo",
"Groups meeting these criteria are available in %s:" : "Kriteeriumiga sobivad grupid on saadaval %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter määrab millised LDAP grupid saavad ligipääsu sellele %s instantsile.",
- "Test Filter" : "Testi filtrit",
"Other Attributes:" : "Muud atribuudid:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime. Näide: \"uid=%%uid\"",
"1. Server" : "1. Server",
diff --git a/apps/user_ldap/l10n/eu.js b/apps/user_ldap/l10n/eu.js
index b846dfa1e10..096973d2f1c 100644
--- a/apps/user_ldap/l10n/eu.js
+++ b/apps/user_ldap/l10n/eu.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Laguntza",
"Groups meeting these criteria are available in %s:" : "Baldintza horiek betetzen dituzten taldeak bertan eskuragarri %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Iragazkiak zehazten du ze LDAP taldek izango duten sarrera %s instantziara:",
- "Test Filter" : "Frogatu Iragazkia",
"Other Attributes:" : "Bestelako atributuak:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definitu aplikatu beharreko iragazkia sartzen saiatzean. %%uid erabiltzailearen izena ordezten du sartzeko ekintzan. Adibidez: \"uid=%%uid\"",
"1. Server" : "1. Zerbitzaria",
diff --git a/apps/user_ldap/l10n/eu.json b/apps/user_ldap/l10n/eu.json
index 247618ea884..84e8650d213 100644
--- a/apps/user_ldap/l10n/eu.json
+++ b/apps/user_ldap/l10n/eu.json
@@ -29,7 +29,6 @@
"Help" : "Laguntza",
"Groups meeting these criteria are available in %s:" : "Baldintza horiek betetzen dituzten taldeak bertan eskuragarri %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Iragazkiak zehazten du ze LDAP taldek izango duten sarrera %s instantziara:",
- "Test Filter" : "Frogatu Iragazkia",
"Other Attributes:" : "Bestelako atributuak:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definitu aplikatu beharreko iragazkia sartzen saiatzean. %%uid erabiltzailearen izena ordezten du sartzeko ekintzan. Adibidez: \"uid=%%uid\"",
"1. Server" : "1. Zerbitzaria",
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index 193094fca59..eeb890c70c5 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -22,12 +22,12 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Impossible de détecter le DN de base, veuillez le spécifier manuellement",
"{nthServer}. Server" : "{nthServer}. Serveur",
"No object found in the given Base DN. Please revise." : "Aucun objet trouvé dans le DN de base spécifié. Veuillez le vérifier.",
- "More then 1.000 directory entries available." : "Plus de 1 000 entrées d'annuaire disponibles",
+ "More than 1.000 directory entries available." : "Il y a plus de 1000 entrées de répertoire disponibles.",
" entries available within the provided Base DN" : "entrées disponibles dans le DN de base spécifié",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Une erreur est survenue. Veuillez vérifier le DN de base, ainsi que les paramètres de connexion et les informations d'identification",
"Do you really want to delete the current Server Configuration?" : "Êtes-vous vraiment sûr de vouloir effacer la configuration actuelle du serveur ?",
"Confirm Deletion" : "Confirmer la suppression",
- "Mappings cleared successfully!" : "Succès de la suppression des associations!",
+ "Mappings cleared successfully!" : "Associations supprimées avec succès !",
"Error while clearing the mappings." : "Erreur lors de la suppression des associations.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "La sauvegarde a échoué. Veuillez vérifier que la base de données est opérationnelle. Rechargez avant de poursuivre.",
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Modifier la requête LDAP",
"LDAP Filter:" : "Filtre LDAP :",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Le filtre spécifie quels groupes LDAP ont accès à l'instance %s.",
- "Test Filter" : "Test du filtre",
"Verify settings and count groups" : "Vérifier les paramètres et compter les groupes",
"When logging in, %s will find the user based on the following attributes:" : "Au login, %s cherchera l'utilisateur sur base de ces attributs :",
"LDAP / AD Username:" : "Nom d'utilisateur LDAP / AD :",
@@ -76,10 +75,10 @@ OC.L10N.register(
"1. Server" : "1. Serveur",
"%s. Server:" : "%s. Serveur :",
"Host" : "Hôte",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas préfixez avec ldaps://",
+ "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas, préfixez avec ldaps://",
"Port" : "Port",
"Detect Port" : "Détecter le port",
- "User DN" : "DN Utilisateur (Autorisé à consulter l'annuaire)",
+ "User DN" : "DN Utilisateur",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN de l'utilisateur client pour lequel la liaison doit se faire, par exemple uid=agent,dc=example,dc=com. Pour un accès anonyme, laisser le DN et le mot de passe vides.",
"Password" : "Mot de passe",
"For anonymous access, leave DN and Password empty." : "Pour un accès anonyme, laisser le DN utilisateur et le mot de passe vides.",
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index b6408cfaef4..b6c1c9e9985 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -20,12 +20,12 @@
"Could not detect Base DN, please enter it manually." : "Impossible de détecter le DN de base, veuillez le spécifier manuellement",
"{nthServer}. Server" : "{nthServer}. Serveur",
"No object found in the given Base DN. Please revise." : "Aucun objet trouvé dans le DN de base spécifié. Veuillez le vérifier.",
- "More then 1.000 directory entries available." : "Plus de 1 000 entrées d'annuaire disponibles",
+ "More than 1.000 directory entries available." : "Il y a plus de 1000 entrées de répertoire disponibles.",
" entries available within the provided Base DN" : "entrées disponibles dans le DN de base spécifié",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Une erreur est survenue. Veuillez vérifier le DN de base, ainsi que les paramètres de connexion et les informations d'identification",
"Do you really want to delete the current Server Configuration?" : "Êtes-vous vraiment sûr de vouloir effacer la configuration actuelle du serveur ?",
"Confirm Deletion" : "Confirmer la suppression",
- "Mappings cleared successfully!" : "Succès de la suppression des associations!",
+ "Mappings cleared successfully!" : "Associations supprimées avec succès !",
"Error while clearing the mappings." : "Erreur lors de la suppression des associations.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "La sauvegarde a échoué. Veuillez vérifier que la base de données est opérationnelle. Rechargez avant de poursuivre.",
"Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Changer de mode activera les requêtes LDAP automatiques. Selon la taille de votre annuaire LDAP, cela peut prendre du temps. Voulez-vous toujours changer de mode ?",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Modifier la requête LDAP",
"LDAP Filter:" : "Filtre LDAP :",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Le filtre spécifie quels groupes LDAP ont accès à l'instance %s.",
- "Test Filter" : "Test du filtre",
"Verify settings and count groups" : "Vérifier les paramètres et compter les groupes",
"When logging in, %s will find the user based on the following attributes:" : "Au login, %s cherchera l'utilisateur sur base de ces attributs :",
"LDAP / AD Username:" : "Nom d'utilisateur LDAP / AD :",
@@ -74,10 +73,10 @@
"1. Server" : "1. Serveur",
"%s. Server:" : "%s. Serveur :",
"Host" : "Hôte",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas préfixez avec ldaps://",
+ "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas, préfixez avec ldaps://",
"Port" : "Port",
"Detect Port" : "Détecter le port",
- "User DN" : "DN Utilisateur (Autorisé à consulter l'annuaire)",
+ "User DN" : "DN Utilisateur",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "DN de l'utilisateur client pour lequel la liaison doit se faire, par exemple uid=agent,dc=example,dc=com. Pour un accès anonyme, laisser le DN et le mot de passe vides.",
"Password" : "Mot de passe",
"For anonymous access, leave DN and Password empty." : "Pour un accès anonyme, laisser le DN utilisateur et le mot de passe vides.",
diff --git a/apps/user_ldap/l10n/gl.js b/apps/user_ldap/l10n/gl.js
index 12ac6c86fe3..63f7a2cdaf1 100644
--- a/apps/user_ldap/l10n/gl.js
+++ b/apps/user_ldap/l10n/gl.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Non foi posíbel detectar o DN base, introdúzao manualmente.",
"{nthServer}. Server" : "{nthServer}. Servidor",
"No object found in the given Base DN. Please revise." : "Non se atopou o obxecto no DN base solicitado. Revíseo.",
- "More then 1.000 directory entries available." : "Máis de 1.000 entradas de directorio dispoñíbeis.",
+ "More than 1.000 directory entries available." : "Dispoñíbeis máis de 1.000 entradas de directorio.",
" entries available within the provided Base DN" : "entradas dispoñíbeis no DN base fornecido",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Produciuse un erro. Comprobe o DN base, os axustes de conexión e as credenciais.",
"Do you really want to delete the current Server Configuration?" : "Confirma que quere eliminar a configuración actual do servidor?",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Editar a consulta LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica que grupos LDAP teñen acceso á instancia %s.",
- "Test Filter" : "Filtro de probas",
"Verify settings and count groups" : "Verificar os axustes e contar os grupos",
"When logging in, %s will find the user based on the following attributes:" : "Ao acceder, %s atopa o usuario en función dos seguintes atributos:",
"LDAP / AD Username:" : "Nome de usuario LDAP / AD:",
diff --git a/apps/user_ldap/l10n/gl.json b/apps/user_ldap/l10n/gl.json
index 3f22dc04747..bcbef5d530e 100644
--- a/apps/user_ldap/l10n/gl.json
+++ b/apps/user_ldap/l10n/gl.json
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Non foi posíbel detectar o DN base, introdúzao manualmente.",
"{nthServer}. Server" : "{nthServer}. Servidor",
"No object found in the given Base DN. Please revise." : "Non se atopou o obxecto no DN base solicitado. Revíseo.",
- "More then 1.000 directory entries available." : "Máis de 1.000 entradas de directorio dispoñíbeis.",
+ "More than 1.000 directory entries available." : "Dispoñíbeis máis de 1.000 entradas de directorio.",
" entries available within the provided Base DN" : "entradas dispoñíbeis no DN base fornecido",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Produciuse un erro. Comprobe o DN base, os axustes de conexión e as credenciais.",
"Do you really want to delete the current Server Configuration?" : "Confirma que quere eliminar a configuración actual do servidor?",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Editar a consulta LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica que grupos LDAP teñen acceso á instancia %s.",
- "Test Filter" : "Filtro de probas",
"Verify settings and count groups" : "Verificar os axustes e contar os grupos",
"When logging in, %s will find the user based on the following attributes:" : "Ao acceder, %s atopa o usuario en función dos seguintes atributos:",
"LDAP / AD Username:" : "Nome de usuario LDAP / AD:",
diff --git a/apps/user_ldap/l10n/hu_HU.js b/apps/user_ldap/l10n/hu_HU.js
index d6fe2fde2d8..6d3ad2600f0 100644
--- a/apps/user_ldap/l10n/hu_HU.js
+++ b/apps/user_ldap/l10n/hu_HU.js
@@ -30,7 +30,6 @@ OC.L10N.register(
"Help" : "Súgó",
"Groups meeting these criteria are available in %s:" : "A %s szolgáltatás azon csoportok létezését veszi figyelembe, amik a következő feltételeknek felelnek meg:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "A szűrő meghatározza, hogy mely LDAP csoportok lesznek jogosultak %s elérésére.",
- "Test Filter" : "Test szűrő ",
"Other Attributes:" : "Más attribútumok:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Ez a szűrő érvényes a bejelentkezés megkísérlésekor. Ekkor az %%uid változó helyére a bejelentkezési név kerül. Például: \"uid=%%uid\"",
"1. Server" : "1. Kiszolgáló",
diff --git a/apps/user_ldap/l10n/hu_HU.json b/apps/user_ldap/l10n/hu_HU.json
index d793887c0b2..19552648b73 100644
--- a/apps/user_ldap/l10n/hu_HU.json
+++ b/apps/user_ldap/l10n/hu_HU.json
@@ -28,7 +28,6 @@
"Help" : "Súgó",
"Groups meeting these criteria are available in %s:" : "A %s szolgáltatás azon csoportok létezését veszi figyelembe, amik a következő feltételeknek felelnek meg:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "A szűrő meghatározza, hogy mely LDAP csoportok lesznek jogosultak %s elérésére.",
- "Test Filter" : "Test szűrő ",
"Other Attributes:" : "Más attribútumok:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Ez a szűrő érvényes a bejelentkezés megkísérlésekor. Ekkor az %%uid változó helyére a bejelentkezési név kerül. Például: \"uid=%%uid\"",
"1. Server" : "1. Kiszolgáló",
diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js
index 255ee3ee1c8..d8ff8b4e24c 100644
--- a/apps/user_ldap/l10n/id.js
+++ b/apps/user_ldap/l10n/id.js
@@ -10,15 +10,33 @@ OC.L10N.register(
"No configuration specified" : "Tidak ada konfigurasi yang ditetapkan",
"No data specified" : "Tidak ada data yang ditetapkan",
" Could not set configuration %s" : "Tidak dapat menyetel konfigurasi %s",
+ "Action does not exist" : "Tidak ada tindakan",
"Configuration incorrect" : "Konfigurasi salah",
"Configuration incomplete" : "Konfigurasi tidak lengkap",
"Configuration OK" : "Konfigurasi Oke",
"Select groups" : "Pilih grup",
"Select object classes" : "Pilik kelas obyek",
+ "Please check the credentials, they seem to be wrong." : "Mohon periksa kredensial, nampaknya ada kesalahan.",
+ "Please specify the port, it could not be auto-detected." : "Mohon tentukan port karena tidak terdeteksi secara otomatis.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN tidak terdeteksi secara otomatis, mohon periksa kembali kredensial, host dan port.",
+ "Could not detect Base DN, please enter it manually." : "Tidak dapat mendeteksi Base DN, mohon masukkan secara manual.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "No object found in the given Base DN. Please revise." : "Tidak ada obyek ditemukan di Base DN yang diberikan. Mohon diperiksa kembali.",
+ "More than 1.000 directory entries available." : "Lebih dari 1.000 entri direktori yang tersedia.",
+ " entries available within the provided Base DN" : "entri tersedia didalam Base DN yang diberikan",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Terjadi kesalahan. Silakan periksa Base DN, serta pengaturan sambungan dan kredensial.",
"Do you really want to delete the current Server Configuration?" : "Apakan Anda ingin menghapus Konfigurasi Server saat ini?",
"Confirm Deletion" : "Konfirmasi Penghapusan",
+ "Mappings cleared successfully!" : "Pemetaan berhasil dibersihkan!",
+ "Error while clearing the mappings." : "Kesalahan saat membersihkan pemetaan.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Menyimpan gagal. Mohon pastikan basis data di Operasi. Muat Ulang sebelum melanjutkan.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Beralih modus akan mengaktifkan kueri LDAP. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
+ "Mode switch" : "Beralih modus",
"Select attributes" : "Pilih atribut",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
+ "User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah diaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
@@ -26,11 +44,20 @@ OC.L10N.register(
"Invalid Host" : "Host tidak sah",
"Server" : "Server",
"Users" : "Pengguna",
+ "Login Attributes" : "Atribut Login",
"Groups" : "Grup",
"Test Configuration" : "Uji Konfigurasi",
"Help" : "Bantuan",
"Groups meeting these criteria are available in %s:" : "Grup memenuhi kriteria ini tersedia di %s:",
- "Test Filter" : "Uji Penyaring",
+ "Only these object classes:" : "Hanya kelas obyek berikut:",
+ "Only from these groups:" : "Hanya dari grup berikut:",
+ "Search groups" : "Pencarian grup",
+ "Available groups" : "Grup tersedia",
+ "Selected groups" : "Grup terpilih",
+ "Edit LDAP Query" : "Sunting Kueri LDAP",
+ "LDAP Filter:" : "Penyaring LDAP:",
+ "LDAP / AD Username:" : "Nama pengguna LDAP / AD:",
+ "LDAP / AD Email Address:" : "Alamat Email LDAP / AD:",
"Other Attributes:" : "Atribut Lain:",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json
index bbff7d43f0b..811351a2549 100644
--- a/apps/user_ldap/l10n/id.json
+++ b/apps/user_ldap/l10n/id.json
@@ -8,15 +8,33 @@
"No configuration specified" : "Tidak ada konfigurasi yang ditetapkan",
"No data specified" : "Tidak ada data yang ditetapkan",
" Could not set configuration %s" : "Tidak dapat menyetel konfigurasi %s",
+ "Action does not exist" : "Tidak ada tindakan",
"Configuration incorrect" : "Konfigurasi salah",
"Configuration incomplete" : "Konfigurasi tidak lengkap",
"Configuration OK" : "Konfigurasi Oke",
"Select groups" : "Pilih grup",
"Select object classes" : "Pilik kelas obyek",
+ "Please check the credentials, they seem to be wrong." : "Mohon periksa kredensial, nampaknya ada kesalahan.",
+ "Please specify the port, it could not be auto-detected." : "Mohon tentukan port karena tidak terdeteksi secara otomatis.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN tidak terdeteksi secara otomatis, mohon periksa kembali kredensial, host dan port.",
+ "Could not detect Base DN, please enter it manually." : "Tidak dapat mendeteksi Base DN, mohon masukkan secara manual.",
"{nthServer}. Server" : "{nthServer}. Server",
+ "No object found in the given Base DN. Please revise." : "Tidak ada obyek ditemukan di Base DN yang diberikan. Mohon diperiksa kembali.",
+ "More than 1.000 directory entries available." : "Lebih dari 1.000 entri direktori yang tersedia.",
+ " entries available within the provided Base DN" : "entri tersedia didalam Base DN yang diberikan",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Terjadi kesalahan. Silakan periksa Base DN, serta pengaturan sambungan dan kredensial.",
"Do you really want to delete the current Server Configuration?" : "Apakan Anda ingin menghapus Konfigurasi Server saat ini?",
"Confirm Deletion" : "Konfirmasi Penghapusan",
+ "Mappings cleared successfully!" : "Pemetaan berhasil dibersihkan!",
+ "Error while clearing the mappings." : "Kesalahan saat membersihkan pemetaan.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Menyimpan gagal. Mohon pastikan basis data di Operasi. Muat Ulang sebelum melanjutkan.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Beralih modus akan mengaktifkan kueri LDAP. Hal ini memerlukan beberapa saat tergantung pada ukuran LDAP Anda. Apakah Anda tetap ingin beralih modus?",
+ "Mode switch" : "Beralih modus",
"Select attributes" : "Pilih atribut",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Pengguna tidak ditemukan. Mohon periksa atribut login dan nama pengguna Anda. Penyaring efektif (salin dan tempel berikut untuk validasi baris perintah):\n<br/>",
+ "User found and settings verified." : "Pengguna ditemukan dan pengaturan terverifikasi.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Terjadi kesalahan sambungan ke LDAP / AD, mohon periksa host, port dan kredensial.",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Kotak grup telah diaktifkan, karena server LDAP / AD tidak mendukung keanggotaan.",
"_%s group found_::_%s groups found_" : ["%s grup ditemukan"],
"_%s user found_::_%s users found_" : ["%s pengguna ditemukan"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Tidak mendeteksi atribut nama tampilan pengguna. Silakan menentukannya sendiri di pengaturan ldap lanjutan.",
@@ -24,11 +42,20 @@
"Invalid Host" : "Host tidak sah",
"Server" : "Server",
"Users" : "Pengguna",
+ "Login Attributes" : "Atribut Login",
"Groups" : "Grup",
"Test Configuration" : "Uji Konfigurasi",
"Help" : "Bantuan",
"Groups meeting these criteria are available in %s:" : "Grup memenuhi kriteria ini tersedia di %s:",
- "Test Filter" : "Uji Penyaring",
+ "Only these object classes:" : "Hanya kelas obyek berikut:",
+ "Only from these groups:" : "Hanya dari grup berikut:",
+ "Search groups" : "Pencarian grup",
+ "Available groups" : "Grup tersedia",
+ "Selected groups" : "Grup terpilih",
+ "Edit LDAP Query" : "Sunting Kueri LDAP",
+ "LDAP Filter:" : "Penyaring LDAP:",
+ "LDAP / AD Username:" : "Nama pengguna LDAP / AD:",
+ "LDAP / AD Email Address:" : "Alamat Email LDAP / AD:",
"Other Attributes:" : "Atribut Lain:",
"1. Server" : "1. Server",
"%s. Server:" : "%s. Server:",
diff --git a/apps/user_ldap/l10n/is.js b/apps/user_ldap/l10n/is.js
index 1532ec7baff..b880fd3b059 100644
--- a/apps/user_ldap/l10n/is.js
+++ b/apps/user_ldap/l10n/is.js
@@ -9,4 +9,4 @@ OC.L10N.register(
"Password" : "Lykilorð",
"Advanced" : "Ítarlegt"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);");
diff --git a/apps/user_ldap/l10n/is.json b/apps/user_ldap/l10n/is.json
index c3ae29c3735..f9c82ebf49f 100644
--- a/apps/user_ldap/l10n/is.json
+++ b/apps/user_ldap/l10n/is.json
@@ -6,5 +6,5 @@
"Host" : "Netþjónn",
"Password" : "Lykilorð",
"Advanced" : "Ítarlegt"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 || n % 100 != 11);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js
index 7a1833f0e2e..342808994e4 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Impossibile rilevare il DN base, digitalo manualmente.",
"{nthServer}. Server" : "{nthServer}. server",
"No object found in the given Base DN. Please revise." : "Nessun oggetto trovato nel DN base specificato. Controlla.",
- "More then 1.000 directory entries available." : "Più di 1.000 cartelle disponibili.",
+ "More than 1.000 directory entries available." : "Più di 1.000 cartelle disponibili.",
" entries available within the provided Base DN" : "voci disponibili all'interno del DN base",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Si è verificato un errore. Controlla il DN base, così come le impostazioni di connessione e le credenziali.",
"Do you really want to delete the current Server Configuration?" : "Vuoi davvero eliminare la configurazione attuale del server?",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Modifica query LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Il filtro specifica quali gruppi LDAP devono avere accesso all'istanza %s.",
- "Test Filter" : "Prova filtro",
"Verify settings and count groups" : "Verifica le impostazioni e conta i gruppi",
"When logging in, %s will find the user based on the following attributes:" : "Quando accedi, %s troverà l'utente sulla base dei seguenti attributi:",
"LDAP / AD Username:" : "Nome utente LDAP / AD:",
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index 1e12daa1c28..42ab5158a28 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Impossibile rilevare il DN base, digitalo manualmente.",
"{nthServer}. Server" : "{nthServer}. server",
"No object found in the given Base DN. Please revise." : "Nessun oggetto trovato nel DN base specificato. Controlla.",
- "More then 1.000 directory entries available." : "Più di 1.000 cartelle disponibili.",
+ "More than 1.000 directory entries available." : "Più di 1.000 cartelle disponibili.",
" entries available within the provided Base DN" : "voci disponibili all'interno del DN base",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Si è verificato un errore. Controlla il DN base, così come le impostazioni di connessione e le credenziali.",
"Do you really want to delete the current Server Configuration?" : "Vuoi davvero eliminare la configurazione attuale del server?",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Modifica query LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Il filtro specifica quali gruppi LDAP devono avere accesso all'istanza %s.",
- "Test Filter" : "Prova filtro",
"Verify settings and count groups" : "Verifica le impostazioni e conta i gruppi",
"When logging in, %s will find the user based on the following attributes:" : "Quando accedi, %s troverà l'utente sulla base dei seguenti attributi:",
"LDAP / AD Username:" : "Nome utente LDAP / AD:",
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index 6dda509053a..60c8fce22f6 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -10,11 +10,13 @@ OC.L10N.register(
"No configuration specified" : "構成が指定されていません",
"No data specified" : "データが指定されていません",
" Could not set configuration %s" : "構成 %s を設定できませんでした",
+ "Action does not exist" : "アクションが存在しません",
"Configuration incorrect" : "設定に誤りがあります",
"Configuration incomplete" : "設定が不完全です",
"Configuration OK" : "設定OK",
"Select groups" : "グループを選択",
"Select object classes" : "オブジェクトクラスを選択",
+ "Please specify the port, it could not be auto-detected." : "ポートを指定してください。自動認識できません。",
"{nthServer}. Server" : "{nthServer}. サーバー",
"Do you really want to delete the current Server Configuration?" : "現在のサーバー設定を本当に削除してもよろしいですか?",
"Confirm Deletion" : "削除の確認",
@@ -26,22 +28,27 @@ OC.L10N.register(
"Invalid Host" : "無効なホスト",
"Server" : "サーバー",
"Users" : "ユーザー",
+ "Login Attributes" : "ログイン属性",
"Groups" : "グループ",
"Test Configuration" : "設定をテスト",
"Help" : "ヘルプ",
"Groups meeting these criteria are available in %s:" : "これらの基準を満たすグループが %s で利用可能:",
+ "Search groups" : "グループを検索",
+ "Available groups" : "利用可能なグループ",
+ "Selected groups" : "選択されたグループ",
"LDAP Filter:" : "LDAP フィルタ:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "フィルターは、どの LDAP グループが %s にアクセスするかを指定します。",
- "Test Filter" : "フィルターをテスト",
- "LDAP / AD Username:" : "LDAP / AD ユーザ名:",
+ "LDAP / AD Username:" : "LDAP/ADユーザー名:",
"LDAP / AD Email Address:" : "LDAP / AD メールアドレス:",
"Other Attributes:" : "その他の属性:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "ログイン実行時に適用するフィルターを定義します。%%uid にはログイン操作におけるユーザー名が入ります。例: \"uid=%%uid\"",
+ "Verify settings" : "設定のチェック",
"1. Server" : "1. Server",
"%s. Server:" : "%s. サーバー:",
"Host" : "ホスト",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL通信しない場合には、プロトコル名を省略することができます。そうでない場合には、ldaps:// から始めてください。",
"Port" : "ポート",
+ "Detect Port" : "ポートの検出",
"User DN" : "ユーザーDN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "どのクライアントユーザーのDNで接続するか指定します。例えば uid=agent,dc=example,dc=com になります。匿名アクセスの場合、DNとパスワードは空のままにしてください。",
"Password" : "パスワード",
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index d616a84e457..9b8433c18e3 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -8,11 +8,13 @@
"No configuration specified" : "構成が指定されていません",
"No data specified" : "データが指定されていません",
" Could not set configuration %s" : "構成 %s を設定できませんでした",
+ "Action does not exist" : "アクションが存在しません",
"Configuration incorrect" : "設定に誤りがあります",
"Configuration incomplete" : "設定が不完全です",
"Configuration OK" : "設定OK",
"Select groups" : "グループを選択",
"Select object classes" : "オブジェクトクラスを選択",
+ "Please specify the port, it could not be auto-detected." : "ポートを指定してください。自動認識できません。",
"{nthServer}. Server" : "{nthServer}. サーバー",
"Do you really want to delete the current Server Configuration?" : "現在のサーバー設定を本当に削除してもよろしいですか?",
"Confirm Deletion" : "削除の確認",
@@ -24,22 +26,27 @@
"Invalid Host" : "無効なホスト",
"Server" : "サーバー",
"Users" : "ユーザー",
+ "Login Attributes" : "ログイン属性",
"Groups" : "グループ",
"Test Configuration" : "設定をテスト",
"Help" : "ヘルプ",
"Groups meeting these criteria are available in %s:" : "これらの基準を満たすグループが %s で利用可能:",
+ "Search groups" : "グループを検索",
+ "Available groups" : "利用可能なグループ",
+ "Selected groups" : "選択されたグループ",
"LDAP Filter:" : "LDAP フィルタ:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "フィルターは、どの LDAP グループが %s にアクセスするかを指定します。",
- "Test Filter" : "フィルターをテスト",
- "LDAP / AD Username:" : "LDAP / AD ユーザ名:",
+ "LDAP / AD Username:" : "LDAP/ADユーザー名:",
"LDAP / AD Email Address:" : "LDAP / AD メールアドレス:",
"Other Attributes:" : "その他の属性:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "ログイン実行時に適用するフィルターを定義します。%%uid にはログイン操作におけるユーザー名が入ります。例: \"uid=%%uid\"",
+ "Verify settings" : "設定のチェック",
"1. Server" : "1. Server",
"%s. Server:" : "%s. サーバー:",
"Host" : "ホスト",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL通信しない場合には、プロトコル名を省略することができます。そうでない場合には、ldaps:// から始めてください。",
"Port" : "ポート",
+ "Detect Port" : "ポートの検出",
"User DN" : "ユーザーDN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "どのクライアントユーザーのDNで接続するか指定します。例えば uid=agent,dc=example,dc=com になります。匿名アクセスの場合、DNとパスワードは空のままにしてください。",
"Password" : "パスワード",
diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js
index 94be236ab63..dab98051611 100644
--- a/apps/user_ldap/l10n/ko.js
+++ b/apps/user_ldap/l10n/ko.js
@@ -10,15 +10,38 @@ OC.L10N.register(
"No configuration specified" : "설정이 지정되지 않음",
"No data specified" : "데이터가 지정되지 않음",
" Could not set configuration %s" : " 설정 %s을(를) 지정할 수 없음",
+ "Action does not exist" : "동작이 존재하지 않음",
"Configuration incorrect" : "설정 올바르지 않음",
"Configuration incomplete" : "설정 불완전함",
"Configuration OK" : "설정 올바름",
"Select groups" : "그룹 선택",
"Select object classes" : "객체 클래스 선택",
+ "Please check the credentials, they seem to be wrong." : "인증 정보가 잘못된 것 같습니다. 다시 확인해 주십시오.",
+ "Please specify the port, it could not be auto-detected." : "포트를 자동으로 감지할 수 없습니다. 포트를 입력해 주십시오.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "기본 DN을 자동으로 감지할 수 없습니다. 인증 정보, 호스트, 포트를 다시 확인하십시오.",
+ "Could not detect Base DN, please enter it manually." : "기본 DN을 자동으로 감지할 수 없습니다. 직접 입력하십시오.",
"{nthServer}. Server" : "{nthServer}. 서버",
+ "No object found in the given Base DN. Please revise." : "입력한 기본 DN에서 객체를 찾을 수 없습니다. 다시 입력하십시오.",
+ "More than 1.000 directory entries available." : "디렉터리 항목이 1,000개 이상 존재합니다.",
+ " entries available within the provided Base DN" : "개(지정한 DN의 기본 항목 수)",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "오류가 발생하였습니다. 기본 DN, 연결 설정, 인증 정보를 확인하십시오.",
"Do you really want to delete the current Server Configuration?" : "현재 서버 설정을 지우시겠습니까?",
"Confirm Deletion" : "삭제 확인",
+ "Mappings cleared successfully!" : "매핑을 삭제하였습니다!",
+ "Error while clearing the mappings." : "매핑을 삭제하는 중 오류가 발생하였습니다.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "저장할 수 없습니다. 데이터베이스 상태를 확인하십시오. 계속하기 전에 새로 고치십시오.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "모드를 전환하면 자동 LDAP 쿼리를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?",
+ "Mode switch" : "모드 전환",
"Select attributes" : "속성 선택",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):",
+ "User found and settings verified." : "사용자를 찾았고 설정을 확인하였습니다.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인하였으나 한 명의 사용자만 찾았습니다. 첫 사용자만 로그인할 수 있습니다. 더 좁은 필터를 지정하십시오.",
+ "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생하였습니다. 설정과 로그를 확인하십시오.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생하였습니다. 호스트, 포트, 인증 정보를 확인하십시오.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "%uid 자리 비움자가 존재하지 않습니다. LDAP/AD에 조회할 때 로그인 사용자 이름으로 대체됩니다.",
+ "Please provide a login name to test against" : "테스트할 로그인 사용자 이름을 입력하십시오",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP/AD 서버에서 memberOf를 지원하지 않아서 그룹 상자를 비활성화합니다.",
"_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"],
"_%s user found_::_%s users found_" : ["사용자 %s명 찾음"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.",
@@ -26,29 +49,49 @@ OC.L10N.register(
"Invalid Host" : "잘못된 호스트",
"Server" : "서버",
"Users" : "사용자",
+ "Login Attributes" : "로그인 속성",
"Groups" : "그룹",
"Test Configuration" : "설정 시험",
"Help" : "도움말",
"Groups meeting these criteria are available in %s:" : "이 조건을 만족하는 그룹은 %s에 있습니다:",
+ "Only these object classes:" : "다음 객체 클래스만:",
+ "Only from these groups:" : "다음 그룹만:",
+ "Search groups" : "그룹 검색",
+ "Available groups" : "사용 가능한 그룹",
+ "Selected groups" : "선택한 그룹",
+ "Edit LDAP Query" : "LDAP 쿼리 편집",
+ "LDAP Filter:" : "LDAP 필터:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 그룹을 설정합니다.",
- "Test Filter" : "필터 시험",
+ "Verify settings and count groups" : "설정을 확인하고 그룹 수 계산",
+ "When logging in, %s will find the user based on the following attributes:" : "로그인할 때 %s에서 다음 속성을 기반으로 사용자를 찾습니다:",
+ "LDAP / AD Username:" : "LDAP/AD 사용자 이름:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "uid 또는 samaccountname에 해당하는 LDAP/AD 사용자 이름으로 로그인을 허용합니다. 속성은 자동으로 감지됩니다.",
+ "LDAP / AD Email Address:" : "LDAP/AD 이메일 주소:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "이메일 속성으로 로그인을 허용합니다. Mail 및 mailPrimaryAddress를 허용합니다.",
"Other Attributes:" : "기타 속성:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "로그인을 시도할 때 적용할 필터를 입력하십시오. %%uid는 로그인 동작의 사용자 이름으로 대체됩니다. 예: \"uid=%%uid\"",
+ "Test Loginname" : "로그인 이름 테스트",
+ "Verify settings" : "설정 검사",
"1. Server" : "1. 서버",
"%s. Server:" : "%s. 서버:",
"Host" : "호스트",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL을 사용하지 않으면 프로토콜을 입력하지 않아도 됩니다. SSL을 사용하려면 ldaps://를 입력하십시오.",
"Port" : "포트",
+ "Detect Port" : "포트 감지",
"User DN" : "사용자 DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "바인딩 작업을 수행할 클라이언트 사용자 DN입니다. 예를 들어서 uid=agent,dc=example,dc=com입니다. 익명 접근을 허용하려면 DN과 암호를 비워 두십시오.",
"Password" : "암호",
"For anonymous access, leave DN and Password empty." : "익명 접근을 허용하려면 DN과 암호를 비워 두십시오.",
"One Base DN per line" : "기본 DN을 한 줄에 하나씩 입력하십시오",
"You can specify Base DN for users and groups in the Advanced tab" : "고급 탭에서 사용자 및 그룹에 대한 기본 DN을 지정할 수 있습니다.",
+ "Detect Base DN" : "기본 DN 감지",
+ "Test Base DN" : "기본 DN 시험",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "자동 LDAP 요청을 줄입니다. 대형 사이트에서 유용하지만 LDAP에 관한 지식이 필요합니다.",
"Manually enter LDAP filters (recommended for large directories)" : "수동으로 LDAP 필터 입력(대형 사이트에 추천)",
"Limit %s access to users meeting these criteria:" : "다음 조건을 만족하는 사용자만 %s 접근 허용:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "일반적인 객체 클래스는 organizationalPerson, person, user, inetOrgPerson입니다. 어떤 객체 클래스를 사용해야 할 지 모르겠으면 디렉터리 서비스 관리자에게 연락하십시오.",
"The filter specifies which LDAP users shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 사용자를 설정합니다.",
+ "Verify settings and count users" : "설정을 확인하고 사용자 수 계산",
"Saving" : "저장 중",
"Back" : "뒤로",
"Continue" : "계속",
@@ -102,6 +145,7 @@ OC.L10N.register(
"UUID Attribute for Users:" : "사용자 UUID 속성:",
"UUID Attribute for Groups:" : "그룹 UUID 속성:",
"Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑",
+ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "사용자 이름은 (메타)데이터를 저장하고 할당하는 데 사용됩니다. 사용자를 정확히 식별하기 위해서 모든 LDAP 사용자는 내부 사용자 이름을 갖고 있습니다. 이 정보에 접근하려면 사용자 이름과 LDAP 사용자 사이의 연결을 알아야 합니다. 생성된 사용자 이름은 LDAP 사용자의 UUID에 연결됩니다. LDAP에 연결하는 횟수를 줄이기 위하여 DN을 캐시에 저장하지만, 식별에는 사용하지 않습니다. DN이 변경되었을 때 변경 사항이 적용됩니다. 내부 사용자 이름은 항상 사용됩니다. 매핑을 비우면 과거 매핑의 흔적이 남습니다. 매핑을 비우는 것은 설정에 관계 없이 적용되므로 모든 LDAP 설정에 영향을 줍니다! 테스트 및 실험 단계에서만 매핑을 비우고, 상용 환경에서는 매핑을 비우지 마십시오.",
"Clear Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑 비우기",
"Clear Groupname-LDAP Group Mapping" : "그룹 이름-LDAP 그룹 매핑 비우기"
},
diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json
index d426febafcd..ef04a2c8d93 100644
--- a/apps/user_ldap/l10n/ko.json
+++ b/apps/user_ldap/l10n/ko.json
@@ -8,15 +8,38 @@
"No configuration specified" : "설정이 지정되지 않음",
"No data specified" : "데이터가 지정되지 않음",
" Could not set configuration %s" : " 설정 %s을(를) 지정할 수 없음",
+ "Action does not exist" : "동작이 존재하지 않음",
"Configuration incorrect" : "설정 올바르지 않음",
"Configuration incomplete" : "설정 불완전함",
"Configuration OK" : "설정 올바름",
"Select groups" : "그룹 선택",
"Select object classes" : "객체 클래스 선택",
+ "Please check the credentials, they seem to be wrong." : "인증 정보가 잘못된 것 같습니다. 다시 확인해 주십시오.",
+ "Please specify the port, it could not be auto-detected." : "포트를 자동으로 감지할 수 없습니다. 포트를 입력해 주십시오.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "기본 DN을 자동으로 감지할 수 없습니다. 인증 정보, 호스트, 포트를 다시 확인하십시오.",
+ "Could not detect Base DN, please enter it manually." : "기본 DN을 자동으로 감지할 수 없습니다. 직접 입력하십시오.",
"{nthServer}. Server" : "{nthServer}. 서버",
+ "No object found in the given Base DN. Please revise." : "입력한 기본 DN에서 객체를 찾을 수 없습니다. 다시 입력하십시오.",
+ "More than 1.000 directory entries available." : "디렉터리 항목이 1,000개 이상 존재합니다.",
+ " entries available within the provided Base DN" : "개(지정한 DN의 기본 항목 수)",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "오류가 발생하였습니다. 기본 DN, 연결 설정, 인증 정보를 확인하십시오.",
"Do you really want to delete the current Server Configuration?" : "현재 서버 설정을 지우시겠습니까?",
"Confirm Deletion" : "삭제 확인",
+ "Mappings cleared successfully!" : "매핑을 삭제하였습니다!",
+ "Error while clearing the mappings." : "매핑을 삭제하는 중 오류가 발생하였습니다.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "저장할 수 없습니다. 데이터베이스 상태를 확인하십시오. 계속하기 전에 새로 고치십시오.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "모드를 전환하면 자동 LDAP 쿼리를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?",
+ "Mode switch" : "모드 전환",
"Select attributes" : "속성 선택",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):",
+ "User found and settings verified." : "사용자를 찾았고 설정을 확인하였습니다.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인하였으나 한 명의 사용자만 찾았습니다. 첫 사용자만 로그인할 수 있습니다. 더 좁은 필터를 지정하십시오.",
+ "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생하였습니다. 설정과 로그를 확인하십시오.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생하였습니다. 호스트, 포트, 인증 정보를 확인하십시오.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "%uid 자리 비움자가 존재하지 않습니다. LDAP/AD에 조회할 때 로그인 사용자 이름으로 대체됩니다.",
+ "Please provide a login name to test against" : "테스트할 로그인 사용자 이름을 입력하십시오",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP/AD 서버에서 memberOf를 지원하지 않아서 그룹 상자를 비활성화합니다.",
"_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"],
"_%s user found_::_%s users found_" : ["사용자 %s명 찾음"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.",
@@ -24,29 +47,49 @@
"Invalid Host" : "잘못된 호스트",
"Server" : "서버",
"Users" : "사용자",
+ "Login Attributes" : "로그인 속성",
"Groups" : "그룹",
"Test Configuration" : "설정 시험",
"Help" : "도움말",
"Groups meeting these criteria are available in %s:" : "이 조건을 만족하는 그룹은 %s에 있습니다:",
+ "Only these object classes:" : "다음 객체 클래스만:",
+ "Only from these groups:" : "다음 그룹만:",
+ "Search groups" : "그룹 검색",
+ "Available groups" : "사용 가능한 그룹",
+ "Selected groups" : "선택한 그룹",
+ "Edit LDAP Query" : "LDAP 쿼리 편집",
+ "LDAP Filter:" : "LDAP 필터:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 그룹을 설정합니다.",
- "Test Filter" : "필터 시험",
+ "Verify settings and count groups" : "설정을 확인하고 그룹 수 계산",
+ "When logging in, %s will find the user based on the following attributes:" : "로그인할 때 %s에서 다음 속성을 기반으로 사용자를 찾습니다:",
+ "LDAP / AD Username:" : "LDAP/AD 사용자 이름:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "uid 또는 samaccountname에 해당하는 LDAP/AD 사용자 이름으로 로그인을 허용합니다. 속성은 자동으로 감지됩니다.",
+ "LDAP / AD Email Address:" : "LDAP/AD 이메일 주소:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "이메일 속성으로 로그인을 허용합니다. Mail 및 mailPrimaryAddress를 허용합니다.",
"Other Attributes:" : "기타 속성:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "로그인을 시도할 때 적용할 필터를 입력하십시오. %%uid는 로그인 동작의 사용자 이름으로 대체됩니다. 예: \"uid=%%uid\"",
+ "Test Loginname" : "로그인 이름 테스트",
+ "Verify settings" : "설정 검사",
"1. Server" : "1. 서버",
"%s. Server:" : "%s. 서버:",
"Host" : "호스트",
"You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL을 사용하지 않으면 프로토콜을 입력하지 않아도 됩니다. SSL을 사용하려면 ldaps://를 입력하십시오.",
"Port" : "포트",
+ "Detect Port" : "포트 감지",
"User DN" : "사용자 DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "바인딩 작업을 수행할 클라이언트 사용자 DN입니다. 예를 들어서 uid=agent,dc=example,dc=com입니다. 익명 접근을 허용하려면 DN과 암호를 비워 두십시오.",
"Password" : "암호",
"For anonymous access, leave DN and Password empty." : "익명 접근을 허용하려면 DN과 암호를 비워 두십시오.",
"One Base DN per line" : "기본 DN을 한 줄에 하나씩 입력하십시오",
"You can specify Base DN for users and groups in the Advanced tab" : "고급 탭에서 사용자 및 그룹에 대한 기본 DN을 지정할 수 있습니다.",
+ "Detect Base DN" : "기본 DN 감지",
+ "Test Base DN" : "기본 DN 시험",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "자동 LDAP 요청을 줄입니다. 대형 사이트에서 유용하지만 LDAP에 관한 지식이 필요합니다.",
"Manually enter LDAP filters (recommended for large directories)" : "수동으로 LDAP 필터 입력(대형 사이트에 추천)",
"Limit %s access to users meeting these criteria:" : "다음 조건을 만족하는 사용자만 %s 접근 허용:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "일반적인 객체 클래스는 organizationalPerson, person, user, inetOrgPerson입니다. 어떤 객체 클래스를 사용해야 할 지 모르겠으면 디렉터리 서비스 관리자에게 연락하십시오.",
"The filter specifies which LDAP users shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 사용자를 설정합니다.",
+ "Verify settings and count users" : "설정을 확인하고 사용자 수 계산",
"Saving" : "저장 중",
"Back" : "뒤로",
"Continue" : "계속",
@@ -100,6 +143,7 @@
"UUID Attribute for Users:" : "사용자 UUID 속성:",
"UUID Attribute for Groups:" : "그룹 UUID 속성:",
"Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑",
+ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "사용자 이름은 (메타)데이터를 저장하고 할당하는 데 사용됩니다. 사용자를 정확히 식별하기 위해서 모든 LDAP 사용자는 내부 사용자 이름을 갖고 있습니다. 이 정보에 접근하려면 사용자 이름과 LDAP 사용자 사이의 연결을 알아야 합니다. 생성된 사용자 이름은 LDAP 사용자의 UUID에 연결됩니다. LDAP에 연결하는 횟수를 줄이기 위하여 DN을 캐시에 저장하지만, 식별에는 사용하지 않습니다. DN이 변경되었을 때 변경 사항이 적용됩니다. 내부 사용자 이름은 항상 사용됩니다. 매핑을 비우면 과거 매핑의 흔적이 남습니다. 매핑을 비우는 것은 설정에 관계 없이 적용되므로 모든 LDAP 설정에 영향을 줍니다! 테스트 및 실험 단계에서만 매핑을 비우고, 상용 환경에서는 매핑을 비우지 마십시오.",
"Clear Username-LDAP User Mapping" : "사용자 이름-LDAP 사용자 매핑 비우기",
"Clear Groupname-LDAP Group Mapping" : "그룹 이름-LDAP 그룹 매핑 비우기"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/user_ldap/l10n/nb_NO.js b/apps/user_ldap/l10n/nb_NO.js
index c28947a62fb..146efa56dfc 100644
--- a/apps/user_ldap/l10n/nb_NO.js
+++ b/apps/user_ldap/l10n/nb_NO.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Hjelp",
"Groups meeting these criteria are available in %s:" : "Grupper som tilfredsstiller disse kriteriene er tilgjengelige i %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-grupper som skal ha tilgang til %s-instansen.",
- "Test Filter" : "Test filter",
"Other Attributes:" : "Andre attributter:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definerer filteret som skal brukes når noen prøver å logge inn. %%uid erstatter brukernavnet i innloggingen. Eksempel: \"uid=%%uid\"",
"1. Server" : "1. server",
diff --git a/apps/user_ldap/l10n/nb_NO.json b/apps/user_ldap/l10n/nb_NO.json
index cd399a4eb62..82950c884cb 100644
--- a/apps/user_ldap/l10n/nb_NO.json
+++ b/apps/user_ldap/l10n/nb_NO.json
@@ -29,7 +29,6 @@
"Help" : "Hjelp",
"Groups meeting these criteria are available in %s:" : "Grupper som tilfredsstiller disse kriteriene er tilgjengelige i %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-grupper som skal ha tilgang til %s-instansen.",
- "Test Filter" : "Test filter",
"Other Attributes:" : "Andre attributter:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definerer filteret som skal brukes når noen prøver å logge inn. %%uid erstatter brukernavnet i innloggingen. Eksempel: \"uid=%%uid\"",
"1. Server" : "1. server",
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index 43cf25d010a..4600b251564 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Kon basis DN niet vaststellen, voer de gegevens handmatig in.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "Geen object gevonden in de basis DN. Review instellingen.",
- "More then 1.000 directory entries available." : "Meer dan 1.000 directoryobjecten beschikbaar.",
+ "More than 1.000 directory entries available." : "Meer dan 1000 directory namen beschikbaar.",
" entries available within the provided Base DN" : "accounts beschikbaar binnen de provider Basis DN",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Er trad een fout op. Controleer de Basis DN en de verbindingsinstellingen en inloggegevens.",
"Do you really want to delete the current Server Configuration?" : "Wilt u werkelijk de huidige Serverconfiguratie verwijderen?",
@@ -35,6 +35,13 @@ OC.L10N.register(
"Select attributes" : "Selecteer attributen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Gebruiker niet gevonden. Verifieer de inloggegevens en gebruikersnaam. Effectief filter (kopiëren en plakken voor commandoregel validatie): <br/>",
"User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "De %uid opvultekst ontbreekt. Die wordt vervangen door de inlognaam bij het bevragen van LDAP / AD.",
+ "Please provide a login name to test against" : "Geef een inlognaam op om opnieuw tegen te testen",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "De groepsbox was uitgeschakeld omdat de LDAP / AD server het attribuut memberOf niet ondersteunt.",
"_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"],
"_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.",
@@ -55,9 +62,12 @@ OC.L10N.register(
"Edit LDAP Query" : "Bewerken LDAP bevraging",
"LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Dit filter geeft aan welke LDAP groepen toegang hebben tot %s.",
- "Test Filter" : "Testfilter",
+ "Verify settings and count groups" : "Verifiëren instellingen en tel groepen",
+ "When logging in, %s will find the user based on the following attributes:" : "Bij inloggen vindt %s de gebruiker gebaseerd op de volgende attributen:",
"LDAP / AD Username:" : "LDAP / AD gebruikersnaam:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Maakt inloggen tegen de LDAP / AD gebruikersnaam mogelijk, ofwel uid of samaccountname en wordt gedetecteerd.",
"LDAP / AD Email Address:" : "LDAP / AD e-mailadres:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Maak inloggen tegen een e-mailattribuut mogelijk. E-mail en mailPrimaryAddress zijn mogelijk.",
"Other Attributes:" : "Overige attributen:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definiëert het toe te passen filter als er geprobeerd wordt in te loggen. %%uid vervangt de gebruikersnaam bij het inloggen. Bijvoorbeeld: \"uid=%%uid\"",
"Test Loginname" : "Test inlognaam",
@@ -79,6 +89,7 @@ OC.L10N.register(
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Voorkom automatische LDAP opvragingen. Weliswaar beter voor grote installaties, maar vergt LDAP kennis.",
"Manually enter LDAP filters (recommended for large directories)" : "Handmatig invoeren LDAP filters (aanbevolen voor grote directories)",
"Limit %s access to users meeting these criteria:" : "Beperk %s toegang tot gebruikers die voldoen aan deze criteria:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "De meest gebruikeliujke objectklassen voor gebruikers zijn organizationalPerson, persoon, gebruiker, en inetOrgPerson. Als u niet zeker weet welke objectklasse moet worden geselecteerd, raadpleeg dan uw directorybeheerder.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Dit filter geeft aan welke LDAP gebruikers toegang hebben tot %s.",
"Verify settings and count users" : "Verifiëren instellingen en tellen gebruikers",
"Saving" : "Opslaan",
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index d18c303cf04..63d8720555d 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Kon basis DN niet vaststellen, voer de gegevens handmatig in.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "Geen object gevonden in de basis DN. Review instellingen.",
- "More then 1.000 directory entries available." : "Meer dan 1.000 directoryobjecten beschikbaar.",
+ "More than 1.000 directory entries available." : "Meer dan 1000 directory namen beschikbaar.",
" entries available within the provided Base DN" : "accounts beschikbaar binnen de provider Basis DN",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Er trad een fout op. Controleer de Basis DN en de verbindingsinstellingen en inloggegevens.",
"Do you really want to delete the current Server Configuration?" : "Wilt u werkelijk de huidige Serverconfiguratie verwijderen?",
@@ -33,6 +33,13 @@
"Select attributes" : "Selecteer attributen",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Gebruiker niet gevonden. Verifieer de inloggegevens en gebruikersnaam. Effectief filter (kopiëren en plakken voor commandoregel validatie): <br/>",
"User found and settings verified." : "Gebruiker gevonden en instellingen geverifieerd.",
+ "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.",
+ "An unspecified error occurred. Please check the settings and the log." : "Er trad een ongedefinieerde fout op. Controleer de instellingen en de logging.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Het zoekfilter is ongeldig, waarschijnlijk door syntax problemen zoals een ongelijk aantal open- en sluithaakjes. Graag aanpassen.",
+ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Er trad een verbindingsfout naar LDAP / AD op, verifieer servernaam, poort en inloggegevens.",
+ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "De %uid opvultekst ontbreekt. Die wordt vervangen door de inlognaam bij het bevragen van LDAP / AD.",
+ "Please provide a login name to test against" : "Geef een inlognaam op om opnieuw tegen te testen",
+ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "De groepsbox was uitgeschakeld omdat de LDAP / AD server het attribuut memberOf niet ondersteunt.",
"_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"],
"_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.",
@@ -53,9 +60,12 @@
"Edit LDAP Query" : "Bewerken LDAP bevraging",
"LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Dit filter geeft aan welke LDAP groepen toegang hebben tot %s.",
- "Test Filter" : "Testfilter",
+ "Verify settings and count groups" : "Verifiëren instellingen en tel groepen",
+ "When logging in, %s will find the user based on the following attributes:" : "Bij inloggen vindt %s de gebruiker gebaseerd op de volgende attributen:",
"LDAP / AD Username:" : "LDAP / AD gebruikersnaam:",
+ "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Maakt inloggen tegen de LDAP / AD gebruikersnaam mogelijk, ofwel uid of samaccountname en wordt gedetecteerd.",
"LDAP / AD Email Address:" : "LDAP / AD e-mailadres:",
+ "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Maak inloggen tegen een e-mailattribuut mogelijk. E-mail en mailPrimaryAddress zijn mogelijk.",
"Other Attributes:" : "Overige attributen:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definiëert het toe te passen filter als er geprobeerd wordt in te loggen. %%uid vervangt de gebruikersnaam bij het inloggen. Bijvoorbeeld: \"uid=%%uid\"",
"Test Loginname" : "Test inlognaam",
@@ -77,6 +87,7 @@
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Voorkom automatische LDAP opvragingen. Weliswaar beter voor grote installaties, maar vergt LDAP kennis.",
"Manually enter LDAP filters (recommended for large directories)" : "Handmatig invoeren LDAP filters (aanbevolen voor grote directories)",
"Limit %s access to users meeting these criteria:" : "Beperk %s toegang tot gebruikers die voldoen aan deze criteria:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "De meest gebruikeliujke objectklassen voor gebruikers zijn organizationalPerson, persoon, gebruiker, en inetOrgPerson. Als u niet zeker weet welke objectklasse moet worden geselecteerd, raadpleeg dan uw directorybeheerder.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Dit filter geeft aan welke LDAP gebruikers toegang hebben tot %s.",
"Verify settings and count users" : "Verifiëren instellingen en tellen gebruikers",
"Saving" : "Opslaan",
diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js
index 1c8a4d17e7b..f0a6af6f6b8 100644
--- a/apps/user_ldap/l10n/pl.js
+++ b/apps/user_ldap/l10n/pl.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Pomoc",
"Groups meeting these criteria are available in %s:" : "Przyłączenie do grupy z tymi ustawieniami dostępne jest w %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtr określa, które grupy LDAP powinny mieć dostęp do instancji %s.",
- "Test Filter" : "Testuj filtr",
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Określa jakiego filtru użyć podczas próby zalogowania. %%uid zastępuje nazwę użytkownika w procesie logowania. Przykład: \"uid=%%uid\"",
"1. Server" : "1. Serwer",
diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json
index 28fba352023..ed5beeefaba 100644
--- a/apps/user_ldap/l10n/pl.json
+++ b/apps/user_ldap/l10n/pl.json
@@ -29,7 +29,6 @@
"Help" : "Pomoc",
"Groups meeting these criteria are available in %s:" : "Przyłączenie do grupy z tymi ustawieniami dostępne jest w %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtr określa, które grupy LDAP powinny mieć dostęp do instancji %s.",
- "Test Filter" : "Testuj filtr",
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Określa jakiego filtru użyć podczas próby zalogowania. %%uid zastępuje nazwę użytkownika w procesie logowania. Przykład: \"uid=%%uid\"",
"1. Server" : "1. Serwer",
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 1e3607a9f63..37d5de96d38 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Não foi possível detectar a Base DN, por favor entre manualmente.",
"{nthServer}. Server" : "Servidor {nthServer}.",
"No object found in the given Base DN. Please revise." : "Nenhum objeto encontrado ba Base DN informada. Por favor revise.",
- "More then 1.000 directory entries available." : "Mais de 1.000 entradas de diretórios disponíveis.",
+ "More than 1.000 directory entries available." : "Mais de 1.000 entradas de diretórios disponíveis.",
" entries available within the provided Base DN" : "entradas disponíveis na Base DN disponibilizada",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Um erro ocorreu. Por favor verifique a Base DN, e também a conexção e credenciais.",
"Do you really want to delete the current Server Configuration?" : "Você quer realmente deletar as atuais Configurações de Servidor?",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Editar consulta LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica quais grupos LDAP devem ter acesso à instância do %s.",
- "Test Filter" : "Filtro Teste",
"Verify settings and count groups" : "Verificar as configurações e grupos de conta",
"When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:",
"LDAP / AD Username:" : "Nome do usuário LDAP / AD:",
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index 7abeb3c2b7e..5980b372c8b 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Não foi possível detectar a Base DN, por favor entre manualmente.",
"{nthServer}. Server" : "Servidor {nthServer}.",
"No object found in the given Base DN. Please revise." : "Nenhum objeto encontrado ba Base DN informada. Por favor revise.",
- "More then 1.000 directory entries available." : "Mais de 1.000 entradas de diretórios disponíveis.",
+ "More than 1.000 directory entries available." : "Mais de 1.000 entradas de diretórios disponíveis.",
" entries available within the provided Base DN" : "entradas disponíveis na Base DN disponibilizada",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Um erro ocorreu. Por favor verifique a Base DN, e também a conexção e credenciais.",
"Do you really want to delete the current Server Configuration?" : "Você quer realmente deletar as atuais Configurações de Servidor?",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Editar consulta LDAP",
"LDAP Filter:" : "Filtro LDAP:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica quais grupos LDAP devem ter acesso à instância do %s.",
- "Test Filter" : "Filtro Teste",
"Verify settings and count groups" : "Verificar as configurações e grupos de conta",
"When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:",
"LDAP / AD Username:" : "Nome do usuário LDAP / AD:",
diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js
index 2b275908770..e29158df8d4 100644
--- a/apps/user_ldap/l10n/pt_PT.js
+++ b/apps/user_ldap/l10n/pt_PT.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Ajuda",
"Groups meeting these criteria are available in %s:" : "Grupos que satisfazerem estes critérios estão disponíveis em %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica quais grupos LDAP devem ter acesso à instância %s.",
- "Test Filter" : "Testar Filtro",
"Other Attributes:" : "Outros Atributos:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a aplicar, quando se tenta uma sessão. %%uid substitui o nome de utilizador na ação de início de sessão. Exemplo: \"uid=%%uid\"",
"1. Server" : "1. Servidor",
diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json
index 9d94106818e..94e5cb6c3af 100644
--- a/apps/user_ldap/l10n/pt_PT.json
+++ b/apps/user_ldap/l10n/pt_PT.json
@@ -29,7 +29,6 @@
"Help" : "Ajuda",
"Groups meeting these criteria are available in %s:" : "Grupos que satisfazerem estes critérios estão disponíveis em %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica quais grupos LDAP devem ter acesso à instância %s.",
- "Test Filter" : "Testar Filtro",
"Other Attributes:" : "Outros Atributos:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a aplicar, quando se tenta uma sessão. %%uid substitui o nome de utilizador na ação de início de sessão. Exemplo: \"uid=%%uid\"",
"1. Server" : "1. Servidor",
diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index dcf2bcb8d86..50ec2122070 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -22,13 +22,12 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Не возможно обнаружить Base DN, пожалуйста задайте в ручную.",
"{nthServer}. Server" : "Сервер {nthServer}.",
"No object found in the given Base DN. Please revise." : "Не найдено объектов в Base DN. Пожалуйста перепроверьте.",
- "More then 1.000 directory entries available." : "Доступно более 1.000 папок.",
" entries available within the provided Base DN" : "элементы доступные в Базе",
"Do you really want to delete the current Server Configuration?" : "Вы действительно хотите удалить существующую конфигурацию сервера?",
"Confirm Deletion" : "Подтверждение удаления",
"Select attributes" : "Выберите атрибуты",
- "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено"],
- "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено"],
+ "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"],
+ "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Не удалось автоматически определить атрибут содержащий отображаемое имя пользователя. Зайдите в расширенные настройки ldap и укажите его вручную.",
"Could not find the desired feature" : "Не удается найти требуемую функциональность",
"Invalid Host" : "Некорректный адрес сервера",
@@ -42,7 +41,6 @@ OC.L10N.register(
"Available groups" : "Доступные группы",
"Selected groups" : "Выбранные группы",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Этот фильтр определяет какие LDAP группы должны иметь доступ к экземпляру %s.",
- "Test Filter" : "Проверить фильтр",
"LDAP / AD Username:" : "Имя пользователя LDAP/AD:",
"Other Attributes:" : "Другие атрибуты:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Определяет фильтр для применения при попытке входа. %%uid заменяет имя пользователя при входе в систему. Например: \"uid=%%uid\"",
@@ -118,4 +116,4 @@ OC.L10N.register(
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json
index b6a04af8177..1e828573fe2 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -20,13 +20,12 @@
"Could not detect Base DN, please enter it manually." : "Не возможно обнаружить Base DN, пожалуйста задайте в ручную.",
"{nthServer}. Server" : "Сервер {nthServer}.",
"No object found in the given Base DN. Please revise." : "Не найдено объектов в Base DN. Пожалуйста перепроверьте.",
- "More then 1.000 directory entries available." : "Доступно более 1.000 папок.",
" entries available within the provided Base DN" : "элементы доступные в Базе",
"Do you really want to delete the current Server Configuration?" : "Вы действительно хотите удалить существующую конфигурацию сервера?",
"Confirm Deletion" : "Подтверждение удаления",
"Select attributes" : "Выберите атрибуты",
- "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено"],
- "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено"],
+ "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"],
+ "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Не удалось автоматически определить атрибут содержащий отображаемое имя пользователя. Зайдите в расширенные настройки ldap и укажите его вручную.",
"Could not find the desired feature" : "Не удается найти требуемую функциональность",
"Invalid Host" : "Некорректный адрес сервера",
@@ -40,7 +39,6 @@
"Available groups" : "Доступные группы",
"Selected groups" : "Выбранные группы",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Этот фильтр определяет какие LDAP группы должны иметь доступ к экземпляру %s.",
- "Test Filter" : "Проверить фильтр",
"LDAP / AD Username:" : "Имя пользователя LDAP/AD:",
"Other Attributes:" : "Другие атрибуты:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Определяет фильтр для применения при попытке входа. %%uid заменяет имя пользователя при входе в систему. Например: \"uid=%%uid\"",
@@ -115,5 +113,5 @@
"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud использует имена пользователей для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя ownCloud к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется доменное имя (DN) для уменьшения числа обращений к LDAP, однако оно не используется для идентификации. Если доменное имя было изменено, об этом станет известно ownCloud. Внутреннее имя ownCloud используется повсеместно в ownCloud. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP"
-},"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);"
+},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sk_SK.js b/apps/user_ldap/l10n/sk_SK.js
index a8f9cb398da..745f17a0145 100644
--- a/apps/user_ldap/l10n/sk_SK.js
+++ b/apps/user_ldap/l10n/sk_SK.js
@@ -36,7 +36,6 @@ OC.L10N.register(
"Selected groups" : "Vybrané skupiny",
"LDAP Filter:" : "LDAP filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Tento filter LDAP určuje, ktoré skupiny budú mať prístup k %s inštancii.",
- "Test Filter" : "Otestovať filter",
"LDAP / AD Username:" : "Používateľské meno LDAP / AD:",
"LDAP / AD Email Address:" : "LDAP / AD emailová adresa:",
"Other Attributes:" : "Iné atribúty:",
diff --git a/apps/user_ldap/l10n/sk_SK.json b/apps/user_ldap/l10n/sk_SK.json
index c7d877bae69..269ca3e076d 100644
--- a/apps/user_ldap/l10n/sk_SK.json
+++ b/apps/user_ldap/l10n/sk_SK.json
@@ -34,7 +34,6 @@
"Selected groups" : "Vybrané skupiny",
"LDAP Filter:" : "LDAP filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Tento filter LDAP určuje, ktoré skupiny budú mať prístup k %s inštancii.",
- "Test Filter" : "Otestovať filter",
"LDAP / AD Username:" : "Používateľské meno LDAP / AD:",
"LDAP / AD Email Address:" : "LDAP / AD emailová adresa:",
"Other Attributes:" : "Iné atribúty:",
diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index 12ae0632005..925f802f3a9 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -10,15 +10,19 @@ OC.L10N.register(
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
" Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s",
+ "Action does not exist" : "Operacija ne obstaja",
"Configuration incorrect" : "Nastavitev ni ustrezna",
"Configuration incomplete" : "Nastavitev je nepopolna",
"Configuration OK" : "Nastavitev je ustrezna",
"Select groups" : "Izberi skupine",
"Select object classes" : "Izbor razredov predmeta",
"{nthServer}. Server" : "{nthServer}. strežnik",
+ "More than 1.000 directory entries available." : "Na voljo je več kot 1.000 elementov imenika.",
"Do you really want to delete the current Server Configuration?" : "Ali res želite izbrisati trenutne nastavitve strežnika?",
"Confirm Deletion" : "Potrdi brisanje",
+ "Mode switch" : "Preklop načina",
"Select attributes" : "Izbor atributov",
+ "User found and settings verified." : "Uporabnik najden in nastavitve preverjene.",
"_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"],
"_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ni mogoče prebrati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.",
@@ -26,14 +30,21 @@ OC.L10N.register(
"Invalid Host" : "Neveljaven gostitelj",
"Server" : "Strežnik",
"Users" : "Uporabniki",
+ "Login Attributes" : "Parametri prijave",
"Groups" : "Skupine",
"Test Configuration" : "Preizkusne nastavitve",
"Help" : "Pomoč",
"Groups meeting these criteria are available in %s:" : "Skupine, ki so skladne s kriterijem, so na voljo v %s:",
+ "Only these object classes:" : "Samo tej razredi objektov:",
+ "Only from these groups:" : "Samo te skupine:",
+ "Search groups" : "Skupine za iskanje",
+ "Available groups" : "Razpoložljive skupine",
+ "Selected groups" : "Izbrane skupine",
+ "LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter določa, katere skupine LDAP bodo imele dostop do %s.",
- "Test Filter" : "Preizkusi filter",
"Other Attributes:" : "Drugi atributi:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Določi filter, ki bo uveljavljen ob poskusu prijave. %%uid zamenja uporabniško ime pri prijavi, na primer: \"uid=%%uid\"",
+ "Verify settings" : "Preveri nastavitve",
"1. Server" : "1. strežnik",
"%s. Server:" : "%s. strežnik:",
"Host" : "Gostitelj",
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index 2025e381d90..4674f513589 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -8,15 +8,19 @@
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
" Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s",
+ "Action does not exist" : "Operacija ne obstaja",
"Configuration incorrect" : "Nastavitev ni ustrezna",
"Configuration incomplete" : "Nastavitev je nepopolna",
"Configuration OK" : "Nastavitev je ustrezna",
"Select groups" : "Izberi skupine",
"Select object classes" : "Izbor razredov predmeta",
"{nthServer}. Server" : "{nthServer}. strežnik",
+ "More than 1.000 directory entries available." : "Na voljo je več kot 1.000 elementov imenika.",
"Do you really want to delete the current Server Configuration?" : "Ali res želite izbrisati trenutne nastavitve strežnika?",
"Confirm Deletion" : "Potrdi brisanje",
+ "Mode switch" : "Preklop načina",
"Select attributes" : "Izbor atributov",
+ "User found and settings verified." : "Uporabnik najden in nastavitve preverjene.",
"_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"],
"_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ni mogoče prebrati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.",
@@ -24,14 +28,21 @@
"Invalid Host" : "Neveljaven gostitelj",
"Server" : "Strežnik",
"Users" : "Uporabniki",
+ "Login Attributes" : "Parametri prijave",
"Groups" : "Skupine",
"Test Configuration" : "Preizkusne nastavitve",
"Help" : "Pomoč",
"Groups meeting these criteria are available in %s:" : "Skupine, ki so skladne s kriterijem, so na voljo v %s:",
+ "Only these object classes:" : "Samo tej razredi objektov:",
+ "Only from these groups:" : "Samo te skupine:",
+ "Search groups" : "Skupine za iskanje",
+ "Available groups" : "Razpoložljive skupine",
+ "Selected groups" : "Izbrane skupine",
+ "LDAP Filter:" : "LDAP Filter:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filter določa, katere skupine LDAP bodo imele dostop do %s.",
- "Test Filter" : "Preizkusi filter",
"Other Attributes:" : "Drugi atributi:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Določi filter, ki bo uveljavljen ob poskusu prijave. %%uid zamenja uporabniško ime pri prijavi, na primer: \"uid=%%uid\"",
+ "Verify settings" : "Preveri nastavitve",
"1. Server" : "1. strežnik",
"%s. Server:" : "%s. strežnik:",
"Host" : "Gostitelj",
diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js
index 889623841ba..4e1402d95cf 100644
--- a/apps/user_ldap/l10n/sr.js
+++ b/apps/user_ldap/l10n/sr.js
@@ -10,7 +10,7 @@ OC.L10N.register(
"No configuration specified" : "Није наведена постава",
"No data specified" : "Нису наведени подаци",
" Could not set configuration %s" : "Нисам могао да подесим конфигурацију %s",
- "Action does not exist" : "Акција не постоји",
+ "Action does not exist" : "Радња не постоји",
"Configuration incorrect" : "Конфигурација је неисправна",
"Configuration incomplete" : "Конфигурација није комплетна",
"Configuration OK" : "Конфигурација је у реду",
@@ -22,7 +22,7 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "Не могу да откријем базни ДН. Унесите га ручно.",
"{nthServer}. Server" : "{nthServer}. Сервер",
"No object found in the given Base DN. Please revise." : "Нема објекта за дати базни ДН. Проверите.",
- "More then 1.000 directory entries available." : "Постоји више од 1.000 ставки.",
+ "More than 1.000 directory entries available." : "Више од 1000 уноса је доступно.",
" entries available within the provided Base DN" : "уноса доступно за дати базни ДН",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Грешка. Проверите базни ДН као и поставке везе и акредитиве.",
"Do you really want to delete the current Server Configuration?" : "Да ли стварно желите да обришете тренутну конфигурацију сервера?",
@@ -51,7 +51,7 @@ OC.L10N.register(
"Users" : "Корисници",
"Login Attributes" : "Атрибути пријаве",
"Groups" : "Групе",
- "Test Configuration" : "Тестирај конфигурацију",
+ "Test Configuration" : "Испробај поставу",
"Help" : "Помоћ",
"Groups meeting these criteria are available in %s:" : "Групе које испуњавају ове критеријуме су доступне у %s:",
"Only these object classes:" : "Само ове класе објеката:",
@@ -62,7 +62,6 @@ OC.L10N.register(
"Edit LDAP Query" : "Уреди ЛДАП упит",
"LDAP Filter:" : "ЛДАП филтер:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Филтер прецизира које ће LDAP групе требају имати приступ %s случају.",
- "Test Filter" : "Тестни филтер",
"Verify settings and count groups" : "Провери поставке и преброј групе",
"When logging in, %s will find the user based on the following attributes:" : "При пријављивању, %s ће пронаћи корисника на основу следећих атрибута:",
"LDAP / AD Username:" : "ЛДАП / АД корисничко име:",
@@ -93,7 +92,7 @@ OC.L10N.register(
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Најчешће класе објеката за кориснике су organizationalPerson, person, user и inetOrgPerson. Ако нисте сигурни шта да изаберете, питајте администратора именика.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Филтер одређује који ЛДАП корисници ће имати приступ на %s.",
"Verify settings and count users" : "Провери поставке и преброј кориснике",
- "Saving" : "Чувам",
+ "Saving" : "Снимам",
"Back" : "Назад",
"Continue" : "Настави",
"LDAP" : "LDAP",
@@ -101,7 +100,7 @@ OC.L10N.register(
"Advanced" : "Напредно",
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Упозорење:</b> Апликације user_ldap и user_webdavauth нису компатибилне. Можете имати проблема. Питајте систем администратора да искључи једну од њих.",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Упозорење:</b> ПХП ЛДАП модул није инсталиран и зачеље неће радити. Питајте систем администратора да га инсталира.",
- "Connection Settings" : "Подешавања везе",
+ "Connection Settings" : "Поставке везе",
"Configuration Active" : "Конфигурација активна",
"When unchecked, this configuration will be skipped." : "Када није штриклирано, ова конфигурација ће бити прескочена.",
"Backup (Replica) Host" : "Домаћин Резервне копије (Реплике)",
@@ -139,7 +138,7 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "Правило именовања корисничке фасцикле",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Оставите празно за корисничко име (подразумевано). У супротном, наведите особину LDAP/AD.",
"Internal Username" : "Интерно корисничко име:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Интерно корисничко име ће бити креирано од UUID атрибута. То осигурава да је корисничко име јединствено и да карактери не треба да се конвертују. Интерно корисничко име има ограничење да се само ови карактери дозвољени: [ a-zA-Z0-9_.@- ]. Остали карактери се мењају са њиховим ASCII кореспондентима или се једноставно изостављају. У случају сударања биће додат / повећан број. Интерно корисничко име се користи за интерну идентификацију корисника. Такође је подразумевано име за главну корисничку фасциклу. Такође је део удаљених адреса, на пример за све *DAV сервисе. Са овом поставком, подразумевано понашање се може заобићи. Да би се постигло слично понашање као пре ownCloud 5 унесите атрибут за приказ имена корисника у следеће поље. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (доданим) LDAP корисницима и групама.",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Интерно корисничко име биће направљено од UUID атрибута. То обезбеђује да корисничко име буде јединствено и да карактери не треба да се конвертују. Интерно корисничко име има ограничење да се само ови карактери дозвољени: [ a-zA-Z0-9_.@- ]. Остали карактери се мењају са њиховим ASCII кореспондентима или се једноставно изостављају. У случају сударања биће додат/повећан број. Интерно корисничко име се користи за интерну идентификацију корисника. Такође је подразумевано име за главну корисничку фасциклу. Такође је део удаљених адреса, на пример за све *DAV сервисе. Са овом поставком, подразумевано понашање се може заобићи. Да би се постигло слично понашање као пре оунКлауд 5 унесите атрибут приказног имена корисника у следеће поље. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (додатим) ЛДАП корисницима и групама.",
"Internal Username Attribute:" : "Интерни параметри корисничког имена:",
"Override UUID detection" : "Прескочи UUID откривање",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Подразумевано, атрибут UUID се аутоматски детектује. Атрибут UUID се користи за сигурну идентификацију LDAP корисника и група. Такође, локално корисничко име ће бити креирано на основу UUID-a, ако није другачије назначено. Можете заобићи поставке и проследити други атрибут по вашем избору. Морате бити сигурни да је изабрани атрибут јединствен и да га корисници и групе могу преносити. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (доданим) LDAP корисницима и групама.",
diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json
index 8ef9e6d05ca..c2a9c2898eb 100644
--- a/apps/user_ldap/l10n/sr.json
+++ b/apps/user_ldap/l10n/sr.json
@@ -8,7 +8,7 @@
"No configuration specified" : "Није наведена постава",
"No data specified" : "Нису наведени подаци",
" Could not set configuration %s" : "Нисам могао да подесим конфигурацију %s",
- "Action does not exist" : "Акција не постоји",
+ "Action does not exist" : "Радња не постоји",
"Configuration incorrect" : "Конфигурација је неисправна",
"Configuration incomplete" : "Конфигурација није комплетна",
"Configuration OK" : "Конфигурација је у реду",
@@ -20,7 +20,7 @@
"Could not detect Base DN, please enter it manually." : "Не могу да откријем базни ДН. Унесите га ручно.",
"{nthServer}. Server" : "{nthServer}. Сервер",
"No object found in the given Base DN. Please revise." : "Нема објекта за дати базни ДН. Проверите.",
- "More then 1.000 directory entries available." : "Постоји више од 1.000 ставки.",
+ "More than 1.000 directory entries available." : "Више од 1000 уноса је доступно.",
" entries available within the provided Base DN" : "уноса доступно за дати базни ДН",
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Грешка. Проверите базни ДН као и поставке везе и акредитиве.",
"Do you really want to delete the current Server Configuration?" : "Да ли стварно желите да обришете тренутну конфигурацију сервера?",
@@ -49,7 +49,7 @@
"Users" : "Корисници",
"Login Attributes" : "Атрибути пријаве",
"Groups" : "Групе",
- "Test Configuration" : "Тестирај конфигурацију",
+ "Test Configuration" : "Испробај поставу",
"Help" : "Помоћ",
"Groups meeting these criteria are available in %s:" : "Групе које испуњавају ове критеријуме су доступне у %s:",
"Only these object classes:" : "Само ове класе објеката:",
@@ -60,7 +60,6 @@
"Edit LDAP Query" : "Уреди ЛДАП упит",
"LDAP Filter:" : "ЛДАП филтер:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Филтер прецизира које ће LDAP групе требају имати приступ %s случају.",
- "Test Filter" : "Тестни филтер",
"Verify settings and count groups" : "Провери поставке и преброј групе",
"When logging in, %s will find the user based on the following attributes:" : "При пријављивању, %s ће пронаћи корисника на основу следећих атрибута:",
"LDAP / AD Username:" : "ЛДАП / АД корисничко име:",
@@ -91,7 +90,7 @@
"The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Најчешће класе објеката за кориснике су organizationalPerson, person, user и inetOrgPerson. Ако нисте сигурни шта да изаберете, питајте администратора именика.",
"The filter specifies which LDAP users shall have access to the %s instance." : "Филтер одређује који ЛДАП корисници ће имати приступ на %s.",
"Verify settings and count users" : "Провери поставке и преброј кориснике",
- "Saving" : "Чувам",
+ "Saving" : "Снимам",
"Back" : "Назад",
"Continue" : "Настави",
"LDAP" : "LDAP",
@@ -99,7 +98,7 @@
"Advanced" : "Напредно",
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Упозорење:</b> Апликације user_ldap и user_webdavauth нису компатибилне. Можете имати проблема. Питајте систем администратора да искључи једну од њих.",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Упозорење:</b> ПХП ЛДАП модул није инсталиран и зачеље неће радити. Питајте систем администратора да га инсталира.",
- "Connection Settings" : "Подешавања везе",
+ "Connection Settings" : "Поставке везе",
"Configuration Active" : "Конфигурација активна",
"When unchecked, this configuration will be skipped." : "Када није штриклирано, ова конфигурација ће бити прескочена.",
"Backup (Replica) Host" : "Домаћин Резервне копије (Реплике)",
@@ -137,7 +136,7 @@
"User Home Folder Naming Rule" : "Правило именовања корисничке фасцикле",
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Оставите празно за корисничко име (подразумевано). У супротном, наведите особину LDAP/AD.",
"Internal Username" : "Интерно корисничко име:",
- "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Интерно корисничко име ће бити креирано од UUID атрибута. То осигурава да је корисничко име јединствено и да карактери не треба да се конвертују. Интерно корисничко име има ограничење да се само ови карактери дозвољени: [ a-zA-Z0-9_.@- ]. Остали карактери се мењају са њиховим ASCII кореспондентима или се једноставно изостављају. У случају сударања биће додат / повећан број. Интерно корисничко име се користи за интерну идентификацију корисника. Такође је подразумевано име за главну корисничку фасциклу. Такође је део удаљених адреса, на пример за све *DAV сервисе. Са овом поставком, подразумевано понашање се може заобићи. Да би се постигло слично понашање као пре ownCloud 5 унесите атрибут за приказ имена корисника у следеће поље. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (доданим) LDAP корисницима и групама.",
+ "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Интерно корисничко име биће направљено од UUID атрибута. То обезбеђује да корисничко име буде јединствено и да карактери не треба да се конвертују. Интерно корисничко име има ограничење да се само ови карактери дозвољени: [ a-zA-Z0-9_.@- ]. Остали карактери се мењају са њиховим ASCII кореспондентима или се једноставно изостављају. У случају сударања биће додат/повећан број. Интерно корисничко име се користи за интерну идентификацију корисника. Такође је подразумевано име за главну корисничку фасциклу. Такође је део удаљених адреса, на пример за све *DAV сервисе. Са овом поставком, подразумевано понашање се може заобићи. Да би се постигло слично понашање као пре оунКлауд 5 унесите атрибут приказног имена корисника у следеће поље. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (додатим) ЛДАП корисницима и групама.",
"Internal Username Attribute:" : "Интерни параметри корисничког имена:",
"Override UUID detection" : "Прескочи UUID откривање",
"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Подразумевано, атрибут UUID се аутоматски детектује. Атрибут UUID се користи за сигурну идентификацију LDAP корисника и група. Такође, локално корисничко име ће бити креирано на основу UUID-a, ако није другачије назначено. Можете заобићи поставке и проследити други атрибут по вашем избору. Морате бити сигурни да је изабрани атрибут јединствен и да га корисници и групе могу преносити. Оставите празно за подразумевано понашање. Промене ће имати дејство само на новомапираним (доданим) LDAP корисницима и групама.",
diff --git a/apps/user_ldap/l10n/sr@latin.js b/apps/user_ldap/l10n/sr@latin.js
index 4a2f45db5c7..7769a4b6bda 100644
--- a/apps/user_ldap/l10n/sr@latin.js
+++ b/apps/user_ldap/l10n/sr@latin.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"user_ldap",
{
+ "Server" : "Server",
"Users" : "Korisnici",
"Groups" : "Grupe",
"Help" : "Pomoć",
diff --git a/apps/user_ldap/l10n/sr@latin.json b/apps/user_ldap/l10n/sr@latin.json
index 8cf62805869..ad4492827f7 100644
--- a/apps/user_ldap/l10n/sr@latin.json
+++ b/apps/user_ldap/l10n/sr@latin.json
@@ -1,4 +1,5 @@
{ "translations": {
+ "Server" : "Server",
"Users" : "Korisnici",
"Groups" : "Grupe",
"Help" : "Pomoć",
diff --git a/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js
index f9920f6ca7d..95921f20467 100644
--- a/apps/user_ldap/l10n/sv.js
+++ b/apps/user_ldap/l10n/sv.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Hjälp",
"Groups meeting these criteria are available in %s:" : "Grupper som uppfyller dessa kriterier finns i %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtret specifierar vilka LDAD-grupper som ska ha åtkomst till %s instans",
- "Test Filter" : "Testfilter",
"Other Attributes:" : "Övriga attribut:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definierar filter som tillämpas vid inloggning. %%uid ersätter användarnamn vid inloggningen. Exempel: \"uid=%%uid\"",
"1. Server" : "1. Server",
diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json
index 53155976d98..3f2b74e8dad 100644
--- a/apps/user_ldap/l10n/sv.json
+++ b/apps/user_ldap/l10n/sv.json
@@ -29,7 +29,6 @@
"Help" : "Hjälp",
"Groups meeting these criteria are available in %s:" : "Grupper som uppfyller dessa kriterier finns i %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtret specifierar vilka LDAD-grupper som ska ha åtkomst till %s instans",
- "Test Filter" : "Testfilter",
"Other Attributes:" : "Övriga attribut:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definierar filter som tillämpas vid inloggning. %%uid ersätter användarnamn vid inloggningen. Exempel: \"uid=%%uid\"",
"1. Server" : "1. Server",
diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js
index 449ad9334cc..e0e46731a59 100644
--- a/apps/user_ldap/l10n/tr.js
+++ b/apps/user_ldap/l10n/tr.js
@@ -36,7 +36,6 @@ OC.L10N.register(
"Help" : "Yardım",
"Groups meeting these criteria are available in %s:" : "Bu kriterlerle eşleşen gruplar %s içinde mevcut:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP gruplarını belirtir.",
- "Test Filter" : "Filtreyi Test Et",
"Other Attributes:" : "Diğer Nitelikler:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Oturum açma girişimi olduğunda uygulanacak filtreyi tanımlar. %%uid, oturum işleminde kullanıcı adı ile değiştirilir. Örneğin: \"uid=%%uid\"",
"1. Server" : "1. Sunucu",
diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json
index 45945eb009f..01cfc4c94a4 100644
--- a/apps/user_ldap/l10n/tr.json
+++ b/apps/user_ldap/l10n/tr.json
@@ -34,7 +34,6 @@
"Help" : "Yardım",
"Groups meeting these criteria are available in %s:" : "Bu kriterlerle eşleşen gruplar %s içinde mevcut:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP gruplarını belirtir.",
- "Test Filter" : "Filtreyi Test Et",
"Other Attributes:" : "Diğer Nitelikler:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Oturum açma girişimi olduğunda uygulanacak filtreyi tanımlar. %%uid, oturum işleminde kullanıcı adı ile değiştirilir. Örneğin: \"uid=%%uid\"",
"1. Server" : "1. Sunucu",
diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js
index 40941e3479f..038657a5065 100644
--- a/apps/user_ldap/l10n/uk.js
+++ b/apps/user_ldap/l10n/uk.js
@@ -31,7 +31,6 @@ OC.L10N.register(
"Help" : "Допомога",
"Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.",
- "Test Filter" : "Тест Фільтр",
"Other Attributes:" : "Інші Атрибути:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Визначає фільтр, який слід застосовувати при спробі входу.\n%%uid замінює ім'я користувача при вході в систему. Приклад: \"uid=%%uid\"",
"1. Server" : "1. Сервер",
diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json
index daa03c128d3..bfd877a1892 100644
--- a/apps/user_ldap/l10n/uk.json
+++ b/apps/user_ldap/l10n/uk.json
@@ -29,7 +29,6 @@
"Help" : "Допомога",
"Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:",
"The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.",
- "Test Filter" : "Тест Фільтр",
"Other Attributes:" : "Інші Атрибути:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Визначає фільтр, який слід застосовувати при спробі входу.\n%%uid замінює ім'я користувача при вході в систему. Приклад: \"uid=%%uid\"",
"1. Server" : "1. Сервер",
diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php
index b9d83aad684..d6f4bdcde04 100644
--- a/apps/user_ldap/lib/connection.php
+++ b/apps/user_ldap/lib/connection.php
@@ -78,8 +78,6 @@ class Connection extends LDAPUtility {
$memcache = \OC::$server->getMemCacheFactory();
if($memcache->isAvailable()) {
$this->cache = $memcache->create();
- } else {
- $this->cache = \OC\Cache::getGlobalCache();
}
$this->hasPagedResultSupport =
$this->ldap->hasPagedResultSupport();
@@ -195,7 +193,7 @@ class Connection extends LDAPUtility {
if(!$this->configured) {
$this->readConfiguration();
}
- if(!$this->configuration->ldapCacheTTL) {
+ if(is_null($this->cache) || !$this->configuration->ldapCacheTTL) {
return null;
}
if(!$this->isCached($key)) {
@@ -215,7 +213,7 @@ class Connection extends LDAPUtility {
if(!$this->configured) {
$this->readConfiguration();
}
- if(!$this->configuration->ldapCacheTTL) {
+ if(is_null($this->cache) || !$this->configuration->ldapCacheTTL) {
return false;
}
$key = $this->getCacheKey($key);
@@ -225,12 +223,15 @@ class Connection extends LDAPUtility {
/**
* @param string $key
* @param mixed $value
+ *
+ * @return string
*/
public function writeToCache($key, $value) {
if(!$this->configured) {
$this->readConfiguration();
}
- if(!$this->configuration->ldapCacheTTL
+ if(is_null($this->cache)
+ || !$this->configuration->ldapCacheTTL
|| !$this->configuration->ldapConfigurationActive) {
return null;
}
@@ -240,7 +241,9 @@ class Connection extends LDAPUtility {
}
public function clearCache() {
- $this->cache->clear($this->getCacheKey(null));
+ if(!is_null($this->cache)) {
+ $this->cache->clear($this->getCacheKey(null));
+ }
}
/**
diff --git a/apps/user_ldap/lib/wizard.php b/apps/user_ldap/lib/wizard.php
index 7bb5752352f..824923eecbf 100644
--- a/apps/user_ldap/lib/wizard.php
+++ b/apps/user_ldap/lib/wizard.php
@@ -958,7 +958,6 @@ class Wizard extends LDAPUtility {
$userAttributes = array_change_key_case(array_flip($userAttributes));
$parts = 0;
- $x = $this->configuration->ldapLoginFilterUsername;
if($this->configuration->ldapLoginFilterUsername === '1') {
$attr = '';
if(isset($userAttributes['uid'])) {
diff --git a/apps/user_ldap/templates/part.wizard-groupfilter.php b/apps/user_ldap/templates/part.wizard-groupfilter.php
index bfcfd115218..2f663b858e2 100644
--- a/apps/user_ldap/templates/part.wizard-groupfilter.php
+++ b/apps/user_ldap/templates/part.wizard-groupfilter.php
@@ -47,9 +47,6 @@
placeholder="<?php p($l->t('Edit LDAP Query'));?>"
title="<?php p($l->t('The filter specifies which LDAP groups shall have access to the %s instance.', $theme->getName()));?>">
</textarea>
- <button class="ldapGetEntryCount hidden" name="ldapGetEntryCount" type="button">
- <?php p($l->t('Test Filter'));?>
- </button>
</p>
<p>
<div class="ldapWizardInfo invisible">&nbsp;</div>
diff --git a/apps/user_ldap/templates/part.wizard-loginfilter.php b/apps/user_ldap/templates/part.wizard-loginfilter.php
index fa17a9b430b..8d9fccf24b8 100644
--- a/apps/user_ldap/templates/part.wizard-loginfilter.php
+++ b/apps/user_ldap/templates/part.wizard-loginfilter.php
@@ -58,4 +58,4 @@
</p>
<?php print_unescaped($_['wizardControls']); ?>
</div>
-</fieldset> \ No newline at end of file
+</fieldset>