aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap')
-rw-r--r--apps/user_ldap/ajax/clearMappings.php27
-rw-r--r--apps/user_ldap/ajax/deleteConfiguration.php8
-rw-r--r--apps/user_ldap/ajax/getConfiguration.php4
-rw-r--r--apps/user_ldap/ajax/getNewServerConfigPrefix.php14
-rw-r--r--apps/user_ldap/ajax/setConfiguration.php4
-rw-r--r--apps/user_ldap/ajax/testConfiguration.php24
-rw-r--r--apps/user_ldap/ajax/wizard.php20
-rw-r--r--apps/user_ldap/appinfo/info.xml5
-rw-r--r--apps/user_ldap/appinfo/routes.php14
-rw-r--r--apps/user_ldap/composer/composer/autoload_classmap.php3
-rw-r--r--apps/user_ldap/composer/composer/autoload_static.php3
-rw-r--r--apps/user_ldap/css/renewPassword.css33
-rw-r--r--apps/user_ldap/css/settings.css31
-rw-r--r--apps/user_ldap/img/app-dark.svg2
-rw-r--r--apps/user_ldap/img/app.svg2
-rw-r--r--apps/user_ldap/img/copy.pngbin304 -> 0 bytes
-rw-r--r--apps/user_ldap/img/copy.svg2
-rw-r--r--apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js2
-rw-r--r--apps/user_ldap/l10n/ach.js7
-rw-r--r--apps/user_ldap/l10n/ach.json5
-rw-r--r--apps/user_ldap/l10n/ady.js7
-rw-r--r--apps/user_ldap/l10n/ady.json5
-rw-r--r--apps/user_ldap/l10n/ak.js7
-rw-r--r--apps/user_ldap/l10n/ak.json5
-rw-r--r--apps/user_ldap/l10n/am_ET.js7
-rw-r--r--apps/user_ldap/l10n/am_ET.json5
-rw-r--r--apps/user_ldap/l10n/ar.js118
-rw-r--r--apps/user_ldap/l10n/ar.json118
-rw-r--r--apps/user_ldap/l10n/ast.js152
-rw-r--r--apps/user_ldap/l10n/ast.json150
-rw-r--r--apps/user_ldap/l10n/az.js37
-rw-r--r--apps/user_ldap/l10n/az.json35
-rw-r--r--apps/user_ldap/l10n/be.js6
-rw-r--r--apps/user_ldap/l10n/be.json4
-rw-r--r--apps/user_ldap/l10n/bg.js8
-rw-r--r--apps/user_ldap/l10n/bg.json8
-rw-r--r--apps/user_ldap/l10n/bn_BD.js80
-rw-r--r--apps/user_ldap/l10n/bn_BD.json78
-rw-r--r--apps/user_ldap/l10n/bs.js12
-rw-r--r--apps/user_ldap/l10n/bs.json10
-rw-r--r--apps/user_ldap/l10n/ca.js24
-rw-r--r--apps/user_ldap/l10n/ca.json24
-rw-r--r--apps/user_ldap/l10n/cs.js25
-rw-r--r--apps/user_ldap/l10n/cs.json25
-rw-r--r--apps/user_ldap/l10n/cy_GB.js10
-rw-r--r--apps/user_ldap/l10n/cy_GB.json8
-rw-r--r--apps/user_ldap/l10n/da.js349
-rw-r--r--apps/user_ldap/l10n/da.json349
-rw-r--r--apps/user_ldap/l10n/de.js67
-rw-r--r--apps/user_ldap/l10n/de.json67
-rw-r--r--apps/user_ldap/l10n/de_DE.js45
-rw-r--r--apps/user_ldap/l10n/de_DE.json45
-rw-r--r--apps/user_ldap/l10n/el.js6
-rw-r--r--apps/user_ldap/l10n/el.json6
-rw-r--r--apps/user_ldap/l10n/en_GB.js25
-rw-r--r--apps/user_ldap/l10n/en_GB.json25
-rw-r--r--apps/user_ldap/l10n/eo.js63
-rw-r--r--apps/user_ldap/l10n/eo.json61
-rw-r--r--apps/user_ldap/l10n/es.js39
-rw-r--r--apps/user_ldap/l10n/es.json39
-rw-r--r--apps/user_ldap/l10n/es_419.js6
-rw-r--r--apps/user_ldap/l10n/es_419.json6
-rw-r--r--apps/user_ldap/l10n/es_AR.js2
-rw-r--r--apps/user_ldap/l10n/es_AR.json2
-rw-r--r--apps/user_ldap/l10n/es_CL.js6
-rw-r--r--apps/user_ldap/l10n/es_CL.json6
-rw-r--r--apps/user_ldap/l10n/es_CO.js6
-rw-r--r--apps/user_ldap/l10n/es_CO.json6
-rw-r--r--apps/user_ldap/l10n/es_CR.js6
-rw-r--r--apps/user_ldap/l10n/es_CR.json6
-rw-r--r--apps/user_ldap/l10n/es_DO.js6
-rw-r--r--apps/user_ldap/l10n/es_DO.json6
-rw-r--r--apps/user_ldap/l10n/es_EC.js5
-rw-r--r--apps/user_ldap/l10n/es_EC.json5
-rw-r--r--apps/user_ldap/l10n/es_GT.js6
-rw-r--r--apps/user_ldap/l10n/es_GT.json6
-rw-r--r--apps/user_ldap/l10n/es_HN.js6
-rw-r--r--apps/user_ldap/l10n/es_HN.json6
-rw-r--r--apps/user_ldap/l10n/es_MX.js10
-rw-r--r--apps/user_ldap/l10n/es_MX.json10
-rw-r--r--apps/user_ldap/l10n/es_NI.js6
-rw-r--r--apps/user_ldap/l10n/es_NI.json6
-rw-r--r--apps/user_ldap/l10n/es_PA.js6
-rw-r--r--apps/user_ldap/l10n/es_PA.json6
-rw-r--r--apps/user_ldap/l10n/es_PE.js6
-rw-r--r--apps/user_ldap/l10n/es_PE.json6
-rw-r--r--apps/user_ldap/l10n/es_PR.js6
-rw-r--r--apps/user_ldap/l10n/es_PR.json6
-rw-r--r--apps/user_ldap/l10n/es_PY.js6
-rw-r--r--apps/user_ldap/l10n/es_PY.json6
-rw-r--r--apps/user_ldap/l10n/es_SV.js6
-rw-r--r--apps/user_ldap/l10n/es_SV.json6
-rw-r--r--apps/user_ldap/l10n/es_UY.js6
-rw-r--r--apps/user_ldap/l10n/es_UY.json6
-rw-r--r--apps/user_ldap/l10n/et_EE.js71
-rw-r--r--apps/user_ldap/l10n/et_EE.json71
-rw-r--r--apps/user_ldap/l10n/eu.js17
-rw-r--r--apps/user_ldap/l10n/eu.json17
-rw-r--r--apps/user_ldap/l10n/fa.js16
-rw-r--r--apps/user_ldap/l10n/fa.json16
-rw-r--r--apps/user_ldap/l10n/fr.js29
-rw-r--r--apps/user_ldap/l10n/fr.json29
-rw-r--r--apps/user_ldap/l10n/fy_NL.js7
-rw-r--r--apps/user_ldap/l10n/fy_NL.json5
-rw-r--r--apps/user_ldap/l10n/ga.js27
-rw-r--r--apps/user_ldap/l10n/ga.json27
-rw-r--r--apps/user_ldap/l10n/gl.js69
-rw-r--r--apps/user_ldap/l10n/gl.json69
-rw-r--r--apps/user_ldap/l10n/gu.js7
-rw-r--r--apps/user_ldap/l10n/gu.json5
-rw-r--r--apps/user_ldap/l10n/he.js6
-rw-r--r--apps/user_ldap/l10n/he.json6
-rw-r--r--apps/user_ldap/l10n/hr.js6
-rw-r--r--apps/user_ldap/l10n/hr.json6
-rw-r--r--apps/user_ldap/l10n/hu.js5
-rw-r--r--apps/user_ldap/l10n/hu.json5
-rw-r--r--apps/user_ldap/l10n/hy.js9
-rw-r--r--apps/user_ldap/l10n/hy.json7
-rw-r--r--apps/user_ldap/l10n/ia.js12
-rw-r--r--apps/user_ldap/l10n/ia.json10
-rw-r--r--apps/user_ldap/l10n/id.js14
-rw-r--r--apps/user_ldap/l10n/id.json14
-rw-r--r--apps/user_ldap/l10n/io.js7
-rw-r--r--apps/user_ldap/l10n/io.json5
-rw-r--r--apps/user_ldap/l10n/is.js100
-rw-r--r--apps/user_ldap/l10n/is.json98
-rw-r--r--apps/user_ldap/l10n/it.js14
-rw-r--r--apps/user_ldap/l10n/it.json14
-rw-r--r--apps/user_ldap/l10n/ja.js25
-rw-r--r--apps/user_ldap/l10n/ja.json25
-rw-r--r--apps/user_ldap/l10n/ka.js5
-rw-r--r--apps/user_ldap/l10n/ka.json5
-rw-r--r--apps/user_ldap/l10n/ka_GE.js6
-rw-r--r--apps/user_ldap/l10n/ka_GE.json6
-rw-r--r--apps/user_ldap/l10n/km.js17
-rw-r--r--apps/user_ldap/l10n/km.json15
-rw-r--r--apps/user_ldap/l10n/kn.js12
-rw-r--r--apps/user_ldap/l10n/kn.json10
-rw-r--r--apps/user_ldap/l10n/ko.js5
-rw-r--r--apps/user_ldap/l10n/ko.json5
-rw-r--r--apps/user_ldap/l10n/lb.js51
-rw-r--r--apps/user_ldap/l10n/lb.json49
-rw-r--r--apps/user_ldap/l10n/lo.js7
-rw-r--r--apps/user_ldap/l10n/lo.json5
-rw-r--r--apps/user_ldap/l10n/lt_LT.js8
-rw-r--r--apps/user_ldap/l10n/lt_LT.json8
-rw-r--r--apps/user_ldap/l10n/lv.js114
-rw-r--r--apps/user_ldap/l10n/lv.json112
-rw-r--r--apps/user_ldap/l10n/mg.js7
-rw-r--r--apps/user_ldap/l10n/mg.json5
-rw-r--r--apps/user_ldap/l10n/mk.js18
-rw-r--r--apps/user_ldap/l10n/mk.json16
-rw-r--r--apps/user_ldap/l10n/ml.js7
-rw-r--r--apps/user_ldap/l10n/ml.json5
-rw-r--r--apps/user_ldap/l10n/mn.js6
-rw-r--r--apps/user_ldap/l10n/mn.json4
-rw-r--r--apps/user_ldap/l10n/mr.js7
-rw-r--r--apps/user_ldap/l10n/mr.json5
-rw-r--r--apps/user_ldap/l10n/ms_MY.js11
-rw-r--r--apps/user_ldap/l10n/ms_MY.json9
-rw-r--r--apps/user_ldap/l10n/mt_MT.js7
-rw-r--r--apps/user_ldap/l10n/mt_MT.json5
-rw-r--r--apps/user_ldap/l10n/nb.js8
-rw-r--r--apps/user_ldap/l10n/nb.json8
-rw-r--r--apps/user_ldap/l10n/nl.js11
-rw-r--r--apps/user_ldap/l10n/nl.json11
-rw-r--r--apps/user_ldap/l10n/nn_NO.js14
-rw-r--r--apps/user_ldap/l10n/nn_NO.json12
-rw-r--r--apps/user_ldap/l10n/nqo.js7
-rw-r--r--apps/user_ldap/l10n/nqo.json5
-rw-r--r--apps/user_ldap/l10n/oc.js157
-rw-r--r--apps/user_ldap/l10n/oc.json155
-rw-r--r--apps/user_ldap/l10n/pl.js47
-rw-r--r--apps/user_ldap/l10n/pl.json47
-rw-r--r--apps/user_ldap/l10n/pt_BR.js85
-rw-r--r--apps/user_ldap/l10n/pt_BR.json85
-rw-r--r--apps/user_ldap/l10n/pt_PT.js26
-rw-r--r--apps/user_ldap/l10n/pt_PT.json26
-rw-r--r--apps/user_ldap/l10n/ro.js101
-rw-r--r--apps/user_ldap/l10n/ro.json99
-rw-r--r--apps/user_ldap/l10n/ru.js31
-rw-r--r--apps/user_ldap/l10n/ru.json31
-rw-r--r--apps/user_ldap/l10n/sc.js19
-rw-r--r--apps/user_ldap/l10n/sc.json19
-rw-r--r--apps/user_ldap/l10n/sk.js17
-rw-r--r--apps/user_ldap/l10n/sk.json17
-rw-r--r--apps/user_ldap/l10n/sl.js5
-rw-r--r--apps/user_ldap/l10n/sl.json5
-rw-r--r--apps/user_ldap/l10n/sq.js6
-rw-r--r--apps/user_ldap/l10n/sq.json6
-rw-r--r--apps/user_ldap/l10n/sr.js25
-rw-r--r--apps/user_ldap/l10n/sr.json25
-rw-r--r--apps/user_ldap/l10n/sr@latin.js14
-rw-r--r--apps/user_ldap/l10n/sr@latin.json12
-rw-r--r--apps/user_ldap/l10n/su.js7
-rw-r--r--apps/user_ldap/l10n/su.json5
-rw-r--r--apps/user_ldap/l10n/sv.js29
-rw-r--r--apps/user_ldap/l10n/sv.json29
-rw-r--r--apps/user_ldap/l10n/sw_KE.js7
-rw-r--r--apps/user_ldap/l10n/sw_KE.json5
-rw-r--r--apps/user_ldap/l10n/tg_TJ.js7
-rw-r--r--apps/user_ldap/l10n/tg_TJ.json5
-rw-r--r--apps/user_ldap/l10n/th.js1
-rw-r--r--apps/user_ldap/l10n/th.json1
-rw-r--r--apps/user_ldap/l10n/tl_PH.js7
-rw-r--r--apps/user_ldap/l10n/tl_PH.json5
-rw-r--r--apps/user_ldap/l10n/tr.js55
-rw-r--r--apps/user_ldap/l10n/tr.json55
-rw-r--r--apps/user_ldap/l10n/tzm.js7
-rw-r--r--apps/user_ldap/l10n/tzm.json5
-rw-r--r--apps/user_ldap/l10n/ug.js215
-rw-r--r--apps/user_ldap/l10n/ug.json215
-rw-r--r--apps/user_ldap/l10n/uk.js24
-rw-r--r--apps/user_ldap/l10n/uk.json24
-rw-r--r--apps/user_ldap/l10n/ur_PK.js9
-rw-r--r--apps/user_ldap/l10n/ur_PK.json7
-rw-r--r--apps/user_ldap/l10n/vi.js45
-rw-r--r--apps/user_ldap/l10n/vi.json43
-rw-r--r--apps/user_ldap/l10n/zh_CN.js29
-rw-r--r--apps/user_ldap/l10n/zh_CN.json29
-rw-r--r--apps/user_ldap/l10n/zh_HK.js27
-rw-r--r--apps/user_ldap/l10n/zh_HK.json27
-rw-r--r--apps/user_ldap/l10n/zh_TW.js259
-rw-r--r--apps/user_ldap/l10n/zh_TW.json259
-rw-r--r--apps/user_ldap/lib/Access.php259
-rw-r--r--apps/user_ldap/lib/AccessFactory.php32
-rw-r--r--apps/user_ldap/lib/AppInfo/Application.php15
-rw-r--r--apps/user_ldap/lib/BackendUtility.php7
-rw-r--r--apps/user_ldap/lib/Command/CheckGroup.php8
-rw-r--r--apps/user_ldap/lib/Command/CheckUser.php7
-rw-r--r--apps/user_ldap/lib/Command/PromoteGroup.php2
-rw-r--r--apps/user_ldap/lib/Command/ResetGroup.php1
-rw-r--r--apps/user_ldap/lib/Command/ResetUser.php1
-rw-r--r--apps/user_ldap/lib/Command/Search.php5
-rw-r--r--apps/user_ldap/lib/Command/SetConfig.php5
-rw-r--r--apps/user_ldap/lib/Command/ShowConfig.php2
-rw-r--r--apps/user_ldap/lib/Command/TestUserSettings.php248
-rw-r--r--apps/user_ldap/lib/Command/UpdateUUID.php2
-rw-r--r--apps/user_ldap/lib/Configuration.php58
-rw-r--r--apps/user_ldap/lib/Connection.php189
-rw-r--r--apps/user_ldap/lib/ConnectionFactory.php9
-rw-r--r--apps/user_ldap/lib/Controller/ConfigAPIController.php24
-rw-r--r--apps/user_ldap/lib/Controller/RenewPasswordController.php57
-rw-r--r--apps/user_ldap/lib/Events/GroupBackendRegistered.php12
-rw-r--r--apps/user_ldap/lib/Events/UserBackendRegistered.php12
-rw-r--r--apps/user_ldap/lib/Exceptions/AttributeNotSet.php1
-rw-r--r--apps/user_ldap/lib/Exceptions/ConfigurationIssueException.php15
-rw-r--r--apps/user_ldap/lib/Exceptions/ConstraintViolationException.php1
-rw-r--r--apps/user_ldap/lib/Exceptions/NotOnLDAP.php1
-rw-r--r--apps/user_ldap/lib/FilesystemHelper.php30
-rw-r--r--apps/user_ldap/lib/GroupPluginManager.php4
-rw-r--r--apps/user_ldap/lib/Group_LDAP.php52
-rw-r--r--apps/user_ldap/lib/Group_Proxy.php51
-rw-r--r--apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php1
-rw-r--r--apps/user_ldap/lib/Helper.php109
-rw-r--r--apps/user_ldap/lib/IGroupLDAP.php1
-rw-r--r--apps/user_ldap/lib/ILDAPGroupPlugin.php1
-rw-r--r--apps/user_ldap/lib/ILDAPUserPlugin.php3
-rw-r--r--apps/user_ldap/lib/IUserLDAP.php5
-rw-r--r--apps/user_ldap/lib/Jobs/CleanUp.php36
-rw-r--r--apps/user_ldap/lib/Jobs/Sync.php174
-rw-r--r--apps/user_ldap/lib/LDAP.php62
-rw-r--r--apps/user_ldap/lib/LDAPProvider.php25
-rw-r--r--apps/user_ldap/lib/LDAPProviderFactory.php9
-rw-r--r--apps/user_ldap/lib/LDAPUtility.php9
-rw-r--r--apps/user_ldap/lib/LoginListener.php12
-rw-r--r--apps/user_ldap/lib/Mapping/AbstractMapping.php27
-rw-r--r--apps/user_ldap/lib/Mapping/UserMapping.php7
-rw-r--r--apps/user_ldap/lib/Migration/GroupMappingMigration.php8
-rw-r--r--apps/user_ldap/lib/Migration/RemoveRefreshTime.php14
-rw-r--r--apps/user_ldap/lib/Migration/SetDefaultProvider.php14
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFix.php1
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixGroup.php1
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixInsert.php24
-rw-r--r--apps/user_ldap/lib/Migration/UUIDFixUser.php1
-rw-r--r--apps/user_ldap/lib/Migration/UnsetDefaultProvider.php8
-rw-r--r--apps/user_ldap/lib/Migration/Version1120Date20210917155206.php16
-rw-r--r--apps/user_ldap/lib/Migration/Version1130Date20211102154716.php11
-rw-r--r--apps/user_ldap/lib/Migration/Version1141Date20220323143801.php7
-rw-r--r--apps/user_ldap/lib/Notification/Notifier.php18
-rw-r--r--apps/user_ldap/lib/Proxy.php52
-rw-r--r--apps/user_ldap/lib/Service/UpdateGroupsService.php6
-rw-r--r--apps/user_ldap/lib/Settings/Admin.php29
-rw-r--r--apps/user_ldap/lib/Settings/Section.php17
-rw-r--r--apps/user_ldap/lib/SetupChecks/LdapConnection.php14
-rw-r--r--apps/user_ldap/lib/User/DeletedUsersIndex.php16
-rw-r--r--apps/user_ldap/lib/User/Manager.php80
-rw-r--r--apps/user_ldap/lib/User/OfflineUser.php27
-rw-r--r--apps/user_ldap/lib/User/User.php336
-rw-r--r--apps/user_ldap/lib/UserPluginManager.php8
-rw-r--r--apps/user_ldap/lib/User_LDAP.php108
-rw-r--r--apps/user_ldap/lib/User_Proxy.php102
-rw-r--r--apps/user_ldap/lib/Wizard.php58
-rw-r--r--apps/user_ldap/lib/WizardResult.php2
-rw-r--r--apps/user_ldap/openapi.json51
-rw-r--r--apps/user_ldap/templates/part.wizard-server.php2
-rw-r--r--apps/user_ldap/templates/renewpassword.php4
-rw-r--r--apps/user_ldap/templates/settings.php3
-rw-r--r--apps/user_ldap/tests/AccessTest.php218
-rw-r--r--apps/user_ldap/tests/ConfigurationTest.php26
-rw-r--r--apps/user_ldap/tests/ConnectionTest.php33
-rw-r--r--apps/user_ldap/tests/GroupLDAPPluginTest.php66
-rw-r--r--apps/user_ldap/tests/Group_LDAPTest.php198
-rw-r--r--apps/user_ldap/tests/HelperTest.php95
-rw-r--r--apps/user_ldap/tests/Integration/AbstractIntegrationTest.php47
-rw-r--r--apps/user_ldap/tests/Integration/Bootstrap.php3
-rw-r--r--apps/user_ldap/tests/Integration/ExceptionOnLostConnection.php53
-rw-r--r--apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php23
-rw-r--r--apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php8
-rw-r--r--apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php5
-rw-r--r--apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php36
-rw-r--r--apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php15
-rw-r--r--apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php15
-rw-r--r--apps/user_ldap/tests/Jobs/CleanUpTest.php23
-rw-r--r--apps/user_ldap/tests/Jobs/SyncTest.php160
-rw-r--r--apps/user_ldap/tests/LDAPGroupPluginDummy.php2
-rw-r--r--apps/user_ldap/tests/LDAPProviderTest.php434
-rw-r--r--apps/user_ldap/tests/LDAPTest.php24
-rw-r--r--apps/user_ldap/tests/LDAPUserPluginDummy.php10
-rw-r--r--apps/user_ldap/tests/Mapping/AbstractMappingTestCase.php (renamed from apps/user_ldap/tests/Mapping/AbstractMappingTest.php)66
-rw-r--r--apps/user_ldap/tests/Mapping/GroupMappingTest.php6
-rw-r--r--apps/user_ldap/tests/Mapping/UserMappingTest.php6
-rw-r--r--apps/user_ldap/tests/Migration/AbstractUUIDFixTestCase.php (renamed from apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php)49
-rw-r--r--apps/user_ldap/tests/Migration/UUIDFixGroupTest.php7
-rw-r--r--apps/user_ldap/tests/Migration/UUIDFixInsertTest.php60
-rw-r--r--apps/user_ldap/tests/Migration/UUIDFixUserTest.php4
-rw-r--r--apps/user_ldap/tests/Service/BirthdateParserServiceTest.php9
-rw-r--r--apps/user_ldap/tests/Service/UpdateGroupsServiceTest.php33
-rw-r--r--apps/user_ldap/tests/Settings/AdminTest.php35
-rw-r--r--apps/user_ldap/tests/Settings/SectionTest.php20
-rw-r--r--apps/user_ldap/tests/User/DeletedUsersIndexTest.php30
-rw-r--r--apps/user_ldap/tests/User/ManagerTest.php84
-rw-r--r--apps/user_ldap/tests/User/OfflineUserTest.php25
-rw-r--r--apps/user_ldap/tests/User/UserTest.php175
-rw-r--r--apps/user_ldap/tests/UserLDAPPluginTest.php98
-rw-r--r--apps/user_ldap/tests/User_LDAPTest.php738
-rw-r--r--apps/user_ldap/tests/User_ProxyTest.php44
-rw-r--r--apps/user_ldap/tests/WizardTest.php35
338 files changed, 5571 insertions, 6642 deletions
diff --git a/apps/user_ldap/ajax/clearMappings.php b/apps/user_ldap/ajax/clearMappings.php
index 0616281b415..c3b64f08a16 100644
--- a/apps/user_ldap/ajax/clearMappings.php
+++ b/apps/user_ldap/ajax/clearMappings.php
@@ -7,6 +7,13 @@
*/
use OCA\User_LDAP\Mapping\GroupMapping;
use OCA\User_LDAP\Mapping\UserMapping;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\IDBConnection;
+use OCP\IUserManager;
+use OCP\Server;
+use OCP\User\Events\BeforeUserIdUnassignedEvent;
+use OCP\User\Events\UserIdUnassignedEvent;
+use OCP\Util;
// Check user and app status
\OC_JSON::checkAdminUser();
@@ -17,22 +24,28 @@ $subject = (string)$_POST['ldap_clear_mapping'];
$mapping = null;
try {
if ($subject === 'user') {
- $mapping = \OCP\Server::get(UserMapping::class);
+ $mapping = Server::get(UserMapping::class);
+ /** @var IEventDispatcher $dispatcher */
+ $dispatcher = Server::get(IEventDispatcher::class);
$result = $mapping->clearCb(
- function ($uid) {
- \OC::$server->getUserManager()->emit('\OC\User', 'preUnassignedUserId', [$uid]);
+ function (string $uid) use ($dispatcher): void {
+ $dispatcher->dispatchTyped(new BeforeUserIdUnassignedEvent($uid));
+ /** @psalm-suppress UndefinedInterfaceMethod For now we have to emit, will be removed when all hooks are removed */
+ Server::get(IUserManager::class)->emit('\OC\User', 'preUnassignedUserId', [$uid]);
},
- function ($uid) {
- \OC::$server->getUserManager()->emit('\OC\User', 'postUnassignedUserId', [$uid]);
+ function (string $uid) use ($dispatcher): void {
+ $dispatcher->dispatchTyped(new UserIdUnassignedEvent($uid));
+ /** @psalm-suppress UndefinedInterfaceMethod For now we have to emit, will be removed when all hooks are removed */
+ Server::get(IUserManager::class)->emit('\OC\User', 'postUnassignedUserId', [$uid]);
}
);
} elseif ($subject === 'group') {
- $mapping = new GroupMapping(\OC::$server->getDatabaseConnection());
+ $mapping = new GroupMapping(Server::get(IDBConnection::class));
$result = $mapping->clear();
}
if ($mapping === null || !$result) {
- $l = \OCP\Util::getL10N('user_ldap');
+ $l = Util::getL10N('user_ldap');
throw new \Exception($l->t('Failed to clear the mappings.'));
}
\OC_JSON::success();
diff --git a/apps/user_ldap/ajax/deleteConfiguration.php b/apps/user_ldap/ajax/deleteConfiguration.php
index b8e9a09dc1c..68bce69f982 100644
--- a/apps/user_ldap/ajax/deleteConfiguration.php
+++ b/apps/user_ldap/ajax/deleteConfiguration.php
@@ -1,5 +1,9 @@
<?php
+use OCA\User_LDAP\Helper;
+use OCP\Server;
+use OCP\Util;
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -11,10 +15,10 @@
\OC_JSON::callCheck();
$prefix = (string)$_POST['ldap_serverconfig_chooser'];
-$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+$helper = Server::get(Helper::class);
if ($helper->deleteServerConfiguration($prefix)) {
\OC_JSON::success();
} else {
- $l = \OCP\Util::getL10N('user_ldap');
+ $l = Util::getL10N('user_ldap');
\OC_JSON::error(['message' => $l->t('Failed to delete the server configuration')]);
}
diff --git a/apps/user_ldap/ajax/getConfiguration.php b/apps/user_ldap/ajax/getConfiguration.php
index 31372e89c20..79a7372813c 100644
--- a/apps/user_ldap/ajax/getConfiguration.php
+++ b/apps/user_ldap/ajax/getConfiguration.php
@@ -1,5 +1,7 @@
<?php
+use OCA\User_LDAP\LDAP;
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -11,7 +13,7 @@
\OC_JSON::callCheck();
$prefix = (string)$_POST['ldap_serverconfig_chooser'];
-$ldapWrapper = new OCA\User_LDAP\LDAP();
+$ldapWrapper = new LDAP();
$connection = new \OCA\User_LDAP\Connection($ldapWrapper, $prefix);
$configuration = $connection->getConfiguration();
if (isset($configuration['ldap_agent_password']) && $configuration['ldap_agent_password'] !== '') {
diff --git a/apps/user_ldap/ajax/getNewServerConfigPrefix.php b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
index 8064ce92833..e5ba6375c73 100644
--- a/apps/user_ldap/ajax/getNewServerConfigPrefix.php
+++ b/apps/user_ldap/ajax/getNewServerConfigPrefix.php
@@ -1,5 +1,9 @@
<?php
+use OCA\User_LDAP\Configuration;
+use OCA\User_LDAP\Helper;
+use OCP\Server;
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -10,21 +14,21 @@
\OC_JSON::checkAppEnabled('user_ldap');
\OC_JSON::callCheck();
-$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+$helper = Server::get(Helper::class);
$serverConnections = $helper->getServerConfigurationPrefixes();
sort($serverConnections);
$lk = array_pop($serverConnections);
$ln = (int)str_replace('s', '', $lk);
-$nk = 's'.str_pad($ln + 1, 2, '0', STR_PAD_LEFT);
+$nk = 's' . str_pad((string)($ln + 1), 2, '0', STR_PAD_LEFT);
$resultData = ['configPrefix' => $nk];
-$newConfig = new \OCA\User_LDAP\Configuration($nk, false);
+$newConfig = new Configuration($nk, false);
if (isset($_POST['copyConfig'])) {
- $originalConfig = new \OCA\User_LDAP\Configuration($_POST['copyConfig']);
+ $originalConfig = new Configuration($_POST['copyConfig']);
$newConfig->setConfiguration($originalConfig->getConfiguration());
} else {
- $configuration = new \OCA\User_LDAP\Configuration($nk, false);
+ $configuration = new Configuration($nk, false);
$newConfig->setConfiguration($configuration->getDefaults());
$resultData['defaults'] = $configuration->getDefaults();
}
diff --git a/apps/user_ldap/ajax/setConfiguration.php b/apps/user_ldap/ajax/setConfiguration.php
index afa3b551899..815ef040257 100644
--- a/apps/user_ldap/ajax/setConfiguration.php
+++ b/apps/user_ldap/ajax/setConfiguration.php
@@ -1,5 +1,7 @@
<?php
+use OCA\User_LDAP\LDAP;
+
/**
* SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -23,7 +25,7 @@ foreach ($chkboxes as $boxid) {
}
}
-$ldapWrapper = new OCA\User_LDAP\LDAP();
+$ldapWrapper = new LDAP();
$connection = new \OCA\User_LDAP\Connection($ldapWrapper, $prefix);
$connection->setConfiguration($_POST);
$connection->saveConfiguration();
diff --git a/apps/user_ldap/ajax/testConfiguration.php b/apps/user_ldap/ajax/testConfiguration.php
index 93e4813d8b0..b77439fa3e8 100644
--- a/apps/user_ldap/ajax/testConfiguration.php
+++ b/apps/user_ldap/ajax/testConfiguration.php
@@ -1,5 +1,11 @@
<?php
+use OCA\User_LDAP\Exceptions\ConfigurationIssueException;
+use OCA\User_LDAP\LDAP;
+use OCP\ISession;
+use OCP\Server;
+use OCP\Util;
+
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -10,21 +16,25 @@
\OC_JSON::checkAppEnabled('user_ldap');
\OC_JSON::callCheck();
-$l = \OCP\Util::getL10N('user_ldap');
+$l = Util::getL10N('user_ldap');
-$ldapWrapper = new OCA\User_LDAP\LDAP();
+$ldapWrapper = new LDAP();
$connection = new \OCA\User_LDAP\Connection($ldapWrapper, $_POST['ldap_serverconfig_chooser']);
try {
- $configurationOk = true;
+ $configurationError = '';
$conf = $connection->getConfiguration();
if ($conf['ldap_configuration_active'] === '0') {
//needs to be true, otherwise it will also fail with an irritating message
$conf['ldap_configuration_active'] = '1';
- $configurationOk = $connection->setConfiguration($conf);
}
- if ($configurationOk) {
+ try {
+ $connection->setConfiguration($conf, throw: true);
+ } catch (ConfigurationIssueException $e) {
+ $configurationError = $e->getHint();
+ }
+ if ($configurationError === '') {
//Configuration is okay
/*
* Closing the session since it won't be used from this point on. There might be a potential
@@ -32,7 +42,7 @@ try {
* contact the LDAP backup server the first time when it should, but there shouldn't be any
* problem with that other than the extra connection.
*/
- \OC::$server->getSession()->close();
+ Server::get(ISession::class)->close();
if ($connection->bind()) {
/*
* This shiny if block is an ugly hack to find out whether anonymous
@@ -59,7 +69,7 @@ try {
}
} else {
\OC_JSON::error(['message'
- => $l->t('Invalid configuration. Please have a look at the logs for further details.')]);
+ => $l->t('Invalid configuration: %s', $configurationError)]);
}
} catch (\Exception $e) {
\OC_JSON::error(['message' => $e->getMessage()]);
diff --git a/apps/user_ldap/ajax/wizard.php b/apps/user_ldap/ajax/wizard.php
index 5c2cddc7672..056299e1bff 100644
--- a/apps/user_ldap/ajax/wizard.php
+++ b/apps/user_ldap/ajax/wizard.php
@@ -1,5 +1,12 @@
<?php
+use OCA\User_LDAP\AccessFactory;
+use OCA\User_LDAP\Configuration;
+use OCA\User_LDAP\LDAP;
+use OCA\User_LDAP\Wizard;
+use OCP\Server;
+use OCP\Util;
+
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -10,7 +17,7 @@
\OC_JSON::checkAppEnabled('user_ldap');
\OC_JSON::callCheck();
-$l = \OCP\Util::getL10N('user_ldap');
+$l = Util::getL10N('user_ldap');
if (!isset($_POST['action'])) {
\OC_JSON::error(['message' => $l->t('No action specified')]);
@@ -22,18 +29,18 @@ if (!isset($_POST['ldap_serverconfig_chooser'])) {
}
$prefix = (string)$_POST['ldap_serverconfig_chooser'];
-$ldapWrapper = new \OCA\User_LDAP\LDAP();
-$configuration = new \OCA\User_LDAP\Configuration($prefix);
+$ldapWrapper = new LDAP();
+$configuration = new Configuration($prefix);
$con = new \OCA\User_LDAP\Connection($ldapWrapper, $prefix, null);
$con->setConfiguration($configuration->getConfiguration());
$con->ldapConfigurationActive = (string)true;
$con->setIgnoreValidation(true);
-$factory = \OC::$server->get(\OCA\User_LDAP\AccessFactory::class);
+$factory = Server::get(AccessFactory::class);
$access = $factory->get($con);
-$wizard = new \OCA\User_LDAP\Wizard($configuration, $ldapWrapper, $access);
+$wizard = new Wizard($configuration, $ldapWrapper, $access);
switch ($action) {
case 'guessPortAndTLS':
@@ -98,8 +105,7 @@ switch ($action) {
$setParameters = [];
$configuration->setConfiguration($cfg, $setParameters);
if (!in_array($key, $setParameters)) {
- \OC_JSON::error(['message' => $l->t($key.
- ' Could not set configuration %s', $setParameters[0])]);
+ \OC_JSON::error(['message' => $l->t('Could not set configuration %1$s to %2$s', [$key, $setParameters[0]])]);
exit;
}
$configuration->saveConfiguration();
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 3b94c0bc444..ead312d7f5c 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -14,7 +14,7 @@
A user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation.
</description>
- <version>1.21.0</version>
+ <version>1.23.0</version>
<licence>agpl</licence>
<author>Dominik Schmidt</author>
<author>Arthur Schiwon</author>
@@ -29,7 +29,7 @@ A user logs into Nextcloud with their LDAP or AD credentials, and is granted acc
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<lib>ldap</lib>
- <nextcloud min-version="30" max-version="30"/>
+ <nextcloud min-version="32" max-version="32"/>
</dependencies>
<background-jobs>
@@ -64,6 +64,7 @@ A user logs into Nextcloud with their LDAP or AD credentials, and is granted acc
<command>OCA\User_LDAP\Command\ShowConfig</command>
<command>OCA\User_LDAP\Command\ShowRemnants</command>
<command>OCA\User_LDAP\Command\TestConfig</command>
+ <command>OCA\User_LDAP\Command\TestUserSettings</command>
<command>OCA\User_LDAP\Command\UpdateUUID</command>
</commands>
diff --git a/apps/user_ldap/appinfo/routes.php b/apps/user_ldap/appinfo/routes.php
index fae78b8982e..52138060f58 100644
--- a/apps/user_ldap/appinfo/routes.php
+++ b/apps/user_ldap/appinfo/routes.php
@@ -22,23 +22,17 @@ $this->create('user_ldap_ajax_testConfiguration', 'apps/user_ldap/ajax/testConfi
$this->create('user_ldap_ajax_wizard', 'apps/user_ldap/ajax/wizard.php')
->actionInclude('user_ldap/ajax/wizard.php');
-$application = new \OCP\AppFramework\App('user_ldap');
-$application->registerRoutes($this, [
+return [
'ocs' => [
['name' => 'ConfigAPI#create', 'url' => '/api/v1/config', 'verb' => 'POST'],
['name' => 'ConfigAPI#show', 'url' => '/api/v1/config/{configID}', 'verb' => 'GET'],
['name' => 'ConfigAPI#modify', 'url' => '/api/v1/config/{configID}', 'verb' => 'PUT'],
['name' => 'ConfigAPI#delete', 'url' => '/api/v1/config/{configID}', 'verb' => 'DELETE'],
- ]
-]);
-
-/** @var \OCA\User_LDAP\AppInfo\Application $application */
-$application = \OC::$server->query(\OCA\User_LDAP\AppInfo\Application::class);
-$application->registerRoutes($this, [
+ ],
'routes' => [
['name' => 'renewPassword#tryRenewPassword', 'url' => '/renewpassword', 'verb' => 'POST'],
['name' => 'renewPassword#showRenewPasswordForm', 'url' => '/renewpassword/{user}', 'verb' => 'GET'],
['name' => 'renewPassword#cancel', 'url' => '/renewpassword/cancel', 'verb' => 'GET'],
['name' => 'renewPassword#showLoginFormInvalidPassword', 'url' => '/renewpassword/invalidlogin/{user}', 'verb' => 'GET'],
- ]
-]);
+ ],
+];
diff --git a/apps/user_ldap/composer/composer/autoload_classmap.php b/apps/user_ldap/composer/composer/autoload_classmap.php
index 48fe59a9a51..36259880928 100644
--- a/apps/user_ldap/composer/composer/autoload_classmap.php
+++ b/apps/user_ldap/composer/composer/autoload_classmap.php
@@ -23,6 +23,7 @@ return array(
'OCA\\User_LDAP\\Command\\ShowConfig' => $baseDir . '/../lib/Command/ShowConfig.php',
'OCA\\User_LDAP\\Command\\ShowRemnants' => $baseDir . '/../lib/Command/ShowRemnants.php',
'OCA\\User_LDAP\\Command\\TestConfig' => $baseDir . '/../lib/Command/TestConfig.php',
+ 'OCA\\User_LDAP\\Command\\TestUserSettings' => $baseDir . '/../lib/Command/TestUserSettings.php',
'OCA\\User_LDAP\\Command\\UpdateUUID' => $baseDir . '/../lib/Command/UpdateUUID.php',
'OCA\\User_LDAP\\Configuration' => $baseDir . '/../lib/Configuration.php',
'OCA\\User_LDAP\\Connection' => $baseDir . '/../lib/Connection.php',
@@ -35,10 +36,10 @@ return array(
'OCA\\User_LDAP\\Events\\GroupBackendRegistered' => $baseDir . '/../lib/Events/GroupBackendRegistered.php',
'OCA\\User_LDAP\\Events\\UserBackendRegistered' => $baseDir . '/../lib/Events/UserBackendRegistered.php',
'OCA\\User_LDAP\\Exceptions\\AttributeNotSet' => $baseDir . '/../lib/Exceptions/AttributeNotSet.php',
+ 'OCA\\User_LDAP\\Exceptions\\ConfigurationIssueException' => $baseDir . '/../lib/Exceptions/ConfigurationIssueException.php',
'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => $baseDir . '/../lib/Exceptions/ConstraintViolationException.php',
'OCA\\User_LDAP\\Exceptions\\NoMoreResults' => $baseDir . '/../lib/Exceptions/NoMoreResults.php',
'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => $baseDir . '/../lib/Exceptions/NotOnLDAP.php',
- 'OCA\\User_LDAP\\FilesystemHelper' => $baseDir . '/../lib/FilesystemHelper.php',
'OCA\\User_LDAP\\GroupPluginManager' => $baseDir . '/../lib/GroupPluginManager.php',
'OCA\\User_LDAP\\Group_LDAP' => $baseDir . '/../lib/Group_LDAP.php',
'OCA\\User_LDAP\\Group_Proxy' => $baseDir . '/../lib/Group_Proxy.php',
diff --git a/apps/user_ldap/composer/composer/autoload_static.php b/apps/user_ldap/composer/composer/autoload_static.php
index dd5ad0322af..be985838393 100644
--- a/apps/user_ldap/composer/composer/autoload_static.php
+++ b/apps/user_ldap/composer/composer/autoload_static.php
@@ -38,6 +38,7 @@ class ComposerStaticInitUser_LDAP
'OCA\\User_LDAP\\Command\\ShowConfig' => __DIR__ . '/..' . '/../lib/Command/ShowConfig.php',
'OCA\\User_LDAP\\Command\\ShowRemnants' => __DIR__ . '/..' . '/../lib/Command/ShowRemnants.php',
'OCA\\User_LDAP\\Command\\TestConfig' => __DIR__ . '/..' . '/../lib/Command/TestConfig.php',
+ 'OCA\\User_LDAP\\Command\\TestUserSettings' => __DIR__ . '/..' . '/../lib/Command/TestUserSettings.php',
'OCA\\User_LDAP\\Command\\UpdateUUID' => __DIR__ . '/..' . '/../lib/Command/UpdateUUID.php',
'OCA\\User_LDAP\\Configuration' => __DIR__ . '/..' . '/../lib/Configuration.php',
'OCA\\User_LDAP\\Connection' => __DIR__ . '/..' . '/../lib/Connection.php',
@@ -50,10 +51,10 @@ class ComposerStaticInitUser_LDAP
'OCA\\User_LDAP\\Events\\GroupBackendRegistered' => __DIR__ . '/..' . '/../lib/Events/GroupBackendRegistered.php',
'OCA\\User_LDAP\\Events\\UserBackendRegistered' => __DIR__ . '/..' . '/../lib/Events/UserBackendRegistered.php',
'OCA\\User_LDAP\\Exceptions\\AttributeNotSet' => __DIR__ . '/..' . '/../lib/Exceptions/AttributeNotSet.php',
+ 'OCA\\User_LDAP\\Exceptions\\ConfigurationIssueException' => __DIR__ . '/..' . '/../lib/Exceptions/ConfigurationIssueException.php',
'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => __DIR__ . '/..' . '/../lib/Exceptions/ConstraintViolationException.php',
'OCA\\User_LDAP\\Exceptions\\NoMoreResults' => __DIR__ . '/..' . '/../lib/Exceptions/NoMoreResults.php',
'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => __DIR__ . '/..' . '/../lib/Exceptions/NotOnLDAP.php',
- 'OCA\\User_LDAP\\FilesystemHelper' => __DIR__ . '/..' . '/../lib/FilesystemHelper.php',
'OCA\\User_LDAP\\GroupPluginManager' => __DIR__ . '/..' . '/../lib/GroupPluginManager.php',
'OCA\\User_LDAP\\Group_LDAP' => __DIR__ . '/..' . '/../lib/Group_LDAP.php',
'OCA\\User_LDAP\\Group_Proxy' => __DIR__ . '/..' . '/../lib/Group_Proxy.php',
diff --git a/apps/user_ldap/css/renewPassword.css b/apps/user_ldap/css/renewPassword.css
index f19258c0804..8acd97254fa 100644
--- a/apps/user_ldap/css/renewPassword.css
+++ b/apps/user_ldap/css/renewPassword.css
@@ -3,13 +3,13 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#personal-show + label {
- left: 230px !important;
+ inset-inline-start: 230px !important;
margin-top: 8px !important;
box-sizing: border-box;
}
#renewpassword .strengthify-wrapper {
- left: 10px;
+ inset-inline-start: 10px;
margin-top: 65px;
position: absolute;
width: 219px;
@@ -33,7 +33,6 @@
letter-spacing:normal;
line-break:auto;
line-height:1.6;
- text-align:left;
text-align:start;
text-decoration:none;
text-shadow:none;
@@ -63,29 +62,29 @@
}
.tooltip.right {
- margin-left:3px;
+ margin-inline-start:3px;
padding:0 10px
}
.tooltip.right .tooltip-arrow {
top:50%;
- left:0;
+ inset-inline-start:0;
margin-top:-10px;
border-width:10px 10px 10px 0;
- border-right-color:#fff
+ border-inline-end-color:#fff
}
.tooltip.left {
- margin-left:-3px;
+ margin-inline-start:-3px;
padding:0 5px
}
.tooltip.left .tooltip-arrow {
top:50%;
- right:0;
+ inset-inline-end:0;
margin-top:-10px;
border-width:10px 0 10px 10px;
- border-left-color:#fff
+ border-inline-start-color:#fff
}
.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow {
@@ -95,17 +94,17 @@
}
.tooltip.top .tooltip-arrow {
- left:50%;
- margin-left:-10px
+ inset-inline-start:50%;
+ margin-inline-start:-10px
}
.tooltip.top-left .tooltip-arrow {
- right:10px;
+ inset-inline-end:10px;
margin-bottom:-10px
}
.tooltip.top-right .tooltip-arrow {
- left:10px;
+ inset-inline-start:10px;
margin-bottom:-10px
}
@@ -116,17 +115,17 @@
}
.tooltip.bottom .tooltip-arrow {
- left:50%;
- margin-left:-10px
+ inset-inline-start:50%;
+ margin-inline-start:-10px
}
.tooltip.bottom-left .tooltip-arrow {
- right:10px;
+ inset-inline-end:10px;
margin-top:-10px
}
.tooltip.bottom-right .tooltip-arrow {
- left:10px;
+ inset-inline-start:10px;
margin-top:-10px
}
diff --git a/apps/user_ldap/css/settings.css b/apps/user_ldap/css/settings.css
index 52962f17d4b..a1048031fa2 100644
--- a/apps/user_ldap/css/settings.css
+++ b/apps/user_ldap/css/settings.css
@@ -17,7 +17,7 @@
display: flex;
align-items: center;
white-space: nowrap;
- text-align: left;
+ text-align: start;
}
.tablerow input, .tablerow textarea {
@@ -29,7 +29,7 @@
}
#ldap .tablerow label {
- margin-left: 3px;
+ margin-inline-start: 3px;
}
.ldapIconCopy {
@@ -50,7 +50,7 @@
.ldapWizardControls {
width: 60%;
- text-align: right;
+ text-align: end;
}
.ldapWizardInfo {
@@ -70,31 +70,30 @@
#ldapWizard1 .hostPortCombinatorSpan {
width: 14.5%;
display: inline-block;
- text-align: right;
+ text-align: end;
}
#ldapWizard1 .host {
width: 100%;
- margin-left: 0;
- margin-right: 0;
+ margin-inline: 0;
}
.tableCellInput {
- margin-left: -40%;
+ margin-inline-start: -40%;
width: 100%;
}
.tableCellLabel {
- text-align: right;
- padding-right: 25%;
+ text-align: end;
+ padding-inline-end: 25%;
}
.ldapIndent {
- margin-left: 50px;
+ margin-inline-start: 50px;
}
.ldapwarning {
- margin-left: 22px;
+ margin-inline-start: 22px;
color: #FF3B3B;
}
@@ -116,9 +115,9 @@
max-width: 200px;
display: inline-block;
vertical-align: top;
- text-align: right;
+ text-align: end;
padding-top: 9px;
- padding-right: 5px;
+ padding-inline-end: 5px;
}
#ldap fieldset input[type=submit] {
@@ -159,7 +158,7 @@ input.ldapVerifyInput {
.ldapInputColElement {
width: 35%;
display: inline-block;
- padding-left: 10px;
+ padding-inline-start: 10px;
}
.ldapToggle {
@@ -190,7 +189,7 @@ select[multiple=multiple] + button {
}
#ldap .ldap_saving {
- margin-right: 15px;
+ margin-inline-end: 15px;
color: orange;
font-weight: bold;
}
@@ -203,10 +202,12 @@ select[multiple=multiple] + button {
width: 16px;
vertical-align: text-bottom;
}
+
.ldap_config_state_indicator_sign.success {
background: #37ce02;
border-radius: 8px;
}
+
.ldap_config_state_indicator_sign.error {
background: #ce3702;
}
diff --git a/apps/user_ldap/img/app-dark.svg b/apps/user_ldap/img/app-dark.svg
index 281c651ada6..f20dbda808a 100644
--- a/apps/user_ldap/img/app-dark.svg
+++ b/apps/user_ldap/img/app-dark.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" height="16" width="16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M12 11.692c-.962 0-1.786-.342-2.472-1.028C8.843 9.979 8.5 9.155 8.5 8.192c0-.962.343-1.786 1.028-2.471.686-.686 1.51-1.029 2.472-1.029.963 0 1.786.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471 0 .963-.343 1.787-1.028 2.472-.686.686-1.509 1.028-2.472 1.028Zm-7.5 7.616v-2.224c0-.489.133-.943.399-1.36a2.663 2.663 0 0 1 1.067-.962 14.51 14.51 0 0 1 2.991-1.091 12.965 12.965 0 0 1 6.086 0c1.006.243 2.003.606 2.992 1.091.445.224.8.545 1.066.962.266.417.399.871.399 1.36v2.224h-15Z" style="fill-rule:nonzero" transform="matrix(1 0 0 .95789 -4 -3.495)"/></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px"><path d="M480-480q-60 0-102-42t-42-102q0-60 42-102t102-42q60 0 102 42t42 102q0 60-42 102t-102 42ZM192-192v-96q0-23 12.5-43.5T239-366q55-32 116.5-49T480-432q63 0 124.5 17T721-366q22 13 34.5 34t12.5 44v96H192Z"/></svg> \ No newline at end of file
diff --git a/apps/user_ldap/img/app.svg b/apps/user_ldap/img/app.svg
index d8963c5e4c1..4d6d856526c 100644
--- a/apps/user_ldap/img/app.svg
+++ b/apps/user_ldap/img/app.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" height="16" width="16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M12 11.692c-.962 0-1.786-.342-2.472-1.028C8.843 9.979 8.5 9.155 8.5 8.192c0-.962.343-1.786 1.028-2.471.686-.686 1.51-1.029 2.472-1.029.963 0 1.786.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471 0 .963-.343 1.787-1.028 2.472-.686.686-1.509 1.028-2.472 1.028Zm-7.5 7.616v-2.224c0-.489.133-.943.399-1.36a2.663 2.663 0 0 1 1.067-.962 14.51 14.51 0 0 1 2.991-1.091 12.965 12.965 0 0 1 6.086 0c1.006.243 2.003.606 2.992 1.091.445.224.8.545 1.066.962.266.417.399.871.399 1.36v2.224h-15Z" style="fill:#fff;fill-rule:nonzero" transform="matrix(1 0 0 .95789 -4 -3.495)"/></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#fff"><path d="M480-480q-60 0-102-42t-42-102q0-60 42-102t102-42q60 0 102 42t42 102q0 60-42 102t-102 42ZM192-192v-96q0-23 12.5-43.5T239-366q55-32 116.5-49T480-432q63 0 124.5 17T721-366q22 13 34.5 34t12.5 44v96H192Z"/></svg> \ No newline at end of file
diff --git a/apps/user_ldap/img/copy.png b/apps/user_ldap/img/copy.png
deleted file mode 100644
index c3f31624bfa..00000000000
--- a/apps/user_ldap/img/copy.png
+++ /dev/null
Binary files differ
diff --git a/apps/user_ldap/img/copy.svg b/apps/user_ldap/img/copy.svg
index 9f705996672..fc09a027e8b 100644
--- a/apps/user_ldap/img/copy.svg
+++ b/apps/user_ldap/img/copy.svg
@@ -1 +1 @@
-<svg width="16px" height="16px" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g stroke-linejoin="round"><g><path transform="scale(.26667)" d="m8.1738 4.6875c-0.64453 0-1.2598 0.24902-1.6992 0.70312-0.4541 0.4541-0.70312 1.0547-0.70312 1.6992v30.674c0 0.64453 0.24902 1.2451 0.70312 1.6992 0.4541 0.4541 1.0547 0.70312 1.6992 0.70312h28.945c0.62988 0 1.2451-0.24902 1.6992-0.70312 0.4541-0.4541 0.70312-1.0547 0.70312-1.6992v-30.674c0-0.64453-0.24902-1.2451-0.70312-1.6992-0.4541-0.4541-1.0693-0.70312-1.6992-0.70312z" fill="none" stroke="#fff" stroke-width="8.1255"/><path transform="scale(.26667)" d="m8.1738 4.6875c-0.64453 0-1.2598 0.24902-1.6992 0.70312-0.4541 0.4541-0.70312 1.0547-0.70312 1.6992v30.674c0 0.64453 0.24902 1.2451 0.70312 1.6992 0.4541 0.4541 1.0547 0.70312 1.6992 0.70312h28.945c0.62988 0 1.2451-0.24902 1.6992-0.70312 0.4541-0.4541 0.70312-1.0547 0.70312-1.6992v-30.674c0-0.64453-0.24902-1.2451-0.70312-1.6992-0.4541-0.4541-1.0693-0.70312-1.6992-0.70312z" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-width="3.1254"/><path transform="scale(.26667)" d="m22.881 19.834c-0.62988 0-1.2451 0.24902-1.6992 0.70312-0.4541 0.4541-0.70312 1.0547-0.70312 1.6992v30.674c0 0.64453 0.24902 1.2451 0.70312 1.6992 0.4541 0.4541 1.0693 0.70312 1.6992 0.70312h28.945c0.64453 0 1.2598-0.24902 1.6992-0.70312 0.4541-0.4541 0.70312-1.0547 0.70312-1.6992v-30.674c0-0.64453-0.24902-1.2451-0.70312-1.6992-0.43945-0.4541-1.0547-0.70312-1.6992-0.70312z" fill="none" stroke="#fff" stroke-width="8.1255"/><path transform="scale(.26667)" d="m22.881 19.834c-0.62988 0-1.2451 0.24902-1.6992 0.70312-0.4541 0.4541-0.70312 1.0547-0.70312 1.6992v30.674c0 0.64453 0.24902 1.2451 0.70312 1.6992 0.4541 0.4541 1.0693 0.70312 1.6992 0.70312h28.945c0.64453 0 1.2598-0.24902 1.6992-0.70312 0.4541-0.4541 0.70312-1.0547 0.70312-1.6992v-30.674c0-0.64453-0.24902-1.2451-0.70312-1.6992-0.43945-0.4541-1.0547-0.70312-1.6992-0.70312z" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-width="3.1254"/></g><path transform="scale(.26667)" d="m12.451 21.606c2.3291 20.522 20.156 19.146 21.299 19.028v6.1523l8.9795-8.8916-8.9795-8.877v6.0645c-1.3477 0.16113-13.931 1.4209-21.299-13.491zm0 0" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="8.125"/><path transform="scale(.26667)" d="m12.451 21.606c2.3291 20.522 20.156 19.146 21.299 19.028v6.1523l8.9795-8.8916-8.9795-8.877v6.0645c-1.3477 0.16113-13.931 1.4209-21.299-13.491zm0 0" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-width="3.125"/></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px"><path d="M360-240q-29.7 0-50.85-21.15Q288-282.3 288-312v-480q0-29.7 21.15-50.85Q330.3-864 360-864h384q29.7 0 50.85 21.15Q816-821.7 816-792v480q0 29.7-21.15 50.85Q773.7-240 744-240H360ZM216-96q-29.7 0-50.85-21.15Q144-138.3 144-168v-552h72v552h456v72H216Z"/></svg> \ No newline at end of file
diff --git a/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js b/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js
index 6480e43f9f9..4dc6ab5ffbe 100644
--- a/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js
+++ b/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js
@@ -573,7 +573,7 @@ $.widget("ech.multiselect", {
} else {
menu.css({
top: pos.top + button.outerHeight(),
- left: pos.left
+ 'inset-inline-start': pos.left
});
}
diff --git a/apps/user_ldap/l10n/ach.js b/apps/user_ldap/l10n/ach.js
deleted file mode 100644
index 95c97db2f9c..00000000000
--- a/apps/user_ldap/l10n/ach.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/ach.json b/apps/user_ldap/l10n/ach.json
deleted file mode 100644
index 8e0cd6f6783..00000000000
--- a/apps/user_ldap/l10n/ach.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ady.js b/apps/user_ldap/l10n/ady.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/ady.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ady.json b/apps/user_ldap/l10n/ady.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/ady.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ak.js b/apps/user_ldap/l10n/ak.js
deleted file mode 100644
index a88c80b7933..00000000000
--- a/apps/user_ldap/l10n/ak.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=n > 1;");
diff --git a/apps/user_ldap/l10n/ak.json b/apps/user_ldap/l10n/ak.json
deleted file mode 100644
index 58fcef711ee..00000000000
--- a/apps/user_ldap/l10n/ak.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=n > 1;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/am_ET.js b/apps/user_ldap/l10n/am_ET.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/am_ET.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/am_ET.json b/apps/user_ldap/l10n/am_ET.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/am_ET.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ar.js b/apps/user_ldap/l10n/ar.js
index 7f37a0df580..14629f8a426 100644
--- a/apps/user_ldap/l10n/ar.js
+++ b/apps/user_ldap/l10n/ar.js
@@ -2,16 +2,16 @@ OC.L10N.register(
"user_ldap",
{
"Failed to clear the mappings." : "فشل مسح الارتباطات mappings",
- "Failed to delete the server configuration" : "تعذّر حذف ملف إعدادات الخادوم",
+ "Failed to delete the server configuration" : "تعذّر حذف ملف إعدادات الخادم",
"Invalid configuration: Anonymous binding is not allowed." : "تكوين غير صالح: الربط المجهول Anonymous binding غير مسموح به.",
"Valid configuration, connection established!" : "تكوين صالح، تمّ تأسيس الاتصال!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "تكوين صالح، لكن فشل الربط binding. يرجى التحقّق من إعدادات الخادوم و حيثيّات الدخول credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "تكوين غير صحيح. يرجى الرجوع إلي سجلات الحركات logs لمزيد من التفاصيل.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "تكوين صالح، لكن فشل الربط binding. يرجى التحقّق من إعدادات الخادم وأذونات الدخول credentials.",
+ "Invalid configuration: %s" : "تهيئة غير صحيحة: %s",
"No action specified" : "لم يتم تحديد أيّ إجراءٍ",
"No configuration specified" : "لم يتم تحديد أيّ إعداداتٍ",
"No data specified" : "لم يتم تحديد أيّ بياناتٍ",
- "Invalid data specified" : "البيانات المُحدّدة غير صالحة",
- " Could not set configuration %s" : "تعذّر تعيين الإعداد %s",
+ "Invalid data specified" : "البيانات المحددة غير صالحة",
+ "Could not set configuration %1$s to %2$s" : "يتعذّر تعيين الإعداد %1$s لـ %2$s",
"Action does not exist" : "الإجراء غير موجود",
"Renewing …" : "التجديد جارٍ …",
"Very weak password" : "كلمة المرور ضعيفة جدا",
@@ -30,12 +30,12 @@ OC.L10N.register(
"Please specify the port, it could not be auto-detected." : "يُرجى تحديد المنفذ port، حيث لا يمكن اكتشافه تلقائيا.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "تعذر اكتشاف الاسم المميز الأساسي Base DN تلقائيًا، يرجى مراجعة حيثيّات الدخول credentials، والمُضيف host، والمنفذ port.",
"Could not detect Base DN, please enter it manually." : "تعذّر اكتشاف الاسم المميز الأساسي Base DN، يُرجى إدخاله يدويًا.",
- "{nthServer}. Server" : "{nthServer}. الخادوم",
+ "{nthServer}. Server" : "{nthServer}. الخادم",
"No object found in the given Base DN. Please revise." : "لم يتم العثور على أي كائن object في الاسم المميز الأساسي Base DN المحدد. يُرجي المُراجعة.",
"More than 1,000 directory entries available." : "يُوجد أكثر من 1,000 مُدخل في الدليل directory entries.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخل متاح من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم"],
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "حدث خطأ. يرجي التحقق من الاسم المميز الأساسي Base DN، وكذلك إعدادات الاتصال، و حيثيّات الدخول credentials.",
- "Do you really want to delete the current Server Configuration?" : "هل ترغب فعلاً في حذف إعدادات الخادوم الحالي؟",
+ "Do you really want to delete the current Server Configuration?" : "هل ترغب فعلاً في حذف إعدادات الخادم الحالي؟",
"Confirm Deletion" : "تأكيد الحذف",
"Mappings cleared successfully!" : "تم مسح الارتباطات mappings بنجاح!",
"Error while clearing the mappings." : "خطأ أثناء مسح الارتباطات mappings.",
@@ -49,23 +49,29 @@ OC.L10N.register(
"User found and settings verified." : "تم العثور على المستخدم وتم التحقق من الإعدادات.",
"Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "ضع في اعتبارك تضييق نطاق البحث، لأنه يشمل مستخدمين كُثْرٌ، ولن يتمكن سوى أول واحد منهم من تسجيل الدخول.",
"An unspecified error occurred. Please check log and settings." : "حدث خطأ غير محدد. يرجى التحقق من السجل والإعدادات.",
- "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. يرجى التحقق من المضيف host، والمنفذ port، و حيثيّات الدخول credentials.",
+ "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. يرجى التحقق من المضيف host، والمنفذ port، وبيانات تسجيل الدخول.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "العنصر النائب placeholder ـ \"%u مُعرّف\". سيتم استبداله باسم دخول عند الاستعلام من LDAP/AD.",
"Please provide a login name to test against" : "يرجى تقديم اسم تسجيل الدخول لاختباره",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "تم تعطيل مربع المجموعة؛ لأن خادوم LDAP/AD لا يدعم خاصّيّة \"عضوٌ في\" memberOf.",
- "Password change rejected. Hint: " : "تمّ رفض تغيير كلمة المرور. إرشادُ:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "تم تعطيل مربع المجموعة؛ لأن خادم LDAP/AD لا يدعم خاصّيّة \"عضوٌ في\" memberOf.",
+ "Password change rejected. Hint: %s" : "تمّ رفض تغيير كلمة المرور. إرشاد: %s",
+ "Mandatory field \"%s\" left empty" : "الحقل الإلزامي \"%s\" تُرِك فارغاً",
+ "A password is given, but not an LDAP agent" : "تمّ إعطاء كلمة المرور لكن لم يتم إعطاء وكيل LDAP",
+ "No password is given for the user agent" : "لم يتم إعطاء كلمة المرور لوكيل المُستخدِم",
+ "No LDAP base DN was given" : "لم يتم إعطاء اسم الدليل الأساسي base DN لقائمة المستخدِمين LADP",
+ "User base DN is not a subnode of global base DN" : "الدليل الأساسي للمستخدِم User base DN ليس متفرعاً عن الدليل الأساسي العمومي Global base DN",
+ "Group base DN is not a subnode of global base DN" : "الدليل الأساسي للمجموعة Group base DN ليس متفرعاً عن الدليل الأساسي العمومي Global base DN",
"Please login with the new password" : "الرجاء تسجيل الدخول باستخدام كلمة المرور الجديدة",
"LDAP User backend" : "خلفية المستخدمين User backend من LDAP ",
"Your password will expire tomorrow." : "كلمة مرورك تنتهي صلاحيتها غداً.",
"Your password will expire today." : "كلمة مرورك تنتهي صلاحيتها اليوم.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %n أيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nيوم.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام."],
- "LDAP/AD integration" : "مُكاملة LDAP/AD ",
+ "LDAP/AD integration" : "التكامل مع LDAP/AD ",
"LDAP Connection" : "الاتصال بدليل المستخدِمين LDAP ",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["تعذّر االارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه:%s","فشل البحث في تكوينات LDAP هذه: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %s مع تكوين دليل المستخدمين LDAP هذا.","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["توجد %n تكوينات دليل مستخدمين LDAP غير نشطة:%s","بوجد تكوين. لدليل مستخدمين LDAP غير نشط: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ %n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في توصيلة دليل المستخدمين المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ %n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ%n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ%n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ %n لأدلة المستخدمين LDAP المُكوَّنة (%s)"],
"Invalid LDAP UUIDs" : "مُعرِّفات UUID الخاصة بـ LDAP غير صحيحة",
"None found" : "لم يُمكن العثور على أي شيء",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "تم العثور على مُعرِّفات UUID غير صالحة لحسابات أو مجموعات LDAP. الرجاء مراجعة الإعداد \"تجاوز اكتشاف UUID ـ Override UUID detection\" في الجزء الخبير من تكوين LDAP ثم اعطِ الأمر السطري: \"occ ldap:update-uuid\" لتحديثها",
@@ -73,12 +79,12 @@ OC.L10N.register(
"> 1000 groups found" : "> 1000 مجموعة موجودة",
"> 1000 users found" : "> 1000 مستخدِم موجود",
"_%n user found_::_%n users found_" : ["تم العثور على %n مستخدمين","تم العثور على %n مستخدم","تم العثور على %n مستخدمين","تم العثور على %n مستخدمين","تم العثور على %n مستخدمين","تم العثور على %n مستخدمين"],
- "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "تعذر اكتشاف خاصّية الاسم المعروض للمستخدم user display name attribute. يرجى تحديدها بنفسك في الإعدادات المتقدمة لخادوم LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "تعذر اكتشاف خاصّية اسم العرض للمستخدم user display name attribute. يرجى تحديدها بنفسك في الإعدادات المتقدمة لخادم LDAP.",
"Could not find the desired feature" : "تعذر العثور على الميزة المطلوبة",
"Invalid Host" : "مُضيف غير صالح",
"LDAP user and group backend" : "خلفية المستخدمين و المجموعات من LDAP",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "يتيح هذا التطبيق للمشرفين توصيل نكست كلاود بدليل المستخدمين المستند إلى LDAP.",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "يتيح هذا التطبيق للمشرفين توصيل نكست كلاود بدليل المستخدمين المستنِد إلى LDAP للمصادقة و توفير المستخدمين users، والمجموعات groups، و سمات المستخدمين user attributes. \nيمكن للمشرفين تكوين هذا التطبيق للاتصال بدليل LDAP واحد أو أكثر عبر واجهة LDAP. \nيمكن سحب سماتٍ مثل حصة المستخدم التخزينية، و البريد الإلكتروني، و التجسيدات الرمزية avatar، وعضوية المجموعات و غيرها إلى نكست كلاود باستخدام الاستعلامات والمرشحات المناسبة. \nيقوم المستخدم بتسجيل الدخول إلى نكست كلاود باستخدام حيثيات دخوله من LDAP أو AD، ويتم منحه حق الوصول بناءً على طلب المصادقة الذي تتم معالجته بواسطة خادوم LDAP أو AD. \nلا يقوم نكست كلاود بتخزين كلمات مرور LDAP أو AD، بل يستخدم حيثيّات المستخدم هذه للمصادقة ثم يستخدم مُعرّف الجلسة session كمُعرّف للمستخدم. \n\nيتوفر المزيد من المعلومات في وثائق مستخدم LDAP و Group Backend.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "يتيح هذا التطبيق لمسؤولي النظام توصيل نكست كلاود بدليل المستخدمين المستند إلى LDAP.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "يتيح هذا التطبيق لمسؤولي النظام توصيل نكست كلاود بدليل المستخدمين المستنِد إلى LDAP للمصادقة و توفير المستخدمين users، والمجموعات groups، و سمات المستخدمين user attributes. \nيمكن للمشرفين تكوين هذا التطبيق للاتصال بدليل LDAP واحد أو أكثر عبر واجهة LDAP. \nيمكن سحب سماتٍ مثل حصة المستخدم التخزينية، و البريد الإلكتروني، و التجسيدات الرمزية avatar، وعضوية المجموعات و غيرها إلى نكست كلاود باستخدام الاستعلامات والمرشحات المناسبة. \nيقوم المستخدم بتسجيل الدخول إلى نكست كلاود باستخدام حيثيات دخوله من LDAP أو AD، ويتم منحه حق الوصول بناءً على طلب المصادقة الذي تتم معالجته بواسطة خادم LDAP أو AD. \nلا يقوم نكست كلاود بتخزين كلمات مرور LDAP أو AD، بل يستخدم حيثيّات المستخدم هذه للمصادقة ثم يستخدم مُعرّف الجلسة session كمُعرّف للمستخدم. \n\nيتوفر المزيد من المعلومات في وثائق مستخدم LDAP و Group Backend.",
"Test Configuration" : "اختبر التكوين",
"Help" : "مساعدة",
"Groups meeting these criteria are available in %s:" : "المجموعات التي تلبي هذه المعايير متوفرة في %s:",
@@ -86,10 +92,10 @@ OC.L10N.register(
"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." : "يحدد الفلتر أي مجموعات من LDAP سوف يكون لها حق الوصول إلى التطبيق %s.",
+ "Selected groups" : "المجموعات المحددة",
+ "Edit LDAP Query" : "تحرير استعلام من خادم LDAP",
+ "LDAP Filter:" : "تصفية LDAP:",
+ "The filter specifies which LDAP groups shall have access to the %s instance." : "يحدد عامل التصفية أي مجموعات من LDAP سوف يكون لها حق الوصول إلى التطبيق %s.",
"Verify settings and count the groups" : "تحقق من الإعدادات و احصر عدد المجموعات",
"When logging in, %s will find the user based on the following attributes:" : "عند تسجيل الدخول، %sسوف تجد المستخدم بناءً على الخصائص التالية:",
"LDAP/AD Username:" : "اسم مستخدم LDAP/AD ـ : ",
@@ -97,23 +103,23 @@ OC.L10N.register(
"LDAP/AD Email Address:" : "عنوان البريد الالكتروني LDAP/AD ـ :",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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\"",
+ "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" : "اختبار اسم تسجيل الدخول",
- "Attempts to receive a DN for the given loginname and the current login filter" : "محاولة تلقّي الاسم المميز DN لاسم تسجيل الدخول المحدد و فلتر تسجيل الدخول الحالي",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "محاولة تلقّي الاسم المميز DN لاسم تسجيل الدخول المحدد و عامل تصفية تسجيل الدخول الحالي",
"Verify settings" : "التحقُّق من الإعدادات",
- "%s. Server:" : "%s. خادوم:",
- "Add a new configuration" : "إضافة تهيئة جديدة",
+ "%s. Server:" : "%s. خادم:",
+ "Add a new configuration" : "إضافة تكوين جديد",
"Copy current configuration into new directory binding" : "نسخ التهيئة الحالية إلى دليل جديد مرتبط",
"Delete the current configuration" : "حذف التهيئة الحالية",
"Host" : "المضيف",
- "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "يمكنك التغاضي عن البروتوكول، ما لم يكن SSL لازماً. إذا كان الأمر كذلك، فابدأ بـ ldaps",
+ "You can omit the protocol, unless you require SSL. If so, 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. للوصول مجهول الهوية anonymous access، اترك خانتيْ الاسم المميز وكلمة المرور فارغتين.",
"Password" : "كلمة المرور",
"For anonymous access, leave DN and Password empty." : "للوصول المجهول anonymous access، اترك خانتيْ الاسم المميز وكلمة المرور فارغتين.",
- "Save Credentials" : "حفظ حيثيّات الدخول credentials",
+ "Save Credentials" : "حفظ بيانات تسجيل الدخول",
"One Base DN per line" : "اسم مميز واحد أساسي Base DN لكل سطر",
"You can specify Base DN for users and groups in the Advanced tab" : "يمكنك تحديد الاسم المميز الأساسي Base DN للمستخدمين والمجموعات من علامة تبويب الإعدادات المتقدمة",
"Detect Base DN" : "اكتشاف الاسم المميز الأساسي Base DN",
@@ -122,36 +128,36 @@ OC.L10N.register(
"Manually enter LDAP filters (recommended for large directories)" : "الإدخال اليدوي لفلاتر بروتوكول LDAP (يُنصح به في حالة الأدلة الكبيرة)",
"Listing and searching for users is constrained by 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." : "أكثر فئات الكائنات شيوعًا بالنسبة للمستخدمين هي: الشخص التنظيمي \"organizationalPerson\" والشخص \"person\" والمستخدم \"user\"وinetOrgPerson. إذا لم تكن متأكدًا من فئة الكائن التي تريد تحديدها، فيرجى استشارة مسئول الدليل الخاص بك.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "يُحدِّد الفلتر أيّ مستخدمي LDAP يمكنه الوصول إلى الخادوم %s.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "يُحدِّد عامل التصفية أيّ مستخدمي LDAP يمكنه الوصول إلى الخادم %s.",
"Verify settings and count users" : "التّحقق من الإعدادات وعدد المستخدمين",
- "Saving" : "الحفظ جارٍ ...",
+ "Saving" : "الحفظ جارٍ...",
"Back" : "رجوع",
- "Continue" : "مُتابعة",
+ "Continue" : "متابعة",
"Please renew your password." : "الرجاء تجديد كلمة مرورك.",
"An internal error occurred." : "حدث خطأ داخلي.",
- "Please try again or contact your administrator." : "حاول مجددا أو تواصل مع مشرف النظام.",
+ "Please try again or contact your administrator." : "حاول مجددا أو تواصل مع مسؤول النظام.",
"Current password" : "كلمة المرور الحالية",
"New password" : "كلمة المرور الجديدة",
"Renew password" : "تجديد كلمة المرور",
"Wrong password." : "كلمة مرور خاطئة.",
"Cancel" : "إلغاء",
- "Server" : "خادوم",
+ "Server" : "خادم",
"Users" : "المستخدمين",
"Login Attributes" : "خصائص تسجيل الدخول",
"Groups" : "مجموعات",
"Expert" : "خبير",
"Advanced" : "متقدمة",
- "<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> وِحدة PHP LDAP غير مُنصبّة؛ لذا فإن الخلفية لن تعمل. يرجى طلب تنصيبها من مُشرف النظام.",
+ "<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> وِحدة PHP LDAP غير مُنصبّة؛ لذا فإن الخلفية لن تعمل. يرجى طلب تنصيبها من مسؤول النظام.",
"Connection Settings" : "إعدادات الربط",
"Configuration Active" : "الإعداد نشط",
"When unchecked, this configuration will be skipped." : "عندما لا يتم تحديده، سوف يتم تخطي هذه التهيئة.",
"Backup (Replica) Host" : "مضيف النسخ الاحتياطي (طِبقَ الأصل)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "توفير مضيف احتياطي اختياري. يجب أن يكون نسخة طبق الأصل من خادوم LDAP/AC.",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "توفير مضيف احتياطي اختياري. يجب أن يكون نسخة طبق الأصل من خادم LDAP/AC.",
"Backup (Replica) Port" : "منفذ النسخ الاحتياطي (طِبقَ الأصل)",
- "Disable Main Server" : "تعطيل الخادوم الرئيسي",
- "Only connect to the replica server." : "متصل فقط بالخادوم الاحتياطي.",
+ "Disable Main Server" : "تعطيل الخادم الرئيسي",
+ "Only connect to the replica server." : "متصل فقط بالخادم الاحتياطي.",
"Turn off SSL certificate validation." : "إيقاف تشغيل التحقق من صحة شهادة SSL.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "لا يوصي به، استخدمه للاختبار فقط! إذا كان الاتصال يعمل فقط مع هذا الخيار، فقم باستيراد شهادة SSL لخادوم LDAP في خادومك%s.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "لا يوصي به، استخدمه للاختبار فقط! إذا كان الاتصال يعمل فقط مع هذا الخيار، فقم باستيراد شهادة SSL لخادم LDAP في الخادم %s.",
"Cache Time-To-Live" : "مدة صلاحية ذاكرة التخزين المؤقت cache",
"in seconds. A change empties the cache." : "خلال ثوان. يؤدي التغيير إلى إفراغ ذاكرة التخزين المؤقت cache.",
"Directory Settings" : "إعدادات الدليل",
@@ -177,43 +183,45 @@ OC.L10N.register(
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "عند التشغيل، يتم دعم المجموعات التي تحتوي على مجموعات. (تعمل فقط إذا كان تحديد عضو المجموعة يحتوي على اسم مميز DN).",
"Paging chunksize" : "حجم رزم الصفحات Paging chunksize",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "يتم استخدام حجم الرِّزمَة لعمليات البحث المقسمة إلى صفحات في LDAP؛ والتي قد تعطي نتائج ضخمة تبعاً لعدد المستخدمين و المجموعات. (الضبط علي 0 يؤدي إلى تعطيل هذا الأسلوب من البحث في تلك الحالات.)",
- "Enable LDAP password changes per user" : "تمكين تغيير كلمة المرور لكل مستخدم علي خادوم LDAP ",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "يتيح خادوم بروتوكول LDAP للمستخدمين تغيير كلمة المرور الخاصة بهم والسماح للمشرفين المتميزين super admin ومسؤولي المجموعات بتغيير كلمة مرور مستخدمي خادومهم. وتعمل هذه الخاصية عندما يتم تهيئة وضبط سياسات التحكم في الوصول على خادوم LDAP وفقًا لذلك. وحيث أن كلمات المرور يتم إرسالها فى صورة نصٍّ عادي إلى خادوم LDAP، فيجب استخدام تشفير النقل وضبط تجزئة كلمة المرور على خادوم LDAP.",
- "(New password is sent as plain text to LDAP)" : "(يتم إرسال كلمة المرور الجديدة كنص عادي إلى خادوم LDAP )",
+ "Enable LDAP password changes per user" : "تمكين تغيير كلمة المرور لكل مستخدم علي خادم LDAP ",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "يتيح خادم بروتوكول LDAP للمستخدمين تغيير كلمة المرور الخاصة بهم والسماح لمسؤولي النظام المتميزين ومسؤولي المجموعات بتغيير كلمة مرور مستخدمي الخادم. وتعمل هذه الخاصية عندما يتم تهيئة وضبط سياسات التحكم في الوصول على خادم LDAP وفقًا لذلك. وحيث أن كلمات المرور يتم إرسالها فى صورة نصٍّ عادي إلى خادم LDAP، فيجب استخدام تشفير النقل وضبط تجزئة كلمة المرور على خادم LDAP.",
+ "(New password is sent as plain text to LDAP)" : "(يتم إرسال كلمة المرور الجديدة كنص عادي إلى خادم LDAP )",
"Default password policy DN" : "سياسة الاسم المميز لكلمة المرورالافتراضية",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "سياسة الاسم المميز DN لكلمة المرورالافتراضية التي سيتم استخدامها لمعالجة انتهاء صلاحية كلمة المرور تعمل فقط عندما يتم تمكين تغيير كلمة مرور خادوم LDAP لكل مستخدم ويكون مدعومًا فقط بواسطة OpenLDAP. H. أترُكه فارغًا لتعطيل معالجة انتهاء صلاحية كلمة المرور.",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "سياسة الاسم المميز DN لكلمة المرورالافتراضية التي سيتم استخدامها لمعالجة انتهاء صلاحية كلمة المرور تعمل فقط عندما يتم تمكين تغيير كلمة مرور خادم LDAP لكل مستخدم ويكون مدعومًا فقط بواسطة OpenLDAP. H. أترُكه فارغًا لتعطيل معالجة انتهاء صلاحية كلمة المرور.",
"Special Attributes" : "خصائص خاصة",
"Quota Field" : "حقل الحِّصّة التخزينية",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "اتركه فارغًا للحصة التخزينية الافتراضية للمستخدم. خلاف ذلك، حدد خاصّية خادوم LDAP/AD.",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "اتركه فارغًا للحصة التخزينية الافتراضية للمستخدم. خلاف ذلك، حدد خاصّية خادم LDAP/AD.",
"Quota Default" : "الحصة الافتراضية",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "تخطِّي الحصة الافتراضية لمستخدمي خادوم LDAP الذين ليس لديهم حصة محددة في حقل الحصة.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "تخطِّي الحصة الافتراضية لمستخدمي خادم LDAP الذين ليس لديهم حصة محددة في حقل الحصة.",
"Email Field" : "خانة البريد الإلكتروني",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "قُم بتعيين البريد الإلكتروني للمستخدمين من خاصّية خادوم LDAP الخاصة بهم. اتركه فارغًا للتصرُّف الافتراضي.",
- "User Home Folder Naming Rule" : "قاعدة تسمية المجلد الرئيسي للمستخدم User home folder",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "قُم بتعيين البريد الإلكتروني للمستخدمين من خاصّية خادم LDAP الخاصة بهم. اتركه فارغًا للتصرُّف الافتراضي.",
+ "User Home Folder Naming Rule" : "قاعدة تسمية المجلد الرئيسي للمستخدم",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "أترُكه فارغًا لاسم المستخدم (افتراضي). خلاف ذلك، حدِّد خاصّية LDAP/AD.",
"\"$home\" Placeholder Field" : "حقل العنصر النائب \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "سيتم استبدال $home في تكوين وحدة التخزين الخارجية بقيمة الخاصّية المحددة",
"User Profile Attributes" : "خصائص الملف الشخصي للمستخدِم",
"Phone Field" : "خانة الهاتف",
"User profile Phone will be set from the specified attribute" : "خانة الهاتف في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
- "Website Field" : "خانة موقع الوب",
- "User profile Website will be set from the specified attribute" : "خانة موقع الوب في الملف الشخصي للمستخدِم سيتم تعيينها من الخاصّية المُحدّدة",
+ "Website Field" : "خانة موقع الويب",
+ "User profile Website will be set from the specified attribute" : "خانة موقع الويب في الملف الشخصي للمستخدم سيتم تعيينها من الخاصّية المحددة",
"Address Field" : "خانة العنوان",
"User profile Address will be set from the specified attribute" : "خانة العنوان في الملف الشخصي للمستخدم سيتم تعيينها من الخاصّية المُحدّدة",
"Twitter Field" : "خانة حساب تويتر",
"User profile Twitter will be set from the specified attribute" : "خانة حساب تويتر في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
- "Fediverse Field" : "خانة حساب الـ\"فيدي فيرس\" Fediverse",
- "User profile Fediverse will be set from the specified attribute" : "خانة حساب الـ\"فيدي فيرس\" Fediverse في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
+ "Fediverse Field" : "خانة حساب Fediverse",
+ "User profile Fediverse will be set from the specified attribute" : "خانة حساب Fediverse في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Organisation Field" : "خانة المؤسسة organization",
"User profile Organisation will be set from the specified attribute" : "خانة المنظمة organization في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Role Field" : "خانة الوظيفة role",
"User profile Role will be set from the specified attribute" : "خانة الوظيفة role في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
- "Headline Field" : "حقل الترويسة headline",
- "User profile Headline will be set from the specified attribute" : "خانة الترويسة headline في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
+ "Headline Field" : "حقل العنوان",
+ "User profile Headline will be set from the specified attribute" : "خانة العنوان في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Biography Field" : "خانة السيرة الذاتية biography",
"User profile Biography will be set from the specified attribute" : "خانة السيرة الذاتية biography في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Birthdate Field" : "حقل تاريخ الميلاد",
"User profile Date of birth will be set from the specified attribute" : "تاريخ الميلاد في ملف المستخدم سيتم ملؤه من الخانة المحددة",
+ "Pronouns Field" : "حقل الضمائر",
+ "User profile Pronouns will be set from the specified attribute" : "سيتم تعيين ضمائر ملف تعريف المستخدم من السمة المحددة",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "بشكل افتراضي، سيتم إنشاء اسم المستخدم الداخلي internal username من خاصّية المُغرّف المُميّز الشامل UUID. هذا يضمن أن اسم المستخدم فريدٌ ولا يلزمه أي تحويل في الأحرف. اسم المستخدم الداخلي مُقيّدٌ باستخدام هذه الأحرف فقط: [a-zA-Z0-9 _. @ -]. غير هذه الأحرف يقع استبدالها بما يقابلها من أحرف الآسكي ASCII أو - ببساطة - يقع حذفها. في حالة وقوع تضاربٍِ، سيتم إلحاق عدد بالاسم. \n\nيُستخدم هذا الاسم الداخلي لتعريف المستخدم داخليًا. وهو أيضًا الاسم الافتراضي للمجلد الرئيسي للمستخدم. و هو أيضًا جزء من عناوين remote URL القَصِيّة كما في خدمات DAV على سبيل المثال. باستخدام هذا الإعداد ، يمكن تجاوز السلوك الافتراضي. سيكون للتغييرات تأثير فقط على مستخدمي LDAP المُعيّنين حديثًا (المُضافين). أترُكه فارغًا للسلوك الافتراضي.",
"Internal Username Attribute:" : "خاصّية اسم المستخدم الداخلي:",
@@ -222,9 +230,9 @@ 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 metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "تُستخدم أسماء المستخدمين لتخزين وتخصيص البيانات التعريف الوصفية. من أجل تحديد المستخدمين والتعرف عليهم بدقة، سيكون لكل مستخدم على خادوم LDAP اسم مستخدم داخلي. يتطلب هذا ربطاً mapping بين اسم المستخدم و مستخدم خادوم LDAP. يتم تعيين اسم المستخدم الذي تم إنشاؤه إلى المعرف الفريد الشامل \"UUID\" لمستخدم LDAP. بالإضافة إلى ذلك، يتم تخزين الاسم المميز DN مؤقتًا أيضًا لتقليل تفاعل LDAP، ولكنه لا يستخدم لتحديد الهوية. وعند تغير الاسم المميز يتم العثور على التغييرات. ويتم استخدام اسم المستخدم الداخلي في كل مكان. إلغاء الربط سيكون له آثار متبقية في كل مكان. إلغاء الربط يؤثر على جميع تكوينات LDAP! لا تقم مطلقًا بإلغاء الربط في بيئة الإنتاج. فقط في مرحلة الاختبار أو المرحلة التجريبية.",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "تُستخدم أسماء المستخدمين لتخزين وتخصيص البيانات التعريف الوصفية. من أجل تحديد المستخدمين والتعرف عليهم بدقة، سيكون لكل مستخدم على خادم LDAP اسم مستخدم داخلي. يتطلب هذا ربطاً mapping بين اسم المستخدم و مستخدم خادم LDAP. يتم تعيين اسم المستخدم الذي تم إنشاؤه إلى المعرف الفريد الشامل \"UUID\" لمستخدم LDAP. بالإضافة إلى ذلك، يتم تخزين الاسم المميز DN مؤقتًا أيضًا لتقليل تفاعل LDAP، ولكنه لا يستخدم لتحديد الهوية. وعند تغير الاسم المميز يتم العثور على التغييرات. ويتم استخدام اسم المستخدم الداخلي في كل مكان. إلغاء الربط سيكون له آثار متبقية في كل مكان. إلغاء الربط يؤثر على جميع تكوينات LDAP! لا تقم مطلقًا بإلغاء الربط في بيئة الإنتاج. فقط في مرحلة الاختبار أو المرحلة التجريبية.",
"Clear Username-LDAP User Mapping" : "إلغاء الربط بين اسم المستخدم في LDAP و المستخدم",
"Clear Groupname-LDAP Group Mapping" : "إلغاء الربط بين اسم المجموعة في LDAP و المجموعة",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "المُعرّف الفريد الشامل UUID لمستخدمي و مجموعات LDAP الموجود غير صحيح. الرجاء مراجعة إعدادات \"تجاوز اكتشاف UUID\"ـ Override UUID detection في القسم المتقدم Expert part من تكوين LDAP واستخدم \"occ ldap: update-uuid\" لتحديثها."
+ "Invalid configuration. Please have a look at the logs for further details." : "تكوين غير صحيح. يرجى الرجوع إلى سجلات الأنشطة لمزيد من التفاصيل."
},
"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/user_ldap/l10n/ar.json b/apps/user_ldap/l10n/ar.json
index d1362674293..9a3518c00fc 100644
--- a/apps/user_ldap/l10n/ar.json
+++ b/apps/user_ldap/l10n/ar.json
@@ -1,15 +1,15 @@
{ "translations": {
"Failed to clear the mappings." : "فشل مسح الارتباطات mappings",
- "Failed to delete the server configuration" : "تعذّر حذف ملف إعدادات الخادوم",
+ "Failed to delete the server configuration" : "تعذّر حذف ملف إعدادات الخادم",
"Invalid configuration: Anonymous binding is not allowed." : "تكوين غير صالح: الربط المجهول Anonymous binding غير مسموح به.",
"Valid configuration, connection established!" : "تكوين صالح، تمّ تأسيس الاتصال!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "تكوين صالح، لكن فشل الربط binding. يرجى التحقّق من إعدادات الخادوم و حيثيّات الدخول credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "تكوين غير صحيح. يرجى الرجوع إلي سجلات الحركات logs لمزيد من التفاصيل.",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "تكوين صالح، لكن فشل الربط binding. يرجى التحقّق من إعدادات الخادم وأذونات الدخول credentials.",
+ "Invalid configuration: %s" : "تهيئة غير صحيحة: %s",
"No action specified" : "لم يتم تحديد أيّ إجراءٍ",
"No configuration specified" : "لم يتم تحديد أيّ إعداداتٍ",
"No data specified" : "لم يتم تحديد أيّ بياناتٍ",
- "Invalid data specified" : "البيانات المُحدّدة غير صالحة",
- " Could not set configuration %s" : "تعذّر تعيين الإعداد %s",
+ "Invalid data specified" : "البيانات المحددة غير صالحة",
+ "Could not set configuration %1$s to %2$s" : "يتعذّر تعيين الإعداد %1$s لـ %2$s",
"Action does not exist" : "الإجراء غير موجود",
"Renewing …" : "التجديد جارٍ …",
"Very weak password" : "كلمة المرور ضعيفة جدا",
@@ -28,12 +28,12 @@
"Please specify the port, it could not be auto-detected." : "يُرجى تحديد المنفذ port، حيث لا يمكن اكتشافه تلقائيا.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "تعذر اكتشاف الاسم المميز الأساسي Base DN تلقائيًا، يرجى مراجعة حيثيّات الدخول credentials، والمُضيف host، والمنفذ port.",
"Could not detect Base DN, please enter it manually." : "تعذّر اكتشاف الاسم المميز الأساسي Base DN، يُرجى إدخاله يدويًا.",
- "{nthServer}. Server" : "{nthServer}. الخادوم",
+ "{nthServer}. Server" : "{nthServer}. الخادم",
"No object found in the given Base DN. Please revise." : "لم يتم العثور على أي كائن object في الاسم المميز الأساسي Base DN المحدد. يُرجي المُراجعة.",
"More than 1,000 directory entries available." : "يُوجد أكثر من 1,000 مُدخل في الدليل directory entries.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخل متاح من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم","{objectsFound} مدخلات متاحة من خلال الاسم المميز الأساسي المقدم"],
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "حدث خطأ. يرجي التحقق من الاسم المميز الأساسي Base DN، وكذلك إعدادات الاتصال، و حيثيّات الدخول credentials.",
- "Do you really want to delete the current Server Configuration?" : "هل ترغب فعلاً في حذف إعدادات الخادوم الحالي؟",
+ "Do you really want to delete the current Server Configuration?" : "هل ترغب فعلاً في حذف إعدادات الخادم الحالي؟",
"Confirm Deletion" : "تأكيد الحذف",
"Mappings cleared successfully!" : "تم مسح الارتباطات mappings بنجاح!",
"Error while clearing the mappings." : "خطأ أثناء مسح الارتباطات mappings.",
@@ -47,23 +47,29 @@
"User found and settings verified." : "تم العثور على المستخدم وتم التحقق من الإعدادات.",
"Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "ضع في اعتبارك تضييق نطاق البحث، لأنه يشمل مستخدمين كُثْرٌ، ولن يتمكن سوى أول واحد منهم من تسجيل الدخول.",
"An unspecified error occurred. Please check log and settings." : "حدث خطأ غير محدد. يرجى التحقق من السجل والإعدادات.",
- "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. يرجى التحقق من المضيف host، والمنفذ port، و حيثيّات الدخول credentials.",
+ "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. يرجى التحقق من المضيف host، والمنفذ port، وبيانات تسجيل الدخول.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "العنصر النائب placeholder ـ \"%u مُعرّف\". سيتم استبداله باسم دخول عند الاستعلام من LDAP/AD.",
"Please provide a login name to test against" : "يرجى تقديم اسم تسجيل الدخول لاختباره",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "تم تعطيل مربع المجموعة؛ لأن خادوم LDAP/AD لا يدعم خاصّيّة \"عضوٌ في\" memberOf.",
- "Password change rejected. Hint: " : "تمّ رفض تغيير كلمة المرور. إرشادُ:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "تم تعطيل مربع المجموعة؛ لأن خادم LDAP/AD لا يدعم خاصّيّة \"عضوٌ في\" memberOf.",
+ "Password change rejected. Hint: %s" : "تمّ رفض تغيير كلمة المرور. إرشاد: %s",
+ "Mandatory field \"%s\" left empty" : "الحقل الإلزامي \"%s\" تُرِك فارغاً",
+ "A password is given, but not an LDAP agent" : "تمّ إعطاء كلمة المرور لكن لم يتم إعطاء وكيل LDAP",
+ "No password is given for the user agent" : "لم يتم إعطاء كلمة المرور لوكيل المُستخدِم",
+ "No LDAP base DN was given" : "لم يتم إعطاء اسم الدليل الأساسي base DN لقائمة المستخدِمين LADP",
+ "User base DN is not a subnode of global base DN" : "الدليل الأساسي للمستخدِم User base DN ليس متفرعاً عن الدليل الأساسي العمومي Global base DN",
+ "Group base DN is not a subnode of global base DN" : "الدليل الأساسي للمجموعة Group base DN ليس متفرعاً عن الدليل الأساسي العمومي Global base DN",
"Please login with the new password" : "الرجاء تسجيل الدخول باستخدام كلمة المرور الجديدة",
"LDAP User backend" : "خلفية المستخدمين User backend من LDAP ",
"Your password will expire tomorrow." : "كلمة مرورك تنتهي صلاحيتها غداً.",
"Your password will expire today." : "كلمة مرورك تنتهي صلاحيتها اليوم.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %n أيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nيوم.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام.","سوف تنتهي صلاحية كلمة المرور الخاصة بك خلال %nأيام."],
- "LDAP/AD integration" : "مُكاملة LDAP/AD ",
+ "LDAP/AD integration" : "التكامل مع LDAP/AD ",
"LDAP Connection" : "الاتصال بدليل المستخدِمين LDAP ",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["تعذّر االارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s","تعذّر الارتباط مع تكوينات LDAP هذه: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه: %s","فشل البحث في تكوينات LDAP هذه:%s","فشل البحث في تكوينات LDAP هذه: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s","هنالك تكوينات LDAP غير نشطة: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)","الارتباط و البحث يعمل بشكل جيد على كل اتصالات LDAP التي تمّ تكوينها (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %s مع تكوين دليل المستخدمين LDAP هذا.","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s","فشل ارتباط %n مع تكوينات LDAP دليل المستخدمين: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s","فشل البحث عن %n تكوينات LDAP دليل المستخدمين: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["توجد %n تكوينات دليل مستخدمين LDAP غير نشطة:%s","بوجد تكوين. لدليل مستخدمين LDAP غير نشط: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s","توجد %n تكوينات دليل مستخدمين LDAP غير نشطة: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ %n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في توصيلة دليل المستخدمين المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ %n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ%n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ%n لأدلة المستخدمين LDAP المُكوَّنة (%s)","الارتباط و البحث يعمل كما يجب في كل التوصيلات الـ %n لأدلة المستخدمين LDAP المُكوَّنة (%s)"],
"Invalid LDAP UUIDs" : "مُعرِّفات UUID الخاصة بـ LDAP غير صحيحة",
"None found" : "لم يُمكن العثور على أي شيء",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "تم العثور على مُعرِّفات UUID غير صالحة لحسابات أو مجموعات LDAP. الرجاء مراجعة الإعداد \"تجاوز اكتشاف UUID ـ Override UUID detection\" في الجزء الخبير من تكوين LDAP ثم اعطِ الأمر السطري: \"occ ldap:update-uuid\" لتحديثها",
@@ -71,12 +77,12 @@
"> 1000 groups found" : "> 1000 مجموعة موجودة",
"> 1000 users found" : "> 1000 مستخدِم موجود",
"_%n user found_::_%n users found_" : ["تم العثور على %n مستخدمين","تم العثور على %n مستخدم","تم العثور على %n مستخدمين","تم العثور على %n مستخدمين","تم العثور على %n مستخدمين","تم العثور على %n مستخدمين"],
- "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "تعذر اكتشاف خاصّية الاسم المعروض للمستخدم user display name attribute. يرجى تحديدها بنفسك في الإعدادات المتقدمة لخادوم LDAP.",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "تعذر اكتشاف خاصّية اسم العرض للمستخدم user display name attribute. يرجى تحديدها بنفسك في الإعدادات المتقدمة لخادم LDAP.",
"Could not find the desired feature" : "تعذر العثور على الميزة المطلوبة",
"Invalid Host" : "مُضيف غير صالح",
"LDAP user and group backend" : "خلفية المستخدمين و المجموعات من LDAP",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "يتيح هذا التطبيق للمشرفين توصيل نكست كلاود بدليل المستخدمين المستند إلى LDAP.",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "يتيح هذا التطبيق للمشرفين توصيل نكست كلاود بدليل المستخدمين المستنِد إلى LDAP للمصادقة و توفير المستخدمين users، والمجموعات groups، و سمات المستخدمين user attributes. \nيمكن للمشرفين تكوين هذا التطبيق للاتصال بدليل LDAP واحد أو أكثر عبر واجهة LDAP. \nيمكن سحب سماتٍ مثل حصة المستخدم التخزينية، و البريد الإلكتروني، و التجسيدات الرمزية avatar، وعضوية المجموعات و غيرها إلى نكست كلاود باستخدام الاستعلامات والمرشحات المناسبة. \nيقوم المستخدم بتسجيل الدخول إلى نكست كلاود باستخدام حيثيات دخوله من LDAP أو AD، ويتم منحه حق الوصول بناءً على طلب المصادقة الذي تتم معالجته بواسطة خادوم LDAP أو AD. \nلا يقوم نكست كلاود بتخزين كلمات مرور LDAP أو AD، بل يستخدم حيثيّات المستخدم هذه للمصادقة ثم يستخدم مُعرّف الجلسة session كمُعرّف للمستخدم. \n\nيتوفر المزيد من المعلومات في وثائق مستخدم LDAP و Group Backend.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "يتيح هذا التطبيق لمسؤولي النظام توصيل نكست كلاود بدليل المستخدمين المستند إلى LDAP.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "يتيح هذا التطبيق لمسؤولي النظام توصيل نكست كلاود بدليل المستخدمين المستنِد إلى LDAP للمصادقة و توفير المستخدمين users، والمجموعات groups، و سمات المستخدمين user attributes. \nيمكن للمشرفين تكوين هذا التطبيق للاتصال بدليل LDAP واحد أو أكثر عبر واجهة LDAP. \nيمكن سحب سماتٍ مثل حصة المستخدم التخزينية، و البريد الإلكتروني، و التجسيدات الرمزية avatar، وعضوية المجموعات و غيرها إلى نكست كلاود باستخدام الاستعلامات والمرشحات المناسبة. \nيقوم المستخدم بتسجيل الدخول إلى نكست كلاود باستخدام حيثيات دخوله من LDAP أو AD، ويتم منحه حق الوصول بناءً على طلب المصادقة الذي تتم معالجته بواسطة خادم LDAP أو AD. \nلا يقوم نكست كلاود بتخزين كلمات مرور LDAP أو AD، بل يستخدم حيثيّات المستخدم هذه للمصادقة ثم يستخدم مُعرّف الجلسة session كمُعرّف للمستخدم. \n\nيتوفر المزيد من المعلومات في وثائق مستخدم LDAP و Group Backend.",
"Test Configuration" : "اختبر التكوين",
"Help" : "مساعدة",
"Groups meeting these criteria are available in %s:" : "المجموعات التي تلبي هذه المعايير متوفرة في %s:",
@@ -84,10 +90,10 @@
"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." : "يحدد الفلتر أي مجموعات من LDAP سوف يكون لها حق الوصول إلى التطبيق %s.",
+ "Selected groups" : "المجموعات المحددة",
+ "Edit LDAP Query" : "تحرير استعلام من خادم LDAP",
+ "LDAP Filter:" : "تصفية LDAP:",
+ "The filter specifies which LDAP groups shall have access to the %s instance." : "يحدد عامل التصفية أي مجموعات من LDAP سوف يكون لها حق الوصول إلى التطبيق %s.",
"Verify settings and count the groups" : "تحقق من الإعدادات و احصر عدد المجموعات",
"When logging in, %s will find the user based on the following attributes:" : "عند تسجيل الدخول، %sسوف تجد المستخدم بناءً على الخصائص التالية:",
"LDAP/AD Username:" : "اسم مستخدم LDAP/AD ـ : ",
@@ -95,23 +101,23 @@
"LDAP/AD Email Address:" : "عنوان البريد الالكتروني LDAP/AD ـ :",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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\"",
+ "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" : "اختبار اسم تسجيل الدخول",
- "Attempts to receive a DN for the given loginname and the current login filter" : "محاولة تلقّي الاسم المميز DN لاسم تسجيل الدخول المحدد و فلتر تسجيل الدخول الحالي",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "محاولة تلقّي الاسم المميز DN لاسم تسجيل الدخول المحدد و عامل تصفية تسجيل الدخول الحالي",
"Verify settings" : "التحقُّق من الإعدادات",
- "%s. Server:" : "%s. خادوم:",
- "Add a new configuration" : "إضافة تهيئة جديدة",
+ "%s. Server:" : "%s. خادم:",
+ "Add a new configuration" : "إضافة تكوين جديد",
"Copy current configuration into new directory binding" : "نسخ التهيئة الحالية إلى دليل جديد مرتبط",
"Delete the current configuration" : "حذف التهيئة الحالية",
"Host" : "المضيف",
- "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "يمكنك التغاضي عن البروتوكول، ما لم يكن SSL لازماً. إذا كان الأمر كذلك، فابدأ بـ ldaps",
+ "You can omit the protocol, unless you require SSL. If so, 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. للوصول مجهول الهوية anonymous access، اترك خانتيْ الاسم المميز وكلمة المرور فارغتين.",
"Password" : "كلمة المرور",
"For anonymous access, leave DN and Password empty." : "للوصول المجهول anonymous access، اترك خانتيْ الاسم المميز وكلمة المرور فارغتين.",
- "Save Credentials" : "حفظ حيثيّات الدخول credentials",
+ "Save Credentials" : "حفظ بيانات تسجيل الدخول",
"One Base DN per line" : "اسم مميز واحد أساسي Base DN لكل سطر",
"You can specify Base DN for users and groups in the Advanced tab" : "يمكنك تحديد الاسم المميز الأساسي Base DN للمستخدمين والمجموعات من علامة تبويب الإعدادات المتقدمة",
"Detect Base DN" : "اكتشاف الاسم المميز الأساسي Base DN",
@@ -120,36 +126,36 @@
"Manually enter LDAP filters (recommended for large directories)" : "الإدخال اليدوي لفلاتر بروتوكول LDAP (يُنصح به في حالة الأدلة الكبيرة)",
"Listing and searching for users is constrained by 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." : "أكثر فئات الكائنات شيوعًا بالنسبة للمستخدمين هي: الشخص التنظيمي \"organizationalPerson\" والشخص \"person\" والمستخدم \"user\"وinetOrgPerson. إذا لم تكن متأكدًا من فئة الكائن التي تريد تحديدها، فيرجى استشارة مسئول الدليل الخاص بك.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "يُحدِّد الفلتر أيّ مستخدمي LDAP يمكنه الوصول إلى الخادوم %s.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "يُحدِّد عامل التصفية أيّ مستخدمي LDAP يمكنه الوصول إلى الخادم %s.",
"Verify settings and count users" : "التّحقق من الإعدادات وعدد المستخدمين",
- "Saving" : "الحفظ جارٍ ...",
+ "Saving" : "الحفظ جارٍ...",
"Back" : "رجوع",
- "Continue" : "مُتابعة",
+ "Continue" : "متابعة",
"Please renew your password." : "الرجاء تجديد كلمة مرورك.",
"An internal error occurred." : "حدث خطأ داخلي.",
- "Please try again or contact your administrator." : "حاول مجددا أو تواصل مع مشرف النظام.",
+ "Please try again or contact your administrator." : "حاول مجددا أو تواصل مع مسؤول النظام.",
"Current password" : "كلمة المرور الحالية",
"New password" : "كلمة المرور الجديدة",
"Renew password" : "تجديد كلمة المرور",
"Wrong password." : "كلمة مرور خاطئة.",
"Cancel" : "إلغاء",
- "Server" : "خادوم",
+ "Server" : "خادم",
"Users" : "المستخدمين",
"Login Attributes" : "خصائص تسجيل الدخول",
"Groups" : "مجموعات",
"Expert" : "خبير",
"Advanced" : "متقدمة",
- "<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> وِحدة PHP LDAP غير مُنصبّة؛ لذا فإن الخلفية لن تعمل. يرجى طلب تنصيبها من مُشرف النظام.",
+ "<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> وِحدة PHP LDAP غير مُنصبّة؛ لذا فإن الخلفية لن تعمل. يرجى طلب تنصيبها من مسؤول النظام.",
"Connection Settings" : "إعدادات الربط",
"Configuration Active" : "الإعداد نشط",
"When unchecked, this configuration will be skipped." : "عندما لا يتم تحديده، سوف يتم تخطي هذه التهيئة.",
"Backup (Replica) Host" : "مضيف النسخ الاحتياطي (طِبقَ الأصل)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "توفير مضيف احتياطي اختياري. يجب أن يكون نسخة طبق الأصل من خادوم LDAP/AC.",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "توفير مضيف احتياطي اختياري. يجب أن يكون نسخة طبق الأصل من خادم LDAP/AC.",
"Backup (Replica) Port" : "منفذ النسخ الاحتياطي (طِبقَ الأصل)",
- "Disable Main Server" : "تعطيل الخادوم الرئيسي",
- "Only connect to the replica server." : "متصل فقط بالخادوم الاحتياطي.",
+ "Disable Main Server" : "تعطيل الخادم الرئيسي",
+ "Only connect to the replica server." : "متصل فقط بالخادم الاحتياطي.",
"Turn off SSL certificate validation." : "إيقاف تشغيل التحقق من صحة شهادة SSL.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "لا يوصي به، استخدمه للاختبار فقط! إذا كان الاتصال يعمل فقط مع هذا الخيار، فقم باستيراد شهادة SSL لخادوم LDAP في خادومك%s.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "لا يوصي به، استخدمه للاختبار فقط! إذا كان الاتصال يعمل فقط مع هذا الخيار، فقم باستيراد شهادة SSL لخادم LDAP في الخادم %s.",
"Cache Time-To-Live" : "مدة صلاحية ذاكرة التخزين المؤقت cache",
"in seconds. A change empties the cache." : "خلال ثوان. يؤدي التغيير إلى إفراغ ذاكرة التخزين المؤقت cache.",
"Directory Settings" : "إعدادات الدليل",
@@ -175,43 +181,45 @@
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "عند التشغيل، يتم دعم المجموعات التي تحتوي على مجموعات. (تعمل فقط إذا كان تحديد عضو المجموعة يحتوي على اسم مميز DN).",
"Paging chunksize" : "حجم رزم الصفحات Paging chunksize",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "يتم استخدام حجم الرِّزمَة لعمليات البحث المقسمة إلى صفحات في LDAP؛ والتي قد تعطي نتائج ضخمة تبعاً لعدد المستخدمين و المجموعات. (الضبط علي 0 يؤدي إلى تعطيل هذا الأسلوب من البحث في تلك الحالات.)",
- "Enable LDAP password changes per user" : "تمكين تغيير كلمة المرور لكل مستخدم علي خادوم LDAP ",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "يتيح خادوم بروتوكول LDAP للمستخدمين تغيير كلمة المرور الخاصة بهم والسماح للمشرفين المتميزين super admin ومسؤولي المجموعات بتغيير كلمة مرور مستخدمي خادومهم. وتعمل هذه الخاصية عندما يتم تهيئة وضبط سياسات التحكم في الوصول على خادوم LDAP وفقًا لذلك. وحيث أن كلمات المرور يتم إرسالها فى صورة نصٍّ عادي إلى خادوم LDAP، فيجب استخدام تشفير النقل وضبط تجزئة كلمة المرور على خادوم LDAP.",
- "(New password is sent as plain text to LDAP)" : "(يتم إرسال كلمة المرور الجديدة كنص عادي إلى خادوم LDAP )",
+ "Enable LDAP password changes per user" : "تمكين تغيير كلمة المرور لكل مستخدم علي خادم LDAP ",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "يتيح خادم بروتوكول LDAP للمستخدمين تغيير كلمة المرور الخاصة بهم والسماح لمسؤولي النظام المتميزين ومسؤولي المجموعات بتغيير كلمة مرور مستخدمي الخادم. وتعمل هذه الخاصية عندما يتم تهيئة وضبط سياسات التحكم في الوصول على خادم LDAP وفقًا لذلك. وحيث أن كلمات المرور يتم إرسالها فى صورة نصٍّ عادي إلى خادم LDAP، فيجب استخدام تشفير النقل وضبط تجزئة كلمة المرور على خادم LDAP.",
+ "(New password is sent as plain text to LDAP)" : "(يتم إرسال كلمة المرور الجديدة كنص عادي إلى خادم LDAP )",
"Default password policy DN" : "سياسة الاسم المميز لكلمة المرورالافتراضية",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "سياسة الاسم المميز DN لكلمة المرورالافتراضية التي سيتم استخدامها لمعالجة انتهاء صلاحية كلمة المرور تعمل فقط عندما يتم تمكين تغيير كلمة مرور خادوم LDAP لكل مستخدم ويكون مدعومًا فقط بواسطة OpenLDAP. H. أترُكه فارغًا لتعطيل معالجة انتهاء صلاحية كلمة المرور.",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "سياسة الاسم المميز DN لكلمة المرورالافتراضية التي سيتم استخدامها لمعالجة انتهاء صلاحية كلمة المرور تعمل فقط عندما يتم تمكين تغيير كلمة مرور خادم LDAP لكل مستخدم ويكون مدعومًا فقط بواسطة OpenLDAP. H. أترُكه فارغًا لتعطيل معالجة انتهاء صلاحية كلمة المرور.",
"Special Attributes" : "خصائص خاصة",
"Quota Field" : "حقل الحِّصّة التخزينية",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "اتركه فارغًا للحصة التخزينية الافتراضية للمستخدم. خلاف ذلك، حدد خاصّية خادوم LDAP/AD.",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "اتركه فارغًا للحصة التخزينية الافتراضية للمستخدم. خلاف ذلك، حدد خاصّية خادم LDAP/AD.",
"Quota Default" : "الحصة الافتراضية",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "تخطِّي الحصة الافتراضية لمستخدمي خادوم LDAP الذين ليس لديهم حصة محددة في حقل الحصة.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "تخطِّي الحصة الافتراضية لمستخدمي خادم LDAP الذين ليس لديهم حصة محددة في حقل الحصة.",
"Email Field" : "خانة البريد الإلكتروني",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "قُم بتعيين البريد الإلكتروني للمستخدمين من خاصّية خادوم LDAP الخاصة بهم. اتركه فارغًا للتصرُّف الافتراضي.",
- "User Home Folder Naming Rule" : "قاعدة تسمية المجلد الرئيسي للمستخدم User home folder",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "قُم بتعيين البريد الإلكتروني للمستخدمين من خاصّية خادم LDAP الخاصة بهم. اتركه فارغًا للتصرُّف الافتراضي.",
+ "User Home Folder Naming Rule" : "قاعدة تسمية المجلد الرئيسي للمستخدم",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "أترُكه فارغًا لاسم المستخدم (افتراضي). خلاف ذلك، حدِّد خاصّية LDAP/AD.",
"\"$home\" Placeholder Field" : "حقل العنصر النائب \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "سيتم استبدال $home في تكوين وحدة التخزين الخارجية بقيمة الخاصّية المحددة",
"User Profile Attributes" : "خصائص الملف الشخصي للمستخدِم",
"Phone Field" : "خانة الهاتف",
"User profile Phone will be set from the specified attribute" : "خانة الهاتف في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
- "Website Field" : "خانة موقع الوب",
- "User profile Website will be set from the specified attribute" : "خانة موقع الوب في الملف الشخصي للمستخدِم سيتم تعيينها من الخاصّية المُحدّدة",
+ "Website Field" : "خانة موقع الويب",
+ "User profile Website will be set from the specified attribute" : "خانة موقع الويب في الملف الشخصي للمستخدم سيتم تعيينها من الخاصّية المحددة",
"Address Field" : "خانة العنوان",
"User profile Address will be set from the specified attribute" : "خانة العنوان في الملف الشخصي للمستخدم سيتم تعيينها من الخاصّية المُحدّدة",
"Twitter Field" : "خانة حساب تويتر",
"User profile Twitter will be set from the specified attribute" : "خانة حساب تويتر في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
- "Fediverse Field" : "خانة حساب الـ\"فيدي فيرس\" Fediverse",
- "User profile Fediverse will be set from the specified attribute" : "خانة حساب الـ\"فيدي فيرس\" Fediverse في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
+ "Fediverse Field" : "خانة حساب Fediverse",
+ "User profile Fediverse will be set from the specified attribute" : "خانة حساب Fediverse في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Organisation Field" : "خانة المؤسسة organization",
"User profile Organisation will be set from the specified attribute" : "خانة المنظمة organization في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Role Field" : "خانة الوظيفة role",
"User profile Role will be set from the specified attribute" : "خانة الوظيفة role في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
- "Headline Field" : "حقل الترويسة headline",
- "User profile Headline will be set from the specified attribute" : "خانة الترويسة headline في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
+ "Headline Field" : "حقل العنوان",
+ "User profile Headline will be set from the specified attribute" : "خانة العنوان في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Biography Field" : "خانة السيرة الذاتية biography",
"User profile Biography will be set from the specified attribute" : "خانة السيرة الذاتية biography في الملف الشخصي للمستخدم سوف يتم تعيينها من الخاصّية المُحدّدة",
"Birthdate Field" : "حقل تاريخ الميلاد",
"User profile Date of birth will be set from the specified attribute" : "تاريخ الميلاد في ملف المستخدم سيتم ملؤه من الخانة المحددة",
+ "Pronouns Field" : "حقل الضمائر",
+ "User profile Pronouns will be set from the specified attribute" : "سيتم تعيين ضمائر ملف تعريف المستخدم من السمة المحددة",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "بشكل افتراضي، سيتم إنشاء اسم المستخدم الداخلي internal username من خاصّية المُغرّف المُميّز الشامل UUID. هذا يضمن أن اسم المستخدم فريدٌ ولا يلزمه أي تحويل في الأحرف. اسم المستخدم الداخلي مُقيّدٌ باستخدام هذه الأحرف فقط: [a-zA-Z0-9 _. @ -]. غير هذه الأحرف يقع استبدالها بما يقابلها من أحرف الآسكي ASCII أو - ببساطة - يقع حذفها. في حالة وقوع تضاربٍِ، سيتم إلحاق عدد بالاسم. \n\nيُستخدم هذا الاسم الداخلي لتعريف المستخدم داخليًا. وهو أيضًا الاسم الافتراضي للمجلد الرئيسي للمستخدم. و هو أيضًا جزء من عناوين remote URL القَصِيّة كما في خدمات DAV على سبيل المثال. باستخدام هذا الإعداد ، يمكن تجاوز السلوك الافتراضي. سيكون للتغييرات تأثير فقط على مستخدمي LDAP المُعيّنين حديثًا (المُضافين). أترُكه فارغًا للسلوك الافتراضي.",
"Internal Username Attribute:" : "خاصّية اسم المستخدم الداخلي:",
@@ -220,9 +228,9 @@
"UUID Attribute for Users:" : "خاصية المعرف الفريد الشامل للمستخدمين UUID:",
"UUID Attribute for Groups:" : "خاصية المعرف الفريد الشامل للمجموعات UUID:",
"Username-LDAP User Mapping" : "الربط بين اسم المستخدم في LDAP و المستخدم",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "تُستخدم أسماء المستخدمين لتخزين وتخصيص البيانات التعريف الوصفية. من أجل تحديد المستخدمين والتعرف عليهم بدقة، سيكون لكل مستخدم على خادوم LDAP اسم مستخدم داخلي. يتطلب هذا ربطاً mapping بين اسم المستخدم و مستخدم خادوم LDAP. يتم تعيين اسم المستخدم الذي تم إنشاؤه إلى المعرف الفريد الشامل \"UUID\" لمستخدم LDAP. بالإضافة إلى ذلك، يتم تخزين الاسم المميز DN مؤقتًا أيضًا لتقليل تفاعل LDAP، ولكنه لا يستخدم لتحديد الهوية. وعند تغير الاسم المميز يتم العثور على التغييرات. ويتم استخدام اسم المستخدم الداخلي في كل مكان. إلغاء الربط سيكون له آثار متبقية في كل مكان. إلغاء الربط يؤثر على جميع تكوينات LDAP! لا تقم مطلقًا بإلغاء الربط في بيئة الإنتاج. فقط في مرحلة الاختبار أو المرحلة التجريبية.",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "تُستخدم أسماء المستخدمين لتخزين وتخصيص البيانات التعريف الوصفية. من أجل تحديد المستخدمين والتعرف عليهم بدقة، سيكون لكل مستخدم على خادم LDAP اسم مستخدم داخلي. يتطلب هذا ربطاً mapping بين اسم المستخدم و مستخدم خادم LDAP. يتم تعيين اسم المستخدم الذي تم إنشاؤه إلى المعرف الفريد الشامل \"UUID\" لمستخدم LDAP. بالإضافة إلى ذلك، يتم تخزين الاسم المميز DN مؤقتًا أيضًا لتقليل تفاعل LDAP، ولكنه لا يستخدم لتحديد الهوية. وعند تغير الاسم المميز يتم العثور على التغييرات. ويتم استخدام اسم المستخدم الداخلي في كل مكان. إلغاء الربط سيكون له آثار متبقية في كل مكان. إلغاء الربط يؤثر على جميع تكوينات LDAP! لا تقم مطلقًا بإلغاء الربط في بيئة الإنتاج. فقط في مرحلة الاختبار أو المرحلة التجريبية.",
"Clear Username-LDAP User Mapping" : "إلغاء الربط بين اسم المستخدم في LDAP و المستخدم",
"Clear Groupname-LDAP Group Mapping" : "إلغاء الربط بين اسم المجموعة في LDAP و المجموعة",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "المُعرّف الفريد الشامل UUID لمستخدمي و مجموعات LDAP الموجود غير صحيح. الرجاء مراجعة إعدادات \"تجاوز اكتشاف UUID\"ـ Override UUID detection في القسم المتقدم Expert part من تكوين LDAP واستخدم \"occ ldap: update-uuid\" لتحديثها."
+ "Invalid configuration. Please have a look at the logs for further details." : "تكوين غير صحيح. يرجى الرجوع إلى سجلات الأنشطة لمزيد من التفاصيل."
},"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/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js
deleted file mode 100644
index 2561ee32f6b..00000000000
--- a/apps/user_ldap/l10n/ast.js
+++ /dev/null
@@ -1,152 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Fallu al llimpiar los mapeos.",
- "Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor",
- "Valid configuration, connection established!" : "¡Configuración válida, afitóse la conexón!",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración non válida. Écha-yos un güeyu a los rexistros pa más detalles, por favor.",
- "No action specified" : "Nun s'especificó l'aición",
- "No configuration specified" : "Nun s'especificó la configuración",
- "No data specified" : "Nun s'especificaron los datos",
- " Could not set configuration %s" : "Nun pudo afitase la configuración %s",
- "Action does not exist" : "L'acción nun esiste",
- "Renewing …" : "Renovando...",
- "Very weak password" : "Contraseña perfeble",
- "Weak password" : "Contraseña feble",
- "So-so password" : "Contraseña normalina",
- "Good password" : "Contraseña bona",
- "Strong password" : "Contraseña fuerte",
- "The Base DN appears to be wrong" : "La base DN paez tar mal",
- "Testing configuration…" : "Probando configuración...",
- "Configuration incorrect" : "Configuración incorreuta",
- "Configuration incomplete" : "Configuración incompleta",
- "Configuration OK" : "Configuración correuta",
- "Select groups" : "Esbillar grupos",
- "Select object classes" : "Esbillar les clases d'oxetu",
- "Please check the credentials, they seem to be wrong." : "Por favor, compruebe les credenciales, que paecen tar mal.",
- "Please specify the port, it could not be auto-detected." : "Por favor especifica'l puertu, nun puede ser detectáu automáticamente .",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN nun puede ser detectada automáticamente, por favor revisa les credenciales, host yá'l puertu.",
- "Could not detect Base DN, please enter it manually." : "Nun se detectó base DN, por favor introduzla manualmente .",
- "{nthServer}. Server" : "{nthServer}. Sirvidor",
- "No object found in the given Base DN. Please revise." : "Nun s'atopó nengún oxetu na Base DN dada. Por favor, revísalo.",
- "More than 1,000 directory entries available." : "Más de 1.000 entraes de directoriu disponibles.",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Asocedió un erru. Por favor, compruebe la Base DN , amás de la configuración de conexón y les credenciales.",
- "Do you really want to delete the current Server Configuration?" : "¿Daveres que quies desaniciar la configuración actual del sirvidor?",
- "Confirm Deletion" : "Confirmar desaniciu",
- "Mappings cleared successfully!" : "¡Asignaciones borraes correutamente!",
- "Error while clearing the mappings." : "Fallu mientres desaniciaben les asignaciones.",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Nun s'almite l'enllaz anónimu. Por favor apurre un usuariu DN y contraseña.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "Erru d'operaciones LDAP . Enllaz anónimu nun s'almite.",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.",
- "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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?",
- "Select attributes" : "Esbillar atributos",
- "User found and settings verified." : "Usuariu atopáu y la configuración verificada.",
- "An unspecified error occurred. Please check log and settings." : "Asocedió un fallu non especificáu. Comprueba'l rexistru y los axustes, por favor.",
- "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.",
- "Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra",
- "Your password will expire today." : "Güei caduca la to contraseña.",
- "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada",
- "Invalid Host" : "Agospiu non válidu",
- "Test Configuration" : "Configuración de prueba",
- "Help" : "Ayuda",
- "Groups meeting these criteria are available in %s:" : "Los grupos que cumplen estos criterios tán disponibles en %s:",
- "Only these object classes:" : "Namái d'estes clases d'oxetu:",
- "Only from these groups:" : "Namái d'estos grupos:",
- "Search groups" : "Esbillar grupos",
- "Available groups" : "Grupos disponibles",
- "Selected groups" : "Grupos seleicionaos",
- "Edit LDAP Query" : "Editar consulta LDAP",
- "LDAP Filter:" : "Filtru LDAP:",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtru especifica qué grupos LDAP van tener accesu a %s.",
- "Verify settings and count the groups" : "Verificar axustes y contar los grupos",
- "When logging in, %s will find the user based on the following attributes:" : "Al empecipiar sesión, %s atópase l'usuariu en función de los siguientes atributos :",
- "Other Attributes:" : "Otros atributos:",
- "Test Loginname" : "Preba de Nome d'Aniciu de Sesión",
- "Verify settings" : "Comprobar los axustes",
- "%s. Server:" : "%s. Sirvidor:",
- "Copy current configuration into new directory binding" : "Copiar configuración actual nel nuevu directoriu obligatoriu",
- "Delete the current configuration" : "Desaniciar la configuración actual",
- "Host" : "Equipu",
- "Port" : "Puertu",
- "Detect Port" : "Detectar Puertu",
- "User DN" : "DN usuariu",
- "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." : "El DN del usuariu veceru col que va facese l'asociación, p.ex. uid=axente,dc=exemplu,dc=com. P'accesu anónimu, dexa DN y contraseña baleros.",
- "Password" : "Contraseña",
- "For anonymous access, leave DN and Password empty." : "Pa un accesu anónimu, dexar el DN y la contraseña baleros.",
- "One Base DN per line" : "Un DN Base por llinia",
- "You can specify Base DN for users and groups in the Advanced tab" : "Pues especificar el DN base pa usuarios y grupos na llingüeta Avanzáu",
- "Detect Base DN" : "Detectar Base DN",
- "Test Base DN" : "Probar Base DN",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automátiques de LDAP. Meyor pa grandes configuraciones, pero rique mayor conocimientu de LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Inxerta manualmente los filtros de LDAP (recomendáu pa direutorios llargos)",
- "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." : "Les clases d'oxetos más comunes pa los usuarios d'Internet son organizationalPerson, persona, usuariu y inetOrgPerson . Si nun ta seguro de qué clase d'oxetu escoyer, por favor consulte al so alministrador de directorios.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "El filtru especifica qué usuarios LDAP puen tener accesu a %s.",
- "Verify settings and count users" : "Comprobar la configuración y usuarios de recuentu",
- "Saving" : "Guardando",
- "Back" : "Atrás",
- "Continue" : "Continuar",
- "Please renew your password." : "Renueva la to contraseña, por favor.",
- "An internal error occurred." : "Asocedió un fallu internu.",
- "Please try again or contact your administrator." : "Volvi tentalo o contauta col to alministrador, por favor.",
- "Current password" : "Contraseña actual",
- "New password" : "Contraseña nueva",
- "Renew password" : "Renovar contraseña",
- "Wrong password." : "Contraseña incorreuta.",
- "Cancel" : "Encaboxar",
- "Server" : "Sirvidor",
- "Users" : "Usuarios",
- "Login Attributes" : "Los atributos d'aniciu de sesión",
- "Groups" : "Grupos",
- "Expert" : "Espertu",
- "Advanced" : "Avanzáu",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avisu:</b> El módulu LDAP de PHP nun ta instaláu, el sistema nun va funcionar. Por favor consulta al alministrador del sistema pa instalalu.",
- "Connection Settings" : "Axustes de conexón",
- "Configuration Active" : "Configuración activa",
- "When unchecked, this configuration will be skipped." : "Cuando nun tea conseñáu, saltaráse esta configuración.",
- "Backup (Replica) Host" : "Sirvidor de copia de seguranza (Réplica)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Dar un sirvidor de copia de seguranza opcional. Tien de ser una réplica del sirvidor principal LDAP / AD.",
- "Backup (Replica) Port" : "Puertu pa copies de seguranza (Réplica)",
- "Disable Main Server" : "Deshabilitar sirvidor principal",
- "Only connect to the replica server." : "Coneutar namái col sirvidor de réplica.",
- "Turn off SSL certificate validation." : "Apagar la validación del certificáu SSL.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nun se recomienda, ¡úsalu namái pa pruebes! Si la conexón namái funciona con esta opción, importa'l certificáu SSL del sirvidor LDAP nel to sirvidor %s.",
- "Cache Time-To-Live" : "Cache Time-To-Live",
- "in seconds. A change empties the cache." : "en segundos. Un cambéu vacia la caché.",
- "Directory Settings" : "Axustes del direutoriu",
- "User Display Name Field" : "Campu de nome d'usuariu a amosar",
- "The LDAP attribute to use to generate the user's display name." : "El campu LDAP a usar pa xenerar el nome p'amosar del usuariu.",
- "2nd User Display Name Field" : "2ª usuariu amuesa Nome del campu",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributu LDAP que s'amesta al nome de visualización ente paréntesis. Los resultaos en, por exemplu, »John Doe (john.doe@example.org)«.",
- "Base User Tree" : "Árbol base d'usuariu",
- "One User Base DN per line" : "Un DN Base d'Usuariu por llinia",
- "User Search Attributes" : "Atributos de la gueta d'usuariu",
- "Optional; one attribute per line" : "Opcional; un atributu por llinia",
- "Group Display Name Field" : "Campu de nome de grupu a amosar",
- "The LDAP attribute to use to generate the groups's display name." : "El campu LDAP a usar pa xenerar el nome p'amosar del grupu.",
- "Base Group Tree" : "Árbol base de grupu",
- "One Group Base DN per line" : "Un DN Base de Grupu por llinia",
- "Group Search Attributes" : "Atributos de gueta de grupu",
- "Group-Member association" : "Asociación Grupu-Miembru",
- "Dynamic Group Member URL" : "URL Dinámica de Grupu d'Usuarios",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "L'atributu LDAP que nos oxetos de grupu contien una gueta de URLs de LDAP que determina qué oxetos pertenecen al grupu. (Un axuste vacíu desanicia la funcionalidá dinámica de pertenencia al grupu.)",
- "Nested Groups" : "Grupos añeraos",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Cuando s'active, van permitise grupos que contengan otros grupos (namái funciona si l'atributu de miembru de grupu contién DNs).",
- "Paging chunksize" : "Tamañu de los fragmentos de paxinación",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamañu de los fragmentos usáu pa busques LDAP paxinaes que puen devolver resultaos voluminosos, como enubmeración d'usuarios o de grupos. (Si s'afita en 0, van deshabilitase les busques LDAP paxinaes neses situaciones.)",
- "(New password is sent as plain text to LDAP)" : "(La contraseña únviase como testu planu a LDAP)",
- "Special Attributes" : "Atributos especiales",
- "Quota Field" : "Cuota",
- "Quota Default" : "Cuota por defeutu",
- "Email Field" : "E-mail",
- "User Home Folder Naming Rule" : "Regla pa la carpeta Home d'usuariu",
- "Internal Username" : "Nome d'usuariu internu",
- "Internal Username Attribute:" : "Atributu Nome d'usuariu Internu:",
- "Override UUID detection" : "Sobrescribir la deteición 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." : "Por defeutu, l'atributu UUID autodetéutase. Esti atributu úsase pa identificar induldablemente usuarios y grupos LDAP. Arriendes, el nome d'usuariu internu va crease en bas al UUID, si nun s'especificó otru comportamientu arriba. Pues sobrescribir la configuración y pasar un atributu de la to eleición. Tienes d'asegurate de que l'atributu de la to eleición seya accesible polos usuarios y grupos y ser únicu. Déxalu en blanco pa usar el comportamientu por defeutu. Los cambeos van tener efeutu namái nos usuarios y grupos de LDAP mapeaos (amestaos) recién.",
- "UUID Attribute for Users:" : "Atributu UUID pa usuarios:",
- "UUID Attribute for Groups:" : "Atributu UUID pa Grupos:",
- "Username-LDAP User Mapping" : "Asignación del Nome d'usuariu LDAP",
- "Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json
deleted file mode 100644
index 8d3e332c21f..00000000000
--- a/apps/user_ldap/l10n/ast.json
+++ /dev/null
@@ -1,150 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Fallu al llimpiar los mapeos.",
- "Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor",
- "Valid configuration, connection established!" : "¡Configuración válida, afitóse la conexón!",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración non válida. Écha-yos un güeyu a los rexistros pa más detalles, por favor.",
- "No action specified" : "Nun s'especificó l'aición",
- "No configuration specified" : "Nun s'especificó la configuración",
- "No data specified" : "Nun s'especificaron los datos",
- " Could not set configuration %s" : "Nun pudo afitase la configuración %s",
- "Action does not exist" : "L'acción nun esiste",
- "Renewing …" : "Renovando...",
- "Very weak password" : "Contraseña perfeble",
- "Weak password" : "Contraseña feble",
- "So-so password" : "Contraseña normalina",
- "Good password" : "Contraseña bona",
- "Strong password" : "Contraseña fuerte",
- "The Base DN appears to be wrong" : "La base DN paez tar mal",
- "Testing configuration…" : "Probando configuración...",
- "Configuration incorrect" : "Configuración incorreuta",
- "Configuration incomplete" : "Configuración incompleta",
- "Configuration OK" : "Configuración correuta",
- "Select groups" : "Esbillar grupos",
- "Select object classes" : "Esbillar les clases d'oxetu",
- "Please check the credentials, they seem to be wrong." : "Por favor, compruebe les credenciales, que paecen tar mal.",
- "Please specify the port, it could not be auto-detected." : "Por favor especifica'l puertu, nun puede ser detectáu automáticamente .",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN nun puede ser detectada automáticamente, por favor revisa les credenciales, host yá'l puertu.",
- "Could not detect Base DN, please enter it manually." : "Nun se detectó base DN, por favor introduzla manualmente .",
- "{nthServer}. Server" : "{nthServer}. Sirvidor",
- "No object found in the given Base DN. Please revise." : "Nun s'atopó nengún oxetu na Base DN dada. Por favor, revísalo.",
- "More than 1,000 directory entries available." : "Más de 1.000 entraes de directoriu disponibles.",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Asocedió un erru. Por favor, compruebe la Base DN , amás de la configuración de conexón y les credenciales.",
- "Do you really want to delete the current Server Configuration?" : "¿Daveres que quies desaniciar la configuración actual del sirvidor?",
- "Confirm Deletion" : "Confirmar desaniciu",
- "Mappings cleared successfully!" : "¡Asignaciones borraes correutamente!",
- "Error while clearing the mappings." : "Fallu mientres desaniciaben les asignaciones.",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Nun s'almite l'enllaz anónimu. Por favor apurre un usuariu DN y contraseña.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "Erru d'operaciones LDAP . Enllaz anónimu nun s'almite.",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.",
- "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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?",
- "Select attributes" : "Esbillar atributos",
- "User found and settings verified." : "Usuariu atopáu y la configuración verificada.",
- "An unspecified error occurred. Please check log and settings." : "Asocedió un fallu non especificáu. Comprueba'l rexistru y los axustes, por favor.",
- "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.",
- "Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra",
- "Your password will expire today." : "Güei caduca la to contraseña.",
- "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada",
- "Invalid Host" : "Agospiu non válidu",
- "Test Configuration" : "Configuración de prueba",
- "Help" : "Ayuda",
- "Groups meeting these criteria are available in %s:" : "Los grupos que cumplen estos criterios tán disponibles en %s:",
- "Only these object classes:" : "Namái d'estes clases d'oxetu:",
- "Only from these groups:" : "Namái d'estos grupos:",
- "Search groups" : "Esbillar grupos",
- "Available groups" : "Grupos disponibles",
- "Selected groups" : "Grupos seleicionaos",
- "Edit LDAP Query" : "Editar consulta LDAP",
- "LDAP Filter:" : "Filtru LDAP:",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtru especifica qué grupos LDAP van tener accesu a %s.",
- "Verify settings and count the groups" : "Verificar axustes y contar los grupos",
- "When logging in, %s will find the user based on the following attributes:" : "Al empecipiar sesión, %s atópase l'usuariu en función de los siguientes atributos :",
- "Other Attributes:" : "Otros atributos:",
- "Test Loginname" : "Preba de Nome d'Aniciu de Sesión",
- "Verify settings" : "Comprobar los axustes",
- "%s. Server:" : "%s. Sirvidor:",
- "Copy current configuration into new directory binding" : "Copiar configuración actual nel nuevu directoriu obligatoriu",
- "Delete the current configuration" : "Desaniciar la configuración actual",
- "Host" : "Equipu",
- "Port" : "Puertu",
- "Detect Port" : "Detectar Puertu",
- "User DN" : "DN usuariu",
- "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." : "El DN del usuariu veceru col que va facese l'asociación, p.ex. uid=axente,dc=exemplu,dc=com. P'accesu anónimu, dexa DN y contraseña baleros.",
- "Password" : "Contraseña",
- "For anonymous access, leave DN and Password empty." : "Pa un accesu anónimu, dexar el DN y la contraseña baleros.",
- "One Base DN per line" : "Un DN Base por llinia",
- "You can specify Base DN for users and groups in the Advanced tab" : "Pues especificar el DN base pa usuarios y grupos na llingüeta Avanzáu",
- "Detect Base DN" : "Detectar Base DN",
- "Test Base DN" : "Probar Base DN",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita peticiones automátiques de LDAP. Meyor pa grandes configuraciones, pero rique mayor conocimientu de LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Inxerta manualmente los filtros de LDAP (recomendáu pa direutorios llargos)",
- "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." : "Les clases d'oxetos más comunes pa los usuarios d'Internet son organizationalPerson, persona, usuariu y inetOrgPerson . Si nun ta seguro de qué clase d'oxetu escoyer, por favor consulte al so alministrador de directorios.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "El filtru especifica qué usuarios LDAP puen tener accesu a %s.",
- "Verify settings and count users" : "Comprobar la configuración y usuarios de recuentu",
- "Saving" : "Guardando",
- "Back" : "Atrás",
- "Continue" : "Continuar",
- "Please renew your password." : "Renueva la to contraseña, por favor.",
- "An internal error occurred." : "Asocedió un fallu internu.",
- "Please try again or contact your administrator." : "Volvi tentalo o contauta col to alministrador, por favor.",
- "Current password" : "Contraseña actual",
- "New password" : "Contraseña nueva",
- "Renew password" : "Renovar contraseña",
- "Wrong password." : "Contraseña incorreuta.",
- "Cancel" : "Encaboxar",
- "Server" : "Sirvidor",
- "Users" : "Usuarios",
- "Login Attributes" : "Los atributos d'aniciu de sesión",
- "Groups" : "Grupos",
- "Expert" : "Espertu",
- "Advanced" : "Avanzáu",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Avisu:</b> El módulu LDAP de PHP nun ta instaláu, el sistema nun va funcionar. Por favor consulta al alministrador del sistema pa instalalu.",
- "Connection Settings" : "Axustes de conexón",
- "Configuration Active" : "Configuración activa",
- "When unchecked, this configuration will be skipped." : "Cuando nun tea conseñáu, saltaráse esta configuración.",
- "Backup (Replica) Host" : "Sirvidor de copia de seguranza (Réplica)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Dar un sirvidor de copia de seguranza opcional. Tien de ser una réplica del sirvidor principal LDAP / AD.",
- "Backup (Replica) Port" : "Puertu pa copies de seguranza (Réplica)",
- "Disable Main Server" : "Deshabilitar sirvidor principal",
- "Only connect to the replica server." : "Coneutar namái col sirvidor de réplica.",
- "Turn off SSL certificate validation." : "Apagar la validación del certificáu SSL.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nun se recomienda, ¡úsalu namái pa pruebes! Si la conexón namái funciona con esta opción, importa'l certificáu SSL del sirvidor LDAP nel to sirvidor %s.",
- "Cache Time-To-Live" : "Cache Time-To-Live",
- "in seconds. A change empties the cache." : "en segundos. Un cambéu vacia la caché.",
- "Directory Settings" : "Axustes del direutoriu",
- "User Display Name Field" : "Campu de nome d'usuariu a amosar",
- "The LDAP attribute to use to generate the user's display name." : "El campu LDAP a usar pa xenerar el nome p'amosar del usuariu.",
- "2nd User Display Name Field" : "2ª usuariu amuesa Nome del campu",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributu LDAP que s'amesta al nome de visualización ente paréntesis. Los resultaos en, por exemplu, »John Doe (john.doe@example.org)«.",
- "Base User Tree" : "Árbol base d'usuariu",
- "One User Base DN per line" : "Un DN Base d'Usuariu por llinia",
- "User Search Attributes" : "Atributos de la gueta d'usuariu",
- "Optional; one attribute per line" : "Opcional; un atributu por llinia",
- "Group Display Name Field" : "Campu de nome de grupu a amosar",
- "The LDAP attribute to use to generate the groups's display name." : "El campu LDAP a usar pa xenerar el nome p'amosar del grupu.",
- "Base Group Tree" : "Árbol base de grupu",
- "One Group Base DN per line" : "Un DN Base de Grupu por llinia",
- "Group Search Attributes" : "Atributos de gueta de grupu",
- "Group-Member association" : "Asociación Grupu-Miembru",
- "Dynamic Group Member URL" : "URL Dinámica de Grupu d'Usuarios",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "L'atributu LDAP que nos oxetos de grupu contien una gueta de URLs de LDAP que determina qué oxetos pertenecen al grupu. (Un axuste vacíu desanicia la funcionalidá dinámica de pertenencia al grupu.)",
- "Nested Groups" : "Grupos añeraos",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Cuando s'active, van permitise grupos que contengan otros grupos (namái funciona si l'atributu de miembru de grupu contién DNs).",
- "Paging chunksize" : "Tamañu de los fragmentos de paxinación",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamañu de los fragmentos usáu pa busques LDAP paxinaes que puen devolver resultaos voluminosos, como enubmeración d'usuarios o de grupos. (Si s'afita en 0, van deshabilitase les busques LDAP paxinaes neses situaciones.)",
- "(New password is sent as plain text to LDAP)" : "(La contraseña únviase como testu planu a LDAP)",
- "Special Attributes" : "Atributos especiales",
- "Quota Field" : "Cuota",
- "Quota Default" : "Cuota por defeutu",
- "Email Field" : "E-mail",
- "User Home Folder Naming Rule" : "Regla pa la carpeta Home d'usuariu",
- "Internal Username" : "Nome d'usuariu internu",
- "Internal Username Attribute:" : "Atributu Nome d'usuariu Internu:",
- "Override UUID detection" : "Sobrescribir la deteición 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." : "Por defeutu, l'atributu UUID autodetéutase. Esti atributu úsase pa identificar induldablemente usuarios y grupos LDAP. Arriendes, el nome d'usuariu internu va crease en bas al UUID, si nun s'especificó otru comportamientu arriba. Pues sobrescribir la configuración y pasar un atributu de la to eleición. Tienes d'asegurate de que l'atributu de la to eleición seya accesible polos usuarios y grupos y ser únicu. Déxalu en blanco pa usar el comportamientu por defeutu. Los cambeos van tener efeutu namái nos usuarios y grupos de LDAP mapeaos (amestaos) recién.",
- "UUID Attribute for Users:" : "Atributu UUID pa usuarios:",
- "UUID Attribute for Groups:" : "Atributu UUID pa Grupos:",
- "Username-LDAP User Mapping" : "Asignación del Nome d'usuariu LDAP",
- "Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/az.js b/apps/user_ldap/l10n/az.js
deleted file mode 100644
index b431ba72723..00000000000
--- a/apps/user_ldap/l10n/az.js
+++ /dev/null
@@ -1,37 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Xəritələnməni silmək mümkün olmadı",
- "Failed to delete the server configuration" : "Server configini silmək mümkün olmadı",
- "The configuration is valid and the connection could be established!" : "Configurasiya doğrudur və qoşulmaq mümkündür!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Configurasiya doğrudur yalnız, birləşmədə səhv oldu. Xahiş olunur server quraşdırmalarını və daxil etdiyiniz verilənlərin düzgünlüyünü yoxlayasınız.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Configurasiya dügün deyil. Əlavə detallar üçün xahiş edirik jurnal faylına baxasınız.",
- "No action specified" : "Heç bir iş təyin edilməyib",
- "No configuration specified" : "Təyin edilmiş konfiqurasiya yoxdur",
- "No data specified" : "Təyin edilmiş data yoxdur",
- " Could not set configuration %s" : "%s configi təyin etmək mümkün olmadı",
- "Configuration incorrect" : "Konfiqurasiya düzgün deyil",
- "Configuration incomplete" : "Konfiqruasiya bitmiş deyil",
- "Configuration OK" : "Konfiqurasiya OK-dir",
- "Select groups" : "Qrupları seç",
- "Select object classes" : "object class-larını seç",
- "{nthServer}. Server" : "{nthServer}. Server",
- "Do you really want to delete the current Server Configuration?" : "Siz hal-hazırki server konfiqini silmək istədiyinizdən həqiqətən əminsinizmi?",
- "Confirm Deletion" : "Silinmənin təsdiqi",
- "Select attributes" : "Atributları seç",
- "_%s group found_::_%s groups found_" : ["%s qruplar tapıldı","%s qruplar tapıldı"],
- "_%s user found_::_%s users found_" : ["%s istifadəçilər tapıldı","%s istifadəçilər tapıldı"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "İstifadəçinin ekran atributu adını təyin etmək mümkün deyil. Xahiş olunur sizin özünüz onu əllə ldap konfiqində təyin edəsiniz.",
- "Could not find the desired feature" : "Arzulanılan imkanı tapmaq mümkün deyil",
- "Invalid Host" : "Yalnış Host",
- "Server" : "Server",
- "Users" : "İstifadəçilər",
- "Groups" : "Qruplar",
- "Test Configuration" : "Konfiqurasiya testi",
- "Help" : "Kömək",
- "Host" : "Şəbəkədə ünvan",
- "Port" : "Port",
- "Password" : "Şifrə",
- "Advanced" : "İrəliləmiş"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/az.json b/apps/user_ldap/l10n/az.json
deleted file mode 100644
index aa5e52cb346..00000000000
--- a/apps/user_ldap/l10n/az.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Xəritələnməni silmək mümkün olmadı",
- "Failed to delete the server configuration" : "Server configini silmək mümkün olmadı",
- "The configuration is valid and the connection could be established!" : "Configurasiya doğrudur və qoşulmaq mümkündür!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Configurasiya doğrudur yalnız, birləşmədə səhv oldu. Xahiş olunur server quraşdırmalarını və daxil etdiyiniz verilənlərin düzgünlüyünü yoxlayasınız.",
- "The configuration is invalid. Please have a look at the logs for further details." : "Configurasiya dügün deyil. Əlavə detallar üçün xahiş edirik jurnal faylına baxasınız.",
- "No action specified" : "Heç bir iş təyin edilməyib",
- "No configuration specified" : "Təyin edilmiş konfiqurasiya yoxdur",
- "No data specified" : "Təyin edilmiş data yoxdur",
- " Could not set configuration %s" : "%s configi təyin etmək mümkün olmadı",
- "Configuration incorrect" : "Konfiqurasiya düzgün deyil",
- "Configuration incomplete" : "Konfiqruasiya bitmiş deyil",
- "Configuration OK" : "Konfiqurasiya OK-dir",
- "Select groups" : "Qrupları seç",
- "Select object classes" : "object class-larını seç",
- "{nthServer}. Server" : "{nthServer}. Server",
- "Do you really want to delete the current Server Configuration?" : "Siz hal-hazırki server konfiqini silmək istədiyinizdən həqiqətən əminsinizmi?",
- "Confirm Deletion" : "Silinmənin təsdiqi",
- "Select attributes" : "Atributları seç",
- "_%s group found_::_%s groups found_" : ["%s qruplar tapıldı","%s qruplar tapıldı"],
- "_%s user found_::_%s users found_" : ["%s istifadəçilər tapıldı","%s istifadəçilər tapıldı"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "İstifadəçinin ekran atributu adını təyin etmək mümkün deyil. Xahiş olunur sizin özünüz onu əllə ldap konfiqində təyin edəsiniz.",
- "Could not find the desired feature" : "Arzulanılan imkanı tapmaq mümkün deyil",
- "Invalid Host" : "Yalnış Host",
- "Server" : "Server",
- "Users" : "İstifadəçilər",
- "Groups" : "Qruplar",
- "Test Configuration" : "Konfiqurasiya testi",
- "Help" : "Kömək",
- "Host" : "Şəbəkədə ünvan",
- "Port" : "Port",
- "Password" : "Şifrə",
- "Advanced" : "İrəliləmiş"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/be.js b/apps/user_ldap/l10n/be.js
deleted file mode 100644
index 99117026327..00000000000
--- a/apps/user_ldap/l10n/be.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Advanced" : "Дасведчаны"
-},
-"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
deleted file mode 100644
index 987589ccd81..00000000000
--- a/apps/user_ldap/l10n/be.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Advanced" : "Дасведчаны"
-},"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.js b/apps/user_ldap/l10n/bg.js
index 1ae1cb4a36f..4cef2c94481 100644
--- a/apps/user_ldap/l10n/bg.js
+++ b/apps/user_ldap/l10n/bg.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Невалидна конфигурация: Анонимното обвързване не е разрешено.",
"Valid configuration, connection established!" : "Валидна конфигурация, връзката е установена!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Валидна конфигурация, но обвързването не бе успешно. Моля, проверете настройките и идентификационните данни на сървъра.",
- "Invalid configuration. Please have a look at the logs for further details." : "Невалидна конфигурация. Моля, разгледайте журналите за повече подробности.",
"No action specified" : "Не е посочено действие",
"No configuration specified" : "Не е посочена конфигурация",
"No data specified" : "Не са посочени данни",
"Invalid data specified" : "Посочени са невалидни данни",
- " Could not set configuration %s" : "Неуспешно задаване на конфигруацията %s",
"Action does not exist" : "Действието не съществува",
"Renewing …" : "Подновяване …",
"Very weak password" : "Много проста парола",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заместителят „ %u“ липсва. Той ще бъде заменен с името за вход при запитване към LDAP/AD.",
"Please provide a login name to test against" : "Моля, посочете име за вход, срещу което да тествате",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Груповата кутия е деактивирана, тъй като LDAP/AD сървърът не поддържа memberOf.",
- "Password change rejected. Hint: " : "Смяната на паролата е отхвърлена. Подсказка:",
"Please login with the new password" : "Моля, влезте с новата парола",
"LDAP User backend" : "LDAP потребителски сървър",
"Your password will expire tomorrow." : "Вашата парола ще изтече утре.",
@@ -202,6 +199,9 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Заглавието на потребителския профил ще бъде зададено от определения атрибут",
"Biography Field" : "Поле за Биография",
"User profile Biography will be set from the specified attribute" : "Биографията на потребителския профил ще бъде зададена от определения атрибут",
+ "User profile Date of birth will be set from the specified attribute" : "Датата на раждане в потребителския профил ще се зададе от този атрибут",
+ "Pronouns Field" : "Поле за обръщение",
+ "User profile Pronouns will be set from the specified attribute" : "Опциите за обръщение в профила на потребителите ще се зададат от този атрибут",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "По подразбиране вътрешното име на потребител ще бъде създадено от атрибута UUID. Той гарантира, че името на потребител е уникално и знаците не трябва да се преобразуват. Вътрешното име на потребител има ограничението, че са позволени само тези знаци: [a-zA-Z0-9_.@-]. Други знаци се заменят с тяхното ASCII съответствие или просто се пропускат. При сблъсъци числото ще бъде добавено/увеличено. Вътрешното име на потребител се използва за вътрешно идентифициране на потребител. Това също е името по подразбиране за домашната папка на потребителя. Той също така е част от отдалечени URL адреси, например за всички *DAV услуги. С тази настройка поведението по подразбиране може да бъде отменено. Промените ще имат ефект само върху ново съпоставени (добавени) потребители на LDAP. Оставете го празно за поведение по подразбиране. ",
"Internal Username Attribute:" : "Атрибут на вътрешното потребителско име:",
@@ -213,6 +213,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Потребителските имена се използват за съхраняване и присвояване на метаданни. С цел точно идентифициране и разпознаване на потребителите, всеки потребител на LDAP ще има вътрешно име на потребител. Това изисква съпоставяне от име на потребител към потребител на LDAP. Създаденото име на потребител се съпоставя с UUID на потребителя на LDAP. Освен това DN се кешира, за да се намали взаимодействието с LDAP, но не се използва за идентификация. Ако DN се промени, промените ще бъдат намерени. Вътрешното име на потребител се използва навсякъде. Изчистването на съпоставянията ще има остатъци навсякъде. Изчистването на съпоставянията не е чувствително към конфигурацията, засяга всички LDAP конфигурации! Никога не изчиствайте съпоставянията в производствена среда, само в тестов или експериментален етап.",
"Clear Username-LDAP User Mapping" : "Изчистване на име на потребител-LDAP Потребителско съпоставяне ",
"Clear Groupname-LDAP Group Mapping" : "Изчистване на име на група-LDAP Потребителско съпоставяне ",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Открит е невалиден UUID на потребители или групи на LDAP. Моля, прегледайте настройките си за \"Override UUID detection\"/ откриване на отмяна на UUID/, в експертната част на LDAP конфигурацията и използвайте \"occ ldap:update-uuid\", за да ги актуализирате."
+ "Invalid configuration. Please have a look at the logs for further details." : "Невалидна конфигурация. Моля, разгледайте журналите за повече подробности."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/bg.json b/apps/user_ldap/l10n/bg.json
index 268b1d529aa..edb583c67e1 100644
--- a/apps/user_ldap/l10n/bg.json
+++ b/apps/user_ldap/l10n/bg.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Невалидна конфигурация: Анонимното обвързване не е разрешено.",
"Valid configuration, connection established!" : "Валидна конфигурация, връзката е установена!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Валидна конфигурация, но обвързването не бе успешно. Моля, проверете настройките и идентификационните данни на сървъра.",
- "Invalid configuration. Please have a look at the logs for further details." : "Невалидна конфигурация. Моля, разгледайте журналите за повече подробности.",
"No action specified" : "Не е посочено действие",
"No configuration specified" : "Не е посочена конфигурация",
"No data specified" : "Не са посочени данни",
"Invalid data specified" : "Посочени са невалидни данни",
- " Could not set configuration %s" : "Неуспешно задаване на конфигруацията %s",
"Action does not exist" : "Действието не съществува",
"Renewing …" : "Подновяване …",
"Very weak password" : "Много проста парола",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заместителят „ %u“ липсва. Той ще бъде заменен с името за вход при запитване към LDAP/AD.",
"Please provide a login name to test against" : "Моля, посочете име за вход, срещу което да тествате",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Груповата кутия е деактивирана, тъй като LDAP/AD сървърът не поддържа memberOf.",
- "Password change rejected. Hint: " : "Смяната на паролата е отхвърлена. Подсказка:",
"Please login with the new password" : "Моля, влезте с новата парола",
"LDAP User backend" : "LDAP потребителски сървър",
"Your password will expire tomorrow." : "Вашата парола ще изтече утре.",
@@ -200,6 +197,9 @@
"User profile Headline will be set from the specified attribute" : "Заглавието на потребителския профил ще бъде зададено от определения атрибут",
"Biography Field" : "Поле за Биография",
"User profile Biography will be set from the specified attribute" : "Биографията на потребителския профил ще бъде зададена от определения атрибут",
+ "User profile Date of birth will be set from the specified attribute" : "Датата на раждане в потребителския профил ще се зададе от този атрибут",
+ "Pronouns Field" : "Поле за обръщение",
+ "User profile Pronouns will be set from the specified attribute" : "Опциите за обръщение в профила на потребителите ще се зададат от този атрибут",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "По подразбиране вътрешното име на потребител ще бъде създадено от атрибута UUID. Той гарантира, че името на потребител е уникално и знаците не трябва да се преобразуват. Вътрешното име на потребител има ограничението, че са позволени само тези знаци: [a-zA-Z0-9_.@-]. Други знаци се заменят с тяхното ASCII съответствие или просто се пропускат. При сблъсъци числото ще бъде добавено/увеличено. Вътрешното име на потребител се използва за вътрешно идентифициране на потребител. Това също е името по подразбиране за домашната папка на потребителя. Той също така е част от отдалечени URL адреси, например за всички *DAV услуги. С тази настройка поведението по подразбиране може да бъде отменено. Промените ще имат ефект само върху ново съпоставени (добавени) потребители на LDAP. Оставете го празно за поведение по подразбиране. ",
"Internal Username Attribute:" : "Атрибут на вътрешното потребителско име:",
@@ -211,6 +211,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Потребителските имена се използват за съхраняване и присвояване на метаданни. С цел точно идентифициране и разпознаване на потребителите, всеки потребител на LDAP ще има вътрешно име на потребител. Това изисква съпоставяне от име на потребител към потребител на LDAP. Създаденото име на потребител се съпоставя с UUID на потребителя на LDAP. Освен това DN се кешира, за да се намали взаимодействието с LDAP, но не се използва за идентификация. Ако DN се промени, промените ще бъдат намерени. Вътрешното име на потребител се използва навсякъде. Изчистването на съпоставянията ще има остатъци навсякъде. Изчистването на съпоставянията не е чувствително към конфигурацията, засяга всички LDAP конфигурации! Никога не изчиствайте съпоставянията в производствена среда, само в тестов или експериментален етап.",
"Clear Username-LDAP User Mapping" : "Изчистване на име на потребител-LDAP Потребителско съпоставяне ",
"Clear Groupname-LDAP Group Mapping" : "Изчистване на име на група-LDAP Потребителско съпоставяне ",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Открит е невалиден UUID на потребители или групи на LDAP. Моля, прегледайте настройките си за \"Override UUID detection\"/ откриване на отмяна на UUID/, в експертната част на LDAP конфигурацията и използвайте \"occ ldap:update-uuid\", за да ги актуализирате."
+ "Invalid configuration. Please have a look at the logs for further details." : "Невалидна конфигурация. Моля, разгледайте журналите за повече подробности."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/bn_BD.js b/apps/user_ldap/l10n/bn_BD.js
deleted file mode 100644
index c74a22160e6..00000000000
--- a/apps/user_ldap/l10n/bn_BD.js
+++ /dev/null
@@ -1,80 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "মানচিত্রায়ন মুছতে ব্যার্থ হলো।",
- "Failed to delete the server configuration" : "সার্ভার কনফিগারেশন মোছা ব্যার্থ হলো",
- "The configuration is valid and the connection could be established!" : "কনফিগারেশনটি বৈধ এবং যোগাযোগ প্রতিষ্ঠা করা যায়!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "কনফিগারেশনটি বৈধ তবে Bind ব্যার্থ। দয়া করে সার্ভার নিয়ামকসমূহ এবং ব্যবহারকারী পরীক্ষা করুন।",
- "The configuration is invalid. Please have a look at the logs for further details." : "কনফিহারেশনটি অবৈধ। বিস্তারিত জানতে দয়া করে লগ দেখুন।",
- "No action specified" : "কোন কার্যাদেশ সুনির্দিষ্ট নয়",
- "No configuration specified" : " কোন কনফিগারেসন সুনির্দিষ্ট নয়",
- "No data specified" : "কোন ডাটা সুনির্দিষ্ট নয়",
- " Could not set configuration %s" : "%s কনফিগারেসন ঠিক করা গেল না",
- "Configuration incorrect" : "ভুল কনফিগারেসন",
- "Configuration incomplete" : "অসম্পূর্ণ কনফিগারেসন",
- "Configuration OK" : "কনফিগারেসন ঠিক আছে",
- "Select groups" : "গ্রুপ নির্ধারণ",
- "Select object classes" : "অবজেক্ট ক্লাস নির্ধারণ",
- "{nthServer}. Server" : "{nthServer}. সার্ভার",
- "Do you really want to delete the current Server Configuration?" : "আপনি কি সত্যিই চলতি সার্ভার কনফিগারেসন মুছতে চান?",
- "Confirm Deletion" : "মোছার আদেশ নিশ্চিত করুন",
- "Select attributes" : "বৈশিষ্ট্য নির্ধারণ",
- "_%s group found_::_%s groups found_" : ["%s গ্রুপ পাওয়া গেছে","%s গ্রুপ পাওয়া গেছে"],
- "_%s user found_::_%s users found_" : ["%s ব্যাবহারকারী পাওয়া গেছে","%s ব্যাবহারকারী পাওয়া গেছে"],
- "Could not find the desired feature" : "চাহিদামাফিক ফিচারটি পাওয়া গেলনা",
- "Invalid Host" : "অবৈধ হোস্ট",
- "Server" : "সার্ভার",
- "Users" : "ব্যবহারকারী",
- "Groups" : "গোষ্ঠীসমূহ",
- "Test Configuration" : "পরীক্ষামূলক কনফিগারেসন",
- "Help" : "সহায়িকা",
- "Groups meeting these criteria are available in %s:" : "প্রদত্ত বৈশিষ্ট্য অনুযায়ী %s এ প্রাপ্তব্য গ্রুপসমূহ:",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "ফিল্টারটি %s সার্ভারে কোন কোন LDAP গ্রুপ প্রবেশাধিকার পাবে তা নির্ধারণ করে।",
- "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\"",
- "1. Server" : "1. সার্ভার",
- "%s. Server:" : "%s. সার্ভার:",
- "Host" : "হোস্ট",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL আবশ্যক না হলে আপনি এই প্রটোকলটি মুছে ফেলতে পারেন । এরপর শুরু করুন এটা দিয়ে ldaps://",
- "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." : "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. পরিচয় গোপন রেখে অধিগমনের জন্য DN এবং কূটশব্দটি ফাঁকা রাখুন।",
- "Password" : "কূটশব্দ",
- "For anonymous access, leave DN and Password empty." : "অজ্ঞাতকুলশীল অধিগমনের জন্য DN এবং কূটশব্দটি ফাঁকা রাখুন।",
- "One Base DN per line" : "লাইনপ্রতি একটি Base DN",
- "You can specify Base DN for users and groups in the Advanced tab" : "সুচারু ট্যঅবে গিয়ে আপনি ব্যবহারকারি এবং গোষ্ঠীসমূহের জন্য ভিত্তি DN নির্ধারণ করতে পারেন।",
- "The filter specifies which LDAP users shall have access to the %s instance." : "এই ফিল্টারটি কোন কোন LDAP ব্যবহারকারী %s সার্ভারে প্রবেশ করবেন তা বাছাই করে।",
- "Back" : "পেছনে যাও",
- "Continue" : "চালিয়ে যাও",
- "Expert" : "দক্ষ",
- "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>Warning:</b> Apps user_ldap and 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>Warning:</b> PHP LDAP মডিউল ইনস্টল করা নেই, ব্যাকএন্ড কাজ করবেনা। সিস্টেম প্রশাসককে এটি ইনস্টল করতে বলুন।",
- "Connection Settings" : "সংযোগ নিয়ামকসমূহ",
- "Configuration Active" : "কনফিগারেসন সক্রিয়",
- "When unchecked, this configuration will be skipped." : "চেকমার্ক তুলে দিলে কনফিগারেসন এড়িয়ে যাবে।",
- "Backup (Replica) Host" : "ব্যাকআপ (নকল) হোস্ট",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "একটি ঐচ্ছিক ব্যাকআপ হোস্ট দিন। এটি মূল LDAP/AD সার্ভারের নকল হবে।",
- "Backup (Replica) Port" : "ব্যাকআপ (নকল) পোর্ট",
- "Disable Main Server" : "মূল সার্ভারকে অকার্যকর কর",
- "Only connect to the replica server." : "শুধুমাত্র নকল সার্ভারে সংযোগ দাও।",
- "Turn off SSL certificate validation." : "SSL সনদপত্র যাচাইকরণ বন্ধ রাক।",
- "Cache Time-To-Live" : "ক্যাশে টাইম-টু-লিভ",
- "in seconds. A change empties the cache." : "সেকেন্ডে। কোন পরিবর্তন ক্যাসে খালি করবে।",
- "Directory Settings" : "ডিরেক্টরি নিয়ামকসমূহ",
- "User Display Name Field" : "ব্যবহারকারীর প্রদর্শিতব্য নামের ক্ষেত্র",
- "The LDAP attribute to use to generate the user's display name." : "ব্যবহারকারীর প্রদর্শনীয় নাম তৈরি করার জন্য ব্যবহৃত LDAP বৈশিষ্ট্য।",
- "Base User Tree" : "ভিত্তি ব্যবহারকারি বৃক্ষাকারে",
- "Group Display Name Field" : "গোষ্ঠীর প্রদর্শিতব্য নামের ক্ষেত্র",
- "Base Group Tree" : "ভিত্তি গোষ্ঠী বৃক্ষাকারে",
- "Group Search Attributes" : "গ্রুপ খোঁজার বৈশিষ্ট্য",
- "Group-Member association" : "গোষ্ঠী-সদস্য সংস্থাপন",
- "Nested Groups" : "একতাবদ্ধ গোষ্ঠিসমূহ",
- "Special Attributes" : "বিশেষ বৈশিষ্ট্যসমূহ",
- "Quota Field" : "কোটা",
- "Quota Default" : "পূর্বনির্ধারিত কোটা",
- "in bytes" : "বাইটে",
- "Email Field" : "ইমেইল ক্ষেত্র",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ব্যবহারকারী নামের জন্য ফাঁকা রাখুন (পূর্বনির্ধারিত)। অন্যথায়, LDAP/AD বৈশিষ্ট্য নির্ধারণ করুন।"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/bn_BD.json b/apps/user_ldap/l10n/bn_BD.json
deleted file mode 100644
index 68883909add..00000000000
--- a/apps/user_ldap/l10n/bn_BD.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "মানচিত্রায়ন মুছতে ব্যার্থ হলো।",
- "Failed to delete the server configuration" : "সার্ভার কনফিগারেশন মোছা ব্যার্থ হলো",
- "The configuration is valid and the connection could be established!" : "কনফিগারেশনটি বৈধ এবং যোগাযোগ প্রতিষ্ঠা করা যায়!",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "কনফিগারেশনটি বৈধ তবে Bind ব্যার্থ। দয়া করে সার্ভার নিয়ামকসমূহ এবং ব্যবহারকারী পরীক্ষা করুন।",
- "The configuration is invalid. Please have a look at the logs for further details." : "কনফিহারেশনটি অবৈধ। বিস্তারিত জানতে দয়া করে লগ দেখুন।",
- "No action specified" : "কোন কার্যাদেশ সুনির্দিষ্ট নয়",
- "No configuration specified" : " কোন কনফিগারেসন সুনির্দিষ্ট নয়",
- "No data specified" : "কোন ডাটা সুনির্দিষ্ট নয়",
- " Could not set configuration %s" : "%s কনফিগারেসন ঠিক করা গেল না",
- "Configuration incorrect" : "ভুল কনফিগারেসন",
- "Configuration incomplete" : "অসম্পূর্ণ কনফিগারেসন",
- "Configuration OK" : "কনফিগারেসন ঠিক আছে",
- "Select groups" : "গ্রুপ নির্ধারণ",
- "Select object classes" : "অবজেক্ট ক্লাস নির্ধারণ",
- "{nthServer}. Server" : "{nthServer}. সার্ভার",
- "Do you really want to delete the current Server Configuration?" : "আপনি কি সত্যিই চলতি সার্ভার কনফিগারেসন মুছতে চান?",
- "Confirm Deletion" : "মোছার আদেশ নিশ্চিত করুন",
- "Select attributes" : "বৈশিষ্ট্য নির্ধারণ",
- "_%s group found_::_%s groups found_" : ["%s গ্রুপ পাওয়া গেছে","%s গ্রুপ পাওয়া গেছে"],
- "_%s user found_::_%s users found_" : ["%s ব্যাবহারকারী পাওয়া গেছে","%s ব্যাবহারকারী পাওয়া গেছে"],
- "Could not find the desired feature" : "চাহিদামাফিক ফিচারটি পাওয়া গেলনা",
- "Invalid Host" : "অবৈধ হোস্ট",
- "Server" : "সার্ভার",
- "Users" : "ব্যবহারকারী",
- "Groups" : "গোষ্ঠীসমূহ",
- "Test Configuration" : "পরীক্ষামূলক কনফিগারেসন",
- "Help" : "সহায়িকা",
- "Groups meeting these criteria are available in %s:" : "প্রদত্ত বৈশিষ্ট্য অনুযায়ী %s এ প্রাপ্তব্য গ্রুপসমূহ:",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "ফিল্টারটি %s সার্ভারে কোন কোন LDAP গ্রুপ প্রবেশাধিকার পাবে তা নির্ধারণ করে।",
- "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\"",
- "1. Server" : "1. সার্ভার",
- "%s. Server:" : "%s. সার্ভার:",
- "Host" : "হোস্ট",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "SSL আবশ্যক না হলে আপনি এই প্রটোকলটি মুছে ফেলতে পারেন । এরপর শুরু করুন এটা দিয়ে ldaps://",
- "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." : "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. পরিচয় গোপন রেখে অধিগমনের জন্য DN এবং কূটশব্দটি ফাঁকা রাখুন।",
- "Password" : "কূটশব্দ",
- "For anonymous access, leave DN and Password empty." : "অজ্ঞাতকুলশীল অধিগমনের জন্য DN এবং কূটশব্দটি ফাঁকা রাখুন।",
- "One Base DN per line" : "লাইনপ্রতি একটি Base DN",
- "You can specify Base DN for users and groups in the Advanced tab" : "সুচারু ট্যঅবে গিয়ে আপনি ব্যবহারকারি এবং গোষ্ঠীসমূহের জন্য ভিত্তি DN নির্ধারণ করতে পারেন।",
- "The filter specifies which LDAP users shall have access to the %s instance." : "এই ফিল্টারটি কোন কোন LDAP ব্যবহারকারী %s সার্ভারে প্রবেশ করবেন তা বাছাই করে।",
- "Back" : "পেছনে যাও",
- "Continue" : "চালিয়ে যাও",
- "Expert" : "দক্ষ",
- "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>Warning:</b> Apps user_ldap and 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>Warning:</b> PHP LDAP মডিউল ইনস্টল করা নেই, ব্যাকএন্ড কাজ করবেনা। সিস্টেম প্রশাসককে এটি ইনস্টল করতে বলুন।",
- "Connection Settings" : "সংযোগ নিয়ামকসমূহ",
- "Configuration Active" : "কনফিগারেসন সক্রিয়",
- "When unchecked, this configuration will be skipped." : "চেকমার্ক তুলে দিলে কনফিগারেসন এড়িয়ে যাবে।",
- "Backup (Replica) Host" : "ব্যাকআপ (নকল) হোস্ট",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "একটি ঐচ্ছিক ব্যাকআপ হোস্ট দিন। এটি মূল LDAP/AD সার্ভারের নকল হবে।",
- "Backup (Replica) Port" : "ব্যাকআপ (নকল) পোর্ট",
- "Disable Main Server" : "মূল সার্ভারকে অকার্যকর কর",
- "Only connect to the replica server." : "শুধুমাত্র নকল সার্ভারে সংযোগ দাও।",
- "Turn off SSL certificate validation." : "SSL সনদপত্র যাচাইকরণ বন্ধ রাক।",
- "Cache Time-To-Live" : "ক্যাশে টাইম-টু-লিভ",
- "in seconds. A change empties the cache." : "সেকেন্ডে। কোন পরিবর্তন ক্যাসে খালি করবে।",
- "Directory Settings" : "ডিরেক্টরি নিয়ামকসমূহ",
- "User Display Name Field" : "ব্যবহারকারীর প্রদর্শিতব্য নামের ক্ষেত্র",
- "The LDAP attribute to use to generate the user's display name." : "ব্যবহারকারীর প্রদর্শনীয় নাম তৈরি করার জন্য ব্যবহৃত LDAP বৈশিষ্ট্য।",
- "Base User Tree" : "ভিত্তি ব্যবহারকারি বৃক্ষাকারে",
- "Group Display Name Field" : "গোষ্ঠীর প্রদর্শিতব্য নামের ক্ষেত্র",
- "Base Group Tree" : "ভিত্তি গোষ্ঠী বৃক্ষাকারে",
- "Group Search Attributes" : "গ্রুপ খোঁজার বৈশিষ্ট্য",
- "Group-Member association" : "গোষ্ঠী-সদস্য সংস্থাপন",
- "Nested Groups" : "একতাবদ্ধ গোষ্ঠিসমূহ",
- "Special Attributes" : "বিশেষ বৈশিষ্ট্যসমূহ",
- "Quota Field" : "কোটা",
- "Quota Default" : "পূর্বনির্ধারিত কোটা",
- "in bytes" : "বাইটে",
- "Email Field" : "ইমেইল ক্ষেত্র",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ব্যবহারকারী নামের জন্য ফাঁকা রাখুন (পূর্বনির্ধারিত)। অন্যথায়, LDAP/AD বৈশিষ্ট্য নির্ধারণ করুন।"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/bs.js b/apps/user_ldap/l10n/bs.js
deleted file mode 100644
index a30255595fe..00000000000
--- a/apps/user_ldap/l10n/bs.js
+++ /dev/null
@@ -1,12 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Users" : "Korisnici",
- "Groups" : "Grupe",
- "Help" : "Pomoć",
- "Port" : "Priključak",
- "Password" : "Lozinka",
- "Continue" : "Nastavi",
- "Advanced" : "Napredno"
-},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/user_ldap/l10n/bs.json b/apps/user_ldap/l10n/bs.json
deleted file mode 100644
index 3172f54cf89..00000000000
--- a/apps/user_ldap/l10n/bs.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{ "translations": {
- "Users" : "Korisnici",
- "Groups" : "Grupe",
- "Help" : "Pomoć",
- "Port" : "Priključak",
- "Password" : "Lozinka",
- "Continue" : "Nastavi",
- "Advanced" : "Napredno"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ca.js b/apps/user_ldap/l10n/ca.js
index 96942064b13..f19ed3d3ef5 100644
--- a/apps/user_ldap/l10n/ca.js
+++ b/apps/user_ldap/l10n/ca.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuració no vàlida: no es permet l'enllaç anònim.",
"Valid configuration, connection established!" : "Configuració vàlida, connexió establerta!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu els paràmetres del servidor i les credencials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació.",
+ "Invalid configuration: %s" : "Configuració no vàlida: %s",
"No action specified" : "No heu especificat cap acció",
"No configuration specified" : "No heu especificat cap configuració",
"No data specified" : "No heu especificat cap dada",
"Invalid data specified" : "Les dades especificades no són vàlides",
- " Could not set configuration %s" : " No s'ha pogut establir la configuració %s",
+ "Could not set configuration %1$s to %2$s" : "No s'ha pogut establir la configuració %1$s a %2$s",
"Action does not exist" : "L'acció no existeix",
"Renewing …" : "Renovant …",
"Very weak password" : "Contrasenya massa feble",
@@ -54,15 +54,27 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posició \"%uid\". Se substituirà pel nom d'inici de sessió en consultar LDAP/AD.",
"Please provide a login name to test against" : "Proporcioneu un nom d'inici de sessió per provar-ho",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El quadre de grup s'ha desactivat perquè el servidor LDAP/AD no admet memberOf.",
- "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista: ",
+ "Password change rejected. Hint: %s" : "S'ha rebutjat el canvi de contrasenya. Pista: %s",
+ "Mandatory field \"%s\" left empty" : "El camp obligatori \"%s\" s'ha deixat buit",
+ "A password is given, but not an LDAP agent" : "Es dóna una contrasenya, però no un agent LDAP",
+ "No password is given for the user agent" : "No es dóna cap contrasenya per a l'agent d'usuari",
+ "No LDAP base DN was given" : "No s'ha donat cap DN base LDAP",
+ "User base DN is not a subnode of global base DN" : "El DN base d'usuari no és un subnode del DN base global",
+ "Group base DN is not a subnode of global base DN" : "El DN base del grup no és un subnode del DN base global",
"Please login with the new password" : "Inicieu sessió amb la nova contrasenya",
"LDAP User backend" : "Rerefons d'usuari LDAP",
"Your password will expire tomorrow." : "La contrasenya caducarà demà.",
"Your password will expire today." : "La contrasenya caducarà avui.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya caducarà d'aquí %n dies."],
"LDAP/AD integration" : "Integració LDAP/AD",
+ "LDAP Connection" : "Connexió LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Ha fallat l'enllaç per a aquesta configuració LDAP: %s","Ha fallat l'enllaç per %n configuracions LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["No s'ha pogut cercar aquesta configuració LDAP: %s"," No s’han pogut cercar %n configuracions LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Hi ha una configuració LDAP inactiva: %s","Hi han %n configuracions LDAP inactives: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["L'enllaç i la cerca funciona a la connexió LDAP configurada (%s)","L’enllaç i la cerca funciona a totes les %n connexions LDAP configurades (%s)"],
"Invalid LDAP UUIDs" : "UUID no vàlid",
"None found" : "No s'ha trobat cap",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "S'han trobat UUID no vàlids de comptes o grups LDAP. Reviseu el vostre paràmetre d'\"Anul·lació de la detecció d'UUID\" a la part Expert de la configuració LDAP i utilitzeu \"occ ldap:update-uuid\" per actualitzar-los.",
"_%n group found_::_%n groups found_" : ["S'ha trobat %n grup","S’han trobat %n grups"],
"> 1000 groups found" : "> 1000 grups trobats",
"> 1000 users found" : "> 1000 usuaris trobats",
@@ -206,6 +218,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "El títol del perfil d'usuari s'establirà a partir de l'atribut especificat",
"Biography Field" : "Camp de Biografia",
"User profile Biography will be set from the specified attribute" : "La biografia del perfil d'usuari s'establirà a partir de l'atribut especificat",
+ "Birthdate Field" : "Camp de data de naixement",
+ "User profile Date of birth will be set from the specified attribute" : "La Data de naixement al perfil d’usuari s'establirà a partir de l'atribut especificat",
+ "Pronouns Field" : "Camp de pronoms",
+ "User profile Pronouns will be set from the specified attribute" : "Els pronoms al Perfil d’usuari s’establiran a partir de l'atribut especificat",
"Internal Username" : "Nom d'usuari intern",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Per defecte, el nom d'usuari intern es crearà a partir de l'atribut UUID. S'assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només es permeten aquests caràcters: [a-zA-Z0-9_.@-]. Altres caràcters es substitueixen per la seva correspondència ASCII o simplement s'ometen. En les col·lisions, s'afegirà/augmentarà un nombre. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta d'inici de l'usuari. També forma part dels URL remots, per exemple, per a tots els serveis DAV. Amb aquest paràmetre, es pot anul·lar el comportament per defecte. Els canvis només tindran efecte en els usuaris LDAP (afegits) recentment assignats. Deixeu-lo buit per al comportament per defecte.",
"Internal Username Attribute:" : "Atribut nom d'usuari intern:",
@@ -217,6 +233,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "Els noms d'usuari son emprats per emmagatzemar i assignar metadades. Per tal d'identificar i reconèixer amb precisió als usuaris, cada usuari LDAP té un nom d'usuari intern. Això requereix una assignació de noms d'usuari interns per a cada un dels usuaris LDAP. Al nom d'usuari creat s'assigna el UUID de l'usuari LDAP. A més el DN es guarda en memòria cau per a reduir la interacció amb LDAP, però no s'utilitza per a identificació. Si el DN canvia, es trobaran els canvis. El nom d'usuari intern s'utilitza arreu. Netejar el mapa d'assignacions deixaria restes per totes bandes. Netejar el mapa d'assignacions no és que sigui sensible a la configuració, sinó que afecta a totes les configuracions LDAP! Mai netegeu el mapa d'assignacions en un entorn de producció, només en escenaris de proves o experimentals.",
"Clear Username-LDAP User Mapping" : "Elimina el mapatge d'usuari Nom d'usuari-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Suprimeix el mapatge de grup Nom de grup-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "S'han trobat UUID no vàlids d'usuaris o grups LDAP. Reviseu els paràmetres de l'\"Anul·lació de detecció d'UUID\" a la part Experta de la configuració LDAP i utilitzeu \"occ ldap:update-uuid\" per actualitzar-los."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ca.json b/apps/user_ldap/l10n/ca.json
index c8cd3ba3d4a..86c945a684b 100644
--- a/apps/user_ldap/l10n/ca.json
+++ b/apps/user_ldap/l10n/ca.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuració no vàlida: no es permet l'enllaç anònim.",
"Valid configuration, connection established!" : "Configuració vàlida, connexió establerta!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuració vàlida, però no s'ha pogut enllaçar. Comproveu els paràmetres del servidor i les credencials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació.",
+ "Invalid configuration: %s" : "Configuració no vàlida: %s",
"No action specified" : "No heu especificat cap acció",
"No configuration specified" : "No heu especificat cap configuració",
"No data specified" : "No heu especificat cap dada",
"Invalid data specified" : "Les dades especificades no són vàlides",
- " Could not set configuration %s" : " No s'ha pogut establir la configuració %s",
+ "Could not set configuration %1$s to %2$s" : "No s'ha pogut establir la configuració %1$s a %2$s",
"Action does not exist" : "L'acció no existeix",
"Renewing …" : "Renovant …",
"Very weak password" : "Contrasenya massa feble",
@@ -52,15 +52,27 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posició \"%uid\". Se substituirà pel nom d'inici de sessió en consultar LDAP/AD.",
"Please provide a login name to test against" : "Proporcioneu un nom d'inici de sessió per provar-ho",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El quadre de grup s'ha desactivat perquè el servidor LDAP/AD no admet memberOf.",
- "Password change rejected. Hint: " : "El canvi de contrasenya s'ha rebutjat. Pista: ",
+ "Password change rejected. Hint: %s" : "S'ha rebutjat el canvi de contrasenya. Pista: %s",
+ "Mandatory field \"%s\" left empty" : "El camp obligatori \"%s\" s'ha deixat buit",
+ "A password is given, but not an LDAP agent" : "Es dóna una contrasenya, però no un agent LDAP",
+ "No password is given for the user agent" : "No es dóna cap contrasenya per a l'agent d'usuari",
+ "No LDAP base DN was given" : "No s'ha donat cap DN base LDAP",
+ "User base DN is not a subnode of global base DN" : "El DN base d'usuari no és un subnode del DN base global",
+ "Group base DN is not a subnode of global base DN" : "El DN base del grup no és un subnode del DN base global",
"Please login with the new password" : "Inicieu sessió amb la nova contrasenya",
"LDAP User backend" : "Rerefons d'usuari LDAP",
"Your password will expire tomorrow." : "La contrasenya caducarà demà.",
"Your password will expire today." : "La contrasenya caducarà avui.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya caducarà d'aquí %n dies."],
"LDAP/AD integration" : "Integració LDAP/AD",
+ "LDAP Connection" : "Connexió LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Ha fallat l'enllaç per a aquesta configuració LDAP: %s","Ha fallat l'enllaç per %n configuracions LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["No s'ha pogut cercar aquesta configuració LDAP: %s"," No s’han pogut cercar %n configuracions LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Hi ha una configuració LDAP inactiva: %s","Hi han %n configuracions LDAP inactives: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["L'enllaç i la cerca funciona a la connexió LDAP configurada (%s)","L’enllaç i la cerca funciona a totes les %n connexions LDAP configurades (%s)"],
"Invalid LDAP UUIDs" : "UUID no vàlid",
"None found" : "No s'ha trobat cap",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "S'han trobat UUID no vàlids de comptes o grups LDAP. Reviseu el vostre paràmetre d'\"Anul·lació de la detecció d'UUID\" a la part Expert de la configuració LDAP i utilitzeu \"occ ldap:update-uuid\" per actualitzar-los.",
"_%n group found_::_%n groups found_" : ["S'ha trobat %n grup","S’han trobat %n grups"],
"> 1000 groups found" : "> 1000 grups trobats",
"> 1000 users found" : "> 1000 usuaris trobats",
@@ -204,6 +216,10 @@
"User profile Headline will be set from the specified attribute" : "El títol del perfil d'usuari s'establirà a partir de l'atribut especificat",
"Biography Field" : "Camp de Biografia",
"User profile Biography will be set from the specified attribute" : "La biografia del perfil d'usuari s'establirà a partir de l'atribut especificat",
+ "Birthdate Field" : "Camp de data de naixement",
+ "User profile Date of birth will be set from the specified attribute" : "La Data de naixement al perfil d’usuari s'establirà a partir de l'atribut especificat",
+ "Pronouns Field" : "Camp de pronoms",
+ "User profile Pronouns will be set from the specified attribute" : "Els pronoms al Perfil d’usuari s’establiran a partir de l'atribut especificat",
"Internal Username" : "Nom d'usuari intern",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Per defecte, el nom d'usuari intern es crearà a partir de l'atribut UUID. S'assegura que el nom d'usuari és únic i que els caràcters no s'han de convertir. El nom d'usuari intern té la restricció que només es permeten aquests caràcters: [a-zA-Z0-9_.@-]. Altres caràcters es substitueixen per la seva correspondència ASCII o simplement s'ometen. En les col·lisions, s'afegirà/augmentarà un nombre. El nom d'usuari intern s'utilitza per identificar un usuari internament. També és el nom per defecte de la carpeta d'inici de l'usuari. També forma part dels URL remots, per exemple, per a tots els serveis DAV. Amb aquest paràmetre, es pot anul·lar el comportament per defecte. Els canvis només tindran efecte en els usuaris LDAP (afegits) recentment assignats. Deixeu-lo buit per al comportament per defecte.",
"Internal Username Attribute:" : "Atribut nom d'usuari intern:",
@@ -215,6 +231,6 @@
"Usernames are used to store and assign metadata. 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." : "Els noms d'usuari son emprats per emmagatzemar i assignar metadades. Per tal d'identificar i reconèixer amb precisió als usuaris, cada usuari LDAP té un nom d'usuari intern. Això requereix una assignació de noms d'usuari interns per a cada un dels usuaris LDAP. Al nom d'usuari creat s'assigna el UUID de l'usuari LDAP. A més el DN es guarda en memòria cau per a reduir la interacció amb LDAP, però no s'utilitza per a identificació. Si el DN canvia, es trobaran els canvis. El nom d'usuari intern s'utilitza arreu. Netejar el mapa d'assignacions deixaria restes per totes bandes. Netejar el mapa d'assignacions no és que sigui sensible a la configuració, sinó que afecta a totes les configuracions LDAP! Mai netegeu el mapa d'assignacions en un entorn de producció, només en escenaris de proves o experimentals.",
"Clear Username-LDAP User Mapping" : "Elimina el mapatge d'usuari Nom d'usuari-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Suprimeix el mapatge de grup Nom de grup-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "S'han trobat UUID no vàlids d'usuaris o grups LDAP. Reviseu els paràmetres de l'\"Anul·lació de detecció d'UUID\" a la part Experta de la configuració LDAP i utilitzeu \"occ ldap:update-uuid\" per actualitzar-los."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuració no vàlida. Feu un cop d'ull als registres per obtenir més informació."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js
index 4280b040ec2..57912e46adf 100644
--- a/apps/user_ldap/l10n/cs.js
+++ b/apps/user_ldap/l10n/cs.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavení: Anonymní navázání není umožněno.",
"Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavení je v pořádku, ale spojení se nezdařilo. Zkontrolujte nastavení serveru a přihlašovací údaje.",
- "Invalid configuration. Please have a look at the logs for further details." : "Neplatné nastavení. Podrobnosti naleznete v záznamu událostí.",
+ "Invalid configuration: %s" : "Neplatné nastavení: %s",
"No action specified" : "Neurčena žádná akce",
"No configuration specified" : "Neurčeno žádné nastavení",
"No data specified" : "Neurčena žádná data",
"Invalid data specified" : "Zadána neplatná data",
- " Could not set configuration %s" : "Nelze nastavit konfiguraci %s",
+ "Could not set configuration %1$s to %2$s" : "Nepodařilo se nastavit konfiguraci %1$s na %2$s",
"Action does not exist" : "Tato akce neexistuje",
"Renewing …" : "Obnovování…",
"Very weak password" : "Velmi snadno prolomitelné heslo",
@@ -54,15 +54,28 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Zástupný symbol „%uid“ chybí. Při dotatzu na LDAP/AD bude nahrazen přihlašovacím jménem.",
"Please provide a login name to test against" : "Zadejte přihlašovací jméno, vůči kterému vyzkoušet",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Skupinová kolonka bylo vypnuta, protože LDAP/AD server nepodporuje memberOf.",
- "Password change rejected. Hint: " : "Změna hesla zamítnuta. Nápověda: ",
+ "Password change rejected. Hint: %s" : "Změna hesla zamítnuta. Nápověda: %s",
+ "Mandatory field \"%s\" left empty" : "Nezbytná kolonka „%s“ nevyplněna",
+ "A password is given, but not an LDAP agent" : "Heslo je zadáno, ale nikoli LDAP agent",
+ "No password is given for the user agent" : "Pro uživatelského agenta nezadáno žádné heslo",
+ "No LDAP base DN was given" : "Nezadáno LDAP základ DN",
+ "User base DN is not a subnode of global base DN" : "Základ DN uživatele není dílčím uzlem globálního základu DN",
+ "Group base DN is not a subnode of global base DN" : "Základ DN skupiny není dílčím uzlem globálního základu DN",
+ "Login filter does not contain %s placeholder." : "Filtr přihlášení neobsahuje zástupné vyjádření %s.",
"Please login with the new password" : "Přihlaste se pomocí nového hesla",
"LDAP User backend" : "Podpůrná vrstva pro uživatele z LDAP",
"Your password will expire tomorrow." : "Platnost hesla zítra skončí.",
"Your password will expire today." : "Platnost hesla dnes končí.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Platnost hesla skončí za %n den.","Platnost hesla skončí za %n dny.","Platnost hesla skončí za %n dnů.","Platnost hesla skončí za %n dny."],
"LDAP/AD integration" : "Napojení na LDAP/AD",
+ "LDAP Connection" : "LDAP spojení",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Navazování se pro toto nastavení LDAP nezdařilo: %s","Navazování se pro tato nastavení LDAP nezdařilo: %s","Navazování se pro tato nastavení LDAP nezdařilo: %s","Navazování se pro tato nastavení LDAP nezdařilo: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Hledání se pro toto nastavení LDAP nezdařilo: %s","Hledání se pro tato nastavení LDAP nezdařilo: %s","Hledání se pro tato nastavení LDAP nezdařilo: %s","Hledání se pro tato nastavení LDAP nezdařilo: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Je zde neaktivní nastavení pro LDAP: %s","Jsou zde neaktivní nastavení pro LDAP: %s","Je zde neaktivních nastavení pro LDAP: %s","Jsou zde neaktivní nastavení pro LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Navazování a vyhledávání funguje na nastaveném LDAP spojení (%s)","Navazování a vyhledávání funguje na všech %n nastavených LDAP spojeních (%s)","Navazování a vyhledávání funguje na všech %n nastavených LDAP spojeních (%s)","Navazování a vyhledávání funguje na všech %n nastavených LDAP spojeních (%s)"],
"Invalid LDAP UUIDs" : "Neplatné LDAP UUID identif.",
"None found" : "Žádné nenalezeno",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Nalezeny neplatné UUID identifikátory účtů nebo skupin. Zkontrolujte svá nastavení „Přebít zjišťování UUID identifikátorů“ v části pro odborníky nastavení pro LDAP a identifikátory pak zaktualizujte příkazem „ldap:update-uuid“.",
"_%n group found_::_%n groups found_" : ["nalezena %n skupina","nalezeny %n skupiny","nalezeno %n skupin","nalezeny %n skupiny"],
"> 1000 groups found" : "nalezeno více než 1 000 skupin",
"> 1000 users found" : "nalezeno více než 1 000 uživatelů",
@@ -206,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Ze zadaného atributu bude nastaven Nadpis u uživatelského profilu",
"Biography Field" : "Kolonka životopis",
"User profile Biography will be set from the specified attribute" : "Ze zadaného atributu bude nastaven Životopis u uživatelského profilu",
+ "Birthdate Field" : "Kolonka Narozeniny",
+ "User profile Date of birth will be set from the specified attribute" : "Datum narození v profilu uživatele bude nastaveno ze zadaného atributu",
+ "Pronouns Field" : "Kolonka pro zájmena",
+ "User profile Pronouns will be set from the specified attribute" : "Zájmeno v profilu uživatele bude nastaveno ze zadaného atributu",
"Internal Username" : "Interní uživatelské jméno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Ve výchozím nastavení bude interní uživatelské jméno vytvořeno z atributu UUID. To zajišťuje, že je uživatelské jméno unikátní a znaky nemusí být převáděny. Interní uživatelské jméno má omezení, podle kterého jsou povoleny jen následující znaky [ a-zA-Z0-9_.@- ]. Ostatní znaky jsou nahrazeny jejich protějšky z ASCII nebo prostě vynechány. Při konfliktech bude přidáno/zvýšeno číslo. Interní uživatelské jméno slouží pro interní identifikaci uživatele. Je také výchozím názvem domovského adresáře uživatele. Je také součástí URL, např. pro služby *DAV. Tímto nastavením může být výchozí chování změněno. Změny se projeví pouze u nově namapovaných (přidaných) uživatelů LDAP. Ponechte ho prázdné, pokud chcete zachovat výchozí nastavení. ",
"Internal Username Attribute:" : "Atribut interního uživatelského jména:",
@@ -217,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména slouží k ukládání a přiřazování metadat. Pro přesnou identifikaci a rozpoznávání uživatelů, každý LDAP uživatel má vnitřní uživatelské jméno. Toto vyžaduje mapování uživatelského jména na LDAP uživatele. Krom toho je uložen do mezipaměti rozlišený název aby se omezila interakce s LDAP, ale není používáno pro identifikaci. Pokud se DN změní, změny budou nalezeny. Vnitřní uživatelské jméno bude použito nade všechno. Čištění mapování bude mít pozůstatky všude. Čištění mapování není citlivé na nastavení, postihuje všechny LDAP nastavení. Nikdy nečistěte mapování v produkčním prostředí, pouze v testovací nebo experimentální fázi.",
"Clear Username-LDAP User Mapping" : "Zrušit mapování uživatelských jmen v LDAP",
"Clear Groupname-LDAP Group Mapping" : "Zrušit mapování názvů skupin na LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Nalezeny neplatné UUID identifikátory uživatelů nebo skupin. Zkontrolujte svá nastavení „Přebít zjišťování UUID identifikátorů“ v části pro odborníky nastavení pro LDAP a identifikátory pak zaktualizujte příkazem „ldap:update-uuid“."
+ "Invalid configuration. Please have a look at the logs for further details." : "Neplatné nastavení. Podrobnosti naleznete v záznamu událostí."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json
index 6014355f3da..60d09fdf3e5 100644
--- a/apps/user_ldap/l10n/cs.json
+++ b/apps/user_ldap/l10n/cs.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavení: Anonymní navázání není umožněno.",
"Valid configuration, connection established!" : "Nastavení je v pořádku a spojení bylo navázáno.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavení je v pořádku, ale spojení se nezdařilo. Zkontrolujte nastavení serveru a přihlašovací údaje.",
- "Invalid configuration. Please have a look at the logs for further details." : "Neplatné nastavení. Podrobnosti naleznete v záznamu událostí.",
+ "Invalid configuration: %s" : "Neplatné nastavení: %s",
"No action specified" : "Neurčena žádná akce",
"No configuration specified" : "Neurčeno žádné nastavení",
"No data specified" : "Neurčena žádná data",
"Invalid data specified" : "Zadána neplatná data",
- " Could not set configuration %s" : "Nelze nastavit konfiguraci %s",
+ "Could not set configuration %1$s to %2$s" : "Nepodařilo se nastavit konfiguraci %1$s na %2$s",
"Action does not exist" : "Tato akce neexistuje",
"Renewing …" : "Obnovování…",
"Very weak password" : "Velmi snadno prolomitelné heslo",
@@ -52,15 +52,28 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Zástupný symbol „%uid“ chybí. Při dotatzu na LDAP/AD bude nahrazen přihlašovacím jménem.",
"Please provide a login name to test against" : "Zadejte přihlašovací jméno, vůči kterému vyzkoušet",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Skupinová kolonka bylo vypnuta, protože LDAP/AD server nepodporuje memberOf.",
- "Password change rejected. Hint: " : "Změna hesla zamítnuta. Nápověda: ",
+ "Password change rejected. Hint: %s" : "Změna hesla zamítnuta. Nápověda: %s",
+ "Mandatory field \"%s\" left empty" : "Nezbytná kolonka „%s“ nevyplněna",
+ "A password is given, but not an LDAP agent" : "Heslo je zadáno, ale nikoli LDAP agent",
+ "No password is given for the user agent" : "Pro uživatelského agenta nezadáno žádné heslo",
+ "No LDAP base DN was given" : "Nezadáno LDAP základ DN",
+ "User base DN is not a subnode of global base DN" : "Základ DN uživatele není dílčím uzlem globálního základu DN",
+ "Group base DN is not a subnode of global base DN" : "Základ DN skupiny není dílčím uzlem globálního základu DN",
+ "Login filter does not contain %s placeholder." : "Filtr přihlášení neobsahuje zástupné vyjádření %s.",
"Please login with the new password" : "Přihlaste se pomocí nového hesla",
"LDAP User backend" : "Podpůrná vrstva pro uživatele z LDAP",
"Your password will expire tomorrow." : "Platnost hesla zítra skončí.",
"Your password will expire today." : "Platnost hesla dnes končí.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Platnost hesla skončí za %n den.","Platnost hesla skončí za %n dny.","Platnost hesla skončí za %n dnů.","Platnost hesla skončí za %n dny."],
"LDAP/AD integration" : "Napojení na LDAP/AD",
+ "LDAP Connection" : "LDAP spojení",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Navazování se pro toto nastavení LDAP nezdařilo: %s","Navazování se pro tato nastavení LDAP nezdařilo: %s","Navazování se pro tato nastavení LDAP nezdařilo: %s","Navazování se pro tato nastavení LDAP nezdařilo: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Hledání se pro toto nastavení LDAP nezdařilo: %s","Hledání se pro tato nastavení LDAP nezdařilo: %s","Hledání se pro tato nastavení LDAP nezdařilo: %s","Hledání se pro tato nastavení LDAP nezdařilo: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Je zde neaktivní nastavení pro LDAP: %s","Jsou zde neaktivní nastavení pro LDAP: %s","Je zde neaktivních nastavení pro LDAP: %s","Jsou zde neaktivní nastavení pro LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Navazování a vyhledávání funguje na nastaveném LDAP spojení (%s)","Navazování a vyhledávání funguje na všech %n nastavených LDAP spojeních (%s)","Navazování a vyhledávání funguje na všech %n nastavených LDAP spojeních (%s)","Navazování a vyhledávání funguje na všech %n nastavených LDAP spojeních (%s)"],
"Invalid LDAP UUIDs" : "Neplatné LDAP UUID identif.",
"None found" : "Žádné nenalezeno",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Nalezeny neplatné UUID identifikátory účtů nebo skupin. Zkontrolujte svá nastavení „Přebít zjišťování UUID identifikátorů“ v části pro odborníky nastavení pro LDAP a identifikátory pak zaktualizujte příkazem „ldap:update-uuid“.",
"_%n group found_::_%n groups found_" : ["nalezena %n skupina","nalezeny %n skupiny","nalezeno %n skupin","nalezeny %n skupiny"],
"> 1000 groups found" : "nalezeno více než 1 000 skupin",
"> 1000 users found" : "nalezeno více než 1 000 uživatelů",
@@ -204,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "Ze zadaného atributu bude nastaven Nadpis u uživatelského profilu",
"Biography Field" : "Kolonka životopis",
"User profile Biography will be set from the specified attribute" : "Ze zadaného atributu bude nastaven Životopis u uživatelského profilu",
+ "Birthdate Field" : "Kolonka Narozeniny",
+ "User profile Date of birth will be set from the specified attribute" : "Datum narození v profilu uživatele bude nastaveno ze zadaného atributu",
+ "Pronouns Field" : "Kolonka pro zájmena",
+ "User profile Pronouns will be set from the specified attribute" : "Zájmeno v profilu uživatele bude nastaveno ze zadaného atributu",
"Internal Username" : "Interní uživatelské jméno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Ve výchozím nastavení bude interní uživatelské jméno vytvořeno z atributu UUID. To zajišťuje, že je uživatelské jméno unikátní a znaky nemusí být převáděny. Interní uživatelské jméno má omezení, podle kterého jsou povoleny jen následující znaky [ a-zA-Z0-9_.@- ]. Ostatní znaky jsou nahrazeny jejich protějšky z ASCII nebo prostě vynechány. Při konfliktech bude přidáno/zvýšeno číslo. Interní uživatelské jméno slouží pro interní identifikaci uživatele. Je také výchozím názvem domovského adresáře uživatele. Je také součástí URL, např. pro služby *DAV. Tímto nastavením může být výchozí chování změněno. Změny se projeví pouze u nově namapovaných (přidaných) uživatelů LDAP. Ponechte ho prázdné, pokud chcete zachovat výchozí nastavení. ",
"Internal Username Attribute:" : "Atribut interního uživatelského jména:",
@@ -215,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména slouží k ukládání a přiřazování metadat. Pro přesnou identifikaci a rozpoznávání uživatelů, každý LDAP uživatel má vnitřní uživatelské jméno. Toto vyžaduje mapování uživatelského jména na LDAP uživatele. Krom toho je uložen do mezipaměti rozlišený název aby se omezila interakce s LDAP, ale není používáno pro identifikaci. Pokud se DN změní, změny budou nalezeny. Vnitřní uživatelské jméno bude použito nade všechno. Čištění mapování bude mít pozůstatky všude. Čištění mapování není citlivé na nastavení, postihuje všechny LDAP nastavení. Nikdy nečistěte mapování v produkčním prostředí, pouze v testovací nebo experimentální fázi.",
"Clear Username-LDAP User Mapping" : "Zrušit mapování uživatelských jmen v LDAP",
"Clear Groupname-LDAP Group Mapping" : "Zrušit mapování názvů skupin na LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Nalezeny neplatné UUID identifikátory uživatelů nebo skupin. Zkontrolujte svá nastavení „Přebít zjišťování UUID identifikátorů“ v části pro odborníky nastavení pro LDAP a identifikátory pak zaktualizujte příkazem „ldap:update-uuid“."
+ "Invalid configuration. Please have a look at the logs for further details." : "Neplatné nastavení. Podrobnosti naleznete v záznamu událostí."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/cy_GB.js b/apps/user_ldap/l10n/cy_GB.js
deleted file mode 100644
index 3d47b3b4e66..00000000000
--- a/apps/user_ldap/l10n/cy_GB.js
+++ /dev/null
@@ -1,10 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Users" : "Defnyddwyr",
- "Groups" : "Grwpiau",
- "Help" : "Cymorth",
- "Password" : "Cyfrinair",
- "Advanced" : "Uwch"
-},
-"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
diff --git a/apps/user_ldap/l10n/cy_GB.json b/apps/user_ldap/l10n/cy_GB.json
deleted file mode 100644
index 8140e36f49d..00000000000
--- a/apps/user_ldap/l10n/cy_GB.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{ "translations": {
- "Users" : "Defnyddwyr",
- "Groups" : "Grwpiau",
- "Help" : "Cymorth",
- "Password" : "Cyfrinair",
- "Advanced" : "Uwch"
-},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js
index 0f8f85fc996..0c909bddbf0 100644
--- a/apps/user_ldap/l10n/da.js
+++ b/apps/user_ldap/l10n/da.js
@@ -1,182 +1,239 @@
OC.L10N.register(
"user_ldap",
{
- "Failed to clear the mappings." : "Mislykkedes med at rydde delingerne.",
- "Failed to delete the server configuration" : "Kunne ikke slette server konfigurationen",
+ "Failed to clear the mappings." : "Det lykkedes ikke at rydde tilknytningen.",
+ "Failed to delete the server configuration" : "Kunne ikke slette serverkonfigurationen",
"Invalid configuration: Anonymous binding is not allowed." : "Ugyldig konfiguration: Anonym binding er ikke tilladt.",
"Valid configuration, connection established!" : "Gyldig konfiguration, forbindelse etableret!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "Gyldig konfiguration, men forbindelsen mislykkedes. Tjek venligst serverens indstillinger og brugeroplysninger.",
- "Invalid configuration. Please have a look at the logs for further details." : "Ikke gyldig konfiguration. Kig venligst på logfilerne for mere information.",
- "No action specified" : "Der er ikke angivet en handling",
- "No configuration specified" : "Der er ikke angivet en konfiguration",
- "No data specified" : "Der er ikke angivet data",
- " Could not set configuration %s" : "Kunne ikke indstille konfigurationen %s",
- "Action does not exist" : "Handlingen findes ikke",
- "Renewing …" : "Fornyer...",
- "Very weak password" : "Meget svagt password",
- "Weak password" : "Svagt password",
- "So-so password" : "Jævnt password",
- "Good password" : "Godt password",
- "Strong password" : "Stærkt password",
- "The Base DN appears to be wrong" : "Base DN'et ser ud til at være forkert",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Gyldig konfiguration, men binding mislykkedes. Tjek serverindstillingerne og legitimationerne.",
+ "Invalid configuration: %s" : "Ugyldig konfiguration: %s",
+ "No action specified" : "Ingen handling angivet",
+ "No configuration specified" : "Ingen konfiguration angivet",
+ "No data specified" : "Ingen data angivet",
+ "Invalid data specified" : "Ugyldige data angivet",
+ "Could not set configuration %1$s to %2$s" : "Kunne ikke indstille konfigurationen %1$s til %2$s",
+ "Action does not exist" : "Handling eksisterer ikke",
+ "Renewing …" : "Fornyer ...",
+ "Very weak password" : "Meget svag adgangskode",
+ "Weak password" : "Svækket adgangskode",
+ "So-so password" : "So-so adgangskode",
+ "Good password" : "God adgangskode",
+ "Strong password" : "Stærk adgangskode",
+ "The Base DN appears to be wrong" : "Base DN synes at være forkert",
"Testing configuration…" : "Tester konfiguration...",
- "Configuration incorrect" : "Konfigurationen er ikke korrekt",
- "Configuration incomplete" : "Konfigurationen er ikke komplet",
- "Configuration OK" : "Konfigurationen er OK",
+ "Configuration incorrect" : "Konfiguration forkert",
+ "Configuration incomplete" : "Konfiguration ufuldstændig",
+ "Configuration OK" : "Konfiguration OK",
"Select groups" : "Vælg grupper",
"Select object classes" : "Vælg objektklasser",
- "Please check the credentials, they seem to be wrong." : "Tjek venligst brugeroplysningerne - de ser ud til at være forkerte.",
- "Please specify the port, it could not be auto-detected." : "Angiv venligst porten - den kunne ikke registreres automatisk.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN kunne ikke registreres automatisk - gennemse venligst brugeroplysningerne, vært og port.",
- "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 than 1,000 directory entries available." : "Mere end 1.000 mappeposter tilgængelige",
- "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} objekter tilgængelige indenfor den angivne Base DN","{objectsFound} objekter tilgængelige indenfor den 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?",
+ "Please check the credentials, they seem to be wrong." : "Tjek venligst legitimationerne.",
+ "Please specify the port, it could not be auto-detected." : "Angiv porten, den kunne ikke detekteres automatisk.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN kunne ikke detekteres automatisk, skal du revidere legitimation, vært og port.",
+ "Could not detect Base DN, please enter it manually." : "Kunne ikke detektere Base DN, skal du indtaste det manuelt.",
+ "{nthServer}. Server" : "{nthServer}. Server",
+ "No object found in the given Base DN. Please revise." : "Intet objekt fundet i den givne base DN. Vær venlig at revidere.",
+ "More than 1,000 directory entries available." : "Mere end 1.000 mappeindgange til rådighed.",
+ "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} indgang tilgængelig i den givne Base DN","{objectsFound} poster tilgængelige inden for den givne 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 samt tilslutningsindstillinger og legitimationsoplysninger.",
+ "Do you really want to delete the current Server Configuration?" : "Vil du virkelig slette den aktuelle server konfiguration?",
"Confirm Deletion" : "Bekræft sletning",
- "Mappings cleared successfully!" : "Tilknytningerne blev ryddet af vejen!",
+ "Mappings cleared successfully!" : "Mappings ryddet med succes!",
"Error while clearing the mappings." : "Fejl under rydning af tilknytninger.",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonyme bindinger tillades ikke. Angiv venligst et User DN og adgangskode.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP-driftsfejl. Anonyme bindinger tillades muligvis ikke.",
- "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.",
- "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?" : "Skift af tilstanden vil betyde aktivering af automatiske LDAP-forespørgsler. Afhængig af størrelsen på din LDAP, vil det kunne tage noget tid. Ønsker du stadig at ændre tilstanden?",
- "Mode switch" : "Skift af tilstand",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonym binding er ikke tilladt. Giv venligst en bruger DN og adgangskode.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP Operationsfejl. Anonym binding er måske ikke tilladt.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Gemning mislykkedes. Sørg for, at databasen er i drift. Genindlæs før du fortsætter.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Skifter tilstand vil aktivere automatisk LDAP forespørgsler. Afhængig af din LDAP størrelse kan de tage et stykke tid. Vil du stadig skifte tilstand?",
+ "Mode switch" : "Tilstandsafbryder",
"Select attributes" : "Vælg attributter",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje): <br/>",
- "User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.",
- "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvej at lave en mere præcis søgning pga. den rammer mange brugere og kun den første er i stand til at logge ind.",
- "An unspecified error occurred. Please check log and settings." : "Der skete en uspecificeret fejl . Tjek log og indstillinger.",
- "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ",
- "Please provide a login name to test against" : "Angiv venligst et loginnavn for at teste mod",
- "Password change rejected. Hint: " : "Kodeord ændring afvist. Hint:",
- "Please login with the new password" : "Log venligst ind med dit nye password",
- "LDAP User backend" : "LDAP Bruger-backend",
- "Your password will expire tomorrow." : "Dit password udløber i morgen.",
- "Your password will expire today." : "Dit password udløber i dag.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dit password udløber om en dag.","Dit password udløber om %n dage."],
- "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede LDAP-indstillinger.",
- "Could not find the desired feature" : "Fandt ikke den ønskede funktion",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Brugeren ikke fundet. Tjek venligst dine login attributter og brugernavn. Effektiv filter (til copy- and - paste til kommandolinjevalidering): < br / >",
+ "User found and settings verified." : "Bruger fundet og indstillinger verificeret.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvej at indsnævre din søgning, som det omfattede mange brugere, kun den første af dem vil være i stand til at logge ind.",
+ "An unspecified error occurred. Please check log and settings." : "En uspecificeret fejl opstod. Tjek log og indstillinger.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt, sandsynligvis på grund af syntaksspørgsmål som ulige antal åbne og lukkede parenteser. Vær venlig at revidere.",
+ "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "En forbindelsesfejl til LDAP / AD opstod. Tjek vært, havn og legitimation.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Placeholderen \"%u ID\" mangler. Det vil blive erstattet med login navn, når du forespørger LDAP / AD.",
+ "Please provide a login name to test against" : "Angiv et login navn at teste mod",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Gruppefeltet var deaktiveret, fordi LDAP / AD-serveren ikke understøtter memberOf.",
+ "Password change rejected. Hint: %s" : "Adgangskodeændring afvist. Hint: %s",
+ "Mandatory field \"%s\" left empty" : "Obligatorisk felt \"%s\" efterladt tom",
+ "A password is given, but not an LDAP agent" : "En adgangskode er givet, men ikke en LDAP agent",
+ "No password is given for the user agent" : "Ingen adgangskode er givet for brugeren agent",
+ "No LDAP base DN was given" : "Ingen LDAP base DN blev givet",
+ "User base DN is not a subnode of global base DN" : "Brugerbase DN er ikke en subnode af global base DN",
+ "Group base DN is not a subnode of global base DN" : "Group base DN er ikke en subnode af global base DN",
+ "Login filter does not contain %s placeholder." : "Login filter indeholder ikke %s pladsholder.",
+ "Please login with the new password" : "Log ind med den nye adgangskode",
+ "LDAP User backend" : "LDAP Brugermotor",
+ "Your password will expire tomorrow." : "Din adgangskode udløber i morgen.",
+ "Your password will expire today." : "Din adgangskode udløber i dag.",
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Din adgangskode udløber inden for %n dag.","Din adgangskode udløber inden for %n dage."],
+ "LDAP/AD integration" : "LDAP / AD integration",
+ "LDAP Connection" : "LDAP forbindelse",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Binding mislykkedes for denne LDAP- konfiguration:% s","Binding mislykkedes for %n LDAP- konfigurationer: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Søgning mislykkedes for denne LDAP- konfiguration:% s","Søgning mislykkedes for %n LDAP- konfigurationer: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Der er en inaktiv LDAP- konfiguration:% s","Der er %n inaktive LDAP- konfigurationer: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Binding og søgning virker på den konfigurerede LDAP- forbindelse (% s)","Binding og søgning virker på alle %n konfigurerede LDAP- forbindelser (%s)"],
+ "Invalid LDAP UUIDs" : "Ugyldige LDAP UUID 'er",
+ "None found" : "Ingen fundet",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Ugyldige UUID 'er for LDAP-konti eller -grupper er fundet. Du bedes gennemgå dine \"Override UUID Detection\" indstillinger i Expert del af LDAP konfiguration og bruge \"occ ldap: update- uuid\" til at opdatere dem.",
+ "_%n group found_::_%n groups found_" : [" %n gruppe fundet"," %n grupper fundet"],
+ "> 1000 groups found" : "> 1000 grupper fundet",
+ "> 1000 users found" : "> 1000 brugere fundet",
+ "_%n user found_::_%n users found_" : [" %n bruger fundet"," %n brugere fundet"],
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke detektere brugernavn attribut. Angiv det selv i avancerede LDAP-indstillinger.",
+ "Could not find the desired feature" : "Kunne ikke finde den ønskede funktion",
"Invalid Host" : "Ugyldig vært",
- "LDAP user and group backend" : "LDAP bruger og gruppe backend",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Denne applikation tillader administrator at forbinde Nextcloud til et LDAP bruger kartotek",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Denne applikation tillader administrator at forbinde Nextcloud til et LDAP bruger kartotek som foretager godkendelse og overførsel af brugere, grupper og bruger egenskaber. Adminstrator kan via LDAP bruger græsnsefladen konfigurere denne applikation til at forbinde til et eller flere LDAP kartoteker eller Active Directories. Egenskaber så som bruger kvota, email, avatar billeder, gruppe tilhørsforhold og andet kan blive overført til nextcloud fra et bibliotek med med de korrekte forspørgsler og filtre. \n\nEn bruger logger ind i Nextcloud med deres LDAP eller AD legitimation og får adgang baseret på en legitimationsforspørgsel håndteret til den tilsluttede LDAP eller AD server. Nextcloud gemmer ikke LDAP eller AD password, men bruger disse til at legitimere en bruger og opsætter en bruger ID for brugerens ophold. Mere information er tilgængelig i LDAP bruger og Group Backend dokumentationen.",
- "Test Configuration" : "Test konfigurationen",
+ "LDAP user and group backend" : "LDAP- bruger og gruppe-motor",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Dette program gør det muligt for administratorer at forbinde Nextcloud til en LDAP- baseret brugermappe.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Dette program gør det muligt for administratorer at forbinde Nextcloud til en LDAP- baseret brugermappe for autentificering og levering brugere, grupper og brugerattributter. Administrerer kan indstille dette program til at oprette forbindelse til en eller flere LDAP- mapper eller aktive mapper via en LDAP- grænseflade. Attributter såsom brugerkvote, e-mail, avatar billeder, gruppe medlemskaber og mere kan trækkes ind Nextcloud fra en mappe med de relevante forespørgsler og filtre.\n\nEn bruger logger ind på Nextcloud med deres LDAP- eller AD-legitimationsoplysninger og får adgang baseret på en autentificeringsanmodning, der håndteres af LDAP- eller AD-serveren. Nextcloud ikke gemme LDAP- eller AD-adgangskoder, snarere disse legitimationsoplysninger bruges til at autentificere en bruger og derefter Nextcloud bruger en session for brugeren ID. Mere information er tilgængelig i LDAP User and Group Backend dokumentation.",
+ "Test Configuration" : "Prøvningsindstilling",
"Help" : "Hjælp",
- "Groups meeting these criteria are available in %s:" : "Grupper som opfylder disse kriterier er tilgængelige i %s:",
+ "Groups meeting these criteria are available in %s:" : "Grupper, der opfylder disse kriterier, er tilgængelige i %s:",
"Only these object classes:" : "Kun disse objektklasser:",
"Only from these groups:" : "Kun fra disse grupper:",
- "Search groups" : "Søg grupper",
+ "Search groups" : "Søgegrupper",
"Available groups" : "Tilgængelige grupper",
- "Selected groups" : "Valgte grupper",
- "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.",
- "Verify settings and count the 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:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Tillader login mod en e-mailattribut. Mail og \"mailPrimaryAddress\" vil være tilladt.",
+ "Selected groups" : "Udvalgte grupper",
+ "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 %s eksemplet.",
+ "Verify settings and count the groups" : "Verificer indstillinger og tæl grupperne",
+ "When logging in, %s will find the user based on the following attributes:" : "Når du logger ind, vil %s finde brugeren baseret på følgende egenskaber:",
+ "LDAP/AD Username:" : "LDAP / AD Brugernavn:",
+ "Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Tillader login mod LDAP / AD brugernavn, som er enten \"uid\" eller \"SAMAccountName\" og vil blive opdaget.",
+ "LDAP/AD Email Address:" : "LDAP / AD E-mail adresse:",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Tillader login mod en e- mail- attribut. \"mail\" og \"mailPrimaryAddress\" tilladt.",
"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 filtret der anvendes, når der er forsøg på at logge ind. \"%%uid\" erstattter brugernavnet i login-handlingen. Eksempel: \"uid=%%uid\"",
- "Test Loginname" : "Test loginnavn",
- "Verify settings" : "Kontrollér indstillinger",
- "%s. Server:" : "%s. server:",
+ "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definerer det filter der skal anvendes, når login er forsøgt. \"%% uid\" erstatter brugernavnet i login-handlingen. Eksempel: \"uid =%% uid\"",
+ "Test Loginname" : "Test af loginnavn",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Forsøg på at modtage en DN for det givne lognavn og det aktuelle login-filter",
+ "Verify settings" : "Verificér indstillinger",
+ "%s. Server:" : "%s. Server:",
"Add a new configuration" : "Tilføj en ny konfiguration",
- "Copy current configuration into new directory binding" : "Kopiér nuværende konfiguration ind i en ny mappetilknytning",
+ "Copy current configuration into new directory binding" : "Kopiér nuværende konfiguration til ny mappebinding",
"Delete the current configuration" : "Slet den aktuelle konfiguration",
"Host" : "Vært",
- "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kan udelade protokollen, medmindre du skal bruge SSL. Start i så fald med ldaps://",
+ "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kan udelade protokollen, medmindre du har brug for SSL. Hvis ja, begynd med ldaps: / /",
"Port" : "Port",
- "Detect Port" : "Registrér port",
+ "Detect Port" : "Detektér port",
"User DN" : "Bruger 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'et for klientbrugeren, for hvilken forbindelsen skal foretages, eks. uid=agent,dc=eksempel,dc=com. For anonym adgang lades DN og Password stå tomme.",
- "Password" : "Kodeord",
- "For anonymous access, leave DN and Password empty." : "For anonym adgang, skal du lade DN og Adgangskode tomme.",
- "Save Credentials" : "Gem brugeroplysninger",
- "One Base DN per line" : "Ét Base DN per linje",
- "You can specify Base DN for users and groups in the Advanced tab" : "Du kan specificere base DN for brugere og grupper i fanen Advanceret",
- "Detect Base DN" : "Registrér Base 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 for klientbrugeren, som bindingen skal udføres med, f.eks. uid = agent, DC = eksempel, DC = com. For anonym adgang, lad DN og Password tom.",
+ "Password" : "Adgangskode",
+ "For anonymous access, leave DN and Password empty." : "For anonym adgang, lad DN og Password tom.",
+ "Save Credentials" : "Gem afstemning",
+ "One Base DN per line" : "One Base DN pr. linje",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Du kan angive Base DN for brugere og grupper i fanebladet Avanceret",
+ "Detect Base DN" : "Detektér base DN",
"Test Base DN" : "Test Base DN",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Undgår automatiske LDAP-forespørgsler. Bedre på større opsætninger, men kræver en del LDAP-kendskab.",
- "Manually enter LDAP filters (recommended for large directories)" : "Angiv LDAP-filtre manuelt (anbefales til større kataloger)",
- "Listing and searching for users is constrained by these criteria:" : "Listning og søgning af brugere er begrænset af følgende kriterier:",
- "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 fleste gængse objektklasser for brugere er organizationalPerson, person, user og inetOrgPerson. Hvis du ikker er sikker på hvilken objektklasse, der skal vælges, så tal med administratoren af dit katalog.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "Filteret angiver hvilke LDAP-brugere, der skal have adgang til %s-instansen.",
- "Verify settings and count users" : "Kontrollér indstillinger og optalte brugere",
+ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Undgår automatisk LDAP anmodninger. Bedre for større opsætninger, men kræver noget LDAP viden.",
+ "Manually enter LDAP filters (recommended for large directories)" : "Indtast LDAP- filtre manuelt (anbefales til store mapper)",
+ "Listing and searching for users is constrained by these criteria:" : "Lister og søgning efter brugere er begrænset af disse kriterier:",
+ "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 mest almindelige objektklasser for brugere er organisationalPerson, person, bruger og inetOrgPerson. Hvis du ikke er sikker på hvilken objektklasse du skal vælge, bedes du konsultere din mappe- admin.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "Filteret angiver, hvilke LDAP-brugere der skal have adgang til %s instansen.",
+ "Verify settings and count users" : "Verificér indstillinger og tæller brugere",
"Saving" : "Gemmer",
"Back" : "Tilbage",
- "Continue" : "Videre",
- "Please renew your password." : "Nulstil venligst dit password.",
+ "Continue" : "Fortsæt",
+ "Please renew your password." : "Venligst forny din adgangskode.",
"An internal error occurred." : "Der opstod en intern fejl.",
- "Please try again or contact your administrator." : "Prøv venligst igen eller kontakt din administrator.",
- "Current password" : "Nuværende password",
- "New password" : "Nyt password",
- "Renew password" : "Forny venligst password",
- "Wrong password." : "Forkert password.",
+ "Please try again or contact your administrator." : "Prøv igen eller kontakt din administrator.",
+ "Current password" : "Nuværende adgangskode",
+ "New password" : "Ny adgangskode",
+ "Renew password" : "Forny adgangskode",
+ "Wrong password." : "Forkert adgangskode.",
"Cancel" : "Annullér",
"Server" : "Server",
"Users" : "Brugere",
- "Login Attributes" : "Login-attributter",
+ "Login Attributes" : "Login attributter",
"Groups" : "Grupper",
"Expert" : "Ekspert",
"Advanced" : "Avanceret",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advarsel:</b> PHP-modulet LDAP er ikke installeret - backend'en vil ikke fungere. Anmod venligst din systemadministrator om at installere det.",
- "Connection Settings" : "Forbindelsesindstillinger ",
- "Configuration Active" : "Konfiguration er aktiv",
- "When unchecked, this configuration will be skipped." : "Hvis der ikke er markeret, så springes denne konfiguration over.",
- "Backup (Replica) Host" : "Vært for sikkerhedskopier (replika)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Angiv valgfrit en vært for sikkerhedskopiering. Dette skal være en replikering af den primære LDAP/AD-server.",
- "Backup (Replica) Port" : "Port for sikkerhedskopi (replika)",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "< b > Advarsel: < / b > PHP LDAP modulet er ikke installeret, bagenden vil ikke virke. Bed din systemadministrator om at installere den.",
+ "Connection Settings" : "Forbindelsesindstillinger",
+ "Configuration Active" : "Indstillingsaktiv",
+ "When unchecked, this configuration will be skipped." : "Når denne indstilling ikke er markeret, vil den blive sprunget over.",
+ "Backup (Replica) Host" : "Backup (Replica) vært",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Giv en ekstra backup vært. Det skal være en kopi af hovedserveren LDAP / AD.",
+ "Backup (Replica) Port" : "Backup (Replica) Port",
"Disable Main Server" : "Deaktivér hovedserver",
- "Only connect to the replica server." : "Forbind kun til replika serveren.",
- "Turn off SSL certificate validation." : "Deaktivér validering af SSL-certifikat.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Anbefales ikke - bruges kun til testformål! Hvis forbindelse udelukkende fungerer med dette tilvalg, så importér LDAP-serverens SSL-certifikat i din %s-server.",
- "Cache Time-To-Live" : "Cache levetid",
- "in seconds. A change empties the cache." : "i sekunder. En ændring vil tømme cachen.",
+ "Only connect to the replica server." : "Kun forbindelse til replikaserveren.",
+ "Turn off SSL certificate validation." : "Sluk validering af SSL-certifikater.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Ikke anbefalet, brug det kun til test! Hvis forbindelsen kun virker med denne indstilling, importeres LDAP- serverens SSL-certifikat i din %s server.",
+ "Cache Time-To-Live" : "Cache Time-To-Live",
+ "in seconds. A change empties the cache." : "om få sekunder. En forandring tømmer cachen.",
"Directory Settings" : "Mappeindstillinger",
- "User Display Name Field" : "Vist brugernavn felt",
- "The LDAP attribute to use to generate the user's display name." : "LDAP-attributten som skal bruges til at oprette brugerens viste navn.",
- "2nd User Display Name Field" : "Felt for af 2. brugers viste navn",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Valgfri. En LDAP-attribut som tilføjes til vist navn inde i kantede anførselstegn. Giver eks. »John Doe (john.doe@example.org)«.",
- "Base User Tree" : "Base Bruger Træ",
- "One User Base DN per line" : "Én bruger-Base DN per linje",
- "User Search Attributes" : "Attributter for brugersøgning",
- "Optional; one attribute per line" : "Valgfrit; én attribut per linje",
- "Group Display Name Field" : "Navnefelt for gruppevisning",
- "The LDAP attribute to use to generate the groups's display name." : "LDAP-attributten som skal bruges til at oprette gruppens viste navn.",
- "Base Group Tree" : "Base Group Tree",
- "One Group Base DN per line" : "Ét gruppe-Base DN per linje",
- "Group Search Attributes" : "Attributter for gruppesøgning",
- "Group-Member association" : "Guppemedlem forening",
- "Dynamic Group Member URL" : "URL for dynamisk gruppemedlem",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Den LDAP-attribut, som på gruppeobjekter indeholder en URL for LDAP-søgning, der afgør hvilke objekter som tilhører gruppen. (En værdiløs indstilling deaktiverer funktionalitet for dynamisk gruppemedlemskab.)",
- "Nested Groups" : "Indlejrede grupper",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Når slået til, så vil grupper som rummer grupper blive understøttet. (Dette fungerer kun, hvis attributten for gruppemedlem indeholder DN'er.)",
- "Paging chunksize" : "Fragmentstørrelse for sideinddeling",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Fragmentstørrelse som bruges til sideinddelte LDAP-søgninger, der kan returnere omfattende resultater såsom bruger eller gruppe-optælling. (Angivelse til 0 vil slå sideinddelte LDAP-søgninger fra for disse situationer.)",
- "Enable LDAP password changes per user" : "Aktivér ændringer i LDAP-adgangskoder per bruger",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Tillader at LDAP-brugere kan ændre deres adgangskode og tillader Superadministratorer og Gruppeadministratorer, at ændre adgangskoden for deres LDAP-brugere. Dette virker kun, hvis rettigheder for adgangskontrol er konfigureret tilsvarende på LDAP-serveren. Da adgangskoder sendes som klartekst til LDAP-serveren, så skal der anvendes en transportkryptering, samtidig som der bør være konfigureret således, at der sker en hashing af adgangskoder på LDAP-serveren.",
- "(New password is sent as plain text to LDAP)" : "(Ny adgangskode sendes som klartekst til LDAP)",
- "Default password policy DN" : "Standard password politik DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN for en standard password politik vil blive brugt til at håndtere udløb af password. Virker kun når LDAP password ændringer pr. bruger er aktiveret og understøtter kun OpenLDAP. Efterlad tom for at deaktivere håndtering password udløb.",
- "Special Attributes" : "Specielle attributter",
- "Quota Field" : "Kvote Felt",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lad stå tom for brugerens standardkvota. Alternativt angives en LDAP/AD-attribut.",
- "Quota Default" : "Standard for kvota",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Tilsidesætter standardkvota for LDAP-brugere, der ikke har fået angivet en kvota i feltet Kvota.",
- "Email Field" : "Felt for e-mail",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Angiver brugerens e-mail fra deres LDAP-attribut. Lad stå tom for standardadfærd.",
- "User Home Folder Naming Rule" : "Navneregel for brugerens hjemmemappe",
- "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home i en ekstern lager konfiguration vil blive ombyttet med indholdet af den specificerede attribut",
- "Internal Username" : "Internt Brugernavn",
- "Internal Username Attribute:" : "Internt attribut for brugernavn:",
- "Override UUID detection" : "Tilsidesæt UUID-detektering",
- "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." : "Som udgangspunkt registreres UUID-attributten automatisk. UUID-attributten bruges til entydig identificering af LDAP-brugere og -grupper. I tillæg vil det interne brugernavn blive oprettes på basis af UUID'et, hvis andet ikke angives ovenfor. Du kan tilsidesætte indstillingen og angive en attribut efter eget valg. Du skal sørge for at dén attribut du selv vælger, kan hentes for både brugere og grupper, samt at den er unik. Lad stå tom for standardadfærd. Ændringer vil kun påvirke nyilgt kortlagte (tilføjede) LDAP-brugere og -grupper.",
- "UUID Attribute for Users:" : "UUID-attribut for brugere:",
- "UUID Attribute for Groups:" : "UUID-attribut for grupper:",
- "Username-LDAP User Mapping" : "Kortlægning mellem brugernavn og LDAP-bruger",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at lagre og tildele metadata. For at kunne identificere og genkende brugere præcist, vil hver LDAP-bruger få oprettet et internt brugernavn. Det oprettede brugernavn svarer til UUID'et for LDAP-brugeren. I tillæg mellemlagres DN'et for at mindske LDAP-interaktioner, men det mellemlagrede benyttes ikke til identifikation. Hvis DN'et ændres, vil ændringerne blive registreret. Det interne brugernavn anvendes overalt. Hvis kortlægningerne ryddes, så vil der være rester overalt. Rydning af kortlægningerne er ikke konfigurationssensitivt - det påvirker alle LDAP-konfigurationer! Ryd aldrig kortlægningerne i et produktionsmiljø, kun i et teststadie eller eksperimentelt stadie.",
- "Clear Username-LDAP User Mapping" : "Ryd kortlægning mellem brugernavn og LDAP-bruger",
- "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe"
+ "User Display Name Field" : "Brugervisningsnavnefelt",
+ "The LDAP attribute to use to generate the user's display name." : "LDAP attributten der skal bruges til at generere brugerens visningsnavn.",
+ "2nd User Display Name Field" : "2. brugervisningsnavnefelt",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Valgfrit. En LDAP-attribut, der skal tilføjes til visningsnavnet i parentes. Resultater i f.eks. \"John Doe (john.doe @ example.org)\".",
+ "Base User Tree" : "Base brugertræ",
+ "One User Base DN per line" : "One User Base DN per linje",
+ "User Search Attributes" : "Brugersøgningsattributter",
+ "Optional; one attribute per line" : "Valgfrit; én attribut pr. linje",
+ "Disable users missing from LDAP" : "Deaktiver brugere mangler fra LDAP",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Når der tændes, vil brugere importeret fra LDAP, som så mangler, blive deaktiveret",
+ "Group Display Name Field" : "Gruppevisning Navnefelt",
+ "The LDAP attribute to use to generate the groups's display name." : "LDAP attributten der skal bruges til at generere gruppernes visningsnavn.",
+ "Base Group Tree" : "Base gruppe træ",
+ "One Group Base DN per line" : "One Group Base DN pr. linje",
+ "Group Search Attributes" : "Gruppesøgeattributter",
+ "Group-Member association" : "Sammenslutning af medlemmer",
+ "Dynamic Group Member URL" : "Name",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Den LDAP attribut, der på gruppe objekter indeholder en LDAP søgning URL, der bestemmer, hvad objekter tilhører gruppen. (En tom indstilling deaktiverer dynamisk gruppemedlemskab funktionalitet.)",
+ "Nested Groups" : "Indfødte grupper",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Når de er tændt, understøttes grupper som indeholder grupper. (Virker kun, hvis attributten for gruppemedlemmer indeholder DNs.)",
+ "Paging chunksize" : "Sidestørrelse",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize bruges til sidestillede LDAP søgninger, der kan returnere store resultater som bruger eller gruppe optælling. (Indstiller det 0 deaktiverer bilagte LDAP søgninger i disse situationer.)",
+ "Enable LDAP password changes per user" : "Aktivér ændringer af LDAP- adgangskode pr. bruger",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Tillad LDAP-brugere at ændre deres adgangskode og tillade Super Administratorer og Group Administratorer at ændre adgangskoden for deres LDAP-brugere. Fungerer kun når adgangskontrolpolitikker er konfigureret i overensstemmelse hermed på LDAP- serveren. Da adgangskoder sendes i klartekst til LDAP- serveren, skal der bruges transportkryptering og password hashing skal indstilles på LDAP- serveren.",
+ "(New password is sent as plain text to LDAP)" : "(Ny adgangskode sendes som almindelig tekst til LDAP)",
+ "Default password policy DN" : "Standard kodeordspolitik DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN for en standard kodeord politik, der vil blive brugt til kodeord udløbshåndtering. Fungerer kun når LDAP- kodeord ændres per bruger er aktiveret og understøttes kun af OpenLDAP. Lad tom for at deaktivere password udløbshåndtering.",
+ "Special Attributes" : "Særlige attributter",
+ "Quota Field" : "Kontingentfelt",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Efterlad tom for brugerens standardkvote. Ellers angives en LDAP- / AD-attribut.",
+ "Quota Default" : "Kvotestandard",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Overskrid standardkvote for LDAP-brugere, der ikke har en kvote fastsat i kvotefeltet.",
+ "Email Field" : "E-mail felt",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Sæt brugerens e-mail fra deres LDAP attribut. Lad den stå tom for standardadfærd.",
+ "User Home Folder Naming Rule" : "User Home Folder Naming Rule",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Efterlad tomt for brugernavn (standard). Ellers angives en LDAP- / AD-attribut.",
+ "\"$home\" Placeholder Field" : "\"$home\" Placeholder Field",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home i en ekstern lagerkonfiguration vil blive erstattet med værdien af den angivne attribut",
+ "User Profile Attributes" : "Brugerprofilattributter",
+ "Phone Field" : "Telefon felt",
+ "User profile Phone will be set from the specified attribute" : "Brugerprofil Telefonen vil blive sat fra den angivne attribut",
+ "Website Field" : "Webstedsfelt",
+ "User profile Website will be set from the specified attribute" : "Brugerprofil Websted vil blive sat fra den angivne attribut",
+ "Address Field" : "Adresse felt",
+ "User profile Address will be set from the specified attribute" : "Brugerprofiladresse vil blive sat fra den angivne attribut",
+ "Twitter Field" : "Twitter felt",
+ "User profile Twitter will be set from the specified attribute" : "Brugerprofil Twitter vil blive sat fra den angivne attribut",
+ "Fediverse Field" : "Fediverse felt",
+ "User profile Fediverse will be set from the specified attribute" : "Brugerprofil Fediverse vil blive sat fra den angivne attribut",
+ "Organisation Field" : "Organisationsfelt",
+ "User profile Organisation will be set from the specified attribute" : "Brugerprofil Organisation vil blive sat fra den angivne attribut",
+ "Role Field" : "Rollefelt",
+ "User profile Role will be set from the specified attribute" : "Brugerprofil Rolle vil blive sat fra den angivne attribut",
+ "Headline Field" : "Overstreg felt",
+ "User profile Headline will be set from the specified attribute" : "Brugerprofil Overskrift vil blive sat fra den angivne attribut",
+ "Biography Field" : "Biografifelt",
+ "User profile Biography will be set from the specified attribute" : "Brugerprofil Biografi vil blive sat fra den angivne attribut",
+ "Birthdate Field" : "Fødselsdato felt",
+ "User profile Date of birth will be set from the specified attribute" : "Brugerprofil Fødselsdato vil blive sat fra den angivne attribut",
+ "Pronouns Field" : "Pronounsfelt",
+ "User profile Pronouns will be set from the specified attribute" : "Brugerprofil Pronouns vil blive sat fra den angivne attribut",
+ "Internal Username" : "Intern brugernavn",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Som standard vil det interne brugernavn blive oprettet fra UUID attributten. Det sikrer, at brugernavnet er unikt og tegn behøver ikke at blive konverteret. Det interne brugernavn har den begrænsning, at kun disse tegn er tilladt: [a- zA- Z0- 9 _. @ -]. Andre tegn erstattes med deres ASCII-korrespondance eller udelades simpelthen. Ved kollisioner vil et antal blive tilføjet / forøget. Det interne brugernavn bruges til at identificere en bruger internt. Det er også standardnavnet for brugerens hjemmemappe. Det er også en del af eksterne webadresser, for eksempel for alle DAV-tjenester. Med denne indstilling kan standardadfærden tilsidesættes. Ændringer vil kun have virkning på nykortlagte (tilføjede) LDAP-brugere. Lad det stå tomt for standardadfærd.",
+ "Internal Username Attribute:" : "Intern brugernavn Attribut:",
+ "Override UUID detection" : "Tilsidesæt UUID detektering",
+ "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." : "Som standard detekteres UUID- attributten automatisk. UUID attributten bruges til uden tvivl at identificere LDAP-brugere og grupper. Også, vil det interne brugernavn blive oprettet baseret på UUID, hvis ikke angivet ellers ovenfor. Du kan tilsidesætte indstillingen og videregive en attribut efter dit valg. Du skal sørge for, at attributten for dit valg kan hentes for både brugere og grupper, og det er unikt. Lad det stå tomt for standardadfærd. Ændringer vil kun have virkning på nykortlagte (tilføjede) LDAP-brugere og grupper.",
+ "UUID Attribute for Users:" : "UUID Attribut for brugere:",
+ "UUID Attribute for Groups:" : "UUID Attribut for grupper:",
+ "Username-LDAP User Mapping" : "Brugernavn - LDAP Brugerkortlægning",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at gemme og tildele metadata. For præcist at identificere og genkende brugere, vil hver LDAP-bruger have et internt brugernavn. Dette kræver en kortlægning fra brugernavn til LDAP-bruger. Det oprettede brugernavn er kortlagt til UUID for LDAP-brugeren. Derudover er DN cache så godt at reducere LDAP interaktion, men det bruges ikke til identifikation. Hvis DN ændres, vil ændringerne blive fundet. Det interne brugernavn bruges over det hele. Rydning af tilknytninger vil have rester overalt. Rydning af tilknytninger er ikke konfiguration følsom, det påvirker alle LDAP konfigurationer! Ryd aldrig maskerne i et produktionsmiljø, kun i et test- eller forsøgsstadium.",
+ "Clear Username-LDAP User Mapping" : "Ryd brugernavn-LDAP-brugertilknytning",
+ "Clear Groupname-LDAP Group Mapping" : "Ryd gruppenavn-LDAP-gruppetilknytning",
+ "Invalid configuration. Please have a look at the logs for further details." : "Ugyldig konfiguration. Se venligst logfilerne for yderligere oplysninger."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json
index f6bacc8dc27..99ad292499e 100644
--- a/apps/user_ldap/l10n/da.json
+++ b/apps/user_ldap/l10n/da.json
@@ -1,180 +1,237 @@
{ "translations": {
- "Failed to clear the mappings." : "Mislykkedes med at rydde delingerne.",
- "Failed to delete the server configuration" : "Kunne ikke slette server konfigurationen",
+ "Failed to clear the mappings." : "Det lykkedes ikke at rydde tilknytningen.",
+ "Failed to delete the server configuration" : "Kunne ikke slette serverkonfigurationen",
"Invalid configuration: Anonymous binding is not allowed." : "Ugyldig konfiguration: Anonym binding er ikke tilladt.",
"Valid configuration, connection established!" : "Gyldig konfiguration, forbindelse etableret!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "Gyldig konfiguration, men forbindelsen mislykkedes. Tjek venligst serverens indstillinger og brugeroplysninger.",
- "Invalid configuration. Please have a look at the logs for further details." : "Ikke gyldig konfiguration. Kig venligst på logfilerne for mere information.",
- "No action specified" : "Der er ikke angivet en handling",
- "No configuration specified" : "Der er ikke angivet en konfiguration",
- "No data specified" : "Der er ikke angivet data",
- " Could not set configuration %s" : "Kunne ikke indstille konfigurationen %s",
- "Action does not exist" : "Handlingen findes ikke",
- "Renewing …" : "Fornyer...",
- "Very weak password" : "Meget svagt password",
- "Weak password" : "Svagt password",
- "So-so password" : "Jævnt password",
- "Good password" : "Godt password",
- "Strong password" : "Stærkt password",
- "The Base DN appears to be wrong" : "Base DN'et ser ud til at være forkert",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Gyldig konfiguration, men binding mislykkedes. Tjek serverindstillingerne og legitimationerne.",
+ "Invalid configuration: %s" : "Ugyldig konfiguration: %s",
+ "No action specified" : "Ingen handling angivet",
+ "No configuration specified" : "Ingen konfiguration angivet",
+ "No data specified" : "Ingen data angivet",
+ "Invalid data specified" : "Ugyldige data angivet",
+ "Could not set configuration %1$s to %2$s" : "Kunne ikke indstille konfigurationen %1$s til %2$s",
+ "Action does not exist" : "Handling eksisterer ikke",
+ "Renewing …" : "Fornyer ...",
+ "Very weak password" : "Meget svag adgangskode",
+ "Weak password" : "Svækket adgangskode",
+ "So-so password" : "So-so adgangskode",
+ "Good password" : "God adgangskode",
+ "Strong password" : "Stærk adgangskode",
+ "The Base DN appears to be wrong" : "Base DN synes at være forkert",
"Testing configuration…" : "Tester konfiguration...",
- "Configuration incorrect" : "Konfigurationen er ikke korrekt",
- "Configuration incomplete" : "Konfigurationen er ikke komplet",
- "Configuration OK" : "Konfigurationen er OK",
+ "Configuration incorrect" : "Konfiguration forkert",
+ "Configuration incomplete" : "Konfiguration ufuldstændig",
+ "Configuration OK" : "Konfiguration OK",
"Select groups" : "Vælg grupper",
"Select object classes" : "Vælg objektklasser",
- "Please check the credentials, they seem to be wrong." : "Tjek venligst brugeroplysningerne - de ser ud til at være forkerte.",
- "Please specify the port, it could not be auto-detected." : "Angiv venligst porten - den kunne ikke registreres automatisk.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN kunne ikke registreres automatisk - gennemse venligst brugeroplysningerne, vært og port.",
- "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 than 1,000 directory entries available." : "Mere end 1.000 mappeposter tilgængelige",
- "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} objekter tilgængelige indenfor den angivne Base DN","{objectsFound} objekter tilgængelige indenfor den 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?",
+ "Please check the credentials, they seem to be wrong." : "Tjek venligst legitimationerne.",
+ "Please specify the port, it could not be auto-detected." : "Angiv porten, den kunne ikke detekteres automatisk.",
+ "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN kunne ikke detekteres automatisk, skal du revidere legitimation, vært og port.",
+ "Could not detect Base DN, please enter it manually." : "Kunne ikke detektere Base DN, skal du indtaste det manuelt.",
+ "{nthServer}. Server" : "{nthServer}. Server",
+ "No object found in the given Base DN. Please revise." : "Intet objekt fundet i den givne base DN. Vær venlig at revidere.",
+ "More than 1,000 directory entries available." : "Mere end 1.000 mappeindgange til rådighed.",
+ "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} indgang tilgængelig i den givne Base DN","{objectsFound} poster tilgængelige inden for den givne 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 samt tilslutningsindstillinger og legitimationsoplysninger.",
+ "Do you really want to delete the current Server Configuration?" : "Vil du virkelig slette den aktuelle server konfiguration?",
"Confirm Deletion" : "Bekræft sletning",
- "Mappings cleared successfully!" : "Tilknytningerne blev ryddet af vejen!",
+ "Mappings cleared successfully!" : "Mappings ryddet med succes!",
"Error while clearing the mappings." : "Fejl under rydning af tilknytninger.",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonyme bindinger tillades ikke. Angiv venligst et User DN og adgangskode.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP-driftsfejl. Anonyme bindinger tillades muligvis ikke.",
- "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.",
- "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?" : "Skift af tilstanden vil betyde aktivering af automatiske LDAP-forespørgsler. Afhængig af størrelsen på din LDAP, vil det kunne tage noget tid. Ønsker du stadig at ændre tilstanden?",
- "Mode switch" : "Skift af tilstand",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonym binding er ikke tilladt. Giv venligst en bruger DN og adgangskode.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP Operationsfejl. Anonym binding er måske ikke tilladt.",
+ "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Gemning mislykkedes. Sørg for, at databasen er i drift. Genindlæs før du fortsætter.",
+ "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Skifter tilstand vil aktivere automatisk LDAP forespørgsler. Afhængig af din LDAP størrelse kan de tage et stykke tid. Vil du stadig skifte tilstand?",
+ "Mode switch" : "Tilstandsafbryder",
"Select attributes" : "Vælg attributter",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Bruger blev ikke fundet. Tjek venligst dine login-attributter og brugernavnet. Gældende filter (til kopiér-og-indsæt for validering via kommandolinje): <br/>",
- "User found and settings verified." : "Bruger blev fundetog indstillingerne bekræftet.",
- "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvej at lave en mere præcis søgning pga. den rammer mange brugere og kun den første er i stand til at logge ind.",
- "An unspecified error occurred. Please check log and settings." : "Der skete en uspecificeret fejl . Tjek log og indstillinger.",
- "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt - sandsynligvis på grund af problemer med syntaksen, såsom et ulige antal åbne og lukkede parenteser. Gennemse venligst. ",
- "Please provide a login name to test against" : "Angiv venligst et loginnavn for at teste mod",
- "Password change rejected. Hint: " : "Kodeord ændring afvist. Hint:",
- "Please login with the new password" : "Log venligst ind med dit nye password",
- "LDAP User backend" : "LDAP Bruger-backend",
- "Your password will expire tomorrow." : "Dit password udløber i morgen.",
- "Your password will expire today." : "Dit password udløber i dag.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dit password udløber om en dag.","Dit password udløber om %n dage."],
- "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede LDAP-indstillinger.",
- "Could not find the desired feature" : "Fandt ikke den ønskede funktion",
+ "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Brugeren ikke fundet. Tjek venligst dine login attributter og brugernavn. Effektiv filter (til copy- and - paste til kommandolinjevalidering): < br / >",
+ "User found and settings verified." : "Bruger fundet og indstillinger verificeret.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Overvej at indsnævre din søgning, som det omfattede mange brugere, kun den første af dem vil være i stand til at logge ind.",
+ "An unspecified error occurred. Please check log and settings." : "En uspecificeret fejl opstod. Tjek log og indstillinger.",
+ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søgefilteret er ugyldigt, sandsynligvis på grund af syntaksspørgsmål som ulige antal åbne og lukkede parenteser. Vær venlig at revidere.",
+ "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "En forbindelsesfejl til LDAP / AD opstod. Tjek vært, havn og legitimation.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Placeholderen \"%u ID\" mangler. Det vil blive erstattet med login navn, når du forespørger LDAP / AD.",
+ "Please provide a login name to test against" : "Angiv et login navn at teste mod",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Gruppefeltet var deaktiveret, fordi LDAP / AD-serveren ikke understøtter memberOf.",
+ "Password change rejected. Hint: %s" : "Adgangskodeændring afvist. Hint: %s",
+ "Mandatory field \"%s\" left empty" : "Obligatorisk felt \"%s\" efterladt tom",
+ "A password is given, but not an LDAP agent" : "En adgangskode er givet, men ikke en LDAP agent",
+ "No password is given for the user agent" : "Ingen adgangskode er givet for brugeren agent",
+ "No LDAP base DN was given" : "Ingen LDAP base DN blev givet",
+ "User base DN is not a subnode of global base DN" : "Brugerbase DN er ikke en subnode af global base DN",
+ "Group base DN is not a subnode of global base DN" : "Group base DN er ikke en subnode af global base DN",
+ "Login filter does not contain %s placeholder." : "Login filter indeholder ikke %s pladsholder.",
+ "Please login with the new password" : "Log ind med den nye adgangskode",
+ "LDAP User backend" : "LDAP Brugermotor",
+ "Your password will expire tomorrow." : "Din adgangskode udløber i morgen.",
+ "Your password will expire today." : "Din adgangskode udløber i dag.",
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Din adgangskode udløber inden for %n dag.","Din adgangskode udløber inden for %n dage."],
+ "LDAP/AD integration" : "LDAP / AD integration",
+ "LDAP Connection" : "LDAP forbindelse",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Binding mislykkedes for denne LDAP- konfiguration:% s","Binding mislykkedes for %n LDAP- konfigurationer: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Søgning mislykkedes for denne LDAP- konfiguration:% s","Søgning mislykkedes for %n LDAP- konfigurationer: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Der er en inaktiv LDAP- konfiguration:% s","Der er %n inaktive LDAP- konfigurationer: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Binding og søgning virker på den konfigurerede LDAP- forbindelse (% s)","Binding og søgning virker på alle %n konfigurerede LDAP- forbindelser (%s)"],
+ "Invalid LDAP UUIDs" : "Ugyldige LDAP UUID 'er",
+ "None found" : "Ingen fundet",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Ugyldige UUID 'er for LDAP-konti eller -grupper er fundet. Du bedes gennemgå dine \"Override UUID Detection\" indstillinger i Expert del af LDAP konfiguration og bruge \"occ ldap: update- uuid\" til at opdatere dem.",
+ "_%n group found_::_%n groups found_" : [" %n gruppe fundet"," %n grupper fundet"],
+ "> 1000 groups found" : "> 1000 grupper fundet",
+ "> 1000 users found" : "> 1000 brugere fundet",
+ "_%n user found_::_%n users found_" : [" %n bruger fundet"," %n brugere fundet"],
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke detektere brugernavn attribut. Angiv det selv i avancerede LDAP-indstillinger.",
+ "Could not find the desired feature" : "Kunne ikke finde den ønskede funktion",
"Invalid Host" : "Ugyldig vært",
- "LDAP user and group backend" : "LDAP bruger og gruppe backend",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Denne applikation tillader administrator at forbinde Nextcloud til et LDAP bruger kartotek",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Denne applikation tillader administrator at forbinde Nextcloud til et LDAP bruger kartotek som foretager godkendelse og overførsel af brugere, grupper og bruger egenskaber. Adminstrator kan via LDAP bruger græsnsefladen konfigurere denne applikation til at forbinde til et eller flere LDAP kartoteker eller Active Directories. Egenskaber så som bruger kvota, email, avatar billeder, gruppe tilhørsforhold og andet kan blive overført til nextcloud fra et bibliotek med med de korrekte forspørgsler og filtre. \n\nEn bruger logger ind i Nextcloud med deres LDAP eller AD legitimation og får adgang baseret på en legitimationsforspørgsel håndteret til den tilsluttede LDAP eller AD server. Nextcloud gemmer ikke LDAP eller AD password, men bruger disse til at legitimere en bruger og opsætter en bruger ID for brugerens ophold. Mere information er tilgængelig i LDAP bruger og Group Backend dokumentationen.",
- "Test Configuration" : "Test konfigurationen",
+ "LDAP user and group backend" : "LDAP- bruger og gruppe-motor",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Dette program gør det muligt for administratorer at forbinde Nextcloud til en LDAP- baseret brugermappe.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Dette program gør det muligt for administratorer at forbinde Nextcloud til en LDAP- baseret brugermappe for autentificering og levering brugere, grupper og brugerattributter. Administrerer kan indstille dette program til at oprette forbindelse til en eller flere LDAP- mapper eller aktive mapper via en LDAP- grænseflade. Attributter såsom brugerkvote, e-mail, avatar billeder, gruppe medlemskaber og mere kan trækkes ind Nextcloud fra en mappe med de relevante forespørgsler og filtre.\n\nEn bruger logger ind på Nextcloud med deres LDAP- eller AD-legitimationsoplysninger og får adgang baseret på en autentificeringsanmodning, der håndteres af LDAP- eller AD-serveren. Nextcloud ikke gemme LDAP- eller AD-adgangskoder, snarere disse legitimationsoplysninger bruges til at autentificere en bruger og derefter Nextcloud bruger en session for brugeren ID. Mere information er tilgængelig i LDAP User and Group Backend dokumentation.",
+ "Test Configuration" : "Prøvningsindstilling",
"Help" : "Hjælp",
- "Groups meeting these criteria are available in %s:" : "Grupper som opfylder disse kriterier er tilgængelige i %s:",
+ "Groups meeting these criteria are available in %s:" : "Grupper, der opfylder disse kriterier, er tilgængelige i %s:",
"Only these object classes:" : "Kun disse objektklasser:",
"Only from these groups:" : "Kun fra disse grupper:",
- "Search groups" : "Søg grupper",
+ "Search groups" : "Søgegrupper",
"Available groups" : "Tilgængelige grupper",
- "Selected groups" : "Valgte grupper",
- "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.",
- "Verify settings and count the 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:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Tillader login mod en e-mailattribut. Mail og \"mailPrimaryAddress\" vil være tilladt.",
+ "Selected groups" : "Udvalgte grupper",
+ "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 %s eksemplet.",
+ "Verify settings and count the groups" : "Verificer indstillinger og tæl grupperne",
+ "When logging in, %s will find the user based on the following attributes:" : "Når du logger ind, vil %s finde brugeren baseret på følgende egenskaber:",
+ "LDAP/AD Username:" : "LDAP / AD Brugernavn:",
+ "Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Tillader login mod LDAP / AD brugernavn, som er enten \"uid\" eller \"SAMAccountName\" og vil blive opdaget.",
+ "LDAP/AD Email Address:" : "LDAP / AD E-mail adresse:",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Tillader login mod en e- mail- attribut. \"mail\" og \"mailPrimaryAddress\" tilladt.",
"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 filtret der anvendes, når der er forsøg på at logge ind. \"%%uid\" erstattter brugernavnet i login-handlingen. Eksempel: \"uid=%%uid\"",
- "Test Loginname" : "Test loginnavn",
- "Verify settings" : "Kontrollér indstillinger",
- "%s. Server:" : "%s. server:",
+ "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definerer det filter der skal anvendes, når login er forsøgt. \"%% uid\" erstatter brugernavnet i login-handlingen. Eksempel: \"uid =%% uid\"",
+ "Test Loginname" : "Test af loginnavn",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Forsøg på at modtage en DN for det givne lognavn og det aktuelle login-filter",
+ "Verify settings" : "Verificér indstillinger",
+ "%s. Server:" : "%s. Server:",
"Add a new configuration" : "Tilføj en ny konfiguration",
- "Copy current configuration into new directory binding" : "Kopiér nuværende konfiguration ind i en ny mappetilknytning",
+ "Copy current configuration into new directory binding" : "Kopiér nuværende konfiguration til ny mappebinding",
"Delete the current configuration" : "Slet den aktuelle konfiguration",
"Host" : "Vært",
- "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kan udelade protokollen, medmindre du skal bruge SSL. Start i så fald med ldaps://",
+ "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kan udelade protokollen, medmindre du har brug for SSL. Hvis ja, begynd med ldaps: / /",
"Port" : "Port",
- "Detect Port" : "Registrér port",
+ "Detect Port" : "Detektér port",
"User DN" : "Bruger 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'et for klientbrugeren, for hvilken forbindelsen skal foretages, eks. uid=agent,dc=eksempel,dc=com. For anonym adgang lades DN og Password stå tomme.",
- "Password" : "Kodeord",
- "For anonymous access, leave DN and Password empty." : "For anonym adgang, skal du lade DN og Adgangskode tomme.",
- "Save Credentials" : "Gem brugeroplysninger",
- "One Base DN per line" : "Ét Base DN per linje",
- "You can specify Base DN for users and groups in the Advanced tab" : "Du kan specificere base DN for brugere og grupper i fanen Advanceret",
- "Detect Base DN" : "Registrér Base 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 for klientbrugeren, som bindingen skal udføres med, f.eks. uid = agent, DC = eksempel, DC = com. For anonym adgang, lad DN og Password tom.",
+ "Password" : "Adgangskode",
+ "For anonymous access, leave DN and Password empty." : "For anonym adgang, lad DN og Password tom.",
+ "Save Credentials" : "Gem afstemning",
+ "One Base DN per line" : "One Base DN pr. linje",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Du kan angive Base DN for brugere og grupper i fanebladet Avanceret",
+ "Detect Base DN" : "Detektér base DN",
"Test Base DN" : "Test Base DN",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Undgår automatiske LDAP-forespørgsler. Bedre på større opsætninger, men kræver en del LDAP-kendskab.",
- "Manually enter LDAP filters (recommended for large directories)" : "Angiv LDAP-filtre manuelt (anbefales til større kataloger)",
- "Listing and searching for users is constrained by these criteria:" : "Listning og søgning af brugere er begrænset af følgende kriterier:",
- "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 fleste gængse objektklasser for brugere er organizationalPerson, person, user og inetOrgPerson. Hvis du ikker er sikker på hvilken objektklasse, der skal vælges, så tal med administratoren af dit katalog.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "Filteret angiver hvilke LDAP-brugere, der skal have adgang til %s-instansen.",
- "Verify settings and count users" : "Kontrollér indstillinger og optalte brugere",
+ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Undgår automatisk LDAP anmodninger. Bedre for større opsætninger, men kræver noget LDAP viden.",
+ "Manually enter LDAP filters (recommended for large directories)" : "Indtast LDAP- filtre manuelt (anbefales til store mapper)",
+ "Listing and searching for users is constrained by these criteria:" : "Lister og søgning efter brugere er begrænset af disse kriterier:",
+ "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 mest almindelige objektklasser for brugere er organisationalPerson, person, bruger og inetOrgPerson. Hvis du ikke er sikker på hvilken objektklasse du skal vælge, bedes du konsultere din mappe- admin.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "Filteret angiver, hvilke LDAP-brugere der skal have adgang til %s instansen.",
+ "Verify settings and count users" : "Verificér indstillinger og tæller brugere",
"Saving" : "Gemmer",
"Back" : "Tilbage",
- "Continue" : "Videre",
- "Please renew your password." : "Nulstil venligst dit password.",
+ "Continue" : "Fortsæt",
+ "Please renew your password." : "Venligst forny din adgangskode.",
"An internal error occurred." : "Der opstod en intern fejl.",
- "Please try again or contact your administrator." : "Prøv venligst igen eller kontakt din administrator.",
- "Current password" : "Nuværende password",
- "New password" : "Nyt password",
- "Renew password" : "Forny venligst password",
- "Wrong password." : "Forkert password.",
+ "Please try again or contact your administrator." : "Prøv igen eller kontakt din administrator.",
+ "Current password" : "Nuværende adgangskode",
+ "New password" : "Ny adgangskode",
+ "Renew password" : "Forny adgangskode",
+ "Wrong password." : "Forkert adgangskode.",
"Cancel" : "Annullér",
"Server" : "Server",
"Users" : "Brugere",
- "Login Attributes" : "Login-attributter",
+ "Login Attributes" : "Login attributter",
"Groups" : "Grupper",
"Expert" : "Ekspert",
"Advanced" : "Avanceret",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advarsel:</b> PHP-modulet LDAP er ikke installeret - backend'en vil ikke fungere. Anmod venligst din systemadministrator om at installere det.",
- "Connection Settings" : "Forbindelsesindstillinger ",
- "Configuration Active" : "Konfiguration er aktiv",
- "When unchecked, this configuration will be skipped." : "Hvis der ikke er markeret, så springes denne konfiguration over.",
- "Backup (Replica) Host" : "Vært for sikkerhedskopier (replika)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Angiv valgfrit en vært for sikkerhedskopiering. Dette skal være en replikering af den primære LDAP/AD-server.",
- "Backup (Replica) Port" : "Port for sikkerhedskopi (replika)",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "< b > Advarsel: < / b > PHP LDAP modulet er ikke installeret, bagenden vil ikke virke. Bed din systemadministrator om at installere den.",
+ "Connection Settings" : "Forbindelsesindstillinger",
+ "Configuration Active" : "Indstillingsaktiv",
+ "When unchecked, this configuration will be skipped." : "Når denne indstilling ikke er markeret, vil den blive sprunget over.",
+ "Backup (Replica) Host" : "Backup (Replica) vært",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Giv en ekstra backup vært. Det skal være en kopi af hovedserveren LDAP / AD.",
+ "Backup (Replica) Port" : "Backup (Replica) Port",
"Disable Main Server" : "Deaktivér hovedserver",
- "Only connect to the replica server." : "Forbind kun til replika serveren.",
- "Turn off SSL certificate validation." : "Deaktivér validering af SSL-certifikat.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Anbefales ikke - bruges kun til testformål! Hvis forbindelse udelukkende fungerer med dette tilvalg, så importér LDAP-serverens SSL-certifikat i din %s-server.",
- "Cache Time-To-Live" : "Cache levetid",
- "in seconds. A change empties the cache." : "i sekunder. En ændring vil tømme cachen.",
+ "Only connect to the replica server." : "Kun forbindelse til replikaserveren.",
+ "Turn off SSL certificate validation." : "Sluk validering af SSL-certifikater.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Ikke anbefalet, brug det kun til test! Hvis forbindelsen kun virker med denne indstilling, importeres LDAP- serverens SSL-certifikat i din %s server.",
+ "Cache Time-To-Live" : "Cache Time-To-Live",
+ "in seconds. A change empties the cache." : "om få sekunder. En forandring tømmer cachen.",
"Directory Settings" : "Mappeindstillinger",
- "User Display Name Field" : "Vist brugernavn felt",
- "The LDAP attribute to use to generate the user's display name." : "LDAP-attributten som skal bruges til at oprette brugerens viste navn.",
- "2nd User Display Name Field" : "Felt for af 2. brugers viste navn",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Valgfri. En LDAP-attribut som tilføjes til vist navn inde i kantede anførselstegn. Giver eks. »John Doe (john.doe@example.org)«.",
- "Base User Tree" : "Base Bruger Træ",
- "One User Base DN per line" : "Én bruger-Base DN per linje",
- "User Search Attributes" : "Attributter for brugersøgning",
- "Optional; one attribute per line" : "Valgfrit; én attribut per linje",
- "Group Display Name Field" : "Navnefelt for gruppevisning",
- "The LDAP attribute to use to generate the groups's display name." : "LDAP-attributten som skal bruges til at oprette gruppens viste navn.",
- "Base Group Tree" : "Base Group Tree",
- "One Group Base DN per line" : "Ét gruppe-Base DN per linje",
- "Group Search Attributes" : "Attributter for gruppesøgning",
- "Group-Member association" : "Guppemedlem forening",
- "Dynamic Group Member URL" : "URL for dynamisk gruppemedlem",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Den LDAP-attribut, som på gruppeobjekter indeholder en URL for LDAP-søgning, der afgør hvilke objekter som tilhører gruppen. (En værdiløs indstilling deaktiverer funktionalitet for dynamisk gruppemedlemskab.)",
- "Nested Groups" : "Indlejrede grupper",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Når slået til, så vil grupper som rummer grupper blive understøttet. (Dette fungerer kun, hvis attributten for gruppemedlem indeholder DN'er.)",
- "Paging chunksize" : "Fragmentstørrelse for sideinddeling",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Fragmentstørrelse som bruges til sideinddelte LDAP-søgninger, der kan returnere omfattende resultater såsom bruger eller gruppe-optælling. (Angivelse til 0 vil slå sideinddelte LDAP-søgninger fra for disse situationer.)",
- "Enable LDAP password changes per user" : "Aktivér ændringer i LDAP-adgangskoder per bruger",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Tillader at LDAP-brugere kan ændre deres adgangskode og tillader Superadministratorer og Gruppeadministratorer, at ændre adgangskoden for deres LDAP-brugere. Dette virker kun, hvis rettigheder for adgangskontrol er konfigureret tilsvarende på LDAP-serveren. Da adgangskoder sendes som klartekst til LDAP-serveren, så skal der anvendes en transportkryptering, samtidig som der bør være konfigureret således, at der sker en hashing af adgangskoder på LDAP-serveren.",
- "(New password is sent as plain text to LDAP)" : "(Ny adgangskode sendes som klartekst til LDAP)",
- "Default password policy DN" : "Standard password politik DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN for en standard password politik vil blive brugt til at håndtere udløb af password. Virker kun når LDAP password ændringer pr. bruger er aktiveret og understøtter kun OpenLDAP. Efterlad tom for at deaktivere håndtering password udløb.",
- "Special Attributes" : "Specielle attributter",
- "Quota Field" : "Kvote Felt",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lad stå tom for brugerens standardkvota. Alternativt angives en LDAP/AD-attribut.",
- "Quota Default" : "Standard for kvota",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Tilsidesætter standardkvota for LDAP-brugere, der ikke har fået angivet en kvota i feltet Kvota.",
- "Email Field" : "Felt for e-mail",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Angiver brugerens e-mail fra deres LDAP-attribut. Lad stå tom for standardadfærd.",
- "User Home Folder Naming Rule" : "Navneregel for brugerens hjemmemappe",
- "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home i en ekstern lager konfiguration vil blive ombyttet med indholdet af den specificerede attribut",
- "Internal Username" : "Internt Brugernavn",
- "Internal Username Attribute:" : "Internt attribut for brugernavn:",
- "Override UUID detection" : "Tilsidesæt UUID-detektering",
- "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." : "Som udgangspunkt registreres UUID-attributten automatisk. UUID-attributten bruges til entydig identificering af LDAP-brugere og -grupper. I tillæg vil det interne brugernavn blive oprettes på basis af UUID'et, hvis andet ikke angives ovenfor. Du kan tilsidesætte indstillingen og angive en attribut efter eget valg. Du skal sørge for at dén attribut du selv vælger, kan hentes for både brugere og grupper, samt at den er unik. Lad stå tom for standardadfærd. Ændringer vil kun påvirke nyilgt kortlagte (tilføjede) LDAP-brugere og -grupper.",
- "UUID Attribute for Users:" : "UUID-attribut for brugere:",
- "UUID Attribute for Groups:" : "UUID-attribut for grupper:",
- "Username-LDAP User Mapping" : "Kortlægning mellem brugernavn og LDAP-bruger",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at lagre og tildele metadata. For at kunne identificere og genkende brugere præcist, vil hver LDAP-bruger få oprettet et internt brugernavn. Det oprettede brugernavn svarer til UUID'et for LDAP-brugeren. I tillæg mellemlagres DN'et for at mindske LDAP-interaktioner, men det mellemlagrede benyttes ikke til identifikation. Hvis DN'et ændres, vil ændringerne blive registreret. Det interne brugernavn anvendes overalt. Hvis kortlægningerne ryddes, så vil der være rester overalt. Rydning af kortlægningerne er ikke konfigurationssensitivt - det påvirker alle LDAP-konfigurationer! Ryd aldrig kortlægningerne i et produktionsmiljø, kun i et teststadie eller eksperimentelt stadie.",
- "Clear Username-LDAP User Mapping" : "Ryd kortlægning mellem brugernavn og LDAP-bruger",
- "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe"
+ "User Display Name Field" : "Brugervisningsnavnefelt",
+ "The LDAP attribute to use to generate the user's display name." : "LDAP attributten der skal bruges til at generere brugerens visningsnavn.",
+ "2nd User Display Name Field" : "2. brugervisningsnavnefelt",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Valgfrit. En LDAP-attribut, der skal tilføjes til visningsnavnet i parentes. Resultater i f.eks. \"John Doe (john.doe @ example.org)\".",
+ "Base User Tree" : "Base brugertræ",
+ "One User Base DN per line" : "One User Base DN per linje",
+ "User Search Attributes" : "Brugersøgningsattributter",
+ "Optional; one attribute per line" : "Valgfrit; én attribut pr. linje",
+ "Disable users missing from LDAP" : "Deaktiver brugere mangler fra LDAP",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Når der tændes, vil brugere importeret fra LDAP, som så mangler, blive deaktiveret",
+ "Group Display Name Field" : "Gruppevisning Navnefelt",
+ "The LDAP attribute to use to generate the groups's display name." : "LDAP attributten der skal bruges til at generere gruppernes visningsnavn.",
+ "Base Group Tree" : "Base gruppe træ",
+ "One Group Base DN per line" : "One Group Base DN pr. linje",
+ "Group Search Attributes" : "Gruppesøgeattributter",
+ "Group-Member association" : "Sammenslutning af medlemmer",
+ "Dynamic Group Member URL" : "Name",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Den LDAP attribut, der på gruppe objekter indeholder en LDAP søgning URL, der bestemmer, hvad objekter tilhører gruppen. (En tom indstilling deaktiverer dynamisk gruppemedlemskab funktionalitet.)",
+ "Nested Groups" : "Indfødte grupper",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Når de er tændt, understøttes grupper som indeholder grupper. (Virker kun, hvis attributten for gruppemedlemmer indeholder DNs.)",
+ "Paging chunksize" : "Sidestørrelse",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize bruges til sidestillede LDAP søgninger, der kan returnere store resultater som bruger eller gruppe optælling. (Indstiller det 0 deaktiverer bilagte LDAP søgninger i disse situationer.)",
+ "Enable LDAP password changes per user" : "Aktivér ændringer af LDAP- adgangskode pr. bruger",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Tillad LDAP-brugere at ændre deres adgangskode og tillade Super Administratorer og Group Administratorer at ændre adgangskoden for deres LDAP-brugere. Fungerer kun når adgangskontrolpolitikker er konfigureret i overensstemmelse hermed på LDAP- serveren. Da adgangskoder sendes i klartekst til LDAP- serveren, skal der bruges transportkryptering og password hashing skal indstilles på LDAP- serveren.",
+ "(New password is sent as plain text to LDAP)" : "(Ny adgangskode sendes som almindelig tekst til LDAP)",
+ "Default password policy DN" : "Standard kodeordspolitik DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN for en standard kodeord politik, der vil blive brugt til kodeord udløbshåndtering. Fungerer kun når LDAP- kodeord ændres per bruger er aktiveret og understøttes kun af OpenLDAP. Lad tom for at deaktivere password udløbshåndtering.",
+ "Special Attributes" : "Særlige attributter",
+ "Quota Field" : "Kontingentfelt",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Efterlad tom for brugerens standardkvote. Ellers angives en LDAP- / AD-attribut.",
+ "Quota Default" : "Kvotestandard",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Overskrid standardkvote for LDAP-brugere, der ikke har en kvote fastsat i kvotefeltet.",
+ "Email Field" : "E-mail felt",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Sæt brugerens e-mail fra deres LDAP attribut. Lad den stå tom for standardadfærd.",
+ "User Home Folder Naming Rule" : "User Home Folder Naming Rule",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Efterlad tomt for brugernavn (standard). Ellers angives en LDAP- / AD-attribut.",
+ "\"$home\" Placeholder Field" : "\"$home\" Placeholder Field",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home i en ekstern lagerkonfiguration vil blive erstattet med værdien af den angivne attribut",
+ "User Profile Attributes" : "Brugerprofilattributter",
+ "Phone Field" : "Telefon felt",
+ "User profile Phone will be set from the specified attribute" : "Brugerprofil Telefonen vil blive sat fra den angivne attribut",
+ "Website Field" : "Webstedsfelt",
+ "User profile Website will be set from the specified attribute" : "Brugerprofil Websted vil blive sat fra den angivne attribut",
+ "Address Field" : "Adresse felt",
+ "User profile Address will be set from the specified attribute" : "Brugerprofiladresse vil blive sat fra den angivne attribut",
+ "Twitter Field" : "Twitter felt",
+ "User profile Twitter will be set from the specified attribute" : "Brugerprofil Twitter vil blive sat fra den angivne attribut",
+ "Fediverse Field" : "Fediverse felt",
+ "User profile Fediverse will be set from the specified attribute" : "Brugerprofil Fediverse vil blive sat fra den angivne attribut",
+ "Organisation Field" : "Organisationsfelt",
+ "User profile Organisation will be set from the specified attribute" : "Brugerprofil Organisation vil blive sat fra den angivne attribut",
+ "Role Field" : "Rollefelt",
+ "User profile Role will be set from the specified attribute" : "Brugerprofil Rolle vil blive sat fra den angivne attribut",
+ "Headline Field" : "Overstreg felt",
+ "User profile Headline will be set from the specified attribute" : "Brugerprofil Overskrift vil blive sat fra den angivne attribut",
+ "Biography Field" : "Biografifelt",
+ "User profile Biography will be set from the specified attribute" : "Brugerprofil Biografi vil blive sat fra den angivne attribut",
+ "Birthdate Field" : "Fødselsdato felt",
+ "User profile Date of birth will be set from the specified attribute" : "Brugerprofil Fødselsdato vil blive sat fra den angivne attribut",
+ "Pronouns Field" : "Pronounsfelt",
+ "User profile Pronouns will be set from the specified attribute" : "Brugerprofil Pronouns vil blive sat fra den angivne attribut",
+ "Internal Username" : "Intern brugernavn",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Som standard vil det interne brugernavn blive oprettet fra UUID attributten. Det sikrer, at brugernavnet er unikt og tegn behøver ikke at blive konverteret. Det interne brugernavn har den begrænsning, at kun disse tegn er tilladt: [a- zA- Z0- 9 _. @ -]. Andre tegn erstattes med deres ASCII-korrespondance eller udelades simpelthen. Ved kollisioner vil et antal blive tilføjet / forøget. Det interne brugernavn bruges til at identificere en bruger internt. Det er også standardnavnet for brugerens hjemmemappe. Det er også en del af eksterne webadresser, for eksempel for alle DAV-tjenester. Med denne indstilling kan standardadfærden tilsidesættes. Ændringer vil kun have virkning på nykortlagte (tilføjede) LDAP-brugere. Lad det stå tomt for standardadfærd.",
+ "Internal Username Attribute:" : "Intern brugernavn Attribut:",
+ "Override UUID detection" : "Tilsidesæt UUID detektering",
+ "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." : "Som standard detekteres UUID- attributten automatisk. UUID attributten bruges til uden tvivl at identificere LDAP-brugere og grupper. Også, vil det interne brugernavn blive oprettet baseret på UUID, hvis ikke angivet ellers ovenfor. Du kan tilsidesætte indstillingen og videregive en attribut efter dit valg. Du skal sørge for, at attributten for dit valg kan hentes for både brugere og grupper, og det er unikt. Lad det stå tomt for standardadfærd. Ændringer vil kun have virkning på nykortlagte (tilføjede) LDAP-brugere og grupper.",
+ "UUID Attribute for Users:" : "UUID Attribut for brugere:",
+ "UUID Attribute for Groups:" : "UUID Attribut for grupper:",
+ "Username-LDAP User Mapping" : "Brugernavn - LDAP Brugerkortlægning",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at gemme og tildele metadata. For præcist at identificere og genkende brugere, vil hver LDAP-bruger have et internt brugernavn. Dette kræver en kortlægning fra brugernavn til LDAP-bruger. Det oprettede brugernavn er kortlagt til UUID for LDAP-brugeren. Derudover er DN cache så godt at reducere LDAP interaktion, men det bruges ikke til identifikation. Hvis DN ændres, vil ændringerne blive fundet. Det interne brugernavn bruges over det hele. Rydning af tilknytninger vil have rester overalt. Rydning af tilknytninger er ikke konfiguration følsom, det påvirker alle LDAP konfigurationer! Ryd aldrig maskerne i et produktionsmiljø, kun i et test- eller forsøgsstadium.",
+ "Clear Username-LDAP User Mapping" : "Ryd brugernavn-LDAP-brugertilknytning",
+ "Clear Groupname-LDAP Group Mapping" : "Ryd gruppenavn-LDAP-gruppetilknytning",
+ "Invalid configuration. Please have a look at the logs for further details." : "Ugyldig konfiguration. Se venligst logfilerne for yderligere oplysninger."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index 8ba85896416..37546227625 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
"Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ",
- "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest du in den Logdateien.",
+ "Invalid configuration: %s" : "Ungültige Konfiguration: %s",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
"Invalid data specified" : "Ungültige Daten angegeben",
- " Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
+ "Could not set configuration %1$s to %2$s" : "Die Konfiguration %1$s konnte nicht auf %2$s gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
"Renewing …" : "Erneuere …",
"Very weak password" : "Sehr schwaches Passwort",
@@ -35,34 +35,47 @@ OC.L10N.register(
"More than 1,000 directory entries available." : "Mehr als 1.000 Einträge stehen zur Verfügung.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} Eintrag in der angegebenen Base DN verfügbar","{objectsFound} 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üfe die Base DN sowie die Verbindungs- und Anmeldeeinstellungen.",
- "Do you really want to delete the current Server Configuration?" : "Möchtest du die aktuelle Serverkonfiguration wirklich löschen?",
+ "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!",
+ "Mappings cleared successfully!" : "Zuordnungen gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte eine Benutzer-DN und ein Passwort angeben.",
"LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymes binden ist scheinbar nicht erlaubt.",
"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. Soll wirklich derModus gewechselt werden?",
+ "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. Soll wirklich der Modus gewechselt werden?",
"Mode switch" : "Modus wechseln",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe deine Anmelde-Attribute und deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "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 die Anmelde-Attribute und den Benutzernamen überprüfen. 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.",
- "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.",
- "An unspecified error occurred. Please check log and settings." : "Es ist ein nicht näher spezifizierter Fehler aufgetreten. Bitte prüfe die Logdatei und Einstellungen.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Bitte in Erwägung ziehen, die Suche einzugrenzen, da sie viele Benutzer umfaßt. Nur der erste wird sich anmelden können.",
+ "An unspecified error occurred. Please check log and settings." : "Es ist ein nicht näher spezifizierter Fehler aufgetreten. Bitte die Logdatei und die Einstellungen überprüfen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z. B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten. Bitte Host, Port und Anmeldeinformationen überprüfen.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Der \"%u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP/AD abgefragt wird.",
- "Please provide a login name to test against" : "Bitte gib einen Benutzernamen an, um gegen diesen zu testen",
+ "Please provide a login name to test against" : "Bitte einen Benutzernamen eingeben, um gegen diesen zu testen",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP/AD-Server memberOf nicht unterstützt.",
- "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:",
+ "Password change rejected. Hint: %s" : "Passwortänderung verweigert. Hinweis: %s",
+ "Mandatory field \"%s\" left empty" : "Pflichtfeld \"%s\" leer gelassen",
+ "A password is given, but not an LDAP agent" : "Es wurde ein Passwort, aber kein LDAP-Agent eingegeben",
+ "No password is given for the user agent" : "Für den User-Agenten wurde kein Passwort angegeben",
+ "No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN eingegeben",
+ "User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Dein Passwort läuft morgen ab",
"Your password will expire today." : "Dein Passwort läuft heute ab",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dein Passwort läuft in %n Tag ab","Dein Passwort läuft in %n Tagen ab"],
"LDAP/AD integration" : "LDAP/AD-Integration",
+ "LDAP Connection" : "LDAP-Verbindung",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bindung für diese LDAP-Konfiguration fehlgeschlagen: %s","Bindung für %n LDAP-Konfigurationen fehlgeschlagen: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Die Suche für diese LDAP-Konfigurationen ist fehlgeschlagen: %s","Die Suche für %n LDAP-Konfigurationen ist fehlgeschlagen: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Es gibt eine inaktive LDAP-Konfiguration: %s","Es gibt %n inaktive LDAP-Konfigurationen: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Bindung und Suche funktionieren mit der eingerichteten LDAP-Verbindung (%s)","Bindung und Suchen funktioniert auf allen der %nkonfigurierten LDAP-Verbindungen (%s)"],
"Invalid LDAP UUIDs" : "Ungültige LDAP-UUIDs",
"None found" : "Keine gefunden",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte die \"UUID-Erkennung überschreiben\"-Einstellungen im Expertenteil der LDAP-Konfiguration überprüfen und \"occ ldap:update-uuid\" verwenden, um sie zu aktualisieren.",
"_%n group found_::_%n groups found_" : ["%n Gruppe gefunden","%n Gruppen gefunden"],
"> 1000 groups found" : "Mehr als 1000 Gruppen gefunden",
"> 1000 users found" : "Mehr als 1000 Benutzer gefunden",
@@ -71,7 +84,7 @@ OC.L10N.register(
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"LDAP user and group backend" : "LDAP Benutzer- und Gruppen-Backend",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es Administratoren Nextcloud mit einem LDAP-basiertem Nutzerverzeichnis zu verbinden.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es der Administration, Nextcloud mit einem LDAP-basiertem Nutzerverzeichnis zu verbinden.",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Diese App ermöglicht es Administratoren Nextcloud mit einem auf LDAP basierenden Nutzerverzeichnis zu verbinden um so die Anmeldung, Nutzer, Gruppen und Berechtigungen zu konfigurieren. Administratoren können die App so einrichten, dass sie sich mit einem oder mehreren LDAP-Verzeichnissen oder Active-Directories über eine LDAP-Schnittstelle verbindet. Attribute wie Speicherkontigent, E-Mail, Avatare, Gruppenmitgliedschaft usw. können von einem Verzeichnis mit den dazugehörigen Anfragen und Filtern bezogen werden\n\nDer Nutzer meldet sich an der Nextclud mit seinen LDAP oder AD Anmeldedaten an. und erhält Zugriff durch eine Authentifizierungsanfrage am LDAP- oder AD-Server. Nextcloud speichert und verwendet nicht die LDAP- oder AD-Zugangsdaten sondern verwendet eine Sitzungs-ID für die jeweilige Nutzer-ID. Weitere Infos in der \"LDAP User and Group Backend\"-Dokumentation.",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
@@ -109,7 +122,7 @@ OC.L10N.register(
"For anonymous access, leave DN and Password empty." : "Lasse die Felder DN und Passwort für anonymen Zugang leer.",
"Save Credentials" : "Zugangsdaten speichern",
"One Base DN per line" : "Einen Basis-DN pro Zeile",
- "You can specify Base DN for users and groups in the Advanced tab" : "Base DN für Benutzer und Gruppen kann im Reiter „Fortgeschritten“ angegeben werden",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Die Basis-DN für Benutzer und Gruppen kann im Reiter \"Fortgeschritten\" eingegeben werden",
"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.",
@@ -121,12 +134,12 @@ OC.L10N.register(
"Saving" : "Speichern",
"Back" : "Zurück",
"Continue" : "Fortsetzen",
- "Please renew your password." : "Bitte erneuere dein Passwort",
+ "Please renew your password." : "Bitte dein Passwort erneuern",
"An internal error occurred." : "Es ist ein interner Fehler aufgetreten.",
- "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere den Administrator.",
+ "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere die Administration.",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
- "Renew password" : "Bitte erneuere dein Passwort",
+ "Renew password" : "Passwort erneuern",
"Wrong password." : "Falsches Passwort.",
"Cancel" : "Abbrechen",
"Server" : "Server",
@@ -135,18 +148,18 @@ OC.L10N.register(
"Groups" : "Gruppen",
"Expert" : "Experte",
"Advanced" : "Fortgeschritten",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktiere deinen Systemadministrator und bitte ihn um die Installation des Moduls.",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte die Systemadministration kontaktieren und diese um die Installation des Moduls bitten.",
"Connection Settings" : "Verbindungseinstellungen",
"Configuration Active" : "Konfiguration aktiv",
"When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen, wenn nicht angehakt.",
"Backup (Replica) Host" : "Backup-Host (Kopie)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Gib einen optionalen Backup-Host an. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Optionalen Backup-Host eingeben. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.",
"Backup (Replica) Port" : "Port des Backup-Hosts (Kopie)",
"Disable Main Server" : "Hauptserver deaktivieren",
"Only connect to the replica server." : "Nur zum Replikat-Server verbinden.",
"Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in deinen %s Server importieren.",
- "Cache Time-To-Live" : "Speichere Time-To-Live zwischen",
+ "Cache Time-To-Live" : "Time-To-Live zwischenspeichern",
"in seconds. A change empties the cache." : "in Sekunden. Eine Änderung leert den Cache.",
"Directory Settings" : "Ordnereinstellungen",
"User Display Name Field" : "Feld für den Anzeigenamen des Benutzers",
@@ -158,7 +171,7 @@ OC.L10N.register(
"User Search Attributes" : "Benutzersucheigenschaften",
"Optional; one attribute per line" : "Optional; ein Attribut pro Zeile",
"Disable users missing from LDAP" : "Benutzer deaktivieren, die in LDAP fehlen",
- "When switched on, users imported from LDAP which are then missing will be disabled" : "Beim Einschalten werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Wenn aktiviert, werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert",
"Group Display Name Field" : "Feld für den Anzeigenamen der Gruppe",
"The LDAP attribute to use to generate the groups's display name." : "Das LDAP-Attribut zur Erzeugung des Anzeigenamens der Gruppen.",
"Base Group Tree" : "Basis-Gruppenbaum",
@@ -169,11 +182,11 @@ OC.L10N.register(
"The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Ein LDAP-Attribut von Gruppenobjekten, das eine LDAP Such-URL enthält die festlegt welche Objekte zu der Gruppe gehören. (Ein leeres Feld deaktiviert die Funktion \"Dynamisch Gruppenzugehörigkeit\")",
"Nested Groups" : "Verschachtelte Gruppen",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Wenn aktiviert, werden Gruppen, die Gruppen enthalten, unterstützt. (Funktioniert nur, wenn das Merkmal des Gruppenmitgliedes den Domain-Namen enthält.)",
- "Paging chunksize" : "Seitenstücke (Paging chunksize)",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung „0“ deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).",
+ "Paging chunksize" : "Paging Chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Die Blockgröße für seitenweise LDAP-Suchen, die umfangreiche Ergebnisse wie Benutzer- oder Gruppenaufzählungen zurückgeben können. (Wenn Sie den Wert auf 0 setzen, werden seitenweise LDAP-Suchen in diesen Situationen deaktiviert.)",
"Enable LDAP password changes per user" : "LDAP-Passwortänderungen pro Benutzer aktivieren",
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP-Nutzern die Änderung ihrer Passwörter erlauben und Super-Administratoren sowie Gruppen-Administratoren die Passwortänderung ihrer LDAP-Nutzer erlauben. Dies funktioniert nur, wenn die Zugriffsrichtlinien auf dem LDAP-Server entsprechend konfiguriert sind. Da Passwörter im Klartext an den LDAP-Server gesendet werden, muss die Transportverschlüsselung verwendet werden und das Passwort-Hashing auf dem LDAP-Server sollte konfiguriert werden.",
- "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)",
+ "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wird als Klartext an LDAP gesendet)",
"Default password policy DN" : "Standard Passwort-Regeln DN",
"The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Die DN einer Standard-Passwort-Policy, welche für den Umgang mit ablaufenden Passwörtern verwendet wird. Dies funktioniert nur wenn Passwort-Änderungen pro Benutzer via LDAP und OpenLDAP aktiviert sind. Leer lassen, um die Passwortablaufbehandlung zu deaktivieren.",
"Special Attributes" : "Spezielle Eigenschaften",
@@ -182,7 +195,7 @@ OC.L10N.register(
"Quota Default" : "Standardkontingent",
"Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standardkontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.",
"Email Field" : "E-Mail-Feld",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : " E-Mail-Adresse des Benutzers über sein LDAP-Attribut festlegen. Für das Standardverhalten, Feld leer lassen.",
"User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls trage ein LDAP/AD-Attribut ein.",
"\"$home\" Placeholder Field" : "\"$home\" Platzhalter-Feld",
@@ -193,7 +206,7 @@ OC.L10N.register(
"Website Field" : "Webseiten-Feld",
"User profile Website will be set from the specified attribute" : "Benutzerprofil Webseite wird aus dem angegebenen Attribut festgelegt",
"Address Field" : "Adressfeld",
- "User profile Address will be set from the specified attribute" : "Benutzerprofil Adresse wird aus dem angegebenen Attribut festgelegt",
+ "User profile Address will be set from the specified attribute" : "Benutzerprofil-Adresse wird aus dem angegebenen Attribut festgelegt",
"Twitter Field" : "X-Feld",
"User profile Twitter will be set from the specified attribute" : "Benutzerprofil X wird aus dem angegebenen Attribut festgelegt",
"Fediverse Field" : "Fediverse-Feld",
@@ -206,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Benutzerprofil Überschrift wird aus dem angegebenen Attribut festgelegt",
"Biography Field" : "Biografisches Feld",
"User profile Biography will be set from the specified attribute" : "Benutzerprofil Biografie wird aus dem angegebenen Attribut festgelegt",
+ "Birthdate Field" : "Geburtstagsfeld",
+ "User profile Date of birth will be set from the specified attribute" : "Das Geburtsdatum des Profils wird aus dem angegebenen Attribut ermittelt",
+ "Pronouns Field" : "Pronomenfeld",
+ "User profile Pronouns will be set from the specified attribute" : "Profil-Pronomen werden aus dem angegebenen Attribut festgelegt",
"Internal Username" : "Interner Benutzername",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Standardmäßig wird der interne Benutzername aus dem UUID-Attribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [a-zA-Z0-9_.@-]. Andere Zeichen werden durch ihre ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwendet, um den Benutzer intern zu identifizieren. Er ist außerdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Beispiel für alle DAV-Dienste. Mit dieser Einstellung kann das Standardverhalten geändert werden. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. Für die Standardeinstellung lasse das Eingabefeld leer.",
"Internal Username Attribute:" : "Attribut für interne Benutzernamen:",
@@ -217,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Die Benutzernamen werden genutzt, um Metadaten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Lösche niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen",
"Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfe deine „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwende „occ ldap:update-uuid“, um sie zu aktualisieren."
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest du in den Logdateien."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index ad649b50340..801f94a3907 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
"Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ",
- "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest du in den Logdateien.",
+ "Invalid configuration: %s" : "Ungültige Konfiguration: %s",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
"Invalid data specified" : "Ungültige Daten angegeben",
- " Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
+ "Could not set configuration %1$s to %2$s" : "Die Konfiguration %1$s konnte nicht auf %2$s gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
"Renewing …" : "Erneuere …",
"Very weak password" : "Sehr schwaches Passwort",
@@ -33,34 +33,47 @@
"More than 1,000 directory entries available." : "Mehr als 1.000 Einträge stehen zur Verfügung.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} Eintrag in der angegebenen Base DN verfügbar","{objectsFound} 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üfe die Base DN sowie die Verbindungs- und Anmeldeeinstellungen.",
- "Do you really want to delete the current Server Configuration?" : "Möchtest du die aktuelle Serverkonfiguration wirklich löschen?",
+ "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!",
+ "Mappings cleared successfully!" : "Zuordnungen gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte eine Benutzer-DN und ein Passwort angeben.",
"LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymes binden ist scheinbar nicht erlaubt.",
"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. Soll wirklich derModus gewechselt werden?",
+ "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. Soll wirklich der Modus gewechselt werden?",
"Mode switch" : "Modus wechseln",
"Select attributes" : "Attribute auswählen",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe deine Anmelde-Attribute und deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>",
+ "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 die Anmelde-Attribute und den Benutzernamen überprüfen. 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.",
- "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.",
- "An unspecified error occurred. Please check log and settings." : "Es ist ein nicht näher spezifizierter Fehler aufgetreten. Bitte prüfe die Logdatei und Einstellungen.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Bitte in Erwägung ziehen, die Suche einzugrenzen, da sie viele Benutzer umfaßt. Nur der erste wird sich anmelden können.",
+ "An unspecified error occurred. Please check log and settings." : "Es ist ein nicht näher spezifizierter Fehler aufgetreten. Bitte die Logdatei und die Einstellungen überprüfen.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z. B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.",
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten. Bitte Host, Port und Anmeldeinformationen überprüfen.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Der \"%u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP/AD abgefragt wird.",
- "Please provide a login name to test against" : "Bitte gib einen Benutzernamen an, um gegen diesen zu testen",
+ "Please provide a login name to test against" : "Bitte einen Benutzernamen eingeben, um gegen diesen zu testen",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP/AD-Server memberOf nicht unterstützt.",
- "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:",
+ "Password change rejected. Hint: %s" : "Passwortänderung verweigert. Hinweis: %s",
+ "Mandatory field \"%s\" left empty" : "Pflichtfeld \"%s\" leer gelassen",
+ "A password is given, but not an LDAP agent" : "Es wurde ein Passwort, aber kein LDAP-Agent eingegeben",
+ "No password is given for the user agent" : "Für den User-Agenten wurde kein Passwort angegeben",
+ "No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN eingegeben",
+ "User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Dein Passwort läuft morgen ab",
"Your password will expire today." : "Dein Passwort läuft heute ab",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dein Passwort läuft in %n Tag ab","Dein Passwort läuft in %n Tagen ab"],
"LDAP/AD integration" : "LDAP/AD-Integration",
+ "LDAP Connection" : "LDAP-Verbindung",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bindung für diese LDAP-Konfiguration fehlgeschlagen: %s","Bindung für %n LDAP-Konfigurationen fehlgeschlagen: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Die Suche für diese LDAP-Konfigurationen ist fehlgeschlagen: %s","Die Suche für %n LDAP-Konfigurationen ist fehlgeschlagen: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Es gibt eine inaktive LDAP-Konfiguration: %s","Es gibt %n inaktive LDAP-Konfigurationen: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Bindung und Suche funktionieren mit der eingerichteten LDAP-Verbindung (%s)","Bindung und Suchen funktioniert auf allen der %nkonfigurierten LDAP-Verbindungen (%s)"],
"Invalid LDAP UUIDs" : "Ungültige LDAP-UUIDs",
"None found" : "Keine gefunden",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte die \"UUID-Erkennung überschreiben\"-Einstellungen im Expertenteil der LDAP-Konfiguration überprüfen und \"occ ldap:update-uuid\" verwenden, um sie zu aktualisieren.",
"_%n group found_::_%n groups found_" : ["%n Gruppe gefunden","%n Gruppen gefunden"],
"> 1000 groups found" : "Mehr als 1000 Gruppen gefunden",
"> 1000 users found" : "Mehr als 1000 Benutzer gefunden",
@@ -69,7 +82,7 @@
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"LDAP user and group backend" : "LDAP Benutzer- und Gruppen-Backend",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es Administratoren Nextcloud mit einem LDAP-basiertem Nutzerverzeichnis zu verbinden.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es der Administration, Nextcloud mit einem LDAP-basiertem Nutzerverzeichnis zu verbinden.",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Diese App ermöglicht es Administratoren Nextcloud mit einem auf LDAP basierenden Nutzerverzeichnis zu verbinden um so die Anmeldung, Nutzer, Gruppen und Berechtigungen zu konfigurieren. Administratoren können die App so einrichten, dass sie sich mit einem oder mehreren LDAP-Verzeichnissen oder Active-Directories über eine LDAP-Schnittstelle verbindet. Attribute wie Speicherkontigent, E-Mail, Avatare, Gruppenmitgliedschaft usw. können von einem Verzeichnis mit den dazugehörigen Anfragen und Filtern bezogen werden\n\nDer Nutzer meldet sich an der Nextclud mit seinen LDAP oder AD Anmeldedaten an. und erhält Zugriff durch eine Authentifizierungsanfrage am LDAP- oder AD-Server. Nextcloud speichert und verwendet nicht die LDAP- oder AD-Zugangsdaten sondern verwendet eine Sitzungs-ID für die jeweilige Nutzer-ID. Weitere Infos in der \"LDAP User and Group Backend\"-Dokumentation.",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
@@ -107,7 +120,7 @@
"For anonymous access, leave DN and Password empty." : "Lasse die Felder DN und Passwort für anonymen Zugang leer.",
"Save Credentials" : "Zugangsdaten speichern",
"One Base DN per line" : "Einen Basis-DN pro Zeile",
- "You can specify Base DN for users and groups in the Advanced tab" : "Base DN für Benutzer und Gruppen kann im Reiter „Fortgeschritten“ angegeben werden",
+ "You can specify Base DN for users and groups in the Advanced tab" : "Die Basis-DN für Benutzer und Gruppen kann im Reiter \"Fortgeschritten\" eingegeben werden",
"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.",
@@ -119,12 +132,12 @@
"Saving" : "Speichern",
"Back" : "Zurück",
"Continue" : "Fortsetzen",
- "Please renew your password." : "Bitte erneuere dein Passwort",
+ "Please renew your password." : "Bitte dein Passwort erneuern",
"An internal error occurred." : "Es ist ein interner Fehler aufgetreten.",
- "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere den Administrator.",
+ "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere die Administration.",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
- "Renew password" : "Bitte erneuere dein Passwort",
+ "Renew password" : "Passwort erneuern",
"Wrong password." : "Falsches Passwort.",
"Cancel" : "Abbrechen",
"Server" : "Server",
@@ -133,18 +146,18 @@
"Groups" : "Gruppen",
"Expert" : "Experte",
"Advanced" : "Fortgeschritten",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktiere deinen Systemadministrator und bitte ihn um die Installation des Moduls.",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte die Systemadministration kontaktieren und diese um die Installation des Moduls bitten.",
"Connection Settings" : "Verbindungseinstellungen",
"Configuration Active" : "Konfiguration aktiv",
"When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen, wenn nicht angehakt.",
"Backup (Replica) Host" : "Backup-Host (Kopie)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Gib einen optionalen Backup-Host an. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Optionalen Backup-Host eingeben. Es muss sich um eine Kopie des Haupt-LDAP/AD-Servers handeln.",
"Backup (Replica) Port" : "Port des Backup-Hosts (Kopie)",
"Disable Main Server" : "Hauptserver deaktivieren",
"Only connect to the replica server." : "Nur zum Replikat-Server verbinden.",
"Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in deinen %s Server importieren.",
- "Cache Time-To-Live" : "Speichere Time-To-Live zwischen",
+ "Cache Time-To-Live" : "Time-To-Live zwischenspeichern",
"in seconds. A change empties the cache." : "in Sekunden. Eine Änderung leert den Cache.",
"Directory Settings" : "Ordnereinstellungen",
"User Display Name Field" : "Feld für den Anzeigenamen des Benutzers",
@@ -156,7 +169,7 @@
"User Search Attributes" : "Benutzersucheigenschaften",
"Optional; one attribute per line" : "Optional; ein Attribut pro Zeile",
"Disable users missing from LDAP" : "Benutzer deaktivieren, die in LDAP fehlen",
- "When switched on, users imported from LDAP which are then missing will be disabled" : "Beim Einschalten werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Wenn aktiviert, werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert",
"Group Display Name Field" : "Feld für den Anzeigenamen der Gruppe",
"The LDAP attribute to use to generate the groups's display name." : "Das LDAP-Attribut zur Erzeugung des Anzeigenamens der Gruppen.",
"Base Group Tree" : "Basis-Gruppenbaum",
@@ -167,11 +180,11 @@
"The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Ein LDAP-Attribut von Gruppenobjekten, das eine LDAP Such-URL enthält die festlegt welche Objekte zu der Gruppe gehören. (Ein leeres Feld deaktiviert die Funktion \"Dynamisch Gruppenzugehörigkeit\")",
"Nested Groups" : "Verschachtelte Gruppen",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Wenn aktiviert, werden Gruppen, die Gruppen enthalten, unterstützt. (Funktioniert nur, wenn das Merkmal des Gruppenmitgliedes den Domain-Namen enthält.)",
- "Paging chunksize" : "Seitenstücke (Paging chunksize)",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung „0“ deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).",
+ "Paging chunksize" : "Paging Chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Die Blockgröße für seitenweise LDAP-Suchen, die umfangreiche Ergebnisse wie Benutzer- oder Gruppenaufzählungen zurückgeben können. (Wenn Sie den Wert auf 0 setzen, werden seitenweise LDAP-Suchen in diesen Situationen deaktiviert.)",
"Enable LDAP password changes per user" : "LDAP-Passwortänderungen pro Benutzer aktivieren",
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP-Nutzern die Änderung ihrer Passwörter erlauben und Super-Administratoren sowie Gruppen-Administratoren die Passwortänderung ihrer LDAP-Nutzer erlauben. Dies funktioniert nur, wenn die Zugriffsrichtlinien auf dem LDAP-Server entsprechend konfiguriert sind. Da Passwörter im Klartext an den LDAP-Server gesendet werden, muss die Transportverschlüsselung verwendet werden und das Passwort-Hashing auf dem LDAP-Server sollte konfiguriert werden.",
- "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)",
+ "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wird als Klartext an LDAP gesendet)",
"Default password policy DN" : "Standard Passwort-Regeln DN",
"The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Die DN einer Standard-Passwort-Policy, welche für den Umgang mit ablaufenden Passwörtern verwendet wird. Dies funktioniert nur wenn Passwort-Änderungen pro Benutzer via LDAP und OpenLDAP aktiviert sind. Leer lassen, um die Passwortablaufbehandlung zu deaktivieren.",
"Special Attributes" : "Spezielle Eigenschaften",
@@ -180,7 +193,7 @@
"Quota Default" : "Standardkontingent",
"Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standardkontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.",
"Email Field" : "E-Mail-Feld",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : " E-Mail-Adresse des Benutzers über sein LDAP-Attribut festlegen. Für das Standardverhalten, Feld leer lassen.",
"User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls trage ein LDAP/AD-Attribut ein.",
"\"$home\" Placeholder Field" : "\"$home\" Platzhalter-Feld",
@@ -191,7 +204,7 @@
"Website Field" : "Webseiten-Feld",
"User profile Website will be set from the specified attribute" : "Benutzerprofil Webseite wird aus dem angegebenen Attribut festgelegt",
"Address Field" : "Adressfeld",
- "User profile Address will be set from the specified attribute" : "Benutzerprofil Adresse wird aus dem angegebenen Attribut festgelegt",
+ "User profile Address will be set from the specified attribute" : "Benutzerprofil-Adresse wird aus dem angegebenen Attribut festgelegt",
"Twitter Field" : "X-Feld",
"User profile Twitter will be set from the specified attribute" : "Benutzerprofil X wird aus dem angegebenen Attribut festgelegt",
"Fediverse Field" : "Fediverse-Feld",
@@ -204,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "Benutzerprofil Überschrift wird aus dem angegebenen Attribut festgelegt",
"Biography Field" : "Biografisches Feld",
"User profile Biography will be set from the specified attribute" : "Benutzerprofil Biografie wird aus dem angegebenen Attribut festgelegt",
+ "Birthdate Field" : "Geburtstagsfeld",
+ "User profile Date of birth will be set from the specified attribute" : "Das Geburtsdatum des Profils wird aus dem angegebenen Attribut ermittelt",
+ "Pronouns Field" : "Pronomenfeld",
+ "User profile Pronouns will be set from the specified attribute" : "Profil-Pronomen werden aus dem angegebenen Attribut festgelegt",
"Internal Username" : "Interner Benutzername",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Standardmäßig wird der interne Benutzername aus dem UUID-Attribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [a-zA-Z0-9_.@-]. Andere Zeichen werden durch ihre ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwendet, um den Benutzer intern zu identifizieren. Er ist außerdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Beispiel für alle DAV-Dienste. Mit dieser Einstellung kann das Standardverhalten geändert werden. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. Für die Standardeinstellung lasse das Eingabefeld leer.",
"Internal Username Attribute:" : "Attribut für interne Benutzernamen:",
@@ -215,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Die Benutzernamen werden genutzt, um Metadaten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Lösche niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen",
"Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfe deine „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwende „occ ldap:update-uuid“, um sie zu aktualisieren."
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest du in den Logdateien."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js
index 2962769871a..142a82913d8 100644
--- a/apps/user_ldap/l10n/de_DE.js
+++ b/apps/user_ldap/l10n/de_DE.js
@@ -1,17 +1,17 @@
OC.L10N.register(
"user_ldap",
{
- "Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
- "Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
+ "Failed to clear the mappings." : "Die Zuordnungen konnten nicht gelöscht werden.",
+ "Failed to delete the server configuration" : "Die Serverkonfiguration konnte nicht gelöscht werden",
"Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
"Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen. ",
- "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Protokolldateien. ",
+ "Invalid configuration: %s" : "Ungültige Konfiguration: %s",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
"Invalid data specified" : "Ungültige Daten angegeben",
- " Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
+ "Could not set configuration %1$s to %2$s" : "Die Konfiguration %1$s konnte nicht auf %2$s gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
"Renewing …" : "Erneuere …",
"Very weak password" : "Sehr schwaches Passwort",
@@ -37,7 +37,7 @@ OC.L10N.register(
"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?" : "Möchten Sie die aktuelle Serverkonfiguration wirklich löschen?",
"Confirm Deletion" : "Löschen bestätigen",
- "Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
+ "Mappings cleared successfully!" : "Zuordnungen gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte geben Sie eine Benutzer-DN und ein Passwort angeben.",
"LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymous Bind ist anscheinend nicht erlaubt.",
@@ -54,7 +54,14 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Der \"%u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP/AD abgefragt wird.",
"Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP/AD-Server memberOf nicht unterstützt.",
- "Password change rejected. Hint: " : "Passwortänderung verweigert. Hinweis:",
+ "Password change rejected. Hint: %s" : "Passwortänderung verweigert. Hinweis: %s",
+ "Mandatory field \"%s\" left empty" : "Pflichtfeld \"%s\" leer gelassen",
+ "A password is given, but not an LDAP agent" : "Es wurde ein Passwort, aber kein LDAP-Agent eingegeben",
+ "No password is given for the user agent" : "Für den User-Agenten wurde kein Passwort angegeben",
+ "No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN angegeben",
+ "User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Ihr Passwort läuft morgen ab.",
@@ -62,13 +69,13 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ihr Passwort läuft in %n Tag ab.","Ihr Passwort läuft in %n Tagen ab."],
"LDAP/AD integration" : "LDAP/AD-Integration",
"LDAP Connection" : "LDAP-Verbindung",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Die Anbindung ist für folgende LDAP-Konfiguration fehlgeschlagen: %s","Die Anbindung ist für folgende LDAP-Konfigurationen fehlgeschlagen: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Die Suche nach dieser LDAP-Konfiguration ist fehlgeschlagen: %s","Die Suche nach diesen LDAP-Konfigurationen ist fehlgeschlagen: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Es gibt eine inaktiv LDAP-Konfiguration: %s","Es gibt inaktive LDAP-Konfigurationen: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Anbindung und Suche funktionieren mit der eingerichteten LDAP-Verbindung (%s)","Anbindung und Suche funktionieren mit allen eingerichteten LDAP-Verbindungen (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bindung für diese LDAP-Konfiguration fehlgeschlagen: %s","Bindung für %n LDAP-Konfigurationen fehlgeschlagen: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Die Suche für diese LDAP-Konfigurationen ist fehlgeschlagen: %s","Die Suche für %n LDAP-Konfigurationen ist fehlgeschlagen: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Es gibt eine inaktive LDAP-Konfiguration: %s","Es gibt %n inaktive LDAP-Konfigurationen: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Bindung und Suche funktionieren mit der eingerichteten LDAP-Verbindung (%s)","Bindung und Suchen funktioniert auf allen der %nkonfigurierten LDAP-Verbindungen (%s)"],
"Invalid LDAP UUIDs" : "Ungültige LDAP-UUIDs",
"None found" : "Keine gefunden",
- "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte überprüfen Sie Ihre „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie „occ ldap:update-uuid“, um sie zu aktualisieren.",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte überprüfen Sie Ihre \"UUID-Erkennung überschreiben\"-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie \"occ ldap:update-uuid\", um sie zu aktualisieren.",
"_%n group found_::_%n groups found_" : ["%n Gruppe gefunden","%n Gruppen gefunden"],
"> 1000 groups found" : "Mehr als 1000 Gruppen gefunden",
"> 1000 users found" : "Mehr als 1000 Benutzer gefunden",
@@ -77,7 +84,7 @@ OC.L10N.register(
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"LDAP user and group backend" : "LDAP Benutzer- und Gruppen-Backend",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es Administratoren, Nextcloud mit einem LDAP-basierten Benutzerverzeichnis zu verbinden.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es der Administration, Nextcloud mit einem LDAP-basiertem Nutzerverzeichnis zu verbinden.",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Diese App ermöglicht es Administratoren Nextcloud mit einem auf LDAP basierenden Nutzerverzeichnis zu verbinden um so die Anmeldung, Nutzer, Gruppen und Berechtigungen zu konfigurieren. Administratoren können die App so einrichten, dass sie sich mit einem oder mehreren LDAP-Verzeichnissen oder Active-Directories über eine LDAP-Schnittstelle verbindet. Attribute wie Speicherkontingent, E-Mail, Avatare, Gruppenmitgliedschaft usw. können von einem Verzeichnis mit den dazugehörigen Anfragen und Filtern bezogen werden\n\nDer Nutzer meldet sich an der Nextclud mit seinen LDAP oder AD Anmeldedaten an. und erhält Zugriff durch eine Authentifizierungsanfrage am LDAP- oder AD-Server. Nextcloud speichert und verwendet nicht die LDAP- oder AD-Zugangsdaten sondern verwendet eine Sitzungs-ID für die jeweilige Nutzer-ID. Weitere Infos in der \"LDAP User und Group Backend\"-Dokumentation.",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
@@ -115,7 +122,7 @@ OC.L10N.register(
"For anonymous access, leave DN and Password empty." : "Lassen Sie die Felder DN und Passwort für einen anonymen Zugang leer.",
"Save Credentials" : "Zugangsdaten speichern",
"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",
+ "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" : "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.",
@@ -129,7 +136,7 @@ OC.L10N.register(
"Continue" : "Fortsetzen",
"Please renew your password." : "Bitte erneuern Sie Ihr Passwort.",
"An internal error occurred." : "Es ist ein interner Fehler aufgetreten.",
- "Please try again or contact your administrator." : "Bitte erneut versuchen oder kontaktieren Sie Ihren Administrator.",
+ "Please try again or contact your administrator." : "Bitte erneut versuchen oder kontaktieren Sie Ihre Administration.",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Renew password" : "Passwort erneuern",
@@ -141,7 +148,7 @@ OC.L10N.register(
"Groups" : "Gruppen",
"Expert" : "Experte",
"Advanced" : "Fortgeschritten",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktieren Sie Ihren Systemadministrator und bitten Sie um die Installation des Moduls.",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktieren Sie Ihre Systemadministration und bitten Sie sie um die Installation des Moduls.",
"Connection Settings" : "Verbindungseinstellungen",
"Configuration Active" : "Konfiguration aktiv",
"When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen, wenn nicht angehakt.",
@@ -158,7 +165,7 @@ OC.L10N.register(
"User Display Name Field" : "Feld für den Anzeigenamen des Benutzers",
"The LDAP attribute to use to generate the user's display name." : "Das LDAP-Attribut zur Erzeugung des Anzeigenamens des Benutzers.",
"2nd User Display Name Field" : "2. Benutzeranzeigename Feld",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optional. Ein hinzuzufügendes LDAP-Attribut, um den Namen in Klammern anzuzeigen. Beispiel: »John Doe (john.doe@example.org)«.",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optional. Ein hinzuzufügendes LDAP-Attribut, um den Namen in Klammern anzuzeigen. Beispiel: »Max Mustermann (max.mustermann@beispiel.de)«.",
"Base User Tree" : "Basis-Benutzerbaum",
"One User Base DN per line" : "Ein Benutzer Basis-DN pro Zeile",
"User Search Attributes" : "Benutzersucheigenschaften",
@@ -176,7 +183,7 @@ OC.L10N.register(
"Nested Groups" : "Verschachtelte Gruppen",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Wenn aktiviert, werden Gruppen, die Gruppen enthalten, unterstützt. (Funktioniert nur, wenn das Merkmal des Gruppenmitgliedes den Domain-Namen enthält.)",
"Paging chunksize" : "Seitenstücke (Paging chunksize)",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung „0“ deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung \"0\" deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).",
"Enable LDAP password changes per user" : "LDAP-Passwortänderungen pro Benutzer aktivieren",
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP-Nutzern die Änderung ihrer Passwörter erlauben und Super-Administratoren sowie Gruppen-Administratoren die Passwortänderung ihrer LDAP-Nutzer erlauben. \nDies funktioniert nur, wenn die Zugriffsrichtlinien auf dem LDAP-Server entsprechend konfiguriert sind. Da Passwörter im Klartext an den LDAP-Server gesendet werden, muss die Transportverschlüsselung verwendet werden und das Passwort-Hashing auf dem LDAP-Server sollte konfiguriert werden.",
"(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)",
@@ -214,6 +221,8 @@ OC.L10N.register(
"User profile Biography will be set from the specified attribute" : "Benutzerprofil Biografie wird aus dem angegebenen Attribut festgelegt",
"Birthdate Field" : "Geburtstagsfeld",
"User profile Date of birth will be set from the specified attribute" : "Das Geburtsdatum des Benutzerprofils wird aus dem angegebenen Attribut ermittelt",
+ "Pronouns Field" : "Pronomenfeld",
+ "User profile Pronouns will be set from the specified attribute" : "Benutzerprofil-Pronomen werden aus dem angegebenen Attribut festgelegt",
"Internal Username" : "Interner Benutzername",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Standardmäßig wird der interne Benutzername aus dem UUID-Attribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [a-zA-Z0-9_.@-]. Andere Zeichen werden durch ihre ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwendet, um den Benutzer intern zu identifizieren. Er ist außerdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Beispiel für alle DAV-Dienste. Mit dieser Einstellung kann das Standardverhalten geändert werden. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. Für die Standardeinstellung lassen Sie das Eingabefeld leer.",
"Internal Username Attribute:" : "Interne Eigenschaften des Benutzers:",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Benutzernamen dienen zum Speichern und Zuweisen von Metadaten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung",
"Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfen Sie Ihre „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie „occ ldap:update-uuid“, um sie zu aktualisieren."
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Protokolldateien. "
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json
index 3b248293b8a..c8bcf0d8640 100644
--- a/apps/user_ldap/l10n/de_DE.json
+++ b/apps/user_ldap/l10n/de_DE.json
@@ -1,15 +1,15 @@
{ "translations": {
- "Failed to clear the mappings." : "Löschen der Zuordnungen fehlgeschlagen.",
- "Failed to delete the server configuration" : "Löschen der Serverkonfiguration fehlgeschlagen",
+ "Failed to clear the mappings." : "Die Zuordnungen konnten nicht gelöscht werden.",
+ "Failed to delete the server configuration" : "Die Serverkonfiguration konnte nicht gelöscht werden",
"Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ",
"Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfen Sie die Servereinstellungen und die Anmeldeinformationen. ",
- "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Protokolldateien. ",
+ "Invalid configuration: %s" : "Ungültige Konfiguration: %s",
"No action specified" : "Keine Aktion angegeben",
"No configuration specified" : "Keine Konfiguration angegeben",
"No data specified" : "Keine Daten angegeben",
"Invalid data specified" : "Ungültige Daten angegeben",
- " Could not set configuration %s" : "Die Konfiguration %s konnte nicht gesetzt werden",
+ "Could not set configuration %1$s to %2$s" : "Die Konfiguration %1$s konnte nicht auf %2$s gesetzt werden",
"Action does not exist" : "Aktion existiert nicht",
"Renewing …" : "Erneuere …",
"Very weak password" : "Sehr schwaches Passwort",
@@ -35,7 +35,7 @@
"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?" : "Möchten Sie die aktuelle Serverkonfiguration wirklich löschen?",
"Confirm Deletion" : "Löschen bestätigen",
- "Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!",
+ "Mappings cleared successfully!" : "Zuordnungen gelöscht!",
"Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.",
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte geben Sie eine Benutzer-DN und ein Passwort angeben.",
"LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymous Bind ist anscheinend nicht erlaubt.",
@@ -52,7 +52,14 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Der \"%u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP/AD abgefragt wird.",
"Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP/AD-Server memberOf nicht unterstützt.",
- "Password change rejected. Hint: " : "Passwortänderung verweigert. Hinweis:",
+ "Password change rejected. Hint: %s" : "Passwortänderung verweigert. Hinweis: %s",
+ "Mandatory field \"%s\" left empty" : "Pflichtfeld \"%s\" leer gelassen",
+ "A password is given, but not an LDAP agent" : "Es wurde ein Passwort, aber kein LDAP-Agent eingegeben",
+ "No password is given for the user agent" : "Für den User-Agenten wurde kein Passwort angegeben",
+ "No LDAP base DN was given" : "Es wurde keine LDAP-Basis-DN angegeben",
+ "User base DN is not a subnode of global base DN" : "Der Benutzer-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Group base DN is not a subnode of global base DN" : "Der Gruppen-Basis-DN ist kein Unterknoten des globalen Basis-DN",
+ "Login filter does not contain %s placeholder." : "Der Anmeldefilter enthält keinen %s-Platzhalter",
"Please login with the new password" : "Bitte mit dem neuen Passwort anmelden",
"LDAP User backend" : "LDAP Benutzer-Backend",
"Your password will expire tomorrow." : "Ihr Passwort läuft morgen ab.",
@@ -60,13 +67,13 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ihr Passwort läuft in %n Tag ab.","Ihr Passwort läuft in %n Tagen ab."],
"LDAP/AD integration" : "LDAP/AD-Integration",
"LDAP Connection" : "LDAP-Verbindung",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Die Anbindung ist für folgende LDAP-Konfiguration fehlgeschlagen: %s","Die Anbindung ist für folgende LDAP-Konfigurationen fehlgeschlagen: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Die Suche nach dieser LDAP-Konfiguration ist fehlgeschlagen: %s","Die Suche nach diesen LDAP-Konfigurationen ist fehlgeschlagen: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Es gibt eine inaktiv LDAP-Konfiguration: %s","Es gibt inaktive LDAP-Konfigurationen: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Anbindung und Suche funktionieren mit der eingerichteten LDAP-Verbindung (%s)","Anbindung und Suche funktionieren mit allen eingerichteten LDAP-Verbindungen (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bindung für diese LDAP-Konfiguration fehlgeschlagen: %s","Bindung für %n LDAP-Konfigurationen fehlgeschlagen: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Die Suche für diese LDAP-Konfigurationen ist fehlgeschlagen: %s","Die Suche für %n LDAP-Konfigurationen ist fehlgeschlagen: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Es gibt eine inaktive LDAP-Konfiguration: %s","Es gibt %n inaktive LDAP-Konfigurationen: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Bindung und Suche funktionieren mit der eingerichteten LDAP-Verbindung (%s)","Bindung und Suchen funktioniert auf allen der %nkonfigurierten LDAP-Verbindungen (%s)"],
"Invalid LDAP UUIDs" : "Ungültige LDAP-UUIDs",
"None found" : "Keine gefunden",
- "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte überprüfen Sie Ihre „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie „occ ldap:update-uuid“, um sie zu aktualisieren.",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte überprüfen Sie Ihre \"UUID-Erkennung überschreiben\"-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie \"occ ldap:update-uuid\", um sie zu aktualisieren.",
"_%n group found_::_%n groups found_" : ["%n Gruppe gefunden","%n Gruppen gefunden"],
"> 1000 groups found" : "Mehr als 1000 Gruppen gefunden",
"> 1000 users found" : "Mehr als 1000 Benutzer gefunden",
@@ -75,7 +82,7 @@
"Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden",
"Invalid Host" : "Ungültiger Host",
"LDAP user and group backend" : "LDAP Benutzer- und Gruppen-Backend",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es Administratoren, Nextcloud mit einem LDAP-basierten Benutzerverzeichnis zu verbinden.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Diese App ermöglicht es der Administration, Nextcloud mit einem LDAP-basiertem Nutzerverzeichnis zu verbinden.",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Diese App ermöglicht es Administratoren Nextcloud mit einem auf LDAP basierenden Nutzerverzeichnis zu verbinden um so die Anmeldung, Nutzer, Gruppen und Berechtigungen zu konfigurieren. Administratoren können die App so einrichten, dass sie sich mit einem oder mehreren LDAP-Verzeichnissen oder Active-Directories über eine LDAP-Schnittstelle verbindet. Attribute wie Speicherkontingent, E-Mail, Avatare, Gruppenmitgliedschaft usw. können von einem Verzeichnis mit den dazugehörigen Anfragen und Filtern bezogen werden\n\nDer Nutzer meldet sich an der Nextclud mit seinen LDAP oder AD Anmeldedaten an. und erhält Zugriff durch eine Authentifizierungsanfrage am LDAP- oder AD-Server. Nextcloud speichert und verwendet nicht die LDAP- oder AD-Zugangsdaten sondern verwendet eine Sitzungs-ID für die jeweilige Nutzer-ID. Weitere Infos in der \"LDAP User und Group Backend\"-Dokumentation.",
"Test Configuration" : "Testkonfiguration",
"Help" : "Hilfe",
@@ -113,7 +120,7 @@
"For anonymous access, leave DN and Password empty." : "Lassen Sie die Felder DN und Passwort für einen anonymen Zugang leer.",
"Save Credentials" : "Zugangsdaten speichern",
"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",
+ "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" : "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.",
@@ -127,7 +134,7 @@
"Continue" : "Fortsetzen",
"Please renew your password." : "Bitte erneuern Sie Ihr Passwort.",
"An internal error occurred." : "Es ist ein interner Fehler aufgetreten.",
- "Please try again or contact your administrator." : "Bitte erneut versuchen oder kontaktieren Sie Ihren Administrator.",
+ "Please try again or contact your administrator." : "Bitte erneut versuchen oder kontaktieren Sie Ihre Administration.",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Renew password" : "Passwort erneuern",
@@ -139,7 +146,7 @@
"Groups" : "Gruppen",
"Expert" : "Experte",
"Advanced" : "Fortgeschritten",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktieren Sie Ihren Systemadministrator und bitten Sie um die Installation des Moduls.",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktieren Sie Ihre Systemadministration und bitten Sie sie um die Installation des Moduls.",
"Connection Settings" : "Verbindungseinstellungen",
"Configuration Active" : "Konfiguration aktiv",
"When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen, wenn nicht angehakt.",
@@ -156,7 +163,7 @@
"User Display Name Field" : "Feld für den Anzeigenamen des Benutzers",
"The LDAP attribute to use to generate the user's display name." : "Das LDAP-Attribut zur Erzeugung des Anzeigenamens des Benutzers.",
"2nd User Display Name Field" : "2. Benutzeranzeigename Feld",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optional. Ein hinzuzufügendes LDAP-Attribut, um den Namen in Klammern anzuzeigen. Beispiel: »John Doe (john.doe@example.org)«.",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optional. Ein hinzuzufügendes LDAP-Attribut, um den Namen in Klammern anzuzeigen. Beispiel: »Max Mustermann (max.mustermann@beispiel.de)«.",
"Base User Tree" : "Basis-Benutzerbaum",
"One User Base DN per line" : "Ein Benutzer Basis-DN pro Zeile",
"User Search Attributes" : "Benutzersucheigenschaften",
@@ -174,7 +181,7 @@
"Nested Groups" : "Verschachtelte Gruppen",
"When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Wenn aktiviert, werden Gruppen, die Gruppen enthalten, unterstützt. (Funktioniert nur, wenn das Merkmal des Gruppenmitgliedes den Domain-Namen enthält.)",
"Paging chunksize" : "Seitenstücke (Paging chunksize)",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung „0“ deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung \"0\" deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).",
"Enable LDAP password changes per user" : "LDAP-Passwortänderungen pro Benutzer aktivieren",
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP-Nutzern die Änderung ihrer Passwörter erlauben und Super-Administratoren sowie Gruppen-Administratoren die Passwortänderung ihrer LDAP-Nutzer erlauben. \nDies funktioniert nur, wenn die Zugriffsrichtlinien auf dem LDAP-Server entsprechend konfiguriert sind. Da Passwörter im Klartext an den LDAP-Server gesendet werden, muss die Transportverschlüsselung verwendet werden und das Passwort-Hashing auf dem LDAP-Server sollte konfiguriert werden.",
"(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)",
@@ -212,6 +219,8 @@
"User profile Biography will be set from the specified attribute" : "Benutzerprofil Biografie wird aus dem angegebenen Attribut festgelegt",
"Birthdate Field" : "Geburtstagsfeld",
"User profile Date of birth will be set from the specified attribute" : "Das Geburtsdatum des Benutzerprofils wird aus dem angegebenen Attribut ermittelt",
+ "Pronouns Field" : "Pronomenfeld",
+ "User profile Pronouns will be set from the specified attribute" : "Benutzerprofil-Pronomen werden aus dem angegebenen Attribut festgelegt",
"Internal Username" : "Interner Benutzername",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Standardmäßig wird der interne Benutzername aus dem UUID-Attribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [a-zA-Z0-9_.@-]. Andere Zeichen werden durch ihre ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwendet, um den Benutzer intern zu identifizieren. Er ist außerdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Beispiel für alle DAV-Dienste. Mit dieser Einstellung kann das Standardverhalten geändert werden. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. Für die Standardeinstellung lassen Sie das Eingabefeld leer.",
"Internal Username Attribute:" : "Interne Eigenschaften des Benutzers:",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Benutzernamen dienen zum Speichern und Zuweisen von Metadaten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.",
"Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung",
"Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfen Sie Ihre „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie „occ ldap:update-uuid“, um sie zu aktualisieren."
+ "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Details finden Sie in den Protokolldateien. "
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js
index 105eff56e09..bb4bebdc29c 100644
--- a/apps/user_ldap/l10n/el.js
+++ b/apps/user_ldap/l10n/el.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Μη έγκυρη διαμόρφωση: Δεν επιτρέπεται ανώνυμη δέσμευση.",
"Valid configuration, connection established!" : "Επιτυχής ρύθμιση, συνδεθήκατε με επιτυχία",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Έγκυρη διαμόρφωση, αλλά η σύνδεση απέτυχε. Ελέγξτε τις ρυθμίσεις διακομιστή και τα διαπιστευτήρια.",
- "Invalid configuration. Please have a look at the logs for further details." : "Μη έγκυρη διαμόρφωση. Παρακαλώ ρίξτε μια ματιά στα αρχεία καταγραφής για περισσότερες λεπτομέρειες.",
"No action specified" : "Καμμία εντολή δεν προσδιορίστηκε",
"No configuration specified" : "Καμμία διαμόρφωση δεν προσδιορίστηκε",
"No data specified" : "Δεν προσδιορίστηκαν δεδομένα",
- " Could not set configuration %s" : "Αδυναμία ρύθμισης %s",
"Action does not exist" : "Η ενέργεια δεν υπάρχει",
"Renewing …" : "Ανανέωση ...",
"Very weak password" : "Πολύ αδύναμος κωδικός πρόσβασης",
@@ -53,7 +51,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Το σύμβολο υποκατάστασης \"%uid\" λείπει. Θα αντικατασταθεί με το όνομα login κατά την υποβολή ερωτήματος 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/APD διακομιστής δεν υποστηρίζει memberOf.",
- "Password change rejected. Hint: " : "Η αλλαγή του συνθηματικού απέτυχε. Υπόδειξη:",
"Please login with the new password" : "Παρακαλώ κάντε είσοδο με το νέο συνθηματικό",
"LDAP User backend" : "LDAP Σύστημα υποστήριξης χρήστη",
"Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.",
@@ -191,6 +188,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Αντιστοίχιση Χρηστών Όνομα Χρήστη-LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Τα ονόματα χρηστών χρησιμοποιούνται για την αποθήκευση και την εκχώρηση μεταδεδομένων. Προκειμένου να εντοπιστούν και να αναγνωριστούν με ακρίβεια οι χρήστες, κάθε ένας του LDAP θα έχει ένα εσωτερικό όνομα. Αυτό απαιτεί μια αντιστοίχιση από όνομα χρήστη σε χρήστη LDAP. Το τελικό όνομα χρήστη αντιστοιχίζεται στο UUID του χρήστη LDAP. Επιπλέον, αποθηκεύεται προσωρινά το DN για τη μείωση της αλληλεπίδρασης LDAP, αλλά δεν χρησιμοποιείται για αναγνώριση. Εάν αλλάξει το DN, οι αλλαγές θα βρεθούν. Το εσωτερικό όνομα χρήστη χρησιμοποιείται παντού. Η εκκαθάριση των αντιστοιχίσεων θα έχει υπολείμματα παντού. Η εκκαθάριση των αντιστοιχιών δεν είναι ευαίσθητη στη διαμόρφωση, επηρεάζει όλες τις διαμορφώσεις LDAP! Μην εκκαθαρίζετε ποτέ τις αντιστοιχίσεις σε τρέχων σύστημα, μόνο σε δοκιμαστικό ή πειραματικό στάδιο.",
"Clear Username-LDAP User Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Χρήστη LDAP-Χρήστη",
- "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας"
+ "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας",
+ "Invalid configuration. Please have a look at the logs for further details." : "Μη έγκυρη διαμόρφωση. Παρακαλώ ρίξτε μια ματιά στα αρχεία καταγραφής για περισσότερες λεπτομέρειες."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json
index bf3fc710bc9..6caed219c56 100644
--- a/apps/user_ldap/l10n/el.json
+++ b/apps/user_ldap/l10n/el.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Μη έγκυρη διαμόρφωση: Δεν επιτρέπεται ανώνυμη δέσμευση.",
"Valid configuration, connection established!" : "Επιτυχής ρύθμιση, συνδεθήκατε με επιτυχία",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Έγκυρη διαμόρφωση, αλλά η σύνδεση απέτυχε. Ελέγξτε τις ρυθμίσεις διακομιστή και τα διαπιστευτήρια.",
- "Invalid configuration. Please have a look at the logs for further details." : "Μη έγκυρη διαμόρφωση. Παρακαλώ ρίξτε μια ματιά στα αρχεία καταγραφής για περισσότερες λεπτομέρειες.",
"No action specified" : "Καμμία εντολή δεν προσδιορίστηκε",
"No configuration specified" : "Καμμία διαμόρφωση δεν προσδιορίστηκε",
"No data specified" : "Δεν προσδιορίστηκαν δεδομένα",
- " Could not set configuration %s" : "Αδυναμία ρύθμισης %s",
"Action does not exist" : "Η ενέργεια δεν υπάρχει",
"Renewing …" : "Ανανέωση ...",
"Very weak password" : "Πολύ αδύναμος κωδικός πρόσβασης",
@@ -51,7 +49,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Το σύμβολο υποκατάστασης \"%uid\" λείπει. Θα αντικατασταθεί με το όνομα login κατά την υποβολή ερωτήματος 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/APD διακομιστής δεν υποστηρίζει memberOf.",
- "Password change rejected. Hint: " : "Η αλλαγή του συνθηματικού απέτυχε. Υπόδειξη:",
"Please login with the new password" : "Παρακαλώ κάντε είσοδο με το νέο συνθηματικό",
"LDAP User backend" : "LDAP Σύστημα υποστήριξης χρήστη",
"Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.",
@@ -189,6 +186,7 @@
"Username-LDAP User Mapping" : "Αντιστοίχιση Χρηστών Όνομα Χρήστη-LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Τα ονόματα χρηστών χρησιμοποιούνται για την αποθήκευση και την εκχώρηση μεταδεδομένων. Προκειμένου να εντοπιστούν και να αναγνωριστούν με ακρίβεια οι χρήστες, κάθε ένας του LDAP θα έχει ένα εσωτερικό όνομα. Αυτό απαιτεί μια αντιστοίχιση από όνομα χρήστη σε χρήστη LDAP. Το τελικό όνομα χρήστη αντιστοιχίζεται στο UUID του χρήστη LDAP. Επιπλέον, αποθηκεύεται προσωρινά το DN για τη μείωση της αλληλεπίδρασης LDAP, αλλά δεν χρησιμοποιείται για αναγνώριση. Εάν αλλάξει το DN, οι αλλαγές θα βρεθούν. Το εσωτερικό όνομα χρήστη χρησιμοποιείται παντού. Η εκκαθάριση των αντιστοιχίσεων θα έχει υπολείμματα παντού. Η εκκαθάριση των αντιστοιχιών δεν είναι ευαίσθητη στη διαμόρφωση, επηρεάζει όλες τις διαμορφώσεις LDAP! Μην εκκαθαρίζετε ποτέ τις αντιστοιχίσεις σε τρέχων σύστημα, μόνο σε δοκιμαστικό ή πειραματικό στάδιο.",
"Clear Username-LDAP User Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Χρήστη LDAP-Χρήστη",
- "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας"
+ "Clear Groupname-LDAP Group Mapping" : "Διαγραφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας",
+ "Invalid configuration. Please have a look at the logs for further details." : "Μη έγκυρη διαμόρφωση. Παρακαλώ ρίξτε μια ματιά στα αρχεία καταγραφής για περισσότερες λεπτομέρειες."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js
index 3b8c700c0d1..550cc262cb5 100644
--- a/apps/user_ldap/l10n/en_GB.js
+++ b/apps/user_ldap/l10n/en_GB.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
"Valid configuration, connection established!" : "Valid configuration, connection established!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
+ "Invalid configuration: %s" : "Invalid configuration: %s",
"No action specified" : "No action specified",
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
"Invalid data specified" : "Invalid data specified",
- " Could not set configuration %s" : " Could not set configuration %s",
+ "Could not set configuration %1$s to %2$s" : "Could not set configuration %1$s to %2$s",
"Action does not exist" : "Action does not exist",
"Renewing …" : "Renewing …",
"Very weak password" : "Very weak password",
@@ -54,7 +54,14 @@ OC.L10N.register(
"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.",
- "Password change rejected. Hint: " : "Password change rejected. Hint: ",
+ "Password change rejected. Hint: %s" : "Password change rejected. Hint: %s",
+ "Mandatory field \"%s\" left empty" : "Mandatory field \"%s\" left empty",
+ "A password is given, but not an LDAP agent" : "A password is given, but not an LDAP agent",
+ "No password is given for the user agent" : "No password is given for the user agent",
+ "No LDAP base DN was given" : "No LDAP base DN was given",
+ "User base DN is not a subnode of global base DN" : "User base DN is not a subnode of global base DN",
+ "Group base DN is not a subnode of global base DN" : "Group base DN is not a subnode of global base DN",
+ "Login filter does not contain %s placeholder." : "Login filter does not contain %s placeholder.",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Your password will expire within %n day.","Your password will expire within %n days."],
"LDAP/AD integration" : "LDAP/AD integration",
"LDAP Connection" : "Подключение LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Binding failed for this LDAP configuration: %s","Binding failed for these LDAP configurations: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Searching failed for this LDAP configuration: %s","Searching failed for these LDAP configurations: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["There is an inactive LDAP configuration: %s","There are inactive LDAP configurations: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Binding and searching works on the configured LDAP connection (%s)","Binding and searching works on all of the configured LDAP connections (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Binding failed for this LDAP configuration: %s","Binding failed for %n LDAP configurations: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Searching failed for this LDAP configuration: %s","Searching failed for %n LDAP configurations: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["There is an inactive LDAP configuration: %s","There are %n inactive LDAP configurations: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Binding and searching works on the configured LDAP connection (%s)","Binding and searching works on all of the %n configured LDAP connections (%s)"],
"Invalid LDAP UUIDs" : "Invalid LDAP UUIDs",
"None found" : "None found",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them.",
@@ -214,6 +221,8 @@ OC.L10N.register(
"User profile Biography will be set from the specified attribute" : "User profile Biography will be set from the specified attribute",
"Birthdate Field" : "Birthdate Field",
"User profile Date of birth will be set from the specified attribute" : "User profile Date of birth will be set from the specified attribute",
+ "Pronouns Field" : "Pronouns Field",
+ "User profile Pronouns will be set from the specified attribute" : "User profile Pronouns will be set from the specified attribute",
"Internal Username" : "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.",
"Internal Username Attribute:" : "Internal Username Attribute:",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign metadata. In order to precisely identify and recognise users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
"Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them."
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json
index 3a4682cde5c..d516661ef41 100644
--- a/apps/user_ldap/l10n/en_GB.json
+++ b/apps/user_ldap/l10n/en_GB.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
"Valid configuration, connection established!" : "Valid configuration, connection established!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
+ "Invalid configuration: %s" : "Invalid configuration: %s",
"No action specified" : "No action specified",
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
"Invalid data specified" : "Invalid data specified",
- " Could not set configuration %s" : " Could not set configuration %s",
+ "Could not set configuration %1$s to %2$s" : "Could not set configuration %1$s to %2$s",
"Action does not exist" : "Action does not exist",
"Renewing …" : "Renewing …",
"Very weak password" : "Very weak password",
@@ -52,7 +52,14 @@
"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.",
- "Password change rejected. Hint: " : "Password change rejected. Hint: ",
+ "Password change rejected. Hint: %s" : "Password change rejected. Hint: %s",
+ "Mandatory field \"%s\" left empty" : "Mandatory field \"%s\" left empty",
+ "A password is given, but not an LDAP agent" : "A password is given, but not an LDAP agent",
+ "No password is given for the user agent" : "No password is given for the user agent",
+ "No LDAP base DN was given" : "No LDAP base DN was given",
+ "User base DN is not a subnode of global base DN" : "User base DN is not a subnode of global base DN",
+ "Group base DN is not a subnode of global base DN" : "Group base DN is not a subnode of global base DN",
+ "Login filter does not contain %s placeholder." : "Login filter does not contain %s placeholder.",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Your password will expire within %n day.","Your password will expire within %n days."],
"LDAP/AD integration" : "LDAP/AD integration",
"LDAP Connection" : "Подключение LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Binding failed for this LDAP configuration: %s","Binding failed for these LDAP configurations: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Searching failed for this LDAP configuration: %s","Searching failed for these LDAP configurations: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["There is an inactive LDAP configuration: %s","There are inactive LDAP configurations: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Binding and searching works on the configured LDAP connection (%s)","Binding and searching works on all of the configured LDAP connections (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Binding failed for this LDAP configuration: %s","Binding failed for %n LDAP configurations: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Searching failed for this LDAP configuration: %s","Searching failed for %n LDAP configurations: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["There is an inactive LDAP configuration: %s","There are %n inactive LDAP configurations: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Binding and searching works on the configured LDAP connection (%s)","Binding and searching works on all of the %n configured LDAP connections (%s)"],
"Invalid LDAP UUIDs" : "Invalid LDAP UUIDs",
"None found" : "None found",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them.",
@@ -212,6 +219,8 @@
"User profile Biography will be set from the specified attribute" : "User profile Biography will be set from the specified attribute",
"Birthdate Field" : "Birthdate Field",
"User profile Date of birth will be set from the specified attribute" : "User profile Date of birth will be set from the specified attribute",
+ "Pronouns Field" : "Pronouns Field",
+ "User profile Pronouns will be set from the specified attribute" : "User profile Pronouns will be set from the specified attribute",
"Internal Username" : "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.",
"Internal Username Attribute:" : "Internal Username Attribute:",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign metadata. In order to precisely identify and recognise users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
"Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them."
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/eo.js b/apps/user_ldap/l10n/eo.js
deleted file mode 100644
index 25c880dbdc5..00000000000
--- a/apps/user_ldap/l10n/eo.js
+++ /dev/null
@@ -1,63 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to delete the server configuration" : "Malsukcesis forigo de la agordo de servilo",
- "Action does not exist" : "Ago ne ekzistas",
- "Configuration incorrect" : "La agordaro malĝustas",
- "Configuration incomplete" : "La agordaro neplenas",
- "Configuration OK" : "La agordaro ĝustas",
- "Select groups" : "Elekti grupojn",
- "Select object classes" : "Elekti objektoklasojn",
- "{nthServer}. Server" : "{nthServer}. Servilo",
- "Confirm Deletion" : "Konfirmi forigon",
- "Select attributes" : "Elekti atribuojn",
- "_%s group found_::_%s groups found_" : ["%s grupo troviĝis","%s grupoj troviĝis"],
- "_%s user found_::_%s users found_" : ["%s uzanto troviĝis","%s uzanto troviĝis"],
- "Invalid Host" : "Nevalida gastigo",
- "Server" : "Servilo",
- "Users" : "Uzantoj",
- "Groups" : "Grupoj",
- "Test Configuration" : "Provi agordon",
- "Help" : "Helpo",
- "Other Attributes:" : "Aliaj atribuoj:",
- "1. Server" : "1. Servilo",
- "%s. Server:" : "%s. Servilo:",
- "Host" : "Gastigo",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Vi povas neglekti la protokolon, escepte se vi bezonas SSL-on. Tiuokaze, komencu per ldaps://",
- "Port" : "Pordo",
- "User DN" : "Uzanto-DN",
- "Password" : "Pasvorto",
- "For anonymous access, leave DN and Password empty." : "Por sennoman aliron, lasu DN-on kaj Pasvorton malplenaj.",
- "Saving" : "Konservante",
- "Back" : "Antaŭen",
- "Continue" : "Daŭri",
- "LDAP" : "LDAP",
- "Expert" : "Sperta",
- "Advanced" : "Progresinta",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Averto</b>: la PHP-modulo LDAP ne instalatas; la motoro ne funkcios. Bonvolu peti vian sistemadministranton instali ĝin.",
- "Connection Settings" : "Agordo de konekto",
- "Disable Main Server" : "Malkapabligi la ĉefan servilon",
- "Turn off SSL certificate validation." : "Malkapabligi validkontrolon de SSL-atestiloj.",
- "Cache Time-To-Live" : "Vivotempo de la kaŝmemoro",
- "in seconds. A change empties the cache." : "sekunde. Ajna ŝanĝo malplenigas la kaŝmemoron.",
- "Directory Settings" : "Agordo de dosierujo",
- "User Display Name Field" : "Kampo de vidignomo de uzanto",
- "Base User Tree" : "Baza uzantarbo",
- "User Search Attributes" : "Atributoj de serĉo de uzanto",
- "Optional; one attribute per line" : "Malnepra; po unu atribuo por linio",
- "Group Display Name Field" : "Kampo de vidignomo de grupo",
- "Base Group Tree" : "Baza gruparbo",
- "Group Search Attributes" : "Atribuoj de gruposerĉo",
- "Group-Member association" : "Asocio de grupo kaj membro",
- "Nested Groups" : "Ingitaj grupoj",
- "Special Attributes" : "Specialaj atribuoj",
- "Quota Field" : "Kampo de kvoto",
- "in bytes" : "duumoke",
- "Email Field" : "Kampo de retpoŝto",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lasu malplena por uzantonomo (defaŭlto). Alie, specifu LDAP/AD-atributon.",
- "Internal Username" : "Ena uzantonomo",
- "Internal Username Attribute:" : "Atribuo de ena uzantonomo:",
- "UUID Attribute for Users:" : "UUID-atribuo por uzantoj:",
- "UUID Attribute for Groups:" : "UUID-atribuo por grupoj:"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/eo.json b/apps/user_ldap/l10n/eo.json
deleted file mode 100644
index 37cdc4e2519..00000000000
--- a/apps/user_ldap/l10n/eo.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{ "translations": {
- "Failed to delete the server configuration" : "Malsukcesis forigo de la agordo de servilo",
- "Action does not exist" : "Ago ne ekzistas",
- "Configuration incorrect" : "La agordaro malĝustas",
- "Configuration incomplete" : "La agordaro neplenas",
- "Configuration OK" : "La agordaro ĝustas",
- "Select groups" : "Elekti grupojn",
- "Select object classes" : "Elekti objektoklasojn",
- "{nthServer}. Server" : "{nthServer}. Servilo",
- "Confirm Deletion" : "Konfirmi forigon",
- "Select attributes" : "Elekti atribuojn",
- "_%s group found_::_%s groups found_" : ["%s grupo troviĝis","%s grupoj troviĝis"],
- "_%s user found_::_%s users found_" : ["%s uzanto troviĝis","%s uzanto troviĝis"],
- "Invalid Host" : "Nevalida gastigo",
- "Server" : "Servilo",
- "Users" : "Uzantoj",
- "Groups" : "Grupoj",
- "Test Configuration" : "Provi agordon",
- "Help" : "Helpo",
- "Other Attributes:" : "Aliaj atribuoj:",
- "1. Server" : "1. Servilo",
- "%s. Server:" : "%s. Servilo:",
- "Host" : "Gastigo",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Vi povas neglekti la protokolon, escepte se vi bezonas SSL-on. Tiuokaze, komencu per ldaps://",
- "Port" : "Pordo",
- "User DN" : "Uzanto-DN",
- "Password" : "Pasvorto",
- "For anonymous access, leave DN and Password empty." : "Por sennoman aliron, lasu DN-on kaj Pasvorton malplenaj.",
- "Saving" : "Konservante",
- "Back" : "Antaŭen",
- "Continue" : "Daŭri",
- "LDAP" : "LDAP",
- "Expert" : "Sperta",
- "Advanced" : "Progresinta",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Averto</b>: la PHP-modulo LDAP ne instalatas; la motoro ne funkcios. Bonvolu peti vian sistemadministranton instali ĝin.",
- "Connection Settings" : "Agordo de konekto",
- "Disable Main Server" : "Malkapabligi la ĉefan servilon",
- "Turn off SSL certificate validation." : "Malkapabligi validkontrolon de SSL-atestiloj.",
- "Cache Time-To-Live" : "Vivotempo de la kaŝmemoro",
- "in seconds. A change empties the cache." : "sekunde. Ajna ŝanĝo malplenigas la kaŝmemoron.",
- "Directory Settings" : "Agordo de dosierujo",
- "User Display Name Field" : "Kampo de vidignomo de uzanto",
- "Base User Tree" : "Baza uzantarbo",
- "User Search Attributes" : "Atributoj de serĉo de uzanto",
- "Optional; one attribute per line" : "Malnepra; po unu atribuo por linio",
- "Group Display Name Field" : "Kampo de vidignomo de grupo",
- "Base Group Tree" : "Baza gruparbo",
- "Group Search Attributes" : "Atribuoj de gruposerĉo",
- "Group-Member association" : "Asocio de grupo kaj membro",
- "Nested Groups" : "Ingitaj grupoj",
- "Special Attributes" : "Specialaj atribuoj",
- "Quota Field" : "Kampo de kvoto",
- "in bytes" : "duumoke",
- "Email Field" : "Kampo de retpoŝto",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lasu malplena por uzantonomo (defaŭlto). Alie, specifu LDAP/AD-atributon.",
- "Internal Username" : "Ena uzantonomo",
- "Internal Username Attribute:" : "Atribuo de ena uzantonomo:",
- "UUID Attribute for Users:" : "UUID-atribuo por uzantoj:",
- "UUID Attribute for Groups:" : "UUID-atribuo por grupoj:"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index f4204fb5aca..280e68568c4 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración no válida: No se permite enlazado anónimo.",
"Valid configuration, connection established!" : "Configuración válida. ¡Conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero falló el enlazado. Por favor compruebe los ajustes del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración no válida. Por favor, echa un vistazo al registro para más detalles.",
+ "Invalid configuration: %s" : "Configuración inválida: %s",
"No action specified" : "No se ha especificado la acción",
"No configuration specified" : "No se ha especificado la configuración",
"No data specified" : "No se han especificado los datos",
"Invalid data specified" : "Se especificaron datos inválidos",
- " Could not set configuration %s" : "No se pudo establecer la configuración %s",
+ "Could not set configuration %1$s to %2$s" : "No se pudo establecer la configuración %1$s a %2$s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando …",
"Very weak password" : "Contraseña muy débil",
@@ -31,7 +31,7 @@ OC.L10N.register(
"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 ha podido detectar Base DN, por favor introdúzcala 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.",
+ "No object found in the given Base DN. Please revise." : "No se encuentra ningún objeto en el Base DN proporcionado. Por favor revisar.",
"More than 1,000 directory entries available." : "Más de 1.000 entradas de directorios disponibles.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} entrada disponible en la base DN proporcionada","{objectsFound} entradas disponibles en la base DN proporcionada","{objectsFound} entradas disponibles en la base DN proporcionada"],
"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.",
@@ -54,7 +54,14 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP/AD.",
"Please provide a login name to test against" : "Por favor suministre un nombre de inicio de sesión para probar",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El cuadro de grupo fue deshabilitado, porque el servidor LDAP/AD no admite memberOf.",
- "Password change rejected. Hint: " : "Contraseña rechazada. Pista:",
+ "Password change rejected. Hint: %s" : "Se rechazó el cambio de contraseña. Pista: %s",
+ "Mandatory field \"%s\" left empty" : "El campo obligatorio \"%s\" se dejó en blanco",
+ "A password is given, but not an LDAP agent" : "Se proporcionó una contraseña, pero no un agente LDAP",
+ "No password is given for the user agent" : "No se proporcionó una contraseña para el agente de usuario",
+ "No LDAP base DN was given" : "No se proporcionó un DN base LDAP",
+ "User base DN is not a subnode of global base DN" : "El DN base de usuario no es un subnodo del DN base global",
+ "Group base DN is not a subnode of global base DN" : "El DN base de grupo no es un subnodo del DN base global",
+ "Login filter does not contain %s placeholder." : "El filtro de inicio de sesión no contiene el marcador de posición %s.",
"Please login with the new password" : "Por favor, entra con la nueva contraseña",
"LDAP User backend" : "Motor de usuarios LDAP",
"Your password will expire tomorrow." : "Tu contraseña caducará mañana.",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Tu contraseña caducará dentro de %n día.","Tu contraseña caducará dentro de %n días.","Tu contraseña caducará dentro de %n días."],
"LDAP/AD integration" : "Integración LDAP/AD",
"LDAP Connection" : "Conexión LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["El inicio de sesión falló para esta configuración de LDAP: %s","El inicio de sesión falló para estas configuraciones de LDAP: %s","El inicio de sesión falló para estas configuraciones de LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["La búsqueda falló para esta configuración de LDAP: %s","La búsqueda falló para estas configuraciones de LDAP: %s","La búsqueda falló para estas configuraciones de LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Hay una configuración LDAP inactiva: %s","Hay configuraciones de LDAP inactivas: %s","Hay configuraciones de LDAP inactivas: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["El inicio de sesión y búsqueda funciona para la conexión de LDAP configurada (%s)","El inicio de sesión y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)","El inicio de sesión y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["El inicio de sesión falló para esta configuración de LDAP: %s","El inicio de sesión falló para %n configuraciones de LDAP: %s","El inicio de sesión falló para %n configuraciones de LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Falló la búsqueda para esta configuración LDAP: %s","Falló la búsqueda para %n configuraciones LDAP: %s","Falló la búsqueda para %n configuraciones LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Existe una configuración LDAP inactiva: %s","Existen %n configuraciones LDAP inactivas: %s","Existen %n configuraciones LDAP inactivas: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["El inicio de sesión y la búsqueda funcionan para la conexión LDAP configurada (%s)","El inicio de sesión y la búsqueda funcionan para todas las %n conexiones de LDAP configuradas (%s)","El inicio de sesión y la búsqueda funcionan para todas las %n conexiones de LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUIDs LDAP inválidas",
"None found" : "Ninguno encontrado",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Se han encontrado UUIDs no válidos de cuentas o grupos LDAP. Por favor, compruebe la configuración de \"Anular detección de UUID\" en la sección de Experto de la configuración LDAP y use \"occ ldap:update-uuid\" para actualizarlos.",
@@ -184,14 +191,14 @@ OC.L10N.register(
"The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN de una política de contraseñas por defecto que será usado para el manejo de la expiración de contraseñas. Solo funciona cuando los cambios por usuario de la contraseña LDAP están habilitados y solo está aceptada por OpenLDAP. Déjala vacía para deshabilitar el manejo de expiración de contraseñas.",
"Special Attributes" : "Atributos especiales",
"Quota Field" : "Cuota",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deje vacío para la couta predeterminada del usuario. De otra manera, específique un atributo LDAP/AD.",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Déjelo vacío para la cuota predeterminada del usuario. De lo contrario, especifique un atributo LDAP/AD.",
"Quota Default" : "Cuota por defecto",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Anular la cuota predeterminada para usuarios LDAP que no tienen una cuota establecida en el Campo Cuota.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Sobrescribir la cuota predeterminada para usuarios LDAP que no tienen una cuota establecida en el Campo Cuota.",
"Email Field" : "E-mail",
"Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Configurar el correo electrónico del usuario desde atributo LDAP. Déjelo vacío para comportamiento predeterminado.",
"User Home Folder Naming Rule" : "Regla para la carpeta Home de usuario",
- "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deje vacío el nombre de usuario (por omisión). En otro caso, especifique un atributo LDAP/AD.",
- "\"$home\" Placeholder Field" : "Campo reservado \"$home\"",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Déjelo vacío para utilizar el nombre de usuario (predeterminado). De lo contrario, especifique un atributo LDAP/AD.",
+ "\"$home\" Placeholder Field" : "Marcador de posición del Campo \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home en una configuración de almacenamiento externo será reemplazado con el valor del atributo especificado",
"User Profile Attributes" : "Atributos del perfil de usuario",
"Phone Field" : "Campo Teléfono",
@@ -212,17 +219,21 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "El Título en el perfil del usuario será definido desde el atributo especificado",
"Biography Field" : "Campo Biografía",
"User profile Biography will be set from the specified attribute" : "La Biografía en el perfil del usuario será definida desde el atributo especificado",
+ "Birthdate Field" : "Campo de Fecha de nacimiento",
+ "User profile Date of birth will be set from the specified attribute" : "La fecha de nacimiento en el perfil de usuario será asignada en base al atributo especificado",
+ "Pronouns Field" : "Campo Pronombres",
+ "User profile Pronouns will be set from the specified attribute" : "Los pronombres en el perfil de usuario se asignarán en base al atributo especificado",
"Internal Username" : "Nombre de usuario interno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por defecto, el nombre de usuario interno será creado a partir del atributo UUID. Esto asegura que el nombre de usuario es único y no se necesitará convertir los caracteres. El nombre de usuario interno tiene la restricción de que solo se admiten estos caracteres: [ a-zA-Z0-9_.@- ]. Otros caracteres son reemplazados por su correspondencia ASCII o simplemente omitidos. En caso de colisiones se añadirá/incrementará un número. El nombre de usuario interno se usa para identificar internamente a un usuario. Es también el nombre por defecto de la carpeta de inicio del usuario. También es parte de las URL remotas, por ejemplo para todos los servicios DAV. Con esta configuración, se puede anular el comportamiento por defecto. Los cambios tendrán efecto solo en usuarios LDAP mapeados (añadidos) después del cambio. Déjelo vacío para usar el comportamiento por defecto.",
"Internal Username Attribute:" : "Atributo de nombre de usuario interno:",
"Override UUID detection" : "Anular la detección 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." : "Por defecto, el atributo UUID se detecta automáticamente. Este atributo es usado para identificar inequívocamente a usuarios y grupos LDAP. Además, el nombre de usuario interno será creado basado en el UUID, si no ha sido especificado otro comportamiento arriba. Puede anular la configuración y pasar un atributo de su elección. Debe asegurarse de que el atributo de su elección sea accesible por los usuarios y grupos y ser único. Déjelo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto solo en los usuarios y grupos de LDAP mapeados (añadidos) recientemente.",
+ "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." : "De manera predeterminada, el atributo UUID se detecta automáticamente. El atributo UUID se utiliza para identificar inequívocamente a usuarios y grupos LDAP. Además, el nombre de usuario interno será creado basado en el UUID, si no ha sido especificado un comportamiento diferente más arriba. Puede sobrescribir la configuración y pasar un atributo de su elección. Debe asegurarse de que el atributo de su elección sea accesible tanto por usuarios como grupos y ser único. Déjelo en blanco para usar el comportamiento predeterminado. Los cambios tendrán efecto solo en los usuarios y grupos de LDAP mapeados (añadidos) recientemente.",
"UUID Attribute for Users:" : "Atributo UUID para usuarios:",
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Asignación del Nombre de usuario de un usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuario se usan para almacenar y asignar metadatos. Para identificar y reconocer con precisión a los usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario a usuario de LDAP. El nombre de usuario creado se asigna al UUID del usuario de LDAP. Además, el DN también se almacena en caché para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si el DN cambia, se encontrarán los cambios. El nombre de usuario interno se usa en todas partes. Limpiar las asignaciones tendrá sobras en todas partes. ¡Borrar las asignaciones no es sensible a la configuración, afecta todas las configuraciones de LDAP! Nunca borre las asignaciones en un entorno de producción, solo en una etapa de prueba o experimental.",
"Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Se han encontrado UUIDs no válidos de usuarios o grupos LDAP. Por favor, compruebe la configuración de \"Anular detección de UUID\" en la sección de Experto de la configuración LDAP y use \"occ ldap:update-uuid\" para actualizarlos."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración no válida. Por favor, echa un vistazo al registro para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index 0c96c953db0..668dd84b489 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración no válida: No se permite enlazado anónimo.",
"Valid configuration, connection established!" : "Configuración válida. ¡Conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero falló el enlazado. Por favor compruebe los ajustes del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración no válida. Por favor, echa un vistazo al registro para más detalles.",
+ "Invalid configuration: %s" : "Configuración inválida: %s",
"No action specified" : "No se ha especificado la acción",
"No configuration specified" : "No se ha especificado la configuración",
"No data specified" : "No se han especificado los datos",
"Invalid data specified" : "Se especificaron datos inválidos",
- " Could not set configuration %s" : "No se pudo establecer la configuración %s",
+ "Could not set configuration %1$s to %2$s" : "No se pudo establecer la configuración %1$s a %2$s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando …",
"Very weak password" : "Contraseña muy débil",
@@ -29,7 +29,7 @@
"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 ha podido detectar Base DN, por favor introdúzcala 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.",
+ "No object found in the given Base DN. Please revise." : "No se encuentra ningún objeto en el Base DN proporcionado. Por favor revisar.",
"More than 1,000 directory entries available." : "Más de 1.000 entradas de directorios disponibles.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} entrada disponible en la base DN proporcionada","{objectsFound} entradas disponibles en la base DN proporcionada","{objectsFound} entradas disponibles en la base DN proporcionada"],
"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.",
@@ -52,7 +52,14 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP/AD.",
"Please provide a login name to test against" : "Por favor suministre un nombre de inicio de sesión para probar",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El cuadro de grupo fue deshabilitado, porque el servidor LDAP/AD no admite memberOf.",
- "Password change rejected. Hint: " : "Contraseña rechazada. Pista:",
+ "Password change rejected. Hint: %s" : "Se rechazó el cambio de contraseña. Pista: %s",
+ "Mandatory field \"%s\" left empty" : "El campo obligatorio \"%s\" se dejó en blanco",
+ "A password is given, but not an LDAP agent" : "Se proporcionó una contraseña, pero no un agente LDAP",
+ "No password is given for the user agent" : "No se proporcionó una contraseña para el agente de usuario",
+ "No LDAP base DN was given" : "No se proporcionó un DN base LDAP",
+ "User base DN is not a subnode of global base DN" : "El DN base de usuario no es un subnodo del DN base global",
+ "Group base DN is not a subnode of global base DN" : "El DN base de grupo no es un subnodo del DN base global",
+ "Login filter does not contain %s placeholder." : "El filtro de inicio de sesión no contiene el marcador de posición %s.",
"Please login with the new password" : "Por favor, entra con la nueva contraseña",
"LDAP User backend" : "Motor de usuarios LDAP",
"Your password will expire tomorrow." : "Tu contraseña caducará mañana.",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Tu contraseña caducará dentro de %n día.","Tu contraseña caducará dentro de %n días.","Tu contraseña caducará dentro de %n días."],
"LDAP/AD integration" : "Integración LDAP/AD",
"LDAP Connection" : "Conexión LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["El inicio de sesión falló para esta configuración de LDAP: %s","El inicio de sesión falló para estas configuraciones de LDAP: %s","El inicio de sesión falló para estas configuraciones de LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["La búsqueda falló para esta configuración de LDAP: %s","La búsqueda falló para estas configuraciones de LDAP: %s","La búsqueda falló para estas configuraciones de LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Hay una configuración LDAP inactiva: %s","Hay configuraciones de LDAP inactivas: %s","Hay configuraciones de LDAP inactivas: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["El inicio de sesión y búsqueda funciona para la conexión de LDAP configurada (%s)","El inicio de sesión y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)","El inicio de sesión y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["El inicio de sesión falló para esta configuración de LDAP: %s","El inicio de sesión falló para %n configuraciones de LDAP: %s","El inicio de sesión falló para %n configuraciones de LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Falló la búsqueda para esta configuración LDAP: %s","Falló la búsqueda para %n configuraciones LDAP: %s","Falló la búsqueda para %n configuraciones LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Existe una configuración LDAP inactiva: %s","Existen %n configuraciones LDAP inactivas: %s","Existen %n configuraciones LDAP inactivas: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["El inicio de sesión y la búsqueda funcionan para la conexión LDAP configurada (%s)","El inicio de sesión y la búsqueda funcionan para todas las %n conexiones de LDAP configuradas (%s)","El inicio de sesión y la búsqueda funcionan para todas las %n conexiones de LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUIDs LDAP inválidas",
"None found" : "Ninguno encontrado",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Se han encontrado UUIDs no válidos de cuentas o grupos LDAP. Por favor, compruebe la configuración de \"Anular detección de UUID\" en la sección de Experto de la configuración LDAP y use \"occ ldap:update-uuid\" para actualizarlos.",
@@ -182,14 +189,14 @@
"The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN de una política de contraseñas por defecto que será usado para el manejo de la expiración de contraseñas. Solo funciona cuando los cambios por usuario de la contraseña LDAP están habilitados y solo está aceptada por OpenLDAP. Déjala vacía para deshabilitar el manejo de expiración de contraseñas.",
"Special Attributes" : "Atributos especiales",
"Quota Field" : "Cuota",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deje vacío para la couta predeterminada del usuario. De otra manera, específique un atributo LDAP/AD.",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Déjelo vacío para la cuota predeterminada del usuario. De lo contrario, especifique un atributo LDAP/AD.",
"Quota Default" : "Cuota por defecto",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Anular la cuota predeterminada para usuarios LDAP que no tienen una cuota establecida en el Campo Cuota.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Sobrescribir la cuota predeterminada para usuarios LDAP que no tienen una cuota establecida en el Campo Cuota.",
"Email Field" : "E-mail",
"Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Configurar el correo electrónico del usuario desde atributo LDAP. Déjelo vacío para comportamiento predeterminado.",
"User Home Folder Naming Rule" : "Regla para la carpeta Home de usuario",
- "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deje vacío el nombre de usuario (por omisión). En otro caso, especifique un atributo LDAP/AD.",
- "\"$home\" Placeholder Field" : "Campo reservado \"$home\"",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Déjelo vacío para utilizar el nombre de usuario (predeterminado). De lo contrario, especifique un atributo LDAP/AD.",
+ "\"$home\" Placeholder Field" : "Marcador de posición del Campo \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home en una configuración de almacenamiento externo será reemplazado con el valor del atributo especificado",
"User Profile Attributes" : "Atributos del perfil de usuario",
"Phone Field" : "Campo Teléfono",
@@ -210,17 +217,21 @@
"User profile Headline will be set from the specified attribute" : "El Título en el perfil del usuario será definido desde el atributo especificado",
"Biography Field" : "Campo Biografía",
"User profile Biography will be set from the specified attribute" : "La Biografía en el perfil del usuario será definida desde el atributo especificado",
+ "Birthdate Field" : "Campo de Fecha de nacimiento",
+ "User profile Date of birth will be set from the specified attribute" : "La fecha de nacimiento en el perfil de usuario será asignada en base al atributo especificado",
+ "Pronouns Field" : "Campo Pronombres",
+ "User profile Pronouns will be set from the specified attribute" : "Los pronombres en el perfil de usuario se asignarán en base al atributo especificado",
"Internal Username" : "Nombre de usuario interno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por defecto, el nombre de usuario interno será creado a partir del atributo UUID. Esto asegura que el nombre de usuario es único y no se necesitará convertir los caracteres. El nombre de usuario interno tiene la restricción de que solo se admiten estos caracteres: [ a-zA-Z0-9_.@- ]. Otros caracteres son reemplazados por su correspondencia ASCII o simplemente omitidos. En caso de colisiones se añadirá/incrementará un número. El nombre de usuario interno se usa para identificar internamente a un usuario. Es también el nombre por defecto de la carpeta de inicio del usuario. También es parte de las URL remotas, por ejemplo para todos los servicios DAV. Con esta configuración, se puede anular el comportamiento por defecto. Los cambios tendrán efecto solo en usuarios LDAP mapeados (añadidos) después del cambio. Déjelo vacío para usar el comportamiento por defecto.",
"Internal Username Attribute:" : "Atributo de nombre de usuario interno:",
"Override UUID detection" : "Anular la detección 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." : "Por defecto, el atributo UUID se detecta automáticamente. Este atributo es usado para identificar inequívocamente a usuarios y grupos LDAP. Además, el nombre de usuario interno será creado basado en el UUID, si no ha sido especificado otro comportamiento arriba. Puede anular la configuración y pasar un atributo de su elección. Debe asegurarse de que el atributo de su elección sea accesible por los usuarios y grupos y ser único. Déjelo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto solo en los usuarios y grupos de LDAP mapeados (añadidos) recientemente.",
+ "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." : "De manera predeterminada, el atributo UUID se detecta automáticamente. El atributo UUID se utiliza para identificar inequívocamente a usuarios y grupos LDAP. Además, el nombre de usuario interno será creado basado en el UUID, si no ha sido especificado un comportamiento diferente más arriba. Puede sobrescribir la configuración y pasar un atributo de su elección. Debe asegurarse de que el atributo de su elección sea accesible tanto por usuarios como grupos y ser único. Déjelo en blanco para usar el comportamiento predeterminado. Los cambios tendrán efecto solo en los usuarios y grupos de LDAP mapeados (añadidos) recientemente.",
"UUID Attribute for Users:" : "Atributo UUID para usuarios:",
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Asignación del Nombre de usuario de un usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuario se usan para almacenar y asignar metadatos. Para identificar y reconocer con precisión a los usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere una asignación de nombre de usuario a usuario de LDAP. El nombre de usuario creado se asigna al UUID del usuario de LDAP. Además, el DN también se almacena en caché para reducir la interacción de LDAP, pero no se utiliza para la identificación. Si el DN cambia, se encontrarán los cambios. El nombre de usuario interno se usa en todas partes. Limpiar las asignaciones tendrá sobras en todas partes. ¡Borrar las asignaciones no es sensible a la configuración, afecta todas las configuraciones de LDAP! Nunca borre las asignaciones en un entorno de producción, solo en una etapa de prueba o experimental.",
"Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Se han encontrado UUIDs no válidos de usuarios o grupos LDAP. Por favor, compruebe la configuración de \"Anular detección de UUID\" en la sección de Experto de la configuración LDAP y use \"occ ldap:update-uuid\" para actualizarlos."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración no válida. Por favor, echa un vistazo al registro para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_419.js b/apps/user_ldap/l10n/es_419.js
index a19dea027c1..5bbe85d2791 100644
--- a/apps/user_ldap/l10n/es_419.js
+++ b/apps/user_ldap/l10n/es_419.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_419.json b/apps/user_ldap/l10n/es_419.json
index 179129f758b..942c0d81725 100644
--- a/apps/user_ldap/l10n/es_419.json
+++ b/apps/user_ldap/l10n/es_419.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_AR.js b/apps/user_ldap/l10n/es_AR.js
index c1d2c357888..2ed7f903b45 100644
--- a/apps/user_ldap/l10n/es_AR.js
+++ b/apps/user_ldap/l10n/es_AR.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"No action specified" : "No se ha especificado una acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -42,7 +41,6 @@ OC.L10N.register(
"User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Favor de iniciar sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Su contraseña expirará mañana.",
"Your password will expire today." : "Su contraseña expirará el día de hoy. ",
diff --git a/apps/user_ldap/l10n/es_AR.json b/apps/user_ldap/l10n/es_AR.json
index 52801d6baa2..0e44649f127 100644
--- a/apps/user_ldap/l10n/es_AR.json
+++ b/apps/user_ldap/l10n/es_AR.json
@@ -4,7 +4,6 @@
"No action specified" : "No se ha especificado una acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -40,7 +39,6 @@
"User found and settings verified." : "Usuario encontrado y configuraciones verificadas. ",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Favor de iniciar sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Su contraseña expirará mañana.",
"Your password will expire today." : "Su contraseña expirará el día de hoy. ",
diff --git a/apps/user_ldap/l10n/es_CL.js b/apps/user_ldap/l10n/es_CL.js
index 4145049c1db..e8b4c41e5cb 100644
--- a/apps/user_ldap/l10n/es_CL.js
+++ b/apps/user_ldap/l10n/es_CL.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -173,6 +170,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_CL.json b/apps/user_ldap/l10n/es_CL.json
index 6c3a8ce3d41..d45f025b43b 100644
--- a/apps/user_ldap/l10n/es_CL.json
+++ b/apps/user_ldap/l10n/es_CL.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_CO.js b/apps/user_ldap/l10n/es_CO.js
index 4145049c1db..e8b4c41e5cb 100644
--- a/apps/user_ldap/l10n/es_CO.js
+++ b/apps/user_ldap/l10n/es_CO.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -173,6 +170,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_CO.json b/apps/user_ldap/l10n/es_CO.json
index 6c3a8ce3d41..d45f025b43b 100644
--- a/apps/user_ldap/l10n/es_CO.json
+++ b/apps/user_ldap/l10n/es_CO.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_CR.js b/apps/user_ldap/l10n/es_CR.js
index 4145049c1db..e8b4c41e5cb 100644
--- a/apps/user_ldap/l10n/es_CR.js
+++ b/apps/user_ldap/l10n/es_CR.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -173,6 +170,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_CR.json b/apps/user_ldap/l10n/es_CR.json
index 6c3a8ce3d41..d45f025b43b 100644
--- a/apps/user_ldap/l10n/es_CR.json
+++ b/apps/user_ldap/l10n/es_CR.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_DO.js b/apps/user_ldap/l10n/es_DO.js
index 4145049c1db..e8b4c41e5cb 100644
--- a/apps/user_ldap/l10n/es_DO.js
+++ b/apps/user_ldap/l10n/es_DO.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -173,6 +170,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_DO.json b/apps/user_ldap/l10n/es_DO.json
index 6c3a8ce3d41..d45f025b43b 100644
--- a/apps/user_ldap/l10n/es_DO.json
+++ b/apps/user_ldap/l10n/es_DO.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_EC.js b/apps/user_ldap/l10n/es_EC.js
index 80338254acd..3181235f7fe 100644
--- a/apps/user_ldap/l10n/es_EC.js
+++ b/apps/user_ldap/l10n/es_EC.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
"Invalid data specified" : "Datos especificados no válidos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posición \"%uid\". Se reemplazará con el nombre de inicio de sesión al consultar LDAP/AD.",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El cuadro de grupo está deshabilitado porque el servidor LDAP/AD no admite memberOf.",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"LDAP User backend" : "Backend de usuario LDAP",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
@@ -215,6 +212,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Se encontraron UUID no válidos de usuarios o grupos de LDAP. Revisa la configuración de \"Anulación de detección de UUID\" en la sección de Expertos de la configuración de LDAP y usa \"occ ldap:update-uuid\" para actualizarlos."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_EC.json b/apps/user_ldap/l10n/es_EC.json
index 7ec7fda77d5..a6942679af5 100644
--- a/apps/user_ldap/l10n/es_EC.json
+++ b/apps/user_ldap/l10n/es_EC.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
"Invalid data specified" : "Datos especificados no válidos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posición \"%uid\". Se reemplazará con el nombre de inicio de sesión al consultar LDAP/AD.",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El cuadro de grupo está deshabilitado porque el servidor LDAP/AD no admite memberOf.",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"LDAP User backend" : "Backend de usuario LDAP",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
@@ -213,6 +210,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Se encontraron UUID no válidos de usuarios o grupos de LDAP. Revisa la configuración de \"Anulación de detección de UUID\" en la sección de Expertos de la configuración de LDAP y usa \"occ ldap:update-uuid\" para actualizarlos."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_GT.js b/apps/user_ldap/l10n/es_GT.js
index 4145049c1db..e8b4c41e5cb 100644
--- a/apps/user_ldap/l10n/es_GT.js
+++ b/apps/user_ldap/l10n/es_GT.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -173,6 +170,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_GT.json b/apps/user_ldap/l10n/es_GT.json
index 6c3a8ce3d41..d45f025b43b 100644
--- a/apps/user_ldap/l10n/es_GT.json
+++ b/apps/user_ldap/l10n/es_GT.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_HN.js b/apps/user_ldap/l10n/es_HN.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_HN.js
+++ b/apps/user_ldap/l10n/es_HN.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_HN.json b/apps/user_ldap/l10n/es_HN.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_HN.json
+++ b/apps/user_ldap/l10n/es_HN.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js
index 01c4da35dc6..4e06ab492d4 100644
--- a/apps/user_ldap/l10n/es_MX.js
+++ b/apps/user_ldap/l10n/es_MX.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
"Invalid data specified" : "Datos especificados inválidos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posición \"%uid\". Se reemplazará con el nombre de inicio de sesión al consultar LDAP/AD.",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El cuadro de grupo está deshabilitado porque el servidor LDAP/AD no admite \"memberOf\".",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"LDAP User backend" : "Backend de usuario LDAP",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
@@ -62,10 +59,6 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La contraseña expirará dentro de %n día. ","La contraseña expirará dentro de %n días. ","La contraseña expirará dentro de %n días. "],
"LDAP/AD integration" : "Integración LDAP/AD",
"LDAP Connection" : "Conexión LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["El enlace falló para las siguiente configuración de LDAP: %s","El enlace falló para las siguientes configuraciones de LDAP: %s","El enlace falló para las siguientes configuraciones de LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["La búsqueda falló para las siguiente configuración de LDAP: %s","La búsqueda falló para las siguientes configuraciones de LDAP: %s","La búsqueda falló para las siguientes configuraciones de LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Hay una configuración de LDAP inactiva: %s","Hay configuraciones de LDAP inactivas: %s","Hay configuraciones de LDAP inactivas: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["El enlace y búsqueda funcionan para las conexión de LDAP configurada (%s)","El enlace y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)","El enlace y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUIDs de LDAP inválidas",
"None found" : "Ninguno encontrado",
"_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupos encontrados","%n grupos encontrados"],
@@ -214,6 +207,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json
index 2c062dca9fb..74020cb5593 100644
--- a/apps/user_ldap/l10n/es_MX.json
+++ b/apps/user_ldap/l10n/es_MX.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
"Invalid data specified" : "Datos especificados inválidos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta el marcador de posición \"%uid\". Se reemplazará con el nombre de inicio de sesión al consultar LDAP/AD.",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "El cuadro de grupo está deshabilitado porque el servidor LDAP/AD no admite \"memberOf\".",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"LDAP User backend" : "Backend de usuario LDAP",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
@@ -60,10 +57,6 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La contraseña expirará dentro de %n día. ","La contraseña expirará dentro de %n días. ","La contraseña expirará dentro de %n días. "],
"LDAP/AD integration" : "Integración LDAP/AD",
"LDAP Connection" : "Conexión LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["El enlace falló para las siguiente configuración de LDAP: %s","El enlace falló para las siguientes configuraciones de LDAP: %s","El enlace falló para las siguientes configuraciones de LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["La búsqueda falló para las siguiente configuración de LDAP: %s","La búsqueda falló para las siguientes configuraciones de LDAP: %s","La búsqueda falló para las siguientes configuraciones de LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Hay una configuración de LDAP inactiva: %s","Hay configuraciones de LDAP inactivas: %s","Hay configuraciones de LDAP inactivas: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["El enlace y búsqueda funcionan para las conexión de LDAP configurada (%s)","El enlace y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)","El enlace y búsqueda funcionan para todas las conexiones de LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUIDs de LDAP inválidas",
"None found" : "Ninguno encontrado",
"_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupos encontrados","%n grupos encontrados"],
@@ -212,6 +205,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_NI.js b/apps/user_ldap/l10n/es_NI.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_NI.js
+++ b/apps/user_ldap/l10n/es_NI.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_NI.json b/apps/user_ldap/l10n/es_NI.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_NI.json
+++ b/apps/user_ldap/l10n/es_NI.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_PA.js b/apps/user_ldap/l10n/es_PA.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_PA.js
+++ b/apps/user_ldap/l10n/es_PA.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_PA.json b/apps/user_ldap/l10n/es_PA.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_PA.json
+++ b/apps/user_ldap/l10n/es_PA.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_PE.js b/apps/user_ldap/l10n/es_PE.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_PE.js
+++ b/apps/user_ldap/l10n/es_PE.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_PE.json b/apps/user_ldap/l10n/es_PE.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_PE.json
+++ b/apps/user_ldap/l10n/es_PE.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_PR.js b/apps/user_ldap/l10n/es_PR.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_PR.js
+++ b/apps/user_ldap/l10n/es_PR.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_PR.json b/apps/user_ldap/l10n/es_PR.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_PR.json
+++ b/apps/user_ldap/l10n/es_PR.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_PY.js b/apps/user_ldap/l10n/es_PY.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_PY.js
+++ b/apps/user_ldap/l10n/es_PY.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_PY.json b/apps/user_ldap/l10n/es_PY.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_PY.json
+++ b/apps/user_ldap/l10n/es_PY.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_SV.js b/apps/user_ldap/l10n/es_SV.js
index 4145049c1db..e8b4c41e5cb 100644
--- a/apps/user_ldap/l10n/es_SV.js
+++ b/apps/user_ldap/l10n/es_SV.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -173,6 +170,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_SV.json b/apps/user_ldap/l10n/es_SV.json
index 6c3a8ce3d41..d45f025b43b 100644
--- a/apps/user_ldap/l10n/es_SV.json
+++ b/apps/user_ldap/l10n/es_SV.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es_UY.js b/apps/user_ldap/l10n/es_UY.js
index fceabc9e13c..fd1a560a19a 100644
--- a/apps/user_ldap/l10n/es_UY.js
+++ b/apps/user_ldap/l10n/es_UY.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/es_UY.json b/apps/user_ldap/l10n/es_UY.json
index 1f3321d4528..6bca1270581 100644
--- a/apps/user_ldap/l10n/es_UY.json
+++ b/apps/user_ldap/l10n/es_UY.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuración inválida: La vinculación anónima no está permitida. ",
"Valid configuration, connection established!" : "¡Configuración válida, conexión establecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuración válida, pero la vinculación falló. Por favor verifica la configuración del servidor y las credenciales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles.",
"No action specified" : "No se ha especificado alguna acción",
"No configuration specified" : "No se ha especificado una configuración",
"No data specified" : "No se han especificado datos",
- " Could not set configuration %s" : "No fue posible establecer la configuración %s",
"Action does not exist" : "La acción no existe",
"Renewing …" : "Renovando ...",
"Very weak password" : "Contraseña muy debil",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Se presentó un error inesperado. Por fvor verifica la bitácora y las configuraciones.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Por favor verifícalo. ",
"Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar",
- "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ",
"Please login with the new password" : "Por favor inicia sesion con la nueva contraseña",
"Your password will expire tomorrow." : "Tu contraseña expirará mañana.",
"Your password will expire today." : "Tu contraseña expirará el día de hoy. ",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "Atributo UUID para Grupos:",
"Username-LDAP User Mapping" : "Mapeo del Usuario al Usuario LDAP",
"Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuración inválida. Por favor verifica las bitácoras para más detalles."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js
index ae16d37934e..a024012d43d 100644
--- a/apps/user_ldap/l10n/et_EE.js
+++ b/apps/user_ldap/l10n/et_EE.js
@@ -4,19 +4,21 @@ OC.L10N.register(
"Failed to clear the mappings." : "Vastenduste puhastamine ebaõnnestus.",
"Failed to delete the server configuration" : "Serveri seadistuse kustutamine ebaõnnestus",
"Invalid configuration: Anonymous binding is not allowed." : "Vale seadistus: anonüümne sidumine pole lubatud.",
- "Valid configuration, connection established!" : "Valiidne seadistus, ühendus loodud!",
- "Invalid configuration. Please have a look at the logs for further details." : "Vigane seadistus. Rohkema info jaoks vaadake logisid.",
+ "Valid configuration, connection established!" : "Korrektne seadistus, ühendus on loodud!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Seadistus on korrektne, kuid sidumine ei õnnestunud. Palun kontrolli serveri seadistusi ja ühenduse kasutajanime/salasõna.",
+ "Invalid configuration: %s" : "Vigane seadistus: %s",
"No action specified" : "Tegevusi pole määratletud",
"No configuration specified" : "Seadistust pole määratletud",
"No data specified" : "Andmeid pole määratletud",
- " Could not set configuration %s" : "Ei suutnud seadistada %s",
+ "Invalid data specified" : "Kirjeldatud on vigased andmed",
+ "Could not set configuration %1$s to %2$s" : "Ei õnnestunud muuta „%1$s“ seadistuse väärtuseks „%2$s“",
"Action does not exist" : "Toimingut pole olemas",
"Renewing …" : "Värskendamine ...",
- "Very weak password" : "Väga nõrk parool",
- "Weak password" : "Nõrk parool",
- "So-so password" : "Enam-vähem sobiv parool",
- "Good password" : "Hea parool",
- "Strong password" : "Väga hea parool",
+ "Very weak password" : "Väga nõrk salasõna",
+ "Weak password" : "Nõrk salasõna",
+ "So-so password" : "Enam-vähem sobiv salasõna",
+ "Good password" : "Hea salasõna",
+ "Strong password" : "Väga hea salasõna",
"The Base DN appears to be wrong" : "Näib, et Base DN on vale",
"Testing configuration…" : "Seadistuse testimine",
"Configuration incorrect" : "Seadistus on vigane",
@@ -30,19 +32,35 @@ OC.L10N.register(
"Could not detect Base DN, please enter it manually." : "BaasDN-i tuvastamine ebaõnnestus. Palun sisesta see käsitsi.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "BaasDN-is ei leitu ühtegi objekti.",
- "More than 1,000 directory entries available." : "Saadaval on rohkem kui 1000 kataloogi kirjet.",
+ "More than 1,000 directory entries available." : "Saadaval on rohkem kui 1000 kataloogikirjet.",
+ "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["„Base DN“ alusel on saadaval {objectsFound} kirje","„Base DN“ alusel on saadaval {objectsFound} kirjet"],
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Tekkis viga. Palun kontrolli, kas „Base DN“ on õige, ühendus toimib ning kasutajanimi/salasõna on korrektsed.",
"Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?",
"Confirm Deletion" : "Kinnita kustutamine",
"Mappings cleared successfully!" : "Vastandused on eemaldatud!",
- "Error while clearing the mappings." : "Tõrgeseose eemaldamisel.",
+ "Error while clearing the mappings." : "Viga vastanduse/seose eemaldamisel.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonüümne sidumine pole lubatud. Palun sisesta kasutaja „User DN“ ja salasõna.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP päringu viga. Anonüümne sidumine pole ilmselt lubatud.",
"Mode switch" : "Režiimi lüliti",
"Select attributes" : "Vali atribuudid",
"User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.",
"Please provide a login name to test against" : "Palun sisesta kasutajanimi, mida testida",
- "Please login with the new password" : "Palun logi uue parooliga sisse",
- "Your password will expire tomorrow." : "Su parool aegub homme.",
- "Your password will expire today." : "Su parool aegub täna.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Su parool aegub %n päeva jooksul.","Su parool aegub %n päeva jooksul."],
+ "Password change rejected. Hint: %s" : "Salasõna muutmine polnud võimalik. Selgitus: %s",
+ "Mandatory field \"%s\" left empty" : "Kohustuslik väli „%s“ on jäänud tühjaks",
+ "Login filter does not contain %s placeholder." : "Kasutajanimede filtris puudub kohatäitja „%s“",
+ "Please login with the new password" : "Palun logi uue salasõnaga sisse",
+ "LDAP User backend" : "LPAD-i põhine tausteteenus kasutajate jaoks",
+ "Your password will expire tomorrow." : "Su salasõna aegub homme.",
+ "Your password will expire today." : "Su salasõna aegub täna.",
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Su salasõna aegub %n päeva jooksul.","Su salasõna aegub %n päeva jooksul."],
+ "LDAP/AD integration" : "LDAP/AD lõiming",
+ "LDAP Connection" : "LDAP ühendus",
+ "Invalid LDAP UUIDs" : "Vigased LDAP UUID-d",
+ "None found" : "Mitte midagi ei leidu",
+ "_%n group found_::_%n groups found_" : ["Leidus %n grupp","Leidus %n gruppi"],
+ "> 1000 groups found" : "Leidus üle 1000 grupi",
+ "> 1000 users found" : "Leidus üle 1000 kasutaja",
+ "_%n user found_::_%n users found_" : ["Leidus %n kasutaja","Leidus %n kasutajat"],
"Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust",
"Invalid Host" : "Vigane server",
"Test Configuration" : "Testi seadistust",
@@ -52,7 +70,7 @@ OC.L10N.register(
"Only from these groups:" : "Ainult neist gruppidest:",
"Search groups" : "Otsi gruppe",
"Available groups" : "Saadaolevad grupid",
- "Selected groups" : "Validut grupid",
+ "Selected groups" : "Valitud grupid",
"Edit LDAP Query" : "Muuda LDAP päringut",
"LDAP Filter:" : "LDAP filter:",
"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.",
@@ -65,9 +83,9 @@ OC.L10N.register(
"Port" : "Port",
"Detect Port" : "Tuvasta port",
"User DN" : "Kasutaja 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." : "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
- "Password" : "Parool",
- "For anonymous access, leave DN and Password empty." : "Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
+ "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." : "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja salasõna tühjaks.",
+ "Password" : "Salasõna",
+ "For anonymous access, leave DN and Password empty." : "Anonüümseks ligipääsuks jäta DN ja salasõna tühjaks.",
"Save Credentials" : "Salvesta kasutajaandmed",
"One Base DN per line" : "Üks baas-DN rea kohta",
"You can specify Base DN for users and groups in the Advanced tab" : "Sa saad kasutajate ja gruppide baas DN-i määrata lisavalikute vahekaardilt",
@@ -81,13 +99,13 @@ OC.L10N.register(
"Saving" : "Salvestamine",
"Back" : "Tagasi",
"Continue" : "Jätka",
- "Please renew your password." : "Palun uuenda oma parool.",
+ "Please renew your password." : "Palun uuenda oma salasõna.",
"An internal error occurred." : "Tekkis sisemine tõrge.",
"Please try again or contact your administrator." : "Proovi uuesti või võta ühendust administraatoriga.",
- "Current password" : "Praegune parool",
- "New password" : "Uus parool",
- "Renew password" : "Uuenda parooli",
- "Wrong password." : "Vale parool.",
+ "Current password" : "Praegune salasõna",
+ "New password" : "Uus salasõna",
+ "Renew password" : "Uuenda salasõna",
+ "Wrong password." : "Vale salasõna.",
"Cancel" : "Loobu",
"Server" : "Server",
"Users" : "Kasutajad",
@@ -96,8 +114,8 @@ OC.L10N.register(
"Expert" : "Ekspert",
"Advanced" : "Täpsem",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Hoiatus:</b>PHP LDAP moodul pole paigaldatud ning LDAP kasutamine ei ole võimalik. Palu oma süsteeihaldurit see paigaldada.",
- "Connection Settings" : "Ühenduse seaded",
- "Configuration Active" : "Seadistus aktiivne",
+ "Connection Settings" : "Ühenduse seadistused",
+ "Configuration Active" : "Seadistus on aktiivne",
"When unchecked, this configuration will be skipped." : "Kui on märkimata, siis seadistust ei kasutata.",
"Backup (Replica) Host" : "Varuserver",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Lisa valikuline varuserver. See peab olema koopia peamisest LDAP/AD serverist.",
@@ -139,6 +157,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "UUID atribuut gruppidele:",
"Username-LDAP User Mapping" : "LDAP-Kasutajatunnus Kasutaja Vastendus",
"Clear Username-LDAP User Mapping" : "Puhasta LDAP-Kasutajatunnus Kasutaja Vastendus",
- "Clear Groupname-LDAP Group Mapping" : "Puhasta LDAP-Grupinimi Grupp Vastendus"
+ "Clear Groupname-LDAP Group Mapping" : "Puhasta LDAP-Grupinimi Grupp Vastendus",
+ "Invalid configuration. Please have a look at the logs for further details." : "Vigane seadistus. Rohkema info jaoks vaadake logisid."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json
index c6923bef370..3d90e2d17ce 100644
--- a/apps/user_ldap/l10n/et_EE.json
+++ b/apps/user_ldap/l10n/et_EE.json
@@ -2,19 +2,21 @@
"Failed to clear the mappings." : "Vastenduste puhastamine ebaõnnestus.",
"Failed to delete the server configuration" : "Serveri seadistuse kustutamine ebaõnnestus",
"Invalid configuration: Anonymous binding is not allowed." : "Vale seadistus: anonüümne sidumine pole lubatud.",
- "Valid configuration, connection established!" : "Valiidne seadistus, ühendus loodud!",
- "Invalid configuration. Please have a look at the logs for further details." : "Vigane seadistus. Rohkema info jaoks vaadake logisid.",
+ "Valid configuration, connection established!" : "Korrektne seadistus, ühendus on loodud!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "Seadistus on korrektne, kuid sidumine ei õnnestunud. Palun kontrolli serveri seadistusi ja ühenduse kasutajanime/salasõna.",
+ "Invalid configuration: %s" : "Vigane seadistus: %s",
"No action specified" : "Tegevusi pole määratletud",
"No configuration specified" : "Seadistust pole määratletud",
"No data specified" : "Andmeid pole määratletud",
- " Could not set configuration %s" : "Ei suutnud seadistada %s",
+ "Invalid data specified" : "Kirjeldatud on vigased andmed",
+ "Could not set configuration %1$s to %2$s" : "Ei õnnestunud muuta „%1$s“ seadistuse väärtuseks „%2$s“",
"Action does not exist" : "Toimingut pole olemas",
"Renewing …" : "Värskendamine ...",
- "Very weak password" : "Väga nõrk parool",
- "Weak password" : "Nõrk parool",
- "So-so password" : "Enam-vähem sobiv parool",
- "Good password" : "Hea parool",
- "Strong password" : "Väga hea parool",
+ "Very weak password" : "Väga nõrk salasõna",
+ "Weak password" : "Nõrk salasõna",
+ "So-so password" : "Enam-vähem sobiv salasõna",
+ "Good password" : "Hea salasõna",
+ "Strong password" : "Väga hea salasõna",
"The Base DN appears to be wrong" : "Näib, et Base DN on vale",
"Testing configuration…" : "Seadistuse testimine",
"Configuration incorrect" : "Seadistus on vigane",
@@ -28,19 +30,35 @@
"Could not detect Base DN, please enter it manually." : "BaasDN-i tuvastamine ebaõnnestus. Palun sisesta see käsitsi.",
"{nthServer}. Server" : "{nthServer}. Server",
"No object found in the given Base DN. Please revise." : "BaasDN-is ei leitu ühtegi objekti.",
- "More than 1,000 directory entries available." : "Saadaval on rohkem kui 1000 kataloogi kirjet.",
+ "More than 1,000 directory entries available." : "Saadaval on rohkem kui 1000 kataloogikirjet.",
+ "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["„Base DN“ alusel on saadaval {objectsFound} kirje","„Base DN“ alusel on saadaval {objectsFound} kirjet"],
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Tekkis viga. Palun kontrolli, kas „Base DN“ on õige, ühendus toimib ning kasutajanimi/salasõna on korrektsed.",
"Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?",
"Confirm Deletion" : "Kinnita kustutamine",
"Mappings cleared successfully!" : "Vastandused on eemaldatud!",
- "Error while clearing the mappings." : "Tõrgeseose eemaldamisel.",
+ "Error while clearing the mappings." : "Viga vastanduse/seose eemaldamisel.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonüümne sidumine pole lubatud. Palun sisesta kasutaja „User DN“ ja salasõna.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP päringu viga. Anonüümne sidumine pole ilmselt lubatud.",
"Mode switch" : "Režiimi lüliti",
"Select attributes" : "Vali atribuudid",
"User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.",
"Please provide a login name to test against" : "Palun sisesta kasutajanimi, mida testida",
- "Please login with the new password" : "Palun logi uue parooliga sisse",
- "Your password will expire tomorrow." : "Su parool aegub homme.",
- "Your password will expire today." : "Su parool aegub täna.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Su parool aegub %n päeva jooksul.","Su parool aegub %n päeva jooksul."],
+ "Password change rejected. Hint: %s" : "Salasõna muutmine polnud võimalik. Selgitus: %s",
+ "Mandatory field \"%s\" left empty" : "Kohustuslik väli „%s“ on jäänud tühjaks",
+ "Login filter does not contain %s placeholder." : "Kasutajanimede filtris puudub kohatäitja „%s“",
+ "Please login with the new password" : "Palun logi uue salasõnaga sisse",
+ "LDAP User backend" : "LPAD-i põhine tausteteenus kasutajate jaoks",
+ "Your password will expire tomorrow." : "Su salasõna aegub homme.",
+ "Your password will expire today." : "Su salasõna aegub täna.",
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Su salasõna aegub %n päeva jooksul.","Su salasõna aegub %n päeva jooksul."],
+ "LDAP/AD integration" : "LDAP/AD lõiming",
+ "LDAP Connection" : "LDAP ühendus",
+ "Invalid LDAP UUIDs" : "Vigased LDAP UUID-d",
+ "None found" : "Mitte midagi ei leidu",
+ "_%n group found_::_%n groups found_" : ["Leidus %n grupp","Leidus %n gruppi"],
+ "> 1000 groups found" : "Leidus üle 1000 grupi",
+ "> 1000 users found" : "Leidus üle 1000 kasutaja",
+ "_%n user found_::_%n users found_" : ["Leidus %n kasutaja","Leidus %n kasutajat"],
"Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust",
"Invalid Host" : "Vigane server",
"Test Configuration" : "Testi seadistust",
@@ -50,7 +68,7 @@
"Only from these groups:" : "Ainult neist gruppidest:",
"Search groups" : "Otsi gruppe",
"Available groups" : "Saadaolevad grupid",
- "Selected groups" : "Validut grupid",
+ "Selected groups" : "Valitud grupid",
"Edit LDAP Query" : "Muuda LDAP päringut",
"LDAP Filter:" : "LDAP filter:",
"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.",
@@ -63,9 +81,9 @@
"Port" : "Port",
"Detect Port" : "Tuvasta port",
"User DN" : "Kasutaja 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." : "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
- "Password" : "Parool",
- "For anonymous access, leave DN and Password empty." : "Anonüümseks ligipääsuks jäta DN ja parool tühjaks.",
+ "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." : "Klientkasutaja DN, kellega seotakse, nt. uid=agent,dc=näidis,dc=com. Anonüümseks ligipääsuks jäta DN ja salasõna tühjaks.",
+ "Password" : "Salasõna",
+ "For anonymous access, leave DN and Password empty." : "Anonüümseks ligipääsuks jäta DN ja salasõna tühjaks.",
"Save Credentials" : "Salvesta kasutajaandmed",
"One Base DN per line" : "Üks baas-DN rea kohta",
"You can specify Base DN for users and groups in the Advanced tab" : "Sa saad kasutajate ja gruppide baas DN-i määrata lisavalikute vahekaardilt",
@@ -79,13 +97,13 @@
"Saving" : "Salvestamine",
"Back" : "Tagasi",
"Continue" : "Jätka",
- "Please renew your password." : "Palun uuenda oma parool.",
+ "Please renew your password." : "Palun uuenda oma salasõna.",
"An internal error occurred." : "Tekkis sisemine tõrge.",
"Please try again or contact your administrator." : "Proovi uuesti või võta ühendust administraatoriga.",
- "Current password" : "Praegune parool",
- "New password" : "Uus parool",
- "Renew password" : "Uuenda parooli",
- "Wrong password." : "Vale parool.",
+ "Current password" : "Praegune salasõna",
+ "New password" : "Uus salasõna",
+ "Renew password" : "Uuenda salasõna",
+ "Wrong password." : "Vale salasõna.",
"Cancel" : "Loobu",
"Server" : "Server",
"Users" : "Kasutajad",
@@ -94,8 +112,8 @@
"Expert" : "Ekspert",
"Advanced" : "Täpsem",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Hoiatus:</b>PHP LDAP moodul pole paigaldatud ning LDAP kasutamine ei ole võimalik. Palu oma süsteeihaldurit see paigaldada.",
- "Connection Settings" : "Ühenduse seaded",
- "Configuration Active" : "Seadistus aktiivne",
+ "Connection Settings" : "Ühenduse seadistused",
+ "Configuration Active" : "Seadistus on aktiivne",
"When unchecked, this configuration will be skipped." : "Kui on märkimata, siis seadistust ei kasutata.",
"Backup (Replica) Host" : "Varuserver",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Lisa valikuline varuserver. See peab olema koopia peamisest LDAP/AD serverist.",
@@ -137,6 +155,7 @@
"UUID Attribute for Groups:" : "UUID atribuut gruppidele:",
"Username-LDAP User Mapping" : "LDAP-Kasutajatunnus Kasutaja Vastendus",
"Clear Username-LDAP User Mapping" : "Puhasta LDAP-Kasutajatunnus Kasutaja Vastendus",
- "Clear Groupname-LDAP Group Mapping" : "Puhasta LDAP-Grupinimi Grupp Vastendus"
+ "Clear Groupname-LDAP Group Mapping" : "Puhasta LDAP-Grupinimi Grupp Vastendus",
+ "Invalid configuration. Please have a look at the logs for further details." : "Vigane seadistus. Rohkema info jaoks vaadake logisid."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/eu.js b/apps/user_ldap/l10n/eu.js
index 4332114c792..0a488d9e0ba 100644
--- a/apps/user_ldap/l10n/eu.js
+++ b/apps/user_ldap/l10n/eu.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Baliogabeko konfigurazioa. Lotura anonimoak ez dira onartzen.",
"Valid configuration, connection established!" : "Baleko konfigurazioa, konexioa ezarri da!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Baleko konfigurazioa, baina lotura ez da ezarri. Egiaztatu zerbitzariaren ezarpenak eta kredentzialak.",
- "Invalid configuration. Please have a look at the logs for further details." : "Baliogabeko konfigurazioa. Eman begirada bat egunkari-fitxategiei zehaztasun gehiagorako.",
"No action specified" : "Ez da ekintzarik zehaztu",
"No configuration specified" : "Ez da konfiguraziorik zehaztu",
"No data specified" : "Ez da daturik zehaztu",
"Invalid data specified" : "Zehaztutako datu baliogabeak",
- " Could not set configuration %s" : "Ezin izan da %s konfigurazioa ezarri",
"Action does not exist" : "Ekintza ez da existitzen",
"Renewing …" : "Berritzen ...",
"Very weak password" : "Pasahitz oso ahula",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%u id\" leku-marka falta da. LDAP/AD kontsultatzerakoan saioa hasteko izenarekin ordezkatuko da.",
"Please provide a login name to test against" : "Mesedez saioa hasteko izen bat eman probatu ahal izateko",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Taldeen sarrera desgaitu da, LDAP/AD zerbitzariak ez duelako memberOf onartzen.",
- "Password change rejected. Hint: " : "Pasahitz aldaketa ukatu da. Aholkua:",
"Please login with the new password" : "Mesedez hasi saioa pasahitz berriarekin",
"LDAP User backend" : "LDAP erabiltzaileen atzealdea",
"Your password will expire tomorrow." : "Zure pasahitza bihar iraungiko da.",
@@ -62,10 +59,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Zure pasahitza egun %nean iraungiko da.","Zure pasahitza %n egunetan iraungiko da."],
"LDAP/AD integration" : "LDAP/AD integrazioa",
"LDAP Connection" : "LDAP konexioa",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Lotura egiteak huts egin du LDAP konfigurazio honentzat: %s","Lotura egiteak huts egin du LDAP konfigurazio hauentzat: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Bilaketak huts egin du LDAP konfigurazio honentzat: %s","Bilaketak huts egin du LDAP konfigurazio hauentzat: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Honako LDAP konfigurazioa inaktibo dago: %s","Honako LDAP konfigurazioak inaktibo daude: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Loturak eta bilaketak konfiguratutako LDAP konexioanfuntzionatzen du (%s)","Loturak eta bilaketak konfiguratutako LDAP konexio guztietan funtzionatzen du (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Lotura egiteak huts egin du LDAP konfigurazio honentzat: %s","Lotura egiteak huts egin du %n LDAP konfigurazioentzat: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Bilaketak huts egin du LDAP konfigurazio honentzat: %s","Bilaketak huts egin du %n LDAP konfigurazioentzat: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Honako LDAP konfigurazioa inaktibo dago: %s","Honako %n LDAP konfigurazioak inaktibo daude: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Loturak eta bilaketak konfiguratutako LDAP konexioan funtzionatzen du (%s)","Loturak eta bilaketak konfiguratutako %n LDAP konexioetan funtzionatzen du (%s)"],
"Invalid LDAP UUIDs" : "Baliogabeko LDAP UUIDak",
"None found" : "Ez da batere aurkitu",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP kontu edo taldeen UUID baliogabeak aurkitu dira. Mesedez, errebisatu zure \"Gainidatzi UUID antzematea\" ezarpena, adituentzako LDAP konfigurazioan, eta erabili \"occ ldap:update-uuid\" eguneratu daitezen.",
@@ -212,6 +209,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Erabiltzailearen profilaren Titulua zehaztutako ezaugarritik ezarriko da",
"Biography Field" : "Biografia-eremua",
"User profile Biography will be set from the specified attribute" : "Erabiltzailearen profilaren Biografia zehaztutako ezaugarritik ezarriko da",
+ "Birthdate Field" : "Jaiotze data eremua",
+ "User profile Date of birth will be set from the specified attribute" : "Erabiltzailearen profila Jaiotze data zehaztutako atribututik ezarriko da",
+ "Pronouns Field" : "Izenordainen eremua",
+ "User profile Pronouns will be set from the specified attribute" : "Erabiltzailearen profilaren Izenordaina zehaztutako ezaugarritik ezarriko da",
"Internal Username" : "Barneko erabiltzaile izena",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Modu lehenetsian barneko erabiltzaile-izena UUID atribututik sortuko da. Honek erabiltzaile-izena bakarra dela eta karaktereak bihurtu behar ez direla ziurtatzen du. Barneko erabiltzaile-izenak karaktere hauek soilik izan ditzake: [ a-zA-Z0-9_.@- ]. Beste karaktereak haien ASCII karaktereekin bihurtu edo guztiz kentzen dira. Kolisioa gertatzen den kasuetan zenbaki bat gehitu edo handituko da. Barneko erabiltzaile-izena erabiltzaile bat barnean identifikatzeko erabiltzen da. Erabiltzailearen etxeko karpetaren izen lehenetsia ere da. Kanpoko URLen parte ere da, adibidez DAV zerbitzu guztientzako. Ezarpen honekin, lehenetsitako portaera aldatu daiteke. Aldaketek mapatutako (gehitutako) LDAP erabiltzaile berriengan soilik izango du efektua. Utzi hutsik lehenetsitako portaerarako.",
"Internal Username Attribute:" : "Baliogabeko Erabiltzaile Izen atributua",
@@ -223,6 +224,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "Erabiltzaile izenak metadatuak gordetzeko eta esleitzeko erabiltzen dira. Erabiltzaileak zehazki identifikatu eta ezagutzeko, LDAP erabiltzaile bakoitzak barne erabiltzaile izena izango du. Horretarako, erabiltzaile izenetik LDAP erabiltzailearen mapaketa egin behar da. Sortutako erabiltzaile izena LDAP erabiltzailearen UUIDarekin mapatuta dago. Gainera, DNa cache-an gordetzen da LDAP elkarreragina murrizteko, baina ez da identifikaziorako erabiltzen. DNa aldatzen bada, aldaketak topatuko dira. Barne erabiltzaile izena toki guztietan erabiltzen da. Kartografiak garbitzeak hondarrak izango ditu nonahi. Kartografiak garbitzea ez da konfigurazioarekiko sentikorra, LDAP konfigurazio guztiei eragiten die! Ez garbitu inoiz mapak ekoizpen-ingurune batean, soilik proba edo fase esperimental batean.",
"Clear Username-LDAP User Mapping" : "Garbitu LDAP-erabiltzaile-izenaren erabiltzaile mapaketa",
"Clear Groupname-LDAP Group Mapping" : "Garbitu LDAP-talde-izenaren talde mapaketa",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP erabiltzaile edo taldeen UUID baliogabeak aurkitu dira. Mesedez, berrikusi zure \"Gainarazi UUID detekzioa\" ezarpenak LDAP konfigurazioaren Aditu atalean eta erabili \"occ ldap:update-uuid\" horiek eguneratzeko."
+ "Invalid configuration. Please have a look at the logs for further details." : "Baliogabeko konfigurazioa. Eman begirada bat egunkari-fitxategiei zehaztasun gehiagorako."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/eu.json b/apps/user_ldap/l10n/eu.json
index 3f85de8998e..b8a002b2f71 100644
--- a/apps/user_ldap/l10n/eu.json
+++ b/apps/user_ldap/l10n/eu.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Baliogabeko konfigurazioa. Lotura anonimoak ez dira onartzen.",
"Valid configuration, connection established!" : "Baleko konfigurazioa, konexioa ezarri da!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Baleko konfigurazioa, baina lotura ez da ezarri. Egiaztatu zerbitzariaren ezarpenak eta kredentzialak.",
- "Invalid configuration. Please have a look at the logs for further details." : "Baliogabeko konfigurazioa. Eman begirada bat egunkari-fitxategiei zehaztasun gehiagorako.",
"No action specified" : "Ez da ekintzarik zehaztu",
"No configuration specified" : "Ez da konfiguraziorik zehaztu",
"No data specified" : "Ez da daturik zehaztu",
"Invalid data specified" : "Zehaztutako datu baliogabeak",
- " Could not set configuration %s" : "Ezin izan da %s konfigurazioa ezarri",
"Action does not exist" : "Ekintza ez da existitzen",
"Renewing …" : "Berritzen ...",
"Very weak password" : "Pasahitz oso ahula",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%u id\" leku-marka falta da. LDAP/AD kontsultatzerakoan saioa hasteko izenarekin ordezkatuko da.",
"Please provide a login name to test against" : "Mesedez saioa hasteko izen bat eman probatu ahal izateko",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Taldeen sarrera desgaitu da, LDAP/AD zerbitzariak ez duelako memberOf onartzen.",
- "Password change rejected. Hint: " : "Pasahitz aldaketa ukatu da. Aholkua:",
"Please login with the new password" : "Mesedez hasi saioa pasahitz berriarekin",
"LDAP User backend" : "LDAP erabiltzaileen atzealdea",
"Your password will expire tomorrow." : "Zure pasahitza bihar iraungiko da.",
@@ -60,10 +57,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Zure pasahitza egun %nean iraungiko da.","Zure pasahitza %n egunetan iraungiko da."],
"LDAP/AD integration" : "LDAP/AD integrazioa",
"LDAP Connection" : "LDAP konexioa",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Lotura egiteak huts egin du LDAP konfigurazio honentzat: %s","Lotura egiteak huts egin du LDAP konfigurazio hauentzat: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Bilaketak huts egin du LDAP konfigurazio honentzat: %s","Bilaketak huts egin du LDAP konfigurazio hauentzat: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Honako LDAP konfigurazioa inaktibo dago: %s","Honako LDAP konfigurazioak inaktibo daude: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Loturak eta bilaketak konfiguratutako LDAP konexioanfuntzionatzen du (%s)","Loturak eta bilaketak konfiguratutako LDAP konexio guztietan funtzionatzen du (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Lotura egiteak huts egin du LDAP konfigurazio honentzat: %s","Lotura egiteak huts egin du %n LDAP konfigurazioentzat: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Bilaketak huts egin du LDAP konfigurazio honentzat: %s","Bilaketak huts egin du %n LDAP konfigurazioentzat: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Honako LDAP konfigurazioa inaktibo dago: %s","Honako %n LDAP konfigurazioak inaktibo daude: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Loturak eta bilaketak konfiguratutako LDAP konexioan funtzionatzen du (%s)","Loturak eta bilaketak konfiguratutako %n LDAP konexioetan funtzionatzen du (%s)"],
"Invalid LDAP UUIDs" : "Baliogabeko LDAP UUIDak",
"None found" : "Ez da batere aurkitu",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP kontu edo taldeen UUID baliogabeak aurkitu dira. Mesedez, errebisatu zure \"Gainidatzi UUID antzematea\" ezarpena, adituentzako LDAP konfigurazioan, eta erabili \"occ ldap:update-uuid\" eguneratu daitezen.",
@@ -210,6 +207,10 @@
"User profile Headline will be set from the specified attribute" : "Erabiltzailearen profilaren Titulua zehaztutako ezaugarritik ezarriko da",
"Biography Field" : "Biografia-eremua",
"User profile Biography will be set from the specified attribute" : "Erabiltzailearen profilaren Biografia zehaztutako ezaugarritik ezarriko da",
+ "Birthdate Field" : "Jaiotze data eremua",
+ "User profile Date of birth will be set from the specified attribute" : "Erabiltzailearen profila Jaiotze data zehaztutako atribututik ezarriko da",
+ "Pronouns Field" : "Izenordainen eremua",
+ "User profile Pronouns will be set from the specified attribute" : "Erabiltzailearen profilaren Izenordaina zehaztutako ezaugarritik ezarriko da",
"Internal Username" : "Barneko erabiltzaile izena",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Modu lehenetsian barneko erabiltzaile-izena UUID atribututik sortuko da. Honek erabiltzaile-izena bakarra dela eta karaktereak bihurtu behar ez direla ziurtatzen du. Barneko erabiltzaile-izenak karaktere hauek soilik izan ditzake: [ a-zA-Z0-9_.@- ]. Beste karaktereak haien ASCII karaktereekin bihurtu edo guztiz kentzen dira. Kolisioa gertatzen den kasuetan zenbaki bat gehitu edo handituko da. Barneko erabiltzaile-izena erabiltzaile bat barnean identifikatzeko erabiltzen da. Erabiltzailearen etxeko karpetaren izen lehenetsia ere da. Kanpoko URLen parte ere da, adibidez DAV zerbitzu guztientzako. Ezarpen honekin, lehenetsitako portaera aldatu daiteke. Aldaketek mapatutako (gehitutako) LDAP erabiltzaile berriengan soilik izango du efektua. Utzi hutsik lehenetsitako portaerarako.",
"Internal Username Attribute:" : "Baliogabeko Erabiltzaile Izen atributua",
@@ -221,6 +222,6 @@
"Usernames are used to store and assign metadata. 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." : "Erabiltzaile izenak metadatuak gordetzeko eta esleitzeko erabiltzen dira. Erabiltzaileak zehazki identifikatu eta ezagutzeko, LDAP erabiltzaile bakoitzak barne erabiltzaile izena izango du. Horretarako, erabiltzaile izenetik LDAP erabiltzailearen mapaketa egin behar da. Sortutako erabiltzaile izena LDAP erabiltzailearen UUIDarekin mapatuta dago. Gainera, DNa cache-an gordetzen da LDAP elkarreragina murrizteko, baina ez da identifikaziorako erabiltzen. DNa aldatzen bada, aldaketak topatuko dira. Barne erabiltzaile izena toki guztietan erabiltzen da. Kartografiak garbitzeak hondarrak izango ditu nonahi. Kartografiak garbitzea ez da konfigurazioarekiko sentikorra, LDAP konfigurazio guztiei eragiten die! Ez garbitu inoiz mapak ekoizpen-ingurune batean, soilik proba edo fase esperimental batean.",
"Clear Username-LDAP User Mapping" : "Garbitu LDAP-erabiltzaile-izenaren erabiltzaile mapaketa",
"Clear Groupname-LDAP Group Mapping" : "Garbitu LDAP-talde-izenaren talde mapaketa",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP erabiltzaile edo taldeen UUID baliogabeak aurkitu dira. Mesedez, berrikusi zure \"Gainarazi UUID detekzioa\" ezarpenak LDAP konfigurazioaren Aditu atalean eta erabili \"occ ldap:update-uuid\" horiek eguneratzeko."
+ "Invalid configuration. Please have a look at the logs for further details." : "Baliogabeko konfigurazioa. Eman begirada bat egunkari-fitxategiei zehaztasun gehiagorako."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/fa.js b/apps/user_ldap/l10n/fa.js
index 541fbd34734..6d0867258b1 100644
--- a/apps/user_ldap/l10n/fa.js
+++ b/apps/user_ldap/l10n/fa.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
"Valid configuration, connection established!" : "Valid configuration, connection established!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
"No action specified" : "فعالیتی مشخص نشده است",
"No configuration specified" : "هیچ پیکربندی مشخص نشده است",
"No data specified" : "داده ای مشخص نشده است",
"Invalid data specified" : "Invalid data specified",
- " Could not set configuration %s" : " Could not set configuration %s",
"Action does not exist" : "Action does not exist",
"Renewing …" : "Renewing …",
"Very weak password" : "رمز عبور بسیار ضعیف",
@@ -54,7 +52,6 @@ OC.L10N.register(
"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.",
- "Password change rejected. Hint: " : "Password change rejected. Hint: ",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
@@ -185,25 +182,16 @@ OC.L10N.register(
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute.",
"\"$home\" Placeholder Field" : "\"$home\" Placeholder Field",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in an external storage configuration will be replaced with the value of the specified attribute",
- "User Profile Attributes" : "User Profile Attributes",
+ "User Profile Attributes" : "خصوصیات نمایهٔ کاربر",
"Phone Field" : "Phone Field",
- "User profile Phone will be set from the specified attribute" : "User profile Phone will be set from the specified attribute",
"Website Field" : "Website Field",
- "User profile Website will be set from the specified attribute" : "User profile Website will be set from the specified attribute",
"Address Field" : "Address Field",
- "User profile Address will be set from the specified attribute" : "User profile Address will be set from the specified attribute",
"Twitter Field" : "Twitter Field",
- "User profile Twitter will be set from the specified attribute" : "User profile Twitter will be set from the specified attribute",
"Fediverse Field" : "Fediverse Field",
- "User profile Fediverse will be set from the specified attribute" : "User profile Fediverse will be set from the specified attribute",
"Organisation Field" : "Organisation Field",
- "User profile Organisation will be set from the specified attribute" : "User profile Organisation will be set from the specified attribute",
"Role Field" : "Role Field",
- "User profile Role will be set from the specified attribute" : "User profile Role will be set from the specified attribute",
"Headline Field" : "Headline Field",
- "User profile Headline will be set from the specified attribute" : "User profile Headline will be set from the specified attribute",
"Biography Field" : "Biography Field",
- "User profile Biography will be set from the specified attribute" : "User profile Biography will be set from the specified attribute",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.",
"Internal Username Attribute:" : "ویژگی نام کاربری داخلی:",
@@ -215,6 +203,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign metadata. 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.",
"Clear Username-LDAP User Mapping" : "پاک کردن نام کاربری- LDAP نگاشت کاربر ",
"Clear Groupname-LDAP Group Mapping" : "پاک کردن نام گروه -LDAP گروه نقشه برداری",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them."
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/fa.json b/apps/user_ldap/l10n/fa.json
index 391be3cbdb1..a49ee8313c3 100644
--- a/apps/user_ldap/l10n/fa.json
+++ b/apps/user_ldap/l10n/fa.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
"Valid configuration, connection established!" : "Valid configuration, connection established!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
"No action specified" : "فعالیتی مشخص نشده است",
"No configuration specified" : "هیچ پیکربندی مشخص نشده است",
"No data specified" : "داده ای مشخص نشده است",
"Invalid data specified" : "Invalid data specified",
- " Could not set configuration %s" : " Could not set configuration %s",
"Action does not exist" : "Action does not exist",
"Renewing …" : "Renewing …",
"Very weak password" : "رمز عبور بسیار ضعیف",
@@ -52,7 +50,6 @@
"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.",
- "Password change rejected. Hint: " : "Password change rejected. Hint: ",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
@@ -183,25 +180,16 @@
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute.",
"\"$home\" Placeholder Field" : "\"$home\" Placeholder Field",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in an external storage configuration will be replaced with the value of the specified attribute",
- "User Profile Attributes" : "User Profile Attributes",
+ "User Profile Attributes" : "خصوصیات نمایهٔ کاربر",
"Phone Field" : "Phone Field",
- "User profile Phone will be set from the specified attribute" : "User profile Phone will be set from the specified attribute",
"Website Field" : "Website Field",
- "User profile Website will be set from the specified attribute" : "User profile Website will be set from the specified attribute",
"Address Field" : "Address Field",
- "User profile Address will be set from the specified attribute" : "User profile Address will be set from the specified attribute",
"Twitter Field" : "Twitter Field",
- "User profile Twitter will be set from the specified attribute" : "User profile Twitter will be set from the specified attribute",
"Fediverse Field" : "Fediverse Field",
- "User profile Fediverse will be set from the specified attribute" : "User profile Fediverse will be set from the specified attribute",
"Organisation Field" : "Organisation Field",
- "User profile Organisation will be set from the specified attribute" : "User profile Organisation will be set from the specified attribute",
"Role Field" : "Role Field",
- "User profile Role will be set from the specified attribute" : "User profile Role will be set from the specified attribute",
"Headline Field" : "Headline Field",
- "User profile Headline will be set from the specified attribute" : "User profile Headline will be set from the specified attribute",
"Biography Field" : "Biography Field",
- "User profile Biography will be set from the specified attribute" : "User profile Biography will be set from the specified attribute",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.",
"Internal Username Attribute:" : "ویژگی نام کاربری داخلی:",
@@ -213,6 +201,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign metadata. 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.",
"Clear Username-LDAP User Mapping" : "پاک کردن نام کاربری- LDAP نگاشت کاربر ",
"Clear Groupname-LDAP Group Mapping" : "پاک کردن نام گروه -LDAP گروه نقشه برداری",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them."
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js
index a86c0ab858c..8f5aaf91239 100644
--- a/apps/user_ldap/l10n/fr.js
+++ b/apps/user_ldap/l10n/fr.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuration non valable : Le lien anonyme n'est pas autorisé.",
"Valid configuration, connection established!" : "Configuration valide, connexion établie !",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuration valide, mais le lien a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails.",
+ "Invalid configuration: %s" : "Configuration non valide : %s",
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
"Invalid data specified" : "Données spécifiées invalides",
- " Could not set configuration %s" : "Impossible d'appliquer la configuration %s",
+ "Could not set configuration %1$s to %2$s" : "Impossible de changer la configuration %1$s pour %2$s",
"Action does not exist" : "L'action n'existe pas",
"Renewing …" : "Renouvellement en cours...",
"Very weak password" : "Mot de passe très faible",
@@ -54,7 +54,14 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP/AD.",
"Please provide a login name to test against" : "Veuillez indiquer un identifiant de connexion avec lequel tester.",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP/AD ne prend pas en charge memberOf.",
- "Password change rejected. Hint: " : "La modification du mot de passe a été rejetée. Indice :",
+ "Password change rejected. Hint: %s" : "Changement du mot de passe rejetée. Astuce : %s",
+ "Mandatory field \"%s\" left empty" : "Le champ obligatoire \"%s\" n'est pas renseigné",
+ "A password is given, but not an LDAP agent" : "Un mot de passe est indiqué, mais pas un agent LDAP",
+ "No password is given for the user agent" : "Aucun mot de passe n'est indiqué pour l'agent utilisateur",
+ "No LDAP base DN was given" : "Aucun DN de base LDAP n'a été indiqué",
+ "User base DN is not a subnode of global base DN" : "Le DN de base utilisateur n'est pas un sous-noeud du DN de base global",
+ "Group base DN is not a subnode of global base DN" : "Le DN de base du groupe n'est pas un sous-noeud du DN de base global",
+ "Login filter does not contain %s placeholder." : "Le filtre de connexion ne doit pas contenir l'élément de substitution %s",
"Please login with the new password" : "Veuillez vous connecter avec le nouveau mot de passe",
"LDAP User backend" : "Infrastructure utilisateur LDAP",
"Your password will expire tomorrow." : "Votre mot de passe expirera demain",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Votre mot de passe va expirer dans %n jour.","Votre mot de passe va expirer dans %n jours.","Votre mot de passe va expirer dans %n jours."],
"LDAP/AD integration" : "Intégration LDAP/AD",
"LDAP Connection" : "Connexion LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["La liaison a échoué pour cette configurations LDAP : %s","La liaison a échoué pour ces configurations LDAP : %s","La liaison a échoué pour ces configurations LDAP : %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["La recherche a échoué pour cette configurations LDAP : %s","La recherche a échoué pour ces configurations LDAP : %s","La recherche a échoué pour ces configurations LDAP : %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Il y a une configuration LDAP inactive : %s","Il y a des configurations LDAP inactives : %s","Il y a des configurations LDAP inactives : %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["La liaison et la recherche fonctionnent sur la connexion LDAP configurée (%s)","La liaison et la recherche fonctionnent sur toutes les connexions LDAP configurées (%s)","La liaison et la recherche fonctionnent sur toutes les connexions LDAP configurées (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["La liaison a échoué pour cette configuration LDAP: %s","Échec de la liaison pour %n les configurations LDAP: %s","Échec de la liaison pour %n les configurations LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["La recherche a échoué pour cette configuration LDAP: %s","La recherche a échoué pour %n des configurations LDAP: %s","La recherche a échoué pour %n des configurations LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Il existe une configuration LDAP inactive: %s","Il y a %n configurations LDAP inactives: %s","Il y a %n configurations LDAP inactives: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["La liaison et la recherche fonctionnent sur la connexion LDAP configurée (%s)","La liaison et la recherche fonctionnent sur toutes les %n connexions LDAP configurées (%s)","La liaison et la recherche fonctionnent sur toutes les %n connexions LDAP configurées (%s)"],
"Invalid LDAP UUIDs" : "UUID LDAP invalides",
"None found" : "Aucun trouvé",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Des UUID invalides pour les comptes LDAP ont été trouvés. Merci de vérifier votre paramètre « Passer outre la détection des UUID » dans la partie Expert de la configuration LDAP puis utiliser « occ ldap:update-uuid » pour les mettre à jour.",
@@ -158,7 +165,7 @@ OC.L10N.register(
"User Display Name Field" : "Champ « nom d'affichage » de l'utilisateur",
"The LDAP attribute to use to generate the user's display name." : "L'attribut LDAP utilisé pour générer le nom d'affichage de l'utilisateur.",
"2nd User Display Name Field" : "Second attribut pour le nom d'affichage",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optionnel. Attribut LDAP à ajouter au nom d'affichage, entre parenthèses. Cela donnera par exemple : « John Doe (john.doe@example.com) ».",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optionnel. Attribut LDAP à ajouter au nom affiché, entre parenthèses. Cela donnera par exemple: »John Doe (john.doe@example.org)«.",
"Base User Tree" : "DN racine de l'arbre utilisateurs",
"One User Base DN per line" : "Un DN de base utilisateur par ligne",
"User Search Attributes" : "Attributs de recherche utilisateurs",
@@ -212,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Le titre du profil utilisateur va être défini depuis l'attribut spécifié",
"Biography Field" : "Champ Biographie",
"User profile Biography will be set from the specified attribute" : "La biographie du profil utilisateur va être défini depuis l'attribut spécifié",
+ "Birthdate Field" : "Champ de date de naissance",
+ "User profile Date of birth will be set from the specified attribute" : "La date de naissance du profil d'utilisateur sera définie à partir de l'attribut spécifié",
+ "Pronouns Field" : "Champ des pronoms",
+ "User profile Pronouns will be set from the specified attribute" : "Les pronoms du profil d'utilisateur seront définis à partir de l'attribut spécifié",
"Internal Username" : "Nom d'utilisateur interne",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Cela permet de s'assurer que le nom d'utilisateur est unique et que les caractères n'ont pas besoin d'être convertis. Le nom d'utilisateur interne a pour restriction de ne contenir que les caractères suivants : [a-zA-Z0-9_.@-]. Les autres caractères sont remplacés par leurs correspondants ASCII ou simplement omis. En cas de collisions, un nombre sera ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier un utilisateur en interne. C'est aussi le nom par défaut du dossier personnel de l'utilisateur. Il fait aussi partie des URLs distantes, pour tous les services DAV par exemple. Avec ce paramètre, le comportement par défaut peut être écrasé. Les modifications prendront effet seulement pour les nouveaux utilisateurs LDAP mappés (ajoutés). Laissez-le vide pour utiliser le comportement par défaut",
"Internal Username Attribute:" : "Nom d'utilisateur interne :",
@@ -223,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur NextCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à NextCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.",
"Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP",
"Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Des UUID invalides pour les utilisateurs LDAP ont été trouvés. Merci de vérifier votre paramètre « Passer outre la détection des UUID » dans la partie Expert de la configuration LDAP puis utiliser « occ ldap:update-uuid » pour les mettre à jour."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json
index 2993d746061..666b4fac5b4 100644
--- a/apps/user_ldap/l10n/fr.json
+++ b/apps/user_ldap/l10n/fr.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuration non valable : Le lien anonyme n'est pas autorisé.",
"Valid configuration, connection established!" : "Configuration valide, connexion établie !",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuration valide, mais le lien a échoué. Veuillez vérifier les paramètres du serveur ainsi que vos identifiants de connexion.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails.",
+ "Invalid configuration: %s" : "Configuration non valide : %s",
"No action specified" : "Aucune action spécifiée",
"No configuration specified" : "Aucune configuration spécifiée",
"No data specified" : "Aucune donnée spécifiée",
"Invalid data specified" : "Données spécifiées invalides",
- " Could not set configuration %s" : "Impossible d'appliquer la configuration %s",
+ "Could not set configuration %1$s to %2$s" : "Impossible de changer la configuration %1$s pour %2$s",
"Action does not exist" : "L'action n'existe pas",
"Renewing …" : "Renouvellement en cours...",
"Very weak password" : "Mot de passe très faible",
@@ -52,7 +52,14 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP/AD.",
"Please provide a login name to test against" : "Veuillez indiquer un identifiant de connexion avec lequel tester.",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP/AD ne prend pas en charge memberOf.",
- "Password change rejected. Hint: " : "La modification du mot de passe a été rejetée. Indice :",
+ "Password change rejected. Hint: %s" : "Changement du mot de passe rejetée. Astuce : %s",
+ "Mandatory field \"%s\" left empty" : "Le champ obligatoire \"%s\" n'est pas renseigné",
+ "A password is given, but not an LDAP agent" : "Un mot de passe est indiqué, mais pas un agent LDAP",
+ "No password is given for the user agent" : "Aucun mot de passe n'est indiqué pour l'agent utilisateur",
+ "No LDAP base DN was given" : "Aucun DN de base LDAP n'a été indiqué",
+ "User base DN is not a subnode of global base DN" : "Le DN de base utilisateur n'est pas un sous-noeud du DN de base global",
+ "Group base DN is not a subnode of global base DN" : "Le DN de base du groupe n'est pas un sous-noeud du DN de base global",
+ "Login filter does not contain %s placeholder." : "Le filtre de connexion ne doit pas contenir l'élément de substitution %s",
"Please login with the new password" : "Veuillez vous connecter avec le nouveau mot de passe",
"LDAP User backend" : "Infrastructure utilisateur LDAP",
"Your password will expire tomorrow." : "Votre mot de passe expirera demain",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Votre mot de passe va expirer dans %n jour.","Votre mot de passe va expirer dans %n jours.","Votre mot de passe va expirer dans %n jours."],
"LDAP/AD integration" : "Intégration LDAP/AD",
"LDAP Connection" : "Connexion LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["La liaison a échoué pour cette configurations LDAP : %s","La liaison a échoué pour ces configurations LDAP : %s","La liaison a échoué pour ces configurations LDAP : %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["La recherche a échoué pour cette configurations LDAP : %s","La recherche a échoué pour ces configurations LDAP : %s","La recherche a échoué pour ces configurations LDAP : %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Il y a une configuration LDAP inactive : %s","Il y a des configurations LDAP inactives : %s","Il y a des configurations LDAP inactives : %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["La liaison et la recherche fonctionnent sur la connexion LDAP configurée (%s)","La liaison et la recherche fonctionnent sur toutes les connexions LDAP configurées (%s)","La liaison et la recherche fonctionnent sur toutes les connexions LDAP configurées (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["La liaison a échoué pour cette configuration LDAP: %s","Échec de la liaison pour %n les configurations LDAP: %s","Échec de la liaison pour %n les configurations LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["La recherche a échoué pour cette configuration LDAP: %s","La recherche a échoué pour %n des configurations LDAP: %s","La recherche a échoué pour %n des configurations LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Il existe une configuration LDAP inactive: %s","Il y a %n configurations LDAP inactives: %s","Il y a %n configurations LDAP inactives: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["La liaison et la recherche fonctionnent sur la connexion LDAP configurée (%s)","La liaison et la recherche fonctionnent sur toutes les %n connexions LDAP configurées (%s)","La liaison et la recherche fonctionnent sur toutes les %n connexions LDAP configurées (%s)"],
"Invalid LDAP UUIDs" : "UUID LDAP invalides",
"None found" : "Aucun trouvé",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Des UUID invalides pour les comptes LDAP ont été trouvés. Merci de vérifier votre paramètre « Passer outre la détection des UUID » dans la partie Expert de la configuration LDAP puis utiliser « occ ldap:update-uuid » pour les mettre à jour.",
@@ -156,7 +163,7 @@
"User Display Name Field" : "Champ « nom d'affichage » de l'utilisateur",
"The LDAP attribute to use to generate the user's display name." : "L'attribut LDAP utilisé pour générer le nom d'affichage de l'utilisateur.",
"2nd User Display Name Field" : "Second attribut pour le nom d'affichage",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optionnel. Attribut LDAP à ajouter au nom d'affichage, entre parenthèses. Cela donnera par exemple : « John Doe (john.doe@example.com) ».",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Optionnel. Attribut LDAP à ajouter au nom affiché, entre parenthèses. Cela donnera par exemple: »John Doe (john.doe@example.org)«.",
"Base User Tree" : "DN racine de l'arbre utilisateurs",
"One User Base DN per line" : "Un DN de base utilisateur par ligne",
"User Search Attributes" : "Attributs de recherche utilisateurs",
@@ -210,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "Le titre du profil utilisateur va être défini depuis l'attribut spécifié",
"Biography Field" : "Champ Biographie",
"User profile Biography will be set from the specified attribute" : "La biographie du profil utilisateur va être défini depuis l'attribut spécifié",
+ "Birthdate Field" : "Champ de date de naissance",
+ "User profile Date of birth will be set from the specified attribute" : "La date de naissance du profil d'utilisateur sera définie à partir de l'attribut spécifié",
+ "Pronouns Field" : "Champ des pronoms",
+ "User profile Pronouns will be set from the specified attribute" : "Les pronoms du profil d'utilisateur seront définis à partir de l'attribut spécifié",
"Internal Username" : "Nom d'utilisateur interne",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Cela permet de s'assurer que le nom d'utilisateur est unique et que les caractères n'ont pas besoin d'être convertis. Le nom d'utilisateur interne a pour restriction de ne contenir que les caractères suivants : [a-zA-Z0-9_.@-]. Les autres caractères sont remplacés par leurs correspondants ASCII ou simplement omis. En cas de collisions, un nombre sera ajouté/incrémenté. Le nom d'utilisateur interne est utilisé pour identifier un utilisateur en interne. C'est aussi le nom par défaut du dossier personnel de l'utilisateur. Il fait aussi partie des URLs distantes, pour tous les services DAV par exemple. Avec ce paramètre, le comportement par défaut peut être écrasé. Les modifications prendront effet seulement pour les nouveaux utilisateurs LDAP mappés (ajoutés). Laissez-le vide pour utiliser le comportement par défaut",
"Internal Username Attribute:" : "Nom d'utilisateur interne :",
@@ -221,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur NextCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à NextCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.",
"Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP",
"Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Des UUID invalides pour les utilisateurs LDAP ont été trouvés. Merci de vérifier votre paramètre « Passer outre la détection des UUID » dans la partie Expert de la configuration LDAP puis utiliser « occ ldap:update-uuid » pour les mettre à jour."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuration non valide. Veuillez consulter les logs pour plus de détails."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/fy_NL.js b/apps/user_ldap/l10n/fy_NL.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/fy_NL.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/fy_NL.json b/apps/user_ldap/l10n/fy_NL.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/fy_NL.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ga.js b/apps/user_ldap/l10n/ga.js
index 6a65bdf4b1f..68b5c19e735 100644
--- a/apps/user_ldap/l10n/ga.js
+++ b/apps/user_ldap/l10n/ga.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Cumraíocht neamhbhailí: Ní cheadaítear ceangal gan ainm.",
"Valid configuration, connection established!" : "Cumraíocht bhailí, nasc bunaithe!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Cumraíocht bhailí, ach theip ar an gceangal. Seiceáil le do thoil socruithe agus dintiúir an fhreastalaí.",
- "Invalid configuration. Please have a look at the logs for further details." : "Cumraíocht neamhbhailí. Féach ar na logaí le haghaidh tuilleadh sonraí le do thoil.",
+ "Invalid configuration: %s" : "Cumraíocht neamhbhailí: %s",
"No action specified" : "Níor sonraíodh aon ghníomh",
"No configuration specified" : "Níor sonraíodh cumraíocht ar bith",
"No data specified" : "Níor sonraíodh aon sonraí",
"Invalid data specified" : "Sonraí neamhbhailí",
- " Could not set configuration %s" : " Níorbh fhéidir cumraíocht a shocrú%s",
+ "Could not set configuration %1$s to %2$s" : "Níorbh fhéidir cumraíocht %1$s a shocrú go %2$s",
"Action does not exist" : "Ní gníomh ann",
"Renewing …" : "Ag athnuachan…",
"Very weak password" : "Focal faire an-lag",
@@ -30,7 +30,7 @@ OC.L10N.register(
"Please specify the port, it could not be auto-detected." : "Sonraigh an port le do thoil, níorbh fhéidir é a bhrath go huathoibríoch.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Níorbh fhéidir an bonn DN a bhrath go huathoibríoch, athbhreithnigh dintiúir, óstach agus port le do thoil.",
"Could not detect Base DN, please enter it manually." : "Níorbh fhéidir Bonn DN a bhrath, cuir isteach é de láimh le do thoil.",
- "{nthServer}. Server" : "{nthFreastalaí}. Freastalaí",
+ "{nthServer}. Server" : "{nthServer}. Freastalaí",
"No object found in the given Base DN. Please revise." : "Níor aimsíodh aon réad sa Bhonn DN a thugtar. Athbhreithnigh le do thoil.",
"More than 1,000 directory entries available." : "Níos mó ná 1,000 iontráil eolaire ar fáil.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["Tá iontráil {objectsFound} ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh"],
@@ -54,7 +54,14 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Tá coinneálaí an ionaid \"%uid\" ar iarraidh. Cuirfear an t-ainm logála isteach ina áit agus LDAP/AD á cheistiú.",
"Please provide a login name to test against" : "Tabhair ainm logáil isteach le tástáil ina choinne le do thoil",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Díchumasaíodh an bosca grúpa toisc nach dtacaíonn an freastalaí LDAP/AD le memberOf.",
- "Password change rejected. Hint: " : "Diúltaíodh don athrú pasfhocal. Leid:",
+ "Password change rejected. Hint: %s" : "Diúltaíodh don athrú pasfhocal. Leid: %s",
+ "Mandatory field \"%s\" left empty" : "Réimse éigeantach \"%s\"fágtha folamh",
+ "A password is given, but not an LDAP agent" : "Tugtar pasfhocal, ach ní thugtar do ghníomhaire LDAP",
+ "No password is given for the user agent" : "Ní thugtar aon phasfhocal don ghníomhaire úsáideora",
+ "No LDAP base DN was given" : "Níor tugadh bonn LDAP DN",
+ "User base DN is not a subnode of global base DN" : "Ní fonód de bhonn domhanda DN é an bonn úsáideora DN",
+ "Group base DN is not a subnode of global base DN" : "Ní fonód de bhonn domhanda DN é bonnghrúpa DN",
+ "Login filter does not contain %s placeholder." : "Níl %s coinneálaí logála isteach sa scagaire logála isteach.",
"Please login with the new password" : "Logáil isteach leis an bpasfhocal nua le do thoil",
"LDAP User backend" : "Inneall Úsáideora LDAP",
"Your password will expire tomorrow." : "Rachaidh do phasfhocal in éag amárach.",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá."],
"LDAP/AD integration" : "Comhtháthú LDAP/AD",
"LDAP Connection" : "Ceangal LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Theip ar cheangal don chumraíocht LDAP seo:%s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Theip ar chuardach don chumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Tá cumraíocht LDAP neamhghníomhach ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Oibríonn ceangal agus cuardach ar an nasc LDAP cumraithe (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Theip ar cheangal don chumraíocht LDAP seo: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Theip ar chuardach don chumraíocht LDAP seo: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Tá cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Oibríonn ceangal agus cuardach ar an gceangal LDAP cumraithe (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)"],
"Invalid LDAP UUIDs" : "UUIDanna LDAP neamhbhailí",
"None found" : "Níor aimsíodh aon cheann",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Fuarthas UUIDanna neamhbhailí de chuntais nó de ghrúpaí LDAP. Athbhreithnigh do shocruithe \"Sáraigh braite UUID\" sa chuid Saineolaithe de chumraíocht LDAP agus úsáid \"occ ldap:update-uuid\" chun iad a nuashonrú le do thoil.",
@@ -214,6 +221,8 @@ OC.L10N.register(
"User profile Biography will be set from the specified attribute" : "Socrófar Beathaisnéis phróifíl úsáideora ón tréith shonraithe",
"Birthdate Field" : "Réimse Breithlá",
"User profile Date of birth will be set from the specified attribute" : "Próifíl úsáideora Socrófar dáta breithe ón tréith shonraithe",
+ "Pronouns Field" : "Réimse Forainmneacha",
+ "User profile Pronouns will be set from the specified attribute" : "Socrófar Forainmneacha próifíle úsáideora ón aitreabúid sonraithe",
"Internal Username" : "Ainm Úsáideora Inmheánach",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "De réir réamhshocraithe cruthófar an t-ainm úsáideora inmheánach ón aitreabúid UUID. Cinntíonn sé go bhfuil an t-ainm úsáideora uathúil agus ní gá carachtair a thiontú. Tá an srian ar an ainm úsáideora inmheánach nach gceadaítear ach na carachtair seo: [a-zA-Z0-9_.@-]. Cuirtear a gcomhfhreagras ASCII in ionad carachtair eile nó fágtar ar lár iad. Nuair a bhíonn imbhuailtí cuirfear uimhir leis/méadófar é. Úsáidtear an t-ainm úsáideora inmheánach chun úsáideoir a aithint go hinmheánach. Is é an t-ainm réamhshocraithe é freisin don fhillteán baile úsáideora. Is cuid de URLanna cianda é freisin, mar shampla do gach seirbhís DAV. Leis an socrú seo, is féidir an t-iompar réamhshocraithe a shárú. Ní bheidh éifeacht ag athruithe ach ar úsáideoirí LDAP nua-mhapáilte (curtha leis). Fág é folamh le haghaidh iompar réamhshocraithe.",
"Internal Username Attribute:" : "Tréith Ainm Úsáideora Inmheánach:",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "Úsáidtear ainmneacha úsáideoirí chun meiteashonraí a stóráil agus a shannadh. Chun úsáideoirí a shainaithint agus a aithint go beacht, beidh ainm úsáideora inmheánach ag gach úsáideoir LDAP. Teastaíonn mapáil ón ainm úsáideora go dtí an t-úsáideoir LDAP chuige seo. Tá an t-ainm úsáideora cruthaithe mapáilte chuig UUID an úsáideora LDAP. Ina theannta sin tá an DN i dtaisce freisin chun idirghníomhaíocht LDAP a laghdú, ach ní úsáidtear é le haghaidh aitheantais. Má athraíonn an DN, beidh na hathruithe le fáil. Úsáidtear an t-ainm úsáideora inmheánach ar fad. Beidh rudaí fágtha i ngach áit chun na mapálacha a ghlanadh. Ní íogair don chumraíocht é na mapálacha a ghlanadh, bíonn tionchar aige ar gach cumraíocht LDAP! Ná glan na mapálacha riamh i dtimpeallacht táirgthe, ach amháin ag céim tástála nó turgnamhach.",
"Clear Username-LDAP User Mapping" : "Glan Léarscáiliú Úsáideora Ainm Úsáideora-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Glan Léarscáiliú Grúpa Ainm an Ghrúpa-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Fuarthas UUIDanna neamhbhailí úsáideoirí nó grúpaí LDAP. Athbhreithnigh do shocruithe \"Sáraigh braite UUID\" sa chuid Saineolaithe de chumraíocht LDAP agus úsáid \"occ ldap:update-uuid\" chun iad a nuashonrú le do thoil."
+ "Invalid configuration. Please have a look at the logs for further details." : "Cumraíocht neamhbhailí. Féach ar na logaí le haghaidh tuilleadh sonraí le do thoil."
},
"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
diff --git a/apps/user_ldap/l10n/ga.json b/apps/user_ldap/l10n/ga.json
index fcc185a4246..4bd89e1f0e6 100644
--- a/apps/user_ldap/l10n/ga.json
+++ b/apps/user_ldap/l10n/ga.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Cumraíocht neamhbhailí: Ní cheadaítear ceangal gan ainm.",
"Valid configuration, connection established!" : "Cumraíocht bhailí, nasc bunaithe!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Cumraíocht bhailí, ach theip ar an gceangal. Seiceáil le do thoil socruithe agus dintiúir an fhreastalaí.",
- "Invalid configuration. Please have a look at the logs for further details." : "Cumraíocht neamhbhailí. Féach ar na logaí le haghaidh tuilleadh sonraí le do thoil.",
+ "Invalid configuration: %s" : "Cumraíocht neamhbhailí: %s",
"No action specified" : "Níor sonraíodh aon ghníomh",
"No configuration specified" : "Níor sonraíodh cumraíocht ar bith",
"No data specified" : "Níor sonraíodh aon sonraí",
"Invalid data specified" : "Sonraí neamhbhailí",
- " Could not set configuration %s" : " Níorbh fhéidir cumraíocht a shocrú%s",
+ "Could not set configuration %1$s to %2$s" : "Níorbh fhéidir cumraíocht %1$s a shocrú go %2$s",
"Action does not exist" : "Ní gníomh ann",
"Renewing …" : "Ag athnuachan…",
"Very weak password" : "Focal faire an-lag",
@@ -28,7 +28,7 @@
"Please specify the port, it could not be auto-detected." : "Sonraigh an port le do thoil, níorbh fhéidir é a bhrath go huathoibríoch.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "Níorbh fhéidir an bonn DN a bhrath go huathoibríoch, athbhreithnigh dintiúir, óstach agus port le do thoil.",
"Could not detect Base DN, please enter it manually." : "Níorbh fhéidir Bonn DN a bhrath, cuir isteach é de láimh le do thoil.",
- "{nthServer}. Server" : "{nthFreastalaí}. Freastalaí",
+ "{nthServer}. Server" : "{nthServer}. Freastalaí",
"No object found in the given Base DN. Please revise." : "Níor aimsíodh aon réad sa Bhonn DN a thugtar. Athbhreithnigh le do thoil.",
"More than 1,000 directory entries available." : "Níos mó ná 1,000 iontráil eolaire ar fáil.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["Tá iontráil {objectsFound} ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh","{objectsFound} iontrálacha ar fáil laistigh den Bhunáit DN a soláthraíodh"],
@@ -52,7 +52,14 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Tá coinneálaí an ionaid \"%uid\" ar iarraidh. Cuirfear an t-ainm logála isteach ina áit agus LDAP/AD á cheistiú.",
"Please provide a login name to test against" : "Tabhair ainm logáil isteach le tástáil ina choinne le do thoil",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Díchumasaíodh an bosca grúpa toisc nach dtacaíonn an freastalaí LDAP/AD le memberOf.",
- "Password change rejected. Hint: " : "Diúltaíodh don athrú pasfhocal. Leid:",
+ "Password change rejected. Hint: %s" : "Diúltaíodh don athrú pasfhocal. Leid: %s",
+ "Mandatory field \"%s\" left empty" : "Réimse éigeantach \"%s\"fágtha folamh",
+ "A password is given, but not an LDAP agent" : "Tugtar pasfhocal, ach ní thugtar do ghníomhaire LDAP",
+ "No password is given for the user agent" : "Ní thugtar aon phasfhocal don ghníomhaire úsáideora",
+ "No LDAP base DN was given" : "Níor tugadh bonn LDAP DN",
+ "User base DN is not a subnode of global base DN" : "Ní fonód de bhonn domhanda DN é an bonn úsáideora DN",
+ "Group base DN is not a subnode of global base DN" : "Ní fonód de bhonn domhanda DN é bonnghrúpa DN",
+ "Login filter does not contain %s placeholder." : "Níl %s coinneálaí logála isteach sa scagaire logála isteach.",
"Please login with the new password" : "Logáil isteach leis an bpasfhocal nua le do thoil",
"LDAP User backend" : "Inneall Úsáideora LDAP",
"Your password will expire tomorrow." : "Rachaidh do phasfhocal in éag amárach.",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá.","Rachaidh do phasfhocal in éag laistigh de %n lá."],
"LDAP/AD integration" : "Comhtháthú LDAP/AD",
"LDAP Connection" : "Ceangal LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Theip ar cheangal don chumraíocht LDAP seo:%s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s","Theip ar cheangal na bhfoirmíochtaí LDAP seo: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Theip ar chuardach don chumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s","Theip ar chuardach na gcumraíocht LDAP seo: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Tá cumraíocht LDAP neamhghníomhach ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s","Tá cumraíochtaí LDAP neamhghníomhacha ann: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Oibríonn ceangal agus cuardach ar an nasc LDAP cumraithe (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)","Oibríonn nascadh agus cuardach ar na naisc LDAP cumraithe go léir (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Theip ar cheangal don chumraíocht LDAP seo: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s","Theip ar cheangal le haghaidh %n cumraíochtaí LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Theip ar chuardach don chumraíocht LDAP seo: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s","Theip ar chuardach le haghaidh %n cumraíochtaí LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Tá cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s","Tá %n cumraíocht LDAP neamhghníomhach: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Oibríonn ceangal agus cuardach ar an gceangal LDAP cumraithe (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)","Oibríonn ceangal agus cuardach ar na naisc LDAP go léir atá cumraithe %n (%s)"],
"Invalid LDAP UUIDs" : "UUIDanna LDAP neamhbhailí",
"None found" : "Níor aimsíodh aon cheann",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Fuarthas UUIDanna neamhbhailí de chuntais nó de ghrúpaí LDAP. Athbhreithnigh do shocruithe \"Sáraigh braite UUID\" sa chuid Saineolaithe de chumraíocht LDAP agus úsáid \"occ ldap:update-uuid\" chun iad a nuashonrú le do thoil.",
@@ -212,6 +219,8 @@
"User profile Biography will be set from the specified attribute" : "Socrófar Beathaisnéis phróifíl úsáideora ón tréith shonraithe",
"Birthdate Field" : "Réimse Breithlá",
"User profile Date of birth will be set from the specified attribute" : "Próifíl úsáideora Socrófar dáta breithe ón tréith shonraithe",
+ "Pronouns Field" : "Réimse Forainmneacha",
+ "User profile Pronouns will be set from the specified attribute" : "Socrófar Forainmneacha próifíle úsáideora ón aitreabúid sonraithe",
"Internal Username" : "Ainm Úsáideora Inmheánach",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "De réir réamhshocraithe cruthófar an t-ainm úsáideora inmheánach ón aitreabúid UUID. Cinntíonn sé go bhfuil an t-ainm úsáideora uathúil agus ní gá carachtair a thiontú. Tá an srian ar an ainm úsáideora inmheánach nach gceadaítear ach na carachtair seo: [a-zA-Z0-9_.@-]. Cuirtear a gcomhfhreagras ASCII in ionad carachtair eile nó fágtar ar lár iad. Nuair a bhíonn imbhuailtí cuirfear uimhir leis/méadófar é. Úsáidtear an t-ainm úsáideora inmheánach chun úsáideoir a aithint go hinmheánach. Is é an t-ainm réamhshocraithe é freisin don fhillteán baile úsáideora. Is cuid de URLanna cianda é freisin, mar shampla do gach seirbhís DAV. Leis an socrú seo, is féidir an t-iompar réamhshocraithe a shárú. Ní bheidh éifeacht ag athruithe ach ar úsáideoirí LDAP nua-mhapáilte (curtha leis). Fág é folamh le haghaidh iompar réamhshocraithe.",
"Internal Username Attribute:" : "Tréith Ainm Úsáideora Inmheánach:",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. 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." : "Úsáidtear ainmneacha úsáideoirí chun meiteashonraí a stóráil agus a shannadh. Chun úsáideoirí a shainaithint agus a aithint go beacht, beidh ainm úsáideora inmheánach ag gach úsáideoir LDAP. Teastaíonn mapáil ón ainm úsáideora go dtí an t-úsáideoir LDAP chuige seo. Tá an t-ainm úsáideora cruthaithe mapáilte chuig UUID an úsáideora LDAP. Ina theannta sin tá an DN i dtaisce freisin chun idirghníomhaíocht LDAP a laghdú, ach ní úsáidtear é le haghaidh aitheantais. Má athraíonn an DN, beidh na hathruithe le fáil. Úsáidtear an t-ainm úsáideora inmheánach ar fad. Beidh rudaí fágtha i ngach áit chun na mapálacha a ghlanadh. Ní íogair don chumraíocht é na mapálacha a ghlanadh, bíonn tionchar aige ar gach cumraíocht LDAP! Ná glan na mapálacha riamh i dtimpeallacht táirgthe, ach amháin ag céim tástála nó turgnamhach.",
"Clear Username-LDAP User Mapping" : "Glan Léarscáiliú Úsáideora Ainm Úsáideora-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Glan Léarscáiliú Grúpa Ainm an Ghrúpa-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Fuarthas UUIDanna neamhbhailí úsáideoirí nó grúpaí LDAP. Athbhreithnigh do shocruithe \"Sáraigh braite UUID\" sa chuid Saineolaithe de chumraíocht LDAP agus úsáid \"occ ldap:update-uuid\" chun iad a nuashonrú le do thoil."
+ "Invalid configuration. Please have a look at the logs for further details." : "Cumraíocht neamhbhailí. Féach ar na logaí le haghaidh tuilleadh sonraí le do thoil."
},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/gl.js b/apps/user_ldap/l10n/gl.js
index 3a780f231cc..a39e92ab1f8 100644
--- a/apps/user_ldap/l10n/gl.js
+++ b/apps/user_ldap/l10n/gl.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "A configuración non é correcta: a vinculación non está permitida.",
"Valid configuration, connection established!" : "A configuración é correcta, estabeleceuse a conexión!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "A configuración é correcta, mais fallou a vinculación. Comprobe os axustes do servidor e as credenciais.",
- "Invalid configuration. Please have a look at the logs for further details." : "A configuración non é correcta. Bótelle unha ollada aos rexistros para obter máis detalles.",
+ "Invalid configuration: %s" : "Configuración incorrecta: %s",
"No action specified" : "Non se especificou unha acción",
"No configuration specified" : "Non se especificou unha configuración",
"No data specified" : "Non se especificaron datos",
"Invalid data specified" : "Datos especificados non válidos",
- " Could not set configuration %s" : "Non foi posíbel estabelecer a configuración %s",
+ "Could not set configuration %1$s to %2$s" : "Non foi posíbel definir a configuración %1$s a %2$s",
"Action does not exist" : "Non existe esta acción",
"Renewing …" : "Renovando…",
"Very weak password" : "Contrasinal moi feble",
@@ -51,18 +51,31 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Produciuse un erro non especificado. Comprobe o rexistro e os axustes.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de busca é incorrecto, probabelmente por mor de erros de sintaxe como un número impar de chaves de apertura/peche. Revíseo.",
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Produciuse un erro de conexión a LDAP/AD. Verifique a máquina, o porto e as credenciais.",
- "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta o marcador de posición «%u id». Substitúese polo nome de acceso ao consultar LDAP/AD.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta o marcador de substitución «%uid». Substitúese polo nome de acceso ao consultar LDAP/AD.",
"Please provide a login name to test against" : "Forneza o nome de acceso para facer a proba",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Desactivouse a caixa de grupo porque o servidor LDAP/AD non admite memberOf.",
- "Password change rejected. Hint: " : "Contrasinal rexeitado. Consello:",
+ "Password change rejected. Hint: %s" : "Contrasinal rexeitado. Consello: %s",
+ "Mandatory field \"%s\" left empty" : "Deixou baleiro o campo obrigatorio «%s»",
+ "A password is given, but not an LDAP agent" : "Indicou un contrasinal, mais non un axente LDAP",
+ "No password is given for the user agent" : "Non indicou un contrasinal para este axente de usuario",
+ "No LDAP base DN was given" : "Non se indicou un DN base de LDAP",
+ "User base DN is not a subnode of global base DN" : "O DN base do usuario non é un subnodo do DN base global",
+ "Group base DN is not a subnode of global base DN" : "O DN base de grupo non é un subnodo do DN base global",
+ "Login filter does not contain %s placeholder." : "O filtro de inicio de sesión non contén o marcador de substitución %s.",
"Please login with the new password" : "Acceda co novo contrasinal",
"LDAP User backend" : "Infraestrutura do usuario LDAP",
"Your password will expire tomorrow." : "O seu contrasinal caduca mañá.",
"Your password will expire today." : "O seu contrasinal caducará hoxe.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["O seu contrasinal caducará en %n día.","O seu contrasinal caducará en %n días."],
"LDAP/AD integration" : "Integración de LDAP/AD",
+ "LDAP Connection" : "Conexión LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Produciuse un fallo na vinculación desta configuración LDAP: %s","Produciuse un fallo na vinculación de %n configuracións LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Produciuse un fallo ao buscar esta configuración LDAP: %s","Produciuse un fallo ao buscar %n configuracións LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Hai unha configuración LDAP inactiva: %s","Hai %n configuracións LDAP inactivas: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["A vinculación e a busca funcionan na conexión LDAP configurada (%s)","A vinculación e a busca funciona en todas as %n conexións LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUID de LDAP incorrectos",
"None found" : "Non se atopou ningún",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID incorrectos de contas ou grupos LDAP. Revise a súa configuración de «Anular a detección de UUID» na parte Experto da configuración LDAP e utilice «occ ldap:update-uuid» para actualizalos.",
"_%n group found_::_%n groups found_" : ["Atopouse %n grupo","Atopáronse %n grupos"],
"> 1000 groups found" : "> 1000 grupos atopados",
"> 1000 users found" : "> 1000 usuarios atopados",
@@ -72,7 +85,7 @@ OC.L10N.register(
"Invalid Host" : "Máquina incorrecta",
"LDAP user and group backend" : "Infraestrutura de usuarios e grupos LDAP",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Esta aplicación permitelle aos administradores conectar Nextcloud a un directorio de usuarios baseado en LDAP.",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esta aplicación permítelle aos administradores conectar Nextcloud cun directorio de usuarios baseado en LDAP para a autenticación e aprovisionamento de usuarios, grupos e atributos de usuario. Os administradores poden configurar esta aplicación para conectarse a un ou máis directorios LDAP ou Active Directory mediante unha interface LDAP. Os atributos como cota de usuario, correo, imaxes de avatar, pertenza a grupos e máis poden incorporarse a Nextcloud dende un directorio coas peticións e filtros axeitados.\n\nUn usuario rexistrase en Nextcloud coas súa credenciais LDAP ou AD e se lle concede acceso baseandose nunha petición de autenticación manexada polo servidor LDAP ou AD.Nexttcloud non almacen os contrasinais LDAP ou AD, senon que estas credenciais usanse para autenticar un usuario e após Nextcloud emprega unha sesión para O ID do usuario. Ten dispoñíbel máis información na documentación da infraestrutura de usuarios e grupos LDAP.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esta aplicación permítelle aos administradores conectar Nextcloud cun directorio de usuarios baseado en LDAP para a autenticación e aprovisionamento de usuarios, grupos e atributos de usuario. Os administradores poden configurar esta aplicación para conectarse a un ou máis directorios LDAP ou Active Directory mediante unha interface LDAP. Os atributos como cota de usuario, correo, imaxes de avatar, pertenza a grupos e máis poden incorporarse a Nextcloud desde un directorio coas peticións e filtros axeitados.\n\nUn usuario rexistrase en Nextcloud coas súa credenciais LDAP ou AD e se lle concede acceso baseandose nunha petición de autenticación manexada polo servidor LDAP ou AD.Nexttcloud non almacen os contrasinais LDAP ou AD, senon que estas credenciais usanse para autenticar un usuario e após Nextcloud emprega unha sesión para O ID do usuario. Ten dispoñíbel máis información na documentación da infraestrutura de usuarios e grupos LDAP.",
"Test Configuration" : "Probar a configuración",
"Help" : "Axuda",
"Groups meeting these criteria are available in %s:" : "Os grupos que cumpren estes criterios están dispoñíbeis en %s:",
@@ -104,7 +117,7 @@ OC.L10N.register(
"Port" : "Porto",
"Detect Port" : "Detectar o porto",
"User DN" : "DN do usuario",
- "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." : "O DN do cliente do usuario co que hai que estabelecer unha conexión, p.ex uid=axente, dc=exemplo, dc=com. Para o acceso anónimo deixe o DN e o contrasinal baleiros.",
+ "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." : "O DN do cliente do usuario co que realizará o vínculo, p. ex. uid=axente, dc=exemplo, dc=com. Para o acceso anónimo deixe o DN e o contrasinal baleiros.",
"Password" : "Contrasinal",
"For anonymous access, leave DN and Password empty." : "Para o acceso anónimo deixe o DN e o contrasinal baleiros.",
"Save Credentials" : "Gardar as credenciais",
@@ -146,13 +159,13 @@ OC.L10N.register(
"Only connect to the replica server." : "Conectar só co servidor de réplica.",
"Turn off SSL certificate validation." : "Desactiva a validación do certificado SSL.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Non recomendado, utilizar só para probas! Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no seu servidor %s.",
- "Cache Time-To-Live" : "Tempo de persistencia da caché",
- "in seconds. A change empties the cache." : "en segundos. Calquera cambio baleira a caché.",
+ "Cache Time-To-Live" : "Tempo de persistencia da memoria tobo",
+ "in seconds. A change empties the cache." : "en segundos. Calquera cambio baleira a memoria tobo.",
"Directory Settings" : "Axustes do directorio",
"User Display Name Field" : "Campo de nome de usuario para amosar",
"The LDAP attribute to use to generate the user's display name." : "O atributo LDAP a empregar para xerar o nome de usuario para amosar.",
"2nd User Display Name Field" : "2.º campo de nome de usuario para amosar",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributo LDAP para ser engadido no nome para amosar entre parénteses. Resulta en p.ex. «Xan Carallás (xan.carallas@exemplo.org)».",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributo LDAP para ser engadido no nome para amosar entre parénteses. Resulta en p. ex. «Xan Carallás (xan.carallas@example.org)».",
"Base User Tree" : "Base da árbore de usuarios",
"One User Base DN per line" : "Un DN base de usuario por liña",
"User Search Attributes" : "Atributos de busca do usuario",
@@ -180,43 +193,47 @@ OC.L10N.register(
"Quota Field" : "Campo de cota",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixar baleiro para a cota predeterminada do usuario. Noutro caso, especifique un atributo LDAP/AD.",
"Quota Default" : "Cota predeterminada",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituír a cota predeterminada para usuarios LDAP que non teñen unha cota estabelecida no campo Cota.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Anular a cota predeterminada para usuarios LDAP que non teñen unha cota definida no campo Cota.",
"Email Field" : "Campo do correo",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Estabelecer o correo do usuario dende un atributo LDAP. Déixeo baleiro para un comportamento predeterminado.",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Definir o correo do usuario desde un atributo LDAP. Déixeo baleiro para un comportamento predeterminado.",
"User Home Folder Naming Rule" : "Regra de nomeado do cartafol do usuario",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixar baleiro para o nome de usuario (predeterminado). Noutro caso, especifique un atributo LDAP/AD.",
- "\"$home\" Placeholder Field" : "Campo de marcador de posición «$home»",
+ "\"$home\" Placeholder Field" : "Campo de marcador de substitución «$home»",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "Nunha configuración de almacenamento externo substituirase $home polo valor do atributo especificado",
"User Profile Attributes" : "Atributos do perfil de usuario",
"Phone Field" : "Campo de teléfono",
- "User profile Phone will be set from the specified attribute" : "O teléfono do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Phone will be set from the specified attribute" : "O teléfono do perfil de usuario definirase a partir do atributo especificado",
"Website Field" : "Campo do sitio web",
- "User profile Website will be set from the specified attribute" : "O sitio web do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Website will be set from the specified attribute" : "O sitio web do perfil de usuario definirase a partir do atributo especificado",
"Address Field" : "Campo de enderezo",
- "User profile Address will be set from the specified attribute" : "O enderezo do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Address will be set from the specified attribute" : "O enderezo do perfil de usuario definirase a partir do atributo especificado",
"Twitter Field" : "Campo de Twitter",
- "User profile Twitter will be set from the specified attribute" : "O perfil de usuario Twitter estabelecerase a partir do atributo especificado",
+ "User profile Twitter will be set from the specified attribute" : "O perfil de usuario en Twitter definirase a partir do atributo especificado",
"Fediverse Field" : "Campo do Fediverso",
- "User profile Fediverse will be set from the specified attribute" : "O perfil de usuario Fediverso estabelecerase a partir do atributo especificado",
+ "User profile Fediverse will be set from the specified attribute" : "O perfil de usuario no Fediverso definirase a partir do atributo especificado",
"Organisation Field" : "Campo da organización",
- "User profile Organisation will be set from the specified attribute" : "A organización do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Organisation will be set from the specified attribute" : "A organización do perfil de usuario definirase a partir do atributo especificado",
"Role Field" : "Campo de rol",
- "User profile Role will be set from the specified attribute" : "O rol do perfil de usuario estabelecerase a partir do atributo especificado",
- "Headline Field" : "Campo de título",
- "User profile Headline will be set from the specified attribute" : "O título do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Role will be set from the specified attribute" : "O rol do perfil de usuario definirase a partir do atributo especificado",
+ "Headline Field" : "Campo de titular",
+ "User profile Headline will be set from the specified attribute" : "O título do perfil de usuario definirase a partir do atributo especificado",
"Biography Field" : "Campo de biografía",
- "User profile Biography will be set from the specified attribute" : "A biografía do perfil do usuario estabelecerase a partir do atributo especificado",
+ "User profile Biography will be set from the specified attribute" : "A biografía no perfil de usuario definirase a partir do atributo especificado",
+ "Birthdate Field" : "Campo de data de nacemento",
+ "User profile Date of birth will be set from the specified attribute" : "A data de nacemento no perfil do usuario definirase a partir do atributo especificado",
+ "Pronouns Field" : "Campo de pronomes",
+ "User profile Pronouns will be set from the specified attribute" : "Os pronomes no perfil de usuario definiranse a partir do atributo especificado",
"Internal Username" : "Nome interno de usuario",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "De xeito predeterminado, o nome de usuario interno crearase a partir do atributo UUID. Isto asegura que o nome de usuario é único e que non é necesario converter os caracteres. O nome de usuario interno ten a restrición de que só se permiten estes caracteres: [a-zA-Z0-9_.@-]. Outros caracteres substitúense pola súa correspondencia ASCII ou simplemente omítense. Nos casos de colisións engadirase/aumentarase un número. O nome de usuario interno úsase para identificar un usuario internamente. Tamén é o nome predeterminado para o cartafol de inicio do usuario. Tamén forma parte dos URL remotos, por exemplo para todos os servizos DAV. Con esta configuración, pódese anular o comportamento predeterminado. Os cambios só terán efecto nos usuarios LDAP recén asignados (engadidos). Déixeo baleiro para o comportamento predeterminado.",
"Internal Username Attribute:" : "Atributo do nome interno de usuario:",
- "Override UUID detection" : "Ignorar a detección do 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." : "Por omisión, o atributo UUID é detectado automaticamente. O atributo UUID utilizase para identificar, sen dúbida, aos usuarios e grupos LDAP. Ademais, crearase o nome interno de usuario baseado no UUID, se non se especifica anteriormente o contrario. Pode anular o axuste e pasar un atributo da súa escolla. Vde. debe asegurarse de que o atributo da súa escolla pode ser recuperado polos usuarios e grupos e de que é único. Déixeo baleiro para o comportamento predeterminado. Os cambios terán efecto só nas novas asignacións (engadidos) de usuarios de LDAP.",
+ "Override UUID detection" : "Anular a detección do 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." : "Por omisión, o atributo UUID é detectado automaticamente. O atributo UUID utilizase para identificar, sen dúbida, aos usuarios e grupos LDAP. Ademais, crearase o nome interno de usuario baseado no UUID, se non se especifica anteriormente o contrario. Pode anular o axuste e pasar un atributo da súa escolla. Asegúrese de que o atributo da súa escolla pode ser recuperado polos usuarios e grupos e de que é único. Déixeo baleiro para o comportamento predeterminado. Os cambios terán efecto só nas novas asignacións (engadidos) de usuarios de LDAP.",
"UUID Attribute for Users:" : "Atributo do UUID para usuarios:",
"UUID Attribute for Groups:" : "Atributo do UUID para grupos:",
"Username-LDAP User Mapping" : "Asignación do usuario ao «nome de usuario LDAP»",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar metadatos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome interno de usuario. Isto precisa dunha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na caché, para así reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensíbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun contorno de produción. Limpar as asignacións só en fases de proba ou experimentais.",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar metadatos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome interno de usuario. Isto precisa dunha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na memoria tobo, para así reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensíbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun contorno de produción. Limpar as asignacións só en fases de proba ou experimentais.",
"Clear Username-LDAP User Mapping" : "Limpar a asignación do usuario ao «nome de usuario LDAP»",
"Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID incorrectos de usuarios ou grupos LDAP. Revise a súa configuración de «Anular a detección de UUID» na parte Experto da configuración LDAP e utilice «occ ldap:update-uuid» para actualizalos."
+ "Invalid configuration. Please have a look at the logs for further details." : "A configuración non é correcta. Bótelle unha ollada aos rexistros para obter máis detalles."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/gl.json b/apps/user_ldap/l10n/gl.json
index 753374d021b..58b0658ebf0 100644
--- a/apps/user_ldap/l10n/gl.json
+++ b/apps/user_ldap/l10n/gl.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "A configuración non é correcta: a vinculación non está permitida.",
"Valid configuration, connection established!" : "A configuración é correcta, estabeleceuse a conexión!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "A configuración é correcta, mais fallou a vinculación. Comprobe os axustes do servidor e as credenciais.",
- "Invalid configuration. Please have a look at the logs for further details." : "A configuración non é correcta. Bótelle unha ollada aos rexistros para obter máis detalles.",
+ "Invalid configuration: %s" : "Configuración incorrecta: %s",
"No action specified" : "Non se especificou unha acción",
"No configuration specified" : "Non se especificou unha configuración",
"No data specified" : "Non se especificaron datos",
"Invalid data specified" : "Datos especificados non válidos",
- " Could not set configuration %s" : "Non foi posíbel estabelecer a configuración %s",
+ "Could not set configuration %1$s to %2$s" : "Non foi posíbel definir a configuración %1$s a %2$s",
"Action does not exist" : "Non existe esta acción",
"Renewing …" : "Renovando…",
"Very weak password" : "Contrasinal moi feble",
@@ -49,18 +49,31 @@
"An unspecified error occurred. Please check log and settings." : "Produciuse un erro non especificado. Comprobe o rexistro e os axustes.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de busca é incorrecto, probabelmente por mor de erros de sintaxe como un número impar de chaves de apertura/peche. Revíseo.",
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Produciuse un erro de conexión a LDAP/AD. Verifique a máquina, o porto e as credenciais.",
- "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta o marcador de posición «%u id». Substitúese polo nome de acceso ao consultar LDAP/AD.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Falta o marcador de substitución «%uid». Substitúese polo nome de acceso ao consultar LDAP/AD.",
"Please provide a login name to test against" : "Forneza o nome de acceso para facer a proba",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Desactivouse a caixa de grupo porque o servidor LDAP/AD non admite memberOf.",
- "Password change rejected. Hint: " : "Contrasinal rexeitado. Consello:",
+ "Password change rejected. Hint: %s" : "Contrasinal rexeitado. Consello: %s",
+ "Mandatory field \"%s\" left empty" : "Deixou baleiro o campo obrigatorio «%s»",
+ "A password is given, but not an LDAP agent" : "Indicou un contrasinal, mais non un axente LDAP",
+ "No password is given for the user agent" : "Non indicou un contrasinal para este axente de usuario",
+ "No LDAP base DN was given" : "Non se indicou un DN base de LDAP",
+ "User base DN is not a subnode of global base DN" : "O DN base do usuario non é un subnodo do DN base global",
+ "Group base DN is not a subnode of global base DN" : "O DN base de grupo non é un subnodo do DN base global",
+ "Login filter does not contain %s placeholder." : "O filtro de inicio de sesión non contén o marcador de substitución %s.",
"Please login with the new password" : "Acceda co novo contrasinal",
"LDAP User backend" : "Infraestrutura do usuario LDAP",
"Your password will expire tomorrow." : "O seu contrasinal caduca mañá.",
"Your password will expire today." : "O seu contrasinal caducará hoxe.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["O seu contrasinal caducará en %n día.","O seu contrasinal caducará en %n días."],
"LDAP/AD integration" : "Integración de LDAP/AD",
+ "LDAP Connection" : "Conexión LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Produciuse un fallo na vinculación desta configuración LDAP: %s","Produciuse un fallo na vinculación de %n configuracións LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Produciuse un fallo ao buscar esta configuración LDAP: %s","Produciuse un fallo ao buscar %n configuracións LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Hai unha configuración LDAP inactiva: %s","Hai %n configuracións LDAP inactivas: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["A vinculación e a busca funcionan na conexión LDAP configurada (%s)","A vinculación e a busca funciona en todas as %n conexións LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUID de LDAP incorrectos",
"None found" : "Non se atopou ningún",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID incorrectos de contas ou grupos LDAP. Revise a súa configuración de «Anular a detección de UUID» na parte Experto da configuración LDAP e utilice «occ ldap:update-uuid» para actualizalos.",
"_%n group found_::_%n groups found_" : ["Atopouse %n grupo","Atopáronse %n grupos"],
"> 1000 groups found" : "> 1000 grupos atopados",
"> 1000 users found" : "> 1000 usuarios atopados",
@@ -70,7 +83,7 @@
"Invalid Host" : "Máquina incorrecta",
"LDAP user and group backend" : "Infraestrutura de usuarios e grupos LDAP",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Esta aplicación permitelle aos administradores conectar Nextcloud a un directorio de usuarios baseado en LDAP.",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esta aplicación permítelle aos administradores conectar Nextcloud cun directorio de usuarios baseado en LDAP para a autenticación e aprovisionamento de usuarios, grupos e atributos de usuario. Os administradores poden configurar esta aplicación para conectarse a un ou máis directorios LDAP ou Active Directory mediante unha interface LDAP. Os atributos como cota de usuario, correo, imaxes de avatar, pertenza a grupos e máis poden incorporarse a Nextcloud dende un directorio coas peticións e filtros axeitados.\n\nUn usuario rexistrase en Nextcloud coas súa credenciais LDAP ou AD e se lle concede acceso baseandose nunha petición de autenticación manexada polo servidor LDAP ou AD.Nexttcloud non almacen os contrasinais LDAP ou AD, senon que estas credenciais usanse para autenticar un usuario e após Nextcloud emprega unha sesión para O ID do usuario. Ten dispoñíbel máis información na documentación da infraestrutura de usuarios e grupos LDAP.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esta aplicación permítelle aos administradores conectar Nextcloud cun directorio de usuarios baseado en LDAP para a autenticación e aprovisionamento de usuarios, grupos e atributos de usuario. Os administradores poden configurar esta aplicación para conectarse a un ou máis directorios LDAP ou Active Directory mediante unha interface LDAP. Os atributos como cota de usuario, correo, imaxes de avatar, pertenza a grupos e máis poden incorporarse a Nextcloud desde un directorio coas peticións e filtros axeitados.\n\nUn usuario rexistrase en Nextcloud coas súa credenciais LDAP ou AD e se lle concede acceso baseandose nunha petición de autenticación manexada polo servidor LDAP ou AD.Nexttcloud non almacen os contrasinais LDAP ou AD, senon que estas credenciais usanse para autenticar un usuario e após Nextcloud emprega unha sesión para O ID do usuario. Ten dispoñíbel máis información na documentación da infraestrutura de usuarios e grupos LDAP.",
"Test Configuration" : "Probar a configuración",
"Help" : "Axuda",
"Groups meeting these criteria are available in %s:" : "Os grupos que cumpren estes criterios están dispoñíbeis en %s:",
@@ -102,7 +115,7 @@
"Port" : "Porto",
"Detect Port" : "Detectar o porto",
"User DN" : "DN do usuario",
- "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." : "O DN do cliente do usuario co que hai que estabelecer unha conexión, p.ex uid=axente, dc=exemplo, dc=com. Para o acceso anónimo deixe o DN e o contrasinal baleiros.",
+ "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." : "O DN do cliente do usuario co que realizará o vínculo, p. ex. uid=axente, dc=exemplo, dc=com. Para o acceso anónimo deixe o DN e o contrasinal baleiros.",
"Password" : "Contrasinal",
"For anonymous access, leave DN and Password empty." : "Para o acceso anónimo deixe o DN e o contrasinal baleiros.",
"Save Credentials" : "Gardar as credenciais",
@@ -144,13 +157,13 @@
"Only connect to the replica server." : "Conectar só co servidor de réplica.",
"Turn off SSL certificate validation." : "Desactiva a validación do certificado SSL.",
"Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Non recomendado, utilizar só para probas! Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no seu servidor %s.",
- "Cache Time-To-Live" : "Tempo de persistencia da caché",
- "in seconds. A change empties the cache." : "en segundos. Calquera cambio baleira a caché.",
+ "Cache Time-To-Live" : "Tempo de persistencia da memoria tobo",
+ "in seconds. A change empties the cache." : "en segundos. Calquera cambio baleira a memoria tobo.",
"Directory Settings" : "Axustes do directorio",
"User Display Name Field" : "Campo de nome de usuario para amosar",
"The LDAP attribute to use to generate the user's display name." : "O atributo LDAP a empregar para xerar o nome de usuario para amosar.",
"2nd User Display Name Field" : "2.º campo de nome de usuario para amosar",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributo LDAP para ser engadido no nome para amosar entre parénteses. Resulta en p.ex. «Xan Carallás (xan.carallas@exemplo.org)».",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributo LDAP para ser engadido no nome para amosar entre parénteses. Resulta en p. ex. «Xan Carallás (xan.carallas@example.org)».",
"Base User Tree" : "Base da árbore de usuarios",
"One User Base DN per line" : "Un DN base de usuario por liña",
"User Search Attributes" : "Atributos de busca do usuario",
@@ -178,43 +191,47 @@
"Quota Field" : "Campo de cota",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixar baleiro para a cota predeterminada do usuario. Noutro caso, especifique un atributo LDAP/AD.",
"Quota Default" : "Cota predeterminada",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituír a cota predeterminada para usuarios LDAP que non teñen unha cota estabelecida no campo Cota.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Anular a cota predeterminada para usuarios LDAP que non teñen unha cota definida no campo Cota.",
"Email Field" : "Campo do correo",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Estabelecer o correo do usuario dende un atributo LDAP. Déixeo baleiro para un comportamento predeterminado.",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Definir o correo do usuario desde un atributo LDAP. Déixeo baleiro para un comportamento predeterminado.",
"User Home Folder Naming Rule" : "Regra de nomeado do cartafol do usuario",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixar baleiro para o nome de usuario (predeterminado). Noutro caso, especifique un atributo LDAP/AD.",
- "\"$home\" Placeholder Field" : "Campo de marcador de posición «$home»",
+ "\"$home\" Placeholder Field" : "Campo de marcador de substitución «$home»",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "Nunha configuración de almacenamento externo substituirase $home polo valor do atributo especificado",
"User Profile Attributes" : "Atributos do perfil de usuario",
"Phone Field" : "Campo de teléfono",
- "User profile Phone will be set from the specified attribute" : "O teléfono do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Phone will be set from the specified attribute" : "O teléfono do perfil de usuario definirase a partir do atributo especificado",
"Website Field" : "Campo do sitio web",
- "User profile Website will be set from the specified attribute" : "O sitio web do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Website will be set from the specified attribute" : "O sitio web do perfil de usuario definirase a partir do atributo especificado",
"Address Field" : "Campo de enderezo",
- "User profile Address will be set from the specified attribute" : "O enderezo do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Address will be set from the specified attribute" : "O enderezo do perfil de usuario definirase a partir do atributo especificado",
"Twitter Field" : "Campo de Twitter",
- "User profile Twitter will be set from the specified attribute" : "O perfil de usuario Twitter estabelecerase a partir do atributo especificado",
+ "User profile Twitter will be set from the specified attribute" : "O perfil de usuario en Twitter definirase a partir do atributo especificado",
"Fediverse Field" : "Campo do Fediverso",
- "User profile Fediverse will be set from the specified attribute" : "O perfil de usuario Fediverso estabelecerase a partir do atributo especificado",
+ "User profile Fediverse will be set from the specified attribute" : "O perfil de usuario no Fediverso definirase a partir do atributo especificado",
"Organisation Field" : "Campo da organización",
- "User profile Organisation will be set from the specified attribute" : "A organización do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Organisation will be set from the specified attribute" : "A organización do perfil de usuario definirase a partir do atributo especificado",
"Role Field" : "Campo de rol",
- "User profile Role will be set from the specified attribute" : "O rol do perfil de usuario estabelecerase a partir do atributo especificado",
- "Headline Field" : "Campo de título",
- "User profile Headline will be set from the specified attribute" : "O título do perfil de usuario estabelecerase a partir do atributo especificado",
+ "User profile Role will be set from the specified attribute" : "O rol do perfil de usuario definirase a partir do atributo especificado",
+ "Headline Field" : "Campo de titular",
+ "User profile Headline will be set from the specified attribute" : "O título do perfil de usuario definirase a partir do atributo especificado",
"Biography Field" : "Campo de biografía",
- "User profile Biography will be set from the specified attribute" : "A biografía do perfil do usuario estabelecerase a partir do atributo especificado",
+ "User profile Biography will be set from the specified attribute" : "A biografía no perfil de usuario definirase a partir do atributo especificado",
+ "Birthdate Field" : "Campo de data de nacemento",
+ "User profile Date of birth will be set from the specified attribute" : "A data de nacemento no perfil do usuario definirase a partir do atributo especificado",
+ "Pronouns Field" : "Campo de pronomes",
+ "User profile Pronouns will be set from the specified attribute" : "Os pronomes no perfil de usuario definiranse a partir do atributo especificado",
"Internal Username" : "Nome interno de usuario",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "De xeito predeterminado, o nome de usuario interno crearase a partir do atributo UUID. Isto asegura que o nome de usuario é único e que non é necesario converter os caracteres. O nome de usuario interno ten a restrición de que só se permiten estes caracteres: [a-zA-Z0-9_.@-]. Outros caracteres substitúense pola súa correspondencia ASCII ou simplemente omítense. Nos casos de colisións engadirase/aumentarase un número. O nome de usuario interno úsase para identificar un usuario internamente. Tamén é o nome predeterminado para o cartafol de inicio do usuario. Tamén forma parte dos URL remotos, por exemplo para todos os servizos DAV. Con esta configuración, pódese anular o comportamento predeterminado. Os cambios só terán efecto nos usuarios LDAP recén asignados (engadidos). Déixeo baleiro para o comportamento predeterminado.",
"Internal Username Attribute:" : "Atributo do nome interno de usuario:",
- "Override UUID detection" : "Ignorar a detección do 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." : "Por omisión, o atributo UUID é detectado automaticamente. O atributo UUID utilizase para identificar, sen dúbida, aos usuarios e grupos LDAP. Ademais, crearase o nome interno de usuario baseado no UUID, se non se especifica anteriormente o contrario. Pode anular o axuste e pasar un atributo da súa escolla. Vde. debe asegurarse de que o atributo da súa escolla pode ser recuperado polos usuarios e grupos e de que é único. Déixeo baleiro para o comportamento predeterminado. Os cambios terán efecto só nas novas asignacións (engadidos) de usuarios de LDAP.",
+ "Override UUID detection" : "Anular a detección do 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." : "Por omisión, o atributo UUID é detectado automaticamente. O atributo UUID utilizase para identificar, sen dúbida, aos usuarios e grupos LDAP. Ademais, crearase o nome interno de usuario baseado no UUID, se non se especifica anteriormente o contrario. Pode anular o axuste e pasar un atributo da súa escolla. Asegúrese de que o atributo da súa escolla pode ser recuperado polos usuarios e grupos e de que é único. Déixeo baleiro para o comportamento predeterminado. Os cambios terán efecto só nas novas asignacións (engadidos) de usuarios de LDAP.",
"UUID Attribute for Users:" : "Atributo do UUID para usuarios:",
"UUID Attribute for Groups:" : "Atributo do UUID para grupos:",
"Username-LDAP User Mapping" : "Asignación do usuario ao «nome de usuario LDAP»",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar metadatos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome interno de usuario. Isto precisa dunha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na caché, para así reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensíbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun contorno de produción. Limpar as asignacións só en fases de proba ou experimentais.",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar metadatos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome interno de usuario. Isto precisa dunha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na memoria tobo, para así reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensíbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun contorno de produción. Limpar as asignacións só en fases de proba ou experimentais.",
"Clear Username-LDAP User Mapping" : "Limpar a asignación do usuario ao «nome de usuario LDAP»",
"Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID incorrectos de usuarios ou grupos LDAP. Revise a súa configuración de «Anular a detección de UUID» na parte Experto da configuración LDAP e utilice «occ ldap:update-uuid» para actualizalos."
+ "Invalid configuration. Please have a look at the logs for further details." : "A configuración non é correcta. Bótelle unha ollada aos rexistros para obter máis detalles."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/gu.js b/apps/user_ldap/l10n/gu.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/gu.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/gu.json b/apps/user_ldap/l10n/gu.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/gu.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index 550d9f7cefc..d695a6ca133 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "תצורה שגויה: איגוד אלמוני אסור.",
"Valid configuration, connection established!" : "התצורה תקפה, התבצע חיבור!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "התצורה תקפה, אך האיגוד נכשל. נא לבדוק את הגדרות השרת ואת פרטי הגישה.",
- "Invalid configuration. Please have a look at the logs for further details." : "תצורה שגויה. נא לעיין ברישום לקבלת פרטים נוספים.",
"No action specified" : "לא צויינה פעולה",
"No configuration specified" : "לא הוגדרה תצורה",
"No data specified" : "לא הוגדר מידע",
- " Could not set configuration %s" : " לא ניתן היה לקבוע הגדרות %s",
"Action does not exist" : "פעולה לא קיימת",
"Renewing …" : "מתבצע חידוש…",
"Very weak password" : "ססמה חלשה מאוד",
@@ -48,7 +46,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "אירעה שגיאה בלתי מוגדרת. נא לבדוק את יומן הרישום וההגדרות.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "סינון החיפוש אינו חוקי. ככל הנראה בשל שיאה תחבירית כגון מספר לא שווה של פתח-סוגריים וסגור-סוגריים. יש לתקן.",
"Please provide a login name to test against" : "יש לספק שם משתמש לבדיקה מולו",
- "Password change rejected. Hint: " : "שינוי הססמה נדחה. רמז:",
"Please login with the new password" : "נא להיכנס עם הססמה החדשה",
"Your password will expire tomorrow." : "הססמה שלך תפוג מחר.",
"Your password will expire today." : "הססמה שלך תפוג היום.",
@@ -158,6 +155,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "מאפייני UUID לקבוצות:",
"Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
"Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
- "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:"
+ "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:",
+ "Invalid configuration. Please have a look at the logs for further details." : "תצורה שגויה. נא לעיין ברישום לקבלת פרטים נוספים."
},
"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;");
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index 592d76eb7f0..c892a8f17a1 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "תצורה שגויה: איגוד אלמוני אסור.",
"Valid configuration, connection established!" : "התצורה תקפה, התבצע חיבור!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "התצורה תקפה, אך האיגוד נכשל. נא לבדוק את הגדרות השרת ואת פרטי הגישה.",
- "Invalid configuration. Please have a look at the logs for further details." : "תצורה שגויה. נא לעיין ברישום לקבלת פרטים נוספים.",
"No action specified" : "לא צויינה פעולה",
"No configuration specified" : "לא הוגדרה תצורה",
"No data specified" : "לא הוגדר מידע",
- " Could not set configuration %s" : " לא ניתן היה לקבוע הגדרות %s",
"Action does not exist" : "פעולה לא קיימת",
"Renewing …" : "מתבצע חידוש…",
"Very weak password" : "ססמה חלשה מאוד",
@@ -46,7 +44,6 @@
"An unspecified error occurred. Please check log and settings." : "אירעה שגיאה בלתי מוגדרת. נא לבדוק את יומן הרישום וההגדרות.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "סינון החיפוש אינו חוקי. ככל הנראה בשל שיאה תחבירית כגון מספר לא שווה של פתח-סוגריים וסגור-סוגריים. יש לתקן.",
"Please provide a login name to test against" : "יש לספק שם משתמש לבדיקה מולו",
- "Password change rejected. Hint: " : "שינוי הססמה נדחה. רמז:",
"Please login with the new password" : "נא להיכנס עם הססמה החדשה",
"Your password will expire tomorrow." : "הססמה שלך תפוג מחר.",
"Your password will expire today." : "הססמה שלך תפוג היום.",
@@ -156,6 +153,7 @@
"UUID Attribute for Groups:" : "מאפייני UUID לקבוצות:",
"Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
"Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
- "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:"
+ "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:",
+ "Invalid configuration. Please have a look at the logs for further details." : "תצורה שגויה. נא לעיין ברישום לקבלת פרטים נוספים."
},"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/hr.js b/apps/user_ldap/l10n/hr.js
index 332c807f034..e7379157dab 100644
--- a/apps/user_ldap/l10n/hr.js
+++ b/apps/user_ldap/l10n/hr.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Nevažeća konfiguracija: nije dopušteno anonimno povezivanje.",
"Valid configuration, connection established!" : "Važeća konfiguracija, veza je uspostavljena!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Važeća konfiguracija, ali povezivanje nije uspjelo. Provjerite postavke i vjerodajnice poslužitelja.",
- "Invalid configuration. Please have a look at the logs for further details." : "Nevažeća konfiguracija. Pogledajte zapise za više informacija.",
"No action specified" : "Nije navedena nijedna radnja",
"No configuration specified" : "Nije navedena konfiguracija",
"No data specified" : "Nema podataka",
- " Could not set configuration %s" : " Konfiguraciju %s nije moguće postaviti",
"Action does not exist" : "Radnja ne postoji",
"Renewing …" : "Obnavljanje...",
"Very weak password" : "Zaporka vrlo slaba",
@@ -53,7 +51,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Nedostaje „%uid”. Zamijenit će se imenom za prijavu kada se šalje upit LDAP-u/AD-u.",
"Please provide a login name to test against" : "Navedite ispitno ime za prijavu",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Okvir grupe je onemogućen jer LDAP/AD poslužitelj ne podržava memberOf.",
- "Password change rejected. Hint: " : "Odbijena promjena zaporke. Savjet: ",
"Please login with the new password" : "Prijavite se novom zaporkom",
"LDAP User backend" : "LDAP korisnički pozadinski sustav",
"Your password will expire tomorrow." : "Vaša zaporka istječe sutra.",
@@ -186,6 +183,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Mapiranje korisnika LDAP-korisničko ime",
"Usernames are used to store and assign metadata. 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." : "Korisnička imena upotrebljavaju se za pohranu i dodjeljivanje metapodataka. Kako bi se precizno identificirali i prepoznali korisnici, svaki LDAP korisnik ima unutarnje korisničko ime. Za to je potrebno mapiranje podataka s korisničkog imena na LDAP korisnika. Stvoreno korisničko ime mapira se na UUID LDAP korisnika. Također se DN pohranjuje u predmemoriju radi smanjenja interakcije s LDAP-om, ali se ne koristi za identifikaciju. Ako se DN promijeni, te će promijene biti otkrivene. Unutarnje korisničko ime upotrebljava se u raznim situacijama. Brisanjem mapiranja ostaju razni tragovi u sustavu. Brisanje mapiranja ne ovisi o konfiguraciji, utječe na sve konfiguracije LDAP-a! Nikada nemojte brisati mapiranja u produkcijskom okruženju, već samo u fazi ispitivanja ili eksperimentiranja.",
"Clear Username-LDAP User Mapping" : "Izbriši mapiranje korisnika LDAP-korisničko ime",
- "Clear Groupname-LDAP Group Mapping" : "Izbriši mapiranje grupe naziv grupe-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Izbriši mapiranje grupe naziv grupe-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Nevažeća konfiguracija. Pogledajte zapise za više informacija."
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/hr.json b/apps/user_ldap/l10n/hr.json
index 43f2c719172..b55b4c15df4 100644
--- a/apps/user_ldap/l10n/hr.json
+++ b/apps/user_ldap/l10n/hr.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Nevažeća konfiguracija: nije dopušteno anonimno povezivanje.",
"Valid configuration, connection established!" : "Važeća konfiguracija, veza je uspostavljena!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Važeća konfiguracija, ali povezivanje nije uspjelo. Provjerite postavke i vjerodajnice poslužitelja.",
- "Invalid configuration. Please have a look at the logs for further details." : "Nevažeća konfiguracija. Pogledajte zapise za više informacija.",
"No action specified" : "Nije navedena nijedna radnja",
"No configuration specified" : "Nije navedena konfiguracija",
"No data specified" : "Nema podataka",
- " Could not set configuration %s" : " Konfiguraciju %s nije moguće postaviti",
"Action does not exist" : "Radnja ne postoji",
"Renewing …" : "Obnavljanje...",
"Very weak password" : "Zaporka vrlo slaba",
@@ -51,7 +49,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Nedostaje „%uid”. Zamijenit će se imenom za prijavu kada se šalje upit LDAP-u/AD-u.",
"Please provide a login name to test against" : "Navedite ispitno ime za prijavu",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Okvir grupe je onemogućen jer LDAP/AD poslužitelj ne podržava memberOf.",
- "Password change rejected. Hint: " : "Odbijena promjena zaporke. Savjet: ",
"Please login with the new password" : "Prijavite se novom zaporkom",
"LDAP User backend" : "LDAP korisnički pozadinski sustav",
"Your password will expire tomorrow." : "Vaša zaporka istječe sutra.",
@@ -184,6 +181,7 @@
"Username-LDAP User Mapping" : "Mapiranje korisnika LDAP-korisničko ime",
"Usernames are used to store and assign metadata. 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." : "Korisnička imena upotrebljavaju se za pohranu i dodjeljivanje metapodataka. Kako bi se precizno identificirali i prepoznali korisnici, svaki LDAP korisnik ima unutarnje korisničko ime. Za to je potrebno mapiranje podataka s korisničkog imena na LDAP korisnika. Stvoreno korisničko ime mapira se na UUID LDAP korisnika. Također se DN pohranjuje u predmemoriju radi smanjenja interakcije s LDAP-om, ali se ne koristi za identifikaciju. Ako se DN promijeni, te će promijene biti otkrivene. Unutarnje korisničko ime upotrebljava se u raznim situacijama. Brisanjem mapiranja ostaju razni tragovi u sustavu. Brisanje mapiranja ne ovisi o konfiguraciji, utječe na sve konfiguracije LDAP-a! Nikada nemojte brisati mapiranja u produkcijskom okruženju, već samo u fazi ispitivanja ili eksperimentiranja.",
"Clear Username-LDAP User Mapping" : "Izbriši mapiranje korisnika LDAP-korisničko ime",
- "Clear Groupname-LDAP Group Mapping" : "Izbriši mapiranje grupe naziv grupe-LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Izbriši mapiranje grupe naziv grupe-LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Nevažeća konfiguracija. Pogledajte zapise za više informacija."
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/hu.js b/apps/user_ldap/l10n/hu.js
index a208ed531ce..a9201cbab20 100644
--- a/apps/user_ldap/l10n/hu.js
+++ b/apps/user_ldap/l10n/hu.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Érvénytelen beállítások: Az anonim kötés nem engedélyezett.",
"Valid configuration, connection established!" : "Érvényes beállítások, a kapcsolat létrejött.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Érvényes beállítások, de a kötés sikertelen. Ellenőrizze a kiszolgálóbeállításokat és a hitelesítő adatokat.",
- "Invalid configuration. Please have a look at the logs for further details." : "Érvénytelen beállítások. További információkért nézze meg a naplófájlokat.",
"No action specified" : "Nincs megadva művelet",
"No configuration specified" : "Nincsenek megadva beállítások",
"No data specified" : "Nincsenek megadva adatok",
"Invalid data specified" : "A megadott adatok érvénytelenek",
- " Could not set configuration %s" : " A(z) %s beállítás nem adható meg",
"Action does not exist" : "A művelet nem létezik",
"Renewing …" : "Megújítás…",
"Very weak password" : "Nagyon gyenge jelszó",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "A(z) „%uid” helykitöltő hiányzik. Ez lesz lecserélve a felhasználónévre az LDAP/AD lekérdezésekor.",
"Please provide a login name to test against" : "Adjon meg egy bejelentkezési nevet a teszteléshez",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "A csoport beviteli mező ki van kapcsolva, mert az LDAP/AD-kiszolgáló nem támogatja a memberOf attribútumtípust.",
- "Password change rejected. Hint: " : "Jelszómódosítás elutasítva. Tipp:",
"Please login with the new password" : "Jelentkezzen be az új jelszóval",
"LDAP User backend" : "LDAP felhasználói háttérszolgáltatás",
"Your password will expire tomorrow." : "A jelszava holnap lejár.",
@@ -217,6 +214,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "A felhasználónevek a metaadatok kezeléséhez és tárolásához vannak felhasználva. Annak érdekében, hogy teljes mértékben azonosítható legyen egy felhasználó, minden LDAP felhasználó kapni fog egy belső felhasználónevet. Ez egy hozzárendelést igényel az eredeti felhasználónév és az LDAP fiók között. A létrejött felhasználónév hozzárendelődik az LDAP fiók UUID értékéhez. Emellett a DN gyorsítótárazott, hogy csökkentse az LDAP interakciók számát, de nincs használva azonosítás céljából. Ha a DN megváltozik, a rendszer észleli ezeket a változásokat. A belső felhasználónév van mindenhol használva a rendszeren belül. A hozzárendelések törlése adattöredékeket hagy maga után. A hozzárendelések ürítése nem beállításfüggő, minden LDAP beállításra hatással van. Soha ne ürítse éles rendszeren a hozzárendeléseket, csak tesztelési vagy kísérleti szakaszban.",
"Clear Username-LDAP User Mapping" : "Felhasználónév–LDAP felhasználó hozzárendelés törlése",
"Clear Groupname-LDAP Group Mapping" : "Csoport–LDAP csoport hozzárendelés törlése",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Felhasználók vagy csoportok érvénytelen UUID azonosítói találhatók. Nézze át a „UUID észlelés felülbírálása” beállítást az LDAP beállítások Szakértő részében, majd a frissítésükhöz használja az „occ ldap:update-uuid” parancsot."
+ "Invalid configuration. Please have a look at the logs for further details." : "Érvénytelen beállítások. További információkért nézze meg a naplófájlokat."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/hu.json b/apps/user_ldap/l10n/hu.json
index da7438172dd..c5673ac0c1f 100644
--- a/apps/user_ldap/l10n/hu.json
+++ b/apps/user_ldap/l10n/hu.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Érvénytelen beállítások: Az anonim kötés nem engedélyezett.",
"Valid configuration, connection established!" : "Érvényes beállítások, a kapcsolat létrejött.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Érvényes beállítások, de a kötés sikertelen. Ellenőrizze a kiszolgálóbeállításokat és a hitelesítő adatokat.",
- "Invalid configuration. Please have a look at the logs for further details." : "Érvénytelen beállítások. További információkért nézze meg a naplófájlokat.",
"No action specified" : "Nincs megadva művelet",
"No configuration specified" : "Nincsenek megadva beállítások",
"No data specified" : "Nincsenek megadva adatok",
"Invalid data specified" : "A megadott adatok érvénytelenek",
- " Could not set configuration %s" : " A(z) %s beállítás nem adható meg",
"Action does not exist" : "A művelet nem létezik",
"Renewing …" : "Megújítás…",
"Very weak password" : "Nagyon gyenge jelszó",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "A(z) „%uid” helykitöltő hiányzik. Ez lesz lecserélve a felhasználónévre az LDAP/AD lekérdezésekor.",
"Please provide a login name to test against" : "Adjon meg egy bejelentkezési nevet a teszteléshez",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "A csoport beviteli mező ki van kapcsolva, mert az LDAP/AD-kiszolgáló nem támogatja a memberOf attribútumtípust.",
- "Password change rejected. Hint: " : "Jelszómódosítás elutasítva. Tipp:",
"Please login with the new password" : "Jelentkezzen be az új jelszóval",
"LDAP User backend" : "LDAP felhasználói háttérszolgáltatás",
"Your password will expire tomorrow." : "A jelszava holnap lejár.",
@@ -215,6 +212,6 @@
"Usernames are used to store and assign metadata. 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." : "A felhasználónevek a metaadatok kezeléséhez és tárolásához vannak felhasználva. Annak érdekében, hogy teljes mértékben azonosítható legyen egy felhasználó, minden LDAP felhasználó kapni fog egy belső felhasználónevet. Ez egy hozzárendelést igényel az eredeti felhasználónév és az LDAP fiók között. A létrejött felhasználónév hozzárendelődik az LDAP fiók UUID értékéhez. Emellett a DN gyorsítótárazott, hogy csökkentse az LDAP interakciók számát, de nincs használva azonosítás céljából. Ha a DN megváltozik, a rendszer észleli ezeket a változásokat. A belső felhasználónév van mindenhol használva a rendszeren belül. A hozzárendelések törlése adattöredékeket hagy maga után. A hozzárendelések ürítése nem beállításfüggő, minden LDAP beállításra hatással van. Soha ne ürítse éles rendszeren a hozzárendeléseket, csak tesztelési vagy kísérleti szakaszban.",
"Clear Username-LDAP User Mapping" : "Felhasználónév–LDAP felhasználó hozzárendelés törlése",
"Clear Groupname-LDAP Group Mapping" : "Csoport–LDAP csoport hozzárendelés törlése",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Felhasználók vagy csoportok érvénytelen UUID azonosítói találhatók. Nézze át a „UUID észlelés felülbírálása” beállítást az LDAP beállítások Szakértő részében, majd a frissítésükhöz használja az „occ ldap:update-uuid” parancsot."
+ "Invalid configuration. Please have a look at the logs for further details." : "Érvénytelen beállítások. További információkért nézze meg a naplófájlokat."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/hy.js b/apps/user_ldap/l10n/hy.js
deleted file mode 100644
index 6e3fc1a22c8..00000000000
--- a/apps/user_ldap/l10n/hy.js
+++ /dev/null
@@ -1,9 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Groups" : "Խմբեր",
- "Help" : "Օգնություն",
- "Password" : "Գաղտնաբառ",
- "Continue" : "Շարունակել"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/hy.json b/apps/user_ldap/l10n/hy.json
deleted file mode 100644
index cff0593a7be..00000000000
--- a/apps/user_ldap/l10n/hy.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "translations": {
- "Groups" : "Խմբեր",
- "Help" : "Օգնություն",
- "Password" : "Գաղտնաբառ",
- "Continue" : "Շարունակել"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ia.js b/apps/user_ldap/l10n/ia.js
deleted file mode 100644
index c129620ee87..00000000000
--- a/apps/user_ldap/l10n/ia.js
+++ /dev/null
@@ -1,12 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Users" : "Usatores",
- "Groups" : "Gruppos",
- "Help" : "Adjuta",
- "Password" : "Contrasigno",
- "Back" : "Retro",
- "Continue" : "Continuar",
- "Advanced" : "Avantiate"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ia.json b/apps/user_ldap/l10n/ia.json
deleted file mode 100644
index 86b535fd079..00000000000
--- a/apps/user_ldap/l10n/ia.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{ "translations": {
- "Users" : "Usatores",
- "Groups" : "Gruppos",
- "Help" : "Adjuta",
- "Password" : "Contrasigno",
- "Back" : "Retro",
- "Continue" : "Continuar",
- "Advanced" : "Avantiate"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js
index b2fb538042e..e9b5054cd1f 100644
--- a/apps/user_ldap/l10n/id.js
+++ b/apps/user_ldap/l10n/id.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Konfigurasi tidak valid: Pengikatan anonim tidak diizinkan.",
"Valid configuration, connection established!" : "Konfigurasi valid, terhubung!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi pengikatan gagal. Silakan periksa pengaturan peladen dan kredensial.",
- "Invalid configuration. Please have a look at the logs for further details." : "Konfigurasi tidak valid. Silakan log untuk detil lebih lanjut.",
"No action specified" : "Tidak ada tindakan yang ditetapkan",
"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",
"Renewing …" : "Memperbarui ...",
"Very weak password" : "Kata sandi sangat lemah",
@@ -50,7 +48,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Suatu galat yang belum diketahui muncul. Silakan periksa log dan pengaturan.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
- "Password change rejected. Hint: " : "Perubahan kata sandi ditolak. Petunjuk:",
"Please login with the new password" : "Silakan log masuk dengan kata sandi baru",
"LDAP User backend" : "Backend pengguna",
"Your password will expire tomorrow." : "Kata sandi Anda akan kedaluwarsa besok.",
@@ -61,7 +58,7 @@ OC.L10N.register(
"Invalid Host" : "Host tidak sah",
"LDAP user and group backend" : "Backend pengguna dan grup LDAP",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Aplikasi ini memungkinkan administrator menghubungkan Nextcloud dengan direktori pengguna berbasis LDAP.",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Aplikasi ini mengizinkan administrator untuk menghubungkan Nexcloud dengan direktori pengguna berbasis LDAP, untuk otentikasi dan penyediaan atribut pengguna dan grup. Admin dapat melakukan konfigurasi untuk menghubungkan satu atau lebih LDAP atau Active Directory melalui antarmuka LDAP. Atribut seperti diantaranya, kuota, surel, gambar profil, keanggotaan grup, dan lainnya dapat ditarik ke Nextcloud dari suatu layanan direktori dengan kueri dan filter yang sesuai.\n\nPengguna akan terhubung ke Nextcloud menggunakan kredensial LDAP atau AD, dan mendapatkan akses berdasarkan permintaan autentikasi yang ditangani oleh peladen LDAP atau AD. Nextcloud tidak menyimpan kata sandi LDAP atau AD, alih-alih kredensial digunakan untuk mengautentikasi pengguna, dan berikutnya Nextcloud akan menggunakan suatu sesi bagi ID pengguna. Informasi lebih lanjut dapat dilihat pada dokumentasi LDAP User and Group Backend.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Aplikasi ini mengizinkan administrator untuk menghubungkan Nexcloud dengan direktori pengguna berbasis LDAP, untuk otentikasi dan penyediaan atribut pengguna dan grup. Admin dapat melakukan konfigurasi untuk menghubungkan satu atau lebih LDAP atau Active Directory melalui antarmuka LDAP. Atribut seperti diantaranya, kuota, email, gambar profil, keanggotaan grup, dan lainnya dapat ditarik ke Nextcloud dari suatu layanan direktori dengan kueri dan filter yang sesuai.\n\nPengguna akan terhubung ke Nextcloud menggunakan kredensial LDAP atau AD, dan mendapatkan akses berdasarkan permintaan autentikasi yang ditangani oleh peladen LDAP atau AD. Nextcloud tidak menyimpan kata sandi LDAP atau AD, alih-alih kredensial digunakan untuk mengautentikasi pengguna, dan berikutnya Nextcloud akan menggunakan suatu sesi bagi ID pengguna. Informasi lebih lanjut dapat dilihat pada dokumentasi LDAP User and Group Backend.",
"Test Configuration" : "Uji Konfigurasi",
"Help" : "Bantuan",
"Groups meeting these criteria are available in %s:" : "Grup yang memenuhi kriteria ini tersedia di %s:",
@@ -75,7 +72,7 @@ OC.L10N.register(
"The filter specifies which LDAP groups shall have access to the %s instance." : "Penyaring menentukan grup LDAP mana yang memiliki akses ke %s.",
"Verify settings and count the groups" : "Verifikasi pengaturan, dan hitung jumlah grup",
"When logging in, %s will find the user based on the following attributes:" : "Pada saat login, %s akan menemukan pengguna berdasarkan atribut berikut:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Mengizinkan juga log masuk menggunakan atribut surel \"mail\" dan \"mailPrimaryAddress\".",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Mengizinkan juga log masuk menggunakan atribut email \"mail\" dan \"mailPrimaryAddress\".",
"Other Attributes:" : "Atribut Lain:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definisikan penerapan filter saat percobaan log masuk. \"%%uid\" akan menggantikan nama pengguna saat aksi dilakukan. Contoh: \"uid=%%uid\"",
"Test Loginname" : "Test Loginname",
@@ -164,8 +161,8 @@ OC.L10N.register(
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Biarkan kosong untuk kuota bawaan pengguna. Atau tentukan atribut LDAP/AD.",
"Quota Default" : "Kuota Baku",
"Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Tetapkan kuota bawaan bagi pengguna LDAP, yang nilai kuotanya tidak ditentukan pada isian kuota.",
- "Email Field" : "Kolom Surel",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Tetapkan surel pengguna menggunakan atribut LDAP. Biarkan kosong untuk menggunakan perilaku bawaan.",
+ "Email Field" : "Kolom Email",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Tetapkan email pengguna menggunakan atribut LDAP. Biarkan kosong untuk menggunakan perilaku bawaan.",
"User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (bawaan). Atau, tentukan atribut LDAP/AD.",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home pada konfigurasi penyimpanan eksternal akan diubah dengan nilai pada atribut yang ditentukan",
@@ -178,6 +175,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Pemetaan Pengguna LDAP-Nama pengguna",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Digunakan untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan selama tahap pengujian dan percobaan.",
"Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
- "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup"
+ "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurasi tidak valid. Silakan log untuk detil lebih lanjut."
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json
index 2e82753b140..fc608eb8182 100644
--- a/apps/user_ldap/l10n/id.json
+++ b/apps/user_ldap/l10n/id.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Konfigurasi tidak valid: Pengikatan anonim tidak diizinkan.",
"Valid configuration, connection established!" : "Konfigurasi valid, terhubung!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurasi valid, tetapi pengikatan gagal. Silakan periksa pengaturan peladen dan kredensial.",
- "Invalid configuration. Please have a look at the logs for further details." : "Konfigurasi tidak valid. Silakan log untuk detil lebih lanjut.",
"No action specified" : "Tidak ada tindakan yang ditetapkan",
"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",
"Renewing …" : "Memperbarui ...",
"Very weak password" : "Kata sandi sangat lemah",
@@ -48,7 +46,6 @@
"An unspecified error occurred. Please check log and settings." : "Suatu galat yang belum diketahui muncul. Silakan periksa log dan pengaturan.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Penyaring pencarian tidak sah, kemungkinan karena masalah sintaks seperti jumlah kurung buka dan tutup tidak sama. Mohon diperiksa.",
"Please provide a login name to test against" : "Mohon berikan nama login untuk mengujinya kembali",
- "Password change rejected. Hint: " : "Perubahan kata sandi ditolak. Petunjuk:",
"Please login with the new password" : "Silakan log masuk dengan kata sandi baru",
"LDAP User backend" : "Backend pengguna",
"Your password will expire tomorrow." : "Kata sandi Anda akan kedaluwarsa besok.",
@@ -59,7 +56,7 @@
"Invalid Host" : "Host tidak sah",
"LDAP user and group backend" : "Backend pengguna dan grup LDAP",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Aplikasi ini memungkinkan administrator menghubungkan Nextcloud dengan direktori pengguna berbasis LDAP.",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Aplikasi ini mengizinkan administrator untuk menghubungkan Nexcloud dengan direktori pengguna berbasis LDAP, untuk otentikasi dan penyediaan atribut pengguna dan grup. Admin dapat melakukan konfigurasi untuk menghubungkan satu atau lebih LDAP atau Active Directory melalui antarmuka LDAP. Atribut seperti diantaranya, kuota, surel, gambar profil, keanggotaan grup, dan lainnya dapat ditarik ke Nextcloud dari suatu layanan direktori dengan kueri dan filter yang sesuai.\n\nPengguna akan terhubung ke Nextcloud menggunakan kredensial LDAP atau AD, dan mendapatkan akses berdasarkan permintaan autentikasi yang ditangani oleh peladen LDAP atau AD. Nextcloud tidak menyimpan kata sandi LDAP atau AD, alih-alih kredensial digunakan untuk mengautentikasi pengguna, dan berikutnya Nextcloud akan menggunakan suatu sesi bagi ID pengguna. Informasi lebih lanjut dapat dilihat pada dokumentasi LDAP User and Group Backend.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Aplikasi ini mengizinkan administrator untuk menghubungkan Nexcloud dengan direktori pengguna berbasis LDAP, untuk otentikasi dan penyediaan atribut pengguna dan grup. Admin dapat melakukan konfigurasi untuk menghubungkan satu atau lebih LDAP atau Active Directory melalui antarmuka LDAP. Atribut seperti diantaranya, kuota, email, gambar profil, keanggotaan grup, dan lainnya dapat ditarik ke Nextcloud dari suatu layanan direktori dengan kueri dan filter yang sesuai.\n\nPengguna akan terhubung ke Nextcloud menggunakan kredensial LDAP atau AD, dan mendapatkan akses berdasarkan permintaan autentikasi yang ditangani oleh peladen LDAP atau AD. Nextcloud tidak menyimpan kata sandi LDAP atau AD, alih-alih kredensial digunakan untuk mengautentikasi pengguna, dan berikutnya Nextcloud akan menggunakan suatu sesi bagi ID pengguna. Informasi lebih lanjut dapat dilihat pada dokumentasi LDAP User and Group Backend.",
"Test Configuration" : "Uji Konfigurasi",
"Help" : "Bantuan",
"Groups meeting these criteria are available in %s:" : "Grup yang memenuhi kriteria ini tersedia di %s:",
@@ -73,7 +70,7 @@
"The filter specifies which LDAP groups shall have access to the %s instance." : "Penyaring menentukan grup LDAP mana yang memiliki akses ke %s.",
"Verify settings and count the groups" : "Verifikasi pengaturan, dan hitung jumlah grup",
"When logging in, %s will find the user based on the following attributes:" : "Pada saat login, %s akan menemukan pengguna berdasarkan atribut berikut:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Mengizinkan juga log masuk menggunakan atribut surel \"mail\" dan \"mailPrimaryAddress\".",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Mengizinkan juga log masuk menggunakan atribut email \"mail\" dan \"mailPrimaryAddress\".",
"Other Attributes:" : "Atribut Lain:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definisikan penerapan filter saat percobaan log masuk. \"%%uid\" akan menggantikan nama pengguna saat aksi dilakukan. Contoh: \"uid=%%uid\"",
"Test Loginname" : "Test Loginname",
@@ -162,8 +159,8 @@
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Biarkan kosong untuk kuota bawaan pengguna. Atau tentukan atribut LDAP/AD.",
"Quota Default" : "Kuota Baku",
"Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Tetapkan kuota bawaan bagi pengguna LDAP, yang nilai kuotanya tidak ditentukan pada isian kuota.",
- "Email Field" : "Kolom Surel",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Tetapkan surel pengguna menggunakan atribut LDAP. Biarkan kosong untuk menggunakan perilaku bawaan.",
+ "Email Field" : "Kolom Email",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Tetapkan email pengguna menggunakan atribut LDAP. Biarkan kosong untuk menggunakan perilaku bawaan.",
"User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (bawaan). Atau, tentukan atribut LDAP/AD.",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home pada konfigurasi penyimpanan eksternal akan diubah dengan nilai pada atribut yang ditentukan",
@@ -176,6 +173,7 @@
"Username-LDAP User Mapping" : "Pemetaan Pengguna LDAP-Nama pengguna",
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Digunakan untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan selama tahap pengujian dan percobaan.",
"Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna",
- "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup"
+ "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurasi tidak valid. Silakan log untuk detil lebih lanjut."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/io.js b/apps/user_ldap/l10n/io.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/io.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/io.json b/apps/user_ldap/l10n/io.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/io.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/is.js b/apps/user_ldap/l10n/is.js
deleted file mode 100644
index 72b38e80231..00000000000
--- a/apps/user_ldap/l10n/is.js
+++ /dev/null
@@ -1,100 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Mistókst að hreinsa varpanir.",
- "Failed to delete the server configuration" : "Mistókst að eyða uppsetningu þjónsins",
- "Valid configuration, connection established!" : "Gild uppsetning, tengingu komið á!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "Uppsetningin er gild, en binding mistókst. Skoðaðu stillingar þjónsins og auðkenni.",
- "Invalid configuration. Please have a look at the logs for further details." : "Uppsetningin er ógild. Skoðaðu atvikaskrárnar til að sjá nánari upplýsingar.",
- "No action specified" : "Engin aðgerð tiltekin",
- "No configuration specified" : "Engin uppsetning tiltekin",
- "No data specified" : "Engin gögn tiltekin",
- " Could not set configuration %s" : "Gat ekki sett uppsetningu %s",
- "Action does not exist" : "Aðgerð er ekki til",
- "Renewing …" : "Endurnýja …",
- "Very weak password" : "Mjög veikt lykilorð",
- "Weak password" : "Veikt lykilorð",
- "So-so password" : "Miðlungs lykilorð",
- "Good password" : "Gott lykilorð",
- "Strong password" : "Sterkt lykilorð",
- "Testing configuration…" : "Prófa stillingar…",
- "Configuration incorrect" : "Röng uppsetning",
- "Configuration incomplete" : "Ófullgerð uppsetning",
- "Configuration OK" : "Stillingar eru í lagi",
- "Select groups" : "Veldu hópa",
- "Please check the credentials, they seem to be wrong." : "Athugaðu auðkennin, þau líta út fyrir að vera röng.",
- "{nthServer}. Server" : "{nthServer}. Þjónn",
- "More than 1,000 directory entries available." : "Meira en 1,000 möppufærslur tiltækar.",
- "Do you really want to delete the current Server Configuration?" : "Ertu viss um að þú viljir eyða núgildandi uppsetningu á þjóninum?",
- "Confirm Deletion" : "Staðfesta eyðingu",
- "Mappings cleared successfully!" : "Það tókst að hreinsa varpanir!",
- "Error while clearing the mappings." : "Villa við að hreinsa út varpanir.",
- "Mode switch" : "Skipta um ham",
- "Select attributes" : "Veldu eigindi",
- "User found and settings verified." : "Notandi fannst og stillingar yfirfarnar.",
- "Password change rejected. Hint: " : "Breytingu á lykilorði hafnað. Ábending: ",
- "Please login with the new password" : "Skráðu þig inn með nýja lykilorðinu",
- "Your password will expire tomorrow." : "Lykilorðið þitt rennur út á morgun.",
- "Your password will expire today." : "Lykilorðið þitt rennur út í dag.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Lykilorðið þitt rennur út innan %n dags.","Lykilorðið þitt rennur út innan %n daga."],
- "_%s group found_::_%s groups found_" : ["%s hópur fannst","%s hópar fundust"],
- "_%s user found_::_%s users found_" : ["%s notandi fannst","%s notendur fundust"],
- "Could not find the desired feature" : "Gat ekki fundið eiginleika sem óskað var eftir",
- "Invalid Host" : "Ógild vél",
- "LDAP user and group backend" : "LDAP notandi og bakendi hóps",
- "Test Configuration" : "Prófa uppsetningu",
- "Help" : "Hjálp",
- "Only from these groups:" : "Aðeins úr þessum hópum:",
- "Search groups" : "Leita í hópum",
- "Available groups" : "Tiltækir hópar",
- "Selected groups" : "Valdir hópar",
- "Edit LDAP Query" : "Breyta LDAP-fyrirspurn",
- "LDAP Filter:" : "LDAP sía:",
- "Verify settings and count the groups" : "Sannprófa stillingar og telja hópa",
- "Other Attributes:" : "Önnur eigindi:",
- "Test Loginname" : "Prófa innskráningarnafn",
- "Verify settings" : "Sannprófa stillingar",
- "%s. Server:" : "%s. Þjónn:",
- "Add a new configuration" : "Bæta við nýrri uppsetningu",
- "Delete the current configuration" : "Eyða núgildandi uppsetningu",
- "Host" : "Hýsill",
- "Port" : "Gátt",
- "Detect Port" : "Finna gátt",
- "User DN" : "DN notanda",
- "Password" : "Lykilorð",
- "Save Credentials" : "Vista auðkenni",
- "Verify settings and count users" : "Sannprófa stillingar og telja notendur",
- "Saving" : "Vistun",
- "Back" : "Til baka",
- "Continue" : "Halda áfram",
- "Please renew your password." : "Endurnýjaðu lykilorðið þitt",
- "An internal error occurred." : "Innri villa kom upp.",
- "Please try again or contact your administrator." : "Reyndu aftur eða hafðu samband við kerfisstjóra.",
- "Current password" : "Núverandi lykilorð",
- "New password" : "Nýtt lykilorð",
- "Renew password" : "Endurnýja lykilorð",
- "Wrong password." : "Rangt lykilorð.",
- "Cancel" : "Hætta við",
- "Server" : "Þjónn",
- "Users" : "Notendur",
- "Login Attributes" : "Eigindi innskráningar",
- "Groups" : "Hópar",
- "Expert" : "Snillingur",
- "Advanced" : "Ítarlegt",
- "Connection Settings" : "Valkostir tengingar ",
- "Configuration Active" : "Uppsetning er virk",
- "Disable Main Server" : "Gera aðalþjón óvirkan",
- "Turn off SSL certificate validation." : "Slökkva á sannvottun SSL-skilríkja.",
- "in seconds. A change empties the cache." : "í sekúndum. Breyting tæmir skyndiminnið.",
- "Directory Settings" : "Stillingar möppu",
- "Nested Groups" : "Faldaðir hópar",
- "(New password is sent as plain text to LDAP)" : "(Nýtt lykilorð er sent sem hreinn texti til LDAP)",
- "Default password policy DN" : "Sjálfgefin lykilorðastefna DN",
- "Special Attributes" : "Sérstök eigindi",
- "Quota Field" : "Gagnasvið fyrir kvóta",
- "Quota Default" : "Sjálfgefinn kvóti",
- "Email Field" : "Gagnasvið fyrir netfang",
- "Internal Username" : "Innra notandanafn",
- "UUID Attribute for Groups:" : "UUID-eigindi fyrir hópa:"
-},
-"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
deleted file mode 100644
index f66fd4a3edb..00000000000
--- a/apps/user_ldap/l10n/is.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Mistókst að hreinsa varpanir.",
- "Failed to delete the server configuration" : "Mistókst að eyða uppsetningu þjónsins",
- "Valid configuration, connection established!" : "Gild uppsetning, tengingu komið á!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "Uppsetningin er gild, en binding mistókst. Skoðaðu stillingar þjónsins og auðkenni.",
- "Invalid configuration. Please have a look at the logs for further details." : "Uppsetningin er ógild. Skoðaðu atvikaskrárnar til að sjá nánari upplýsingar.",
- "No action specified" : "Engin aðgerð tiltekin",
- "No configuration specified" : "Engin uppsetning tiltekin",
- "No data specified" : "Engin gögn tiltekin",
- " Could not set configuration %s" : "Gat ekki sett uppsetningu %s",
- "Action does not exist" : "Aðgerð er ekki til",
- "Renewing …" : "Endurnýja …",
- "Very weak password" : "Mjög veikt lykilorð",
- "Weak password" : "Veikt lykilorð",
- "So-so password" : "Miðlungs lykilorð",
- "Good password" : "Gott lykilorð",
- "Strong password" : "Sterkt lykilorð",
- "Testing configuration…" : "Prófa stillingar…",
- "Configuration incorrect" : "Röng uppsetning",
- "Configuration incomplete" : "Ófullgerð uppsetning",
- "Configuration OK" : "Stillingar eru í lagi",
- "Select groups" : "Veldu hópa",
- "Please check the credentials, they seem to be wrong." : "Athugaðu auðkennin, þau líta út fyrir að vera röng.",
- "{nthServer}. Server" : "{nthServer}. Þjónn",
- "More than 1,000 directory entries available." : "Meira en 1,000 möppufærslur tiltækar.",
- "Do you really want to delete the current Server Configuration?" : "Ertu viss um að þú viljir eyða núgildandi uppsetningu á þjóninum?",
- "Confirm Deletion" : "Staðfesta eyðingu",
- "Mappings cleared successfully!" : "Það tókst að hreinsa varpanir!",
- "Error while clearing the mappings." : "Villa við að hreinsa út varpanir.",
- "Mode switch" : "Skipta um ham",
- "Select attributes" : "Veldu eigindi",
- "User found and settings verified." : "Notandi fannst og stillingar yfirfarnar.",
- "Password change rejected. Hint: " : "Breytingu á lykilorði hafnað. Ábending: ",
- "Please login with the new password" : "Skráðu þig inn með nýja lykilorðinu",
- "Your password will expire tomorrow." : "Lykilorðið þitt rennur út á morgun.",
- "Your password will expire today." : "Lykilorðið þitt rennur út í dag.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Lykilorðið þitt rennur út innan %n dags.","Lykilorðið þitt rennur út innan %n daga."],
- "_%s group found_::_%s groups found_" : ["%s hópur fannst","%s hópar fundust"],
- "_%s user found_::_%s users found_" : ["%s notandi fannst","%s notendur fundust"],
- "Could not find the desired feature" : "Gat ekki fundið eiginleika sem óskað var eftir",
- "Invalid Host" : "Ógild vél",
- "LDAP user and group backend" : "LDAP notandi og bakendi hóps",
- "Test Configuration" : "Prófa uppsetningu",
- "Help" : "Hjálp",
- "Only from these groups:" : "Aðeins úr þessum hópum:",
- "Search groups" : "Leita í hópum",
- "Available groups" : "Tiltækir hópar",
- "Selected groups" : "Valdir hópar",
- "Edit LDAP Query" : "Breyta LDAP-fyrirspurn",
- "LDAP Filter:" : "LDAP sía:",
- "Verify settings and count the groups" : "Sannprófa stillingar og telja hópa",
- "Other Attributes:" : "Önnur eigindi:",
- "Test Loginname" : "Prófa innskráningarnafn",
- "Verify settings" : "Sannprófa stillingar",
- "%s. Server:" : "%s. Þjónn:",
- "Add a new configuration" : "Bæta við nýrri uppsetningu",
- "Delete the current configuration" : "Eyða núgildandi uppsetningu",
- "Host" : "Hýsill",
- "Port" : "Gátt",
- "Detect Port" : "Finna gátt",
- "User DN" : "DN notanda",
- "Password" : "Lykilorð",
- "Save Credentials" : "Vista auðkenni",
- "Verify settings and count users" : "Sannprófa stillingar og telja notendur",
- "Saving" : "Vistun",
- "Back" : "Til baka",
- "Continue" : "Halda áfram",
- "Please renew your password." : "Endurnýjaðu lykilorðið þitt",
- "An internal error occurred." : "Innri villa kom upp.",
- "Please try again or contact your administrator." : "Reyndu aftur eða hafðu samband við kerfisstjóra.",
- "Current password" : "Núverandi lykilorð",
- "New password" : "Nýtt lykilorð",
- "Renew password" : "Endurnýja lykilorð",
- "Wrong password." : "Rangt lykilorð.",
- "Cancel" : "Hætta við",
- "Server" : "Þjónn",
- "Users" : "Notendur",
- "Login Attributes" : "Eigindi innskráningar",
- "Groups" : "Hópar",
- "Expert" : "Snillingur",
- "Advanced" : "Ítarlegt",
- "Connection Settings" : "Valkostir tengingar ",
- "Configuration Active" : "Uppsetning er virk",
- "Disable Main Server" : "Gera aðalþjón óvirkan",
- "Turn off SSL certificate validation." : "Slökkva á sannvottun SSL-skilríkja.",
- "in seconds. A change empties the cache." : "í sekúndum. Breyting tæmir skyndiminnið.",
- "Directory Settings" : "Stillingar möppu",
- "Nested Groups" : "Faldaðir hópar",
- "(New password is sent as plain text to LDAP)" : "(Nýtt lykilorð er sent sem hreinn texti til LDAP)",
- "Default password policy DN" : "Sjálfgefin lykilorðastefna DN",
- "Special Attributes" : "Sérstök eigindi",
- "Quota Field" : "Gagnasvið fyrir kvóta",
- "Quota Default" : "Sjálfgefinn kvóti",
- "Email Field" : "Gagnasvið fyrir netfang",
- "Internal Username" : "Innra notandanafn",
- "UUID Attribute for Groups:" : "UUID-eigindi fyrir hópa:"
-},"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 aa31c0e640d..5fc1cfa7cf3 100644
--- a/apps/user_ldap/l10n/it.js
+++ b/apps/user_ldap/l10n/it.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "La configurazione non è valida: l'associazione anonima non è consentita.",
"Valid configuration, connection established!" : "Configurazione valida, connessione stabilita!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configurazione valida, ma associazione non riuscita. Controlla le impostazioni del server e le credenziali.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configurazione non valida. Controlla i log per ulteriori dettagli.",
"No action specified" : "Nessuna azione specificata",
"No configuration specified" : "Nessuna configurazione specificata",
"No data specified" : "Nessun dato specificato",
"Invalid data specified" : "Dati specificati non validi",
- " Could not set configuration %s" : "Impossibile impostare la configurazione %s",
"Action does not exist" : "L'azione non esiste",
"Renewing …" : "Rinnovo...",
"Very weak password" : "Password molto debole",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Manca il segnaposto \"%uid\". Sarà sostituito con il nome di accesso nelle interrogazioni LDAP/AD.",
"Please provide a login name to test against" : "Fornisci un nome di accesso da provare",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "La casella dei gruppi è stata disattivata, poiché il server LDAP/AD non supporta memberOf.",
- "Password change rejected. Hint: " : "Cambio password rifiutato. Suggerimento:",
"Please login with the new password" : "Accedi con la nuova password",
"LDAP User backend" : "Motore Utenti LDAP",
"Your password will expire tomorrow." : "La tua password scadrà domani.",
@@ -62,8 +59,13 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La tua password scadrà tra %n giorno.","La tua password scadrà oggi tra %n giorni.","La tua password scadrà oggi tra %n giorni."],
"LDAP/AD integration" : "Integrazione LDAP/AD",
"LDAP Connection" : "Connessione LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Associazione non riuscita per questa configurazione LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Ricerca fallita per questa configurazione LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["C'è una configurazione LDAP inattiva: %s","Ci sono %n configurazioni LDAP inattive: %s","Ci sono %n configurazioni LDAP inattive: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["L'associazione e la ricerca funzionano sulla connessione LDAP configurata (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)"],
"Invalid LDAP UUIDs" : "UUID LDAP non validi",
"None found" : "Nessuno trovato",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Sono stati trovati UUID non validi di account o gruppi LDAP. Controlla le impostazioni \"Ignora rilevamento UUID\" nella parte Esperto della configurazione LDAP e utilizza \"occ ldap:update-uuid\" per aggiornarle.",
"_%n group found_::_%n groups found_" : ["%n gruppo trovato","%n gruppi trovati","%n gruppi trovati"],
"> 1000 groups found" : "> 1000 gruppi trovati",
"> 1000 users found" : "> 1000 utenti trovati",
@@ -207,6 +209,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Il titolo del profilo utente verrà impostato dall'attributo specificato",
"Biography Field" : "Campo biografia",
"User profile Biography will be set from the specified attribute" : "La biografia del profilo utente verrà impostata dall'attributo specificato",
+ "Birthdate Field" : "Campo Data di Nascita",
+ "User profile Date of birth will be set from the specified attribute" : "La data di nascita del Profilo Utente verrà impostata dall'attributo specificato",
+ "Pronouns Field" : "Campo Pronomi",
+ "User profile Pronouns will be set from the specified attribute" : "I pronomi del Profilo Utente verranno impostati dall'attributo specificato",
"Internal Username" : "Nome utente interno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "In modo predefinito, il nome utente interno sarà creato dall'attributo UUID. Ciò assicura che il nome utente sia univoco e che non sia necessario convertire i caratteri. Il nome utente interno consente l'uso solo di determinati caratteri: [ a-zA-Z0-9_.@- ]. Altri caratteri sono sostituiti con il corrispondente ASCII o semplicemente omessi. In caso di conflitto, sarà aggiunto/incrementato un numero. Il nome utente interno è usato per identificare un utente internamente. È anche il nome predefinito per la cartella home dell'utente. Costituisce anche una parte di URL remoti, ad esempio per tutti i servizi DAV. Con questa impostazione, il comportamento predefinito può essere scavalcato. Le modifiche avranno effetto solo sui nuovo utenti LDAP associati (aggiunti). Lascialo vuoto per ottenere il comportamento predefinito.",
"Internal Username Attribute:" : "Attributo nome utente interno:",
@@ -218,6 +224,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "I nomi utente sono utilizzati per archiviare e assegnare i metadati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Il nome utente creato. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. Il nome utente creato è associato allo UUID dell'utente LDAP. In aggiunta, il DN viene memorizzato in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.",
"Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP",
"Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Trovati UUID di utenti o gruppi LDAP non validi. Controlla le tue impostazioni \"Sovrascrivi rilevazione UUID\" nella sezione Esperto della configurazione LDAP ed usa \"occ ldap:update-uuid\" per aggiornarle."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configurazione non valida. Controlla i log per ulteriori dettagli."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json
index 30ef92c60e4..2faa08fb7f1 100644
--- a/apps/user_ldap/l10n/it.json
+++ b/apps/user_ldap/l10n/it.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "La configurazione non è valida: l'associazione anonima non è consentita.",
"Valid configuration, connection established!" : "Configurazione valida, connessione stabilita!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configurazione valida, ma associazione non riuscita. Controlla le impostazioni del server e le credenziali.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configurazione non valida. Controlla i log per ulteriori dettagli.",
"No action specified" : "Nessuna azione specificata",
"No configuration specified" : "Nessuna configurazione specificata",
"No data specified" : "Nessun dato specificato",
"Invalid data specified" : "Dati specificati non validi",
- " Could not set configuration %s" : "Impossibile impostare la configurazione %s",
"Action does not exist" : "L'azione non esiste",
"Renewing …" : "Rinnovo...",
"Very weak password" : "Password molto debole",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Manca il segnaposto \"%uid\". Sarà sostituito con il nome di accesso nelle interrogazioni LDAP/AD.",
"Please provide a login name to test against" : "Fornisci un nome di accesso da provare",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "La casella dei gruppi è stata disattivata, poiché il server LDAP/AD non supporta memberOf.",
- "Password change rejected. Hint: " : "Cambio password rifiutato. Suggerimento:",
"Please login with the new password" : "Accedi con la nuova password",
"LDAP User backend" : "Motore Utenti LDAP",
"Your password will expire tomorrow." : "La tua password scadrà domani.",
@@ -60,8 +57,13 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La tua password scadrà tra %n giorno.","La tua password scadrà oggi tra %n giorni.","La tua password scadrà oggi tra %n giorni."],
"LDAP/AD integration" : "Integrazione LDAP/AD",
"LDAP Connection" : "Connessione LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Associazione non riuscita per questa configurazione LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s","Associazione non riuscita per %n configurazioni LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Ricerca fallita per questa configurazione LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s","Ricerca fallita per %n configurazioni LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["C'è una configurazione LDAP inattiva: %s","Ci sono %n configurazioni LDAP inattive: %s","Ci sono %n configurazioni LDAP inattive: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["L'associazione e la ricerca funzionano sulla connessione LDAP configurata (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)","L'associazione e la ricerca funzionano sulle %n connessioni LDAP configurate (%s)"],
"Invalid LDAP UUIDs" : "UUID LDAP non validi",
"None found" : "Nessuno trovato",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Sono stati trovati UUID non validi di account o gruppi LDAP. Controlla le impostazioni \"Ignora rilevamento UUID\" nella parte Esperto della configurazione LDAP e utilizza \"occ ldap:update-uuid\" per aggiornarle.",
"_%n group found_::_%n groups found_" : ["%n gruppo trovato","%n gruppi trovati","%n gruppi trovati"],
"> 1000 groups found" : "> 1000 gruppi trovati",
"> 1000 users found" : "> 1000 utenti trovati",
@@ -205,6 +207,10 @@
"User profile Headline will be set from the specified attribute" : "Il titolo del profilo utente verrà impostato dall'attributo specificato",
"Biography Field" : "Campo biografia",
"User profile Biography will be set from the specified attribute" : "La biografia del profilo utente verrà impostata dall'attributo specificato",
+ "Birthdate Field" : "Campo Data di Nascita",
+ "User profile Date of birth will be set from the specified attribute" : "La data di nascita del Profilo Utente verrà impostata dall'attributo specificato",
+ "Pronouns Field" : "Campo Pronomi",
+ "User profile Pronouns will be set from the specified attribute" : "I pronomi del Profilo Utente verranno impostati dall'attributo specificato",
"Internal Username" : "Nome utente interno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "In modo predefinito, il nome utente interno sarà creato dall'attributo UUID. Ciò assicura che il nome utente sia univoco e che non sia necessario convertire i caratteri. Il nome utente interno consente l'uso solo di determinati caratteri: [ a-zA-Z0-9_.@- ]. Altri caratteri sono sostituiti con il corrispondente ASCII o semplicemente omessi. In caso di conflitto, sarà aggiunto/incrementato un numero. Il nome utente interno è usato per identificare un utente internamente. È anche il nome predefinito per la cartella home dell'utente. Costituisce anche una parte di URL remoti, ad esempio per tutti i servizi DAV. Con questa impostazione, il comportamento predefinito può essere scavalcato. Le modifiche avranno effetto solo sui nuovo utenti LDAP associati (aggiunti). Lascialo vuoto per ottenere il comportamento predefinito.",
"Internal Username Attribute:" : "Attributo nome utente interno:",
@@ -216,6 +222,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "I nomi utente sono utilizzati per archiviare e assegnare i metadati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Il nome utente creato. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. Il nome utente creato è associato allo UUID dell'utente LDAP. In aggiunta, il DN viene memorizzato in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.",
"Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP",
"Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Trovati UUID di utenti o gruppi LDAP non validi. Controlla le tue impostazioni \"Sovrascrivi rilevazione UUID\" nella sezione Esperto della configurazione LDAP ed usa \"occ ldap:update-uuid\" per aggiornarle."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configurazione non valida. Controlla i log per ulteriori dettagli."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js
index f43664b7081..b957227dfd1 100644
--- a/apps/user_ldap/l10n/ja.js
+++ b/apps/user_ldap/l10n/ja.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "設定が間違っています: 匿名接続は、許可されていません。",
"Valid configuration, connection established!" : "正しい設定です。接続されました。",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "設定は有効ですが、接続に失敗しました。サーバー設定と資格情報を確認してください。",
- "Invalid configuration. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。",
+ "Invalid configuration: %s" : "無効な設定: %s",
"No action specified" : "アクションが指定されていません",
"No configuration specified" : "構成が指定されていません",
"No data specified" : "データが指定されていません",
"Invalid data specified" : "無効なデータが指定されました",
- " Could not set configuration %s" : "構成 %s を設定できませんでした",
+ "Could not set configuration %1$s to %2$s" : "構成%1$sを%2$sに設定できませんでした",
"Action does not exist" : "アクションが存在しません",
"Renewing …" : "更新中 ...",
"Very weak password" : "非常に弱いパスワードです",
@@ -54,15 +54,28 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%u\" id のプレースホルダがありません。プレースホルダは、LDAP /ADで問合せするときにログイン名で置き換えられます。",
"Please provide a login name to test against" : "テストの為にログイン名を入力してください。",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/ADサーバーがMemberOfオプションをサポートしていないため、グループボックスは無効になりました。",
- "Password change rejected. Hint: " : "パスワード変更が拒否されました。ヒント:",
+ "Password change rejected. Hint: %s" : "パスワード変更が拒否されました。ヒント: %s",
+ "Mandatory field \"%s\" left empty" : "必須フィールド\"%s\"が空欄のままです",
+ "A password is given, but not an LDAP agent" : "パスワードは与えられています、LDAPエージェントは与えられていません",
+ "No password is given for the user agent" : "ユーザーエージェントにパスワードが与えられていません",
+ "No LDAP base DN was given" : "LDAPベースDNが指定されていません",
+ "User base DN is not a subnode of global base DN" : "ユーザーベースDNはグローバルベースDNのサブノードではありません",
+ "Group base DN is not a subnode of global base DN" : "グループベースDNがグローバルベースDNのサブノードではありません",
+ "Login filter does not contain %s placeholder." : "ログインフィルタに%sプレースホルダが含まれていません。",
"Please login with the new password" : "新しいパスワードでログインしてください",
"LDAP User backend" : "LDAPユーザーバックエンド",
"Your password will expire tomorrow." : "パスワードが明日期限切れになります。",
"Your password will expire today." : "パスワードが今日期限切れになります。",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["パスワードがあと %n日で期限切れになります。"],
"LDAP/AD integration" : "LDAP/AD統合",
+ "LDAP Connection" : "LDAP接続",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["%n 個のLDAP設定のバインディングに失敗しました: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["%n 個のLDAP設定の検索に失敗しました: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["非アクティブなLDAPコンフィギュレーションが%n個あります: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["バインディングと検索は、設定された%nのLDAP接続すべてで機能します(%s)"],
"Invalid LDAP UUIDs" : "無効な LDAP UUID",
"None found" : "該当なし",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAPアカウントまたはグループの無効なUUIDが見つかりました。LDAP設定のエキスパート部分にある \"Override UUID detection\" の設定を見直して、\"occ ldap:update-uuid\"を使ってアップデートしてください。",
"_%n group found_::_%n groups found_" : ["グループ%nが見つかりました "],
"> 1000 groups found" : "1000 以上のグループが見つかりました",
"> 1000 users found" : "1000 以上のユーザーが見つかりました",
@@ -206,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "ユーザープロファイルのヘッドラインは、指定された属性から設定されます。",
"Biography Field" : "経歴 フィールド",
"User profile Biography will be set from the specified attribute" : "ユーザープロファイルの経歴は、指定された属性から設定されます。",
+ "Birthdate Field" : "誕生日フィールド",
+ "User profile Date of birth will be set from the specified attribute" : "生年月日のユーザープロフィールは、指定された属性から設定されます",
+ "Pronouns Field" : "代名詞フィールド",
+ "User profile Pronouns will be set from the specified attribute" : "ユーザープロファイルの代名詞は、指定された属性から設定されます",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、Nextcloud におけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。これは、たとえばすべての* DAVサービスのリモートURLの一部でもあります。この設定を使用すると、デフォルトの動作を上書きできます。変更は、新しくマップされた(追加された)LDAPユーザーにのみ影響します。デフォルトの動作のために空のままにします。",
"Internal Username Attribute:" : "内部ユーザー名属性:",
@@ -217,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ユーザー名は、メタデータの保存と割り当てに使用されます。 ユーザーを正確に識別して認識するために、各LDAPユーザーには内部ユーザー名が割り当てられます。 これには、ユーザー名からLDAPユーザーへのマッピングが必要です。 作成されたユーザー名は、LDAPユーザーのUUIDにマップされます。 さらに、DNはLDAPインタラクションを減らすためにキャッシュされますが、識別には使用されません。 DNが変更された場合、変更が検出されます。 内部ユーザー名はいたるところで使用されます。 マッピングをクリアすると、どこに残っているか分かります。 マッピングの消去はコンフィギュレーションセンシティブではなく、すべてのLDAP構成に影響します。 本番環境のマッピングをクリアしないでください。テスト環境または実験段階でのみ実施してください。",
"Clear Username-LDAP User Mapping" : "ユーザー名とLDAPユーザーのマッピングをクリアする",
"Clear Groupname-LDAP Group Mapping" : "グループ名とLDAPグループのマッピングをクリアする",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "無効なLDAPユーザーまたはグループのUUIDが見つかりました。LDAP設定の詳細設定に存在する\"UUID検出の上書き\"設定を再度ご確認いただき、更新するには\"occ ldap:update-uuid\"をご使用ください。"
+ "Invalid configuration. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json
index 39ca5734a34..6cadf55ae4e 100644
--- a/apps/user_ldap/l10n/ja.json
+++ b/apps/user_ldap/l10n/ja.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "設定が間違っています: 匿名接続は、許可されていません。",
"Valid configuration, connection established!" : "正しい設定です。接続されました。",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "設定は有効ですが、接続に失敗しました。サーバー設定と資格情報を確認してください。",
- "Invalid configuration. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。",
+ "Invalid configuration: %s" : "無効な設定: %s",
"No action specified" : "アクションが指定されていません",
"No configuration specified" : "構成が指定されていません",
"No data specified" : "データが指定されていません",
"Invalid data specified" : "無効なデータが指定されました",
- " Could not set configuration %s" : "構成 %s を設定できませんでした",
+ "Could not set configuration %1$s to %2$s" : "構成%1$sを%2$sに設定できませんでした",
"Action does not exist" : "アクションが存在しません",
"Renewing …" : "更新中 ...",
"Very weak password" : "非常に弱いパスワードです",
@@ -52,15 +52,28 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%u\" id のプレースホルダがありません。プレースホルダは、LDAP /ADで問合せするときにログイン名で置き換えられます。",
"Please provide a login name to test against" : "テストの為にログイン名を入力してください。",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/ADサーバーがMemberOfオプションをサポートしていないため、グループボックスは無効になりました。",
- "Password change rejected. Hint: " : "パスワード変更が拒否されました。ヒント:",
+ "Password change rejected. Hint: %s" : "パスワード変更が拒否されました。ヒント: %s",
+ "Mandatory field \"%s\" left empty" : "必須フィールド\"%s\"が空欄のままです",
+ "A password is given, but not an LDAP agent" : "パスワードは与えられています、LDAPエージェントは与えられていません",
+ "No password is given for the user agent" : "ユーザーエージェントにパスワードが与えられていません",
+ "No LDAP base DN was given" : "LDAPベースDNが指定されていません",
+ "User base DN is not a subnode of global base DN" : "ユーザーベースDNはグローバルベースDNのサブノードではありません",
+ "Group base DN is not a subnode of global base DN" : "グループベースDNがグローバルベースDNのサブノードではありません",
+ "Login filter does not contain %s placeholder." : "ログインフィルタに%sプレースホルダが含まれていません。",
"Please login with the new password" : "新しいパスワードでログインしてください",
"LDAP User backend" : "LDAPユーザーバックエンド",
"Your password will expire tomorrow." : "パスワードが明日期限切れになります。",
"Your password will expire today." : "パスワードが今日期限切れになります。",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["パスワードがあと %n日で期限切れになります。"],
"LDAP/AD integration" : "LDAP/AD統合",
+ "LDAP Connection" : "LDAP接続",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["%n 個のLDAP設定のバインディングに失敗しました: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["%n 個のLDAP設定の検索に失敗しました: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["非アクティブなLDAPコンフィギュレーションが%n個あります: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["バインディングと検索は、設定された%nのLDAP接続すべてで機能します(%s)"],
"Invalid LDAP UUIDs" : "無効な LDAP UUID",
"None found" : "該当なし",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAPアカウントまたはグループの無効なUUIDが見つかりました。LDAP設定のエキスパート部分にある \"Override UUID detection\" の設定を見直して、\"occ ldap:update-uuid\"を使ってアップデートしてください。",
"_%n group found_::_%n groups found_" : ["グループ%nが見つかりました "],
"> 1000 groups found" : "1000 以上のグループが見つかりました",
"> 1000 users found" : "1000 以上のユーザーが見つかりました",
@@ -204,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "ユーザープロファイルのヘッドラインは、指定された属性から設定されます。",
"Biography Field" : "経歴 フィールド",
"User profile Biography will be set from the specified attribute" : "ユーザープロファイルの経歴は、指定された属性から設定されます。",
+ "Birthdate Field" : "誕生日フィールド",
+ "User profile Date of birth will be set from the specified attribute" : "生年月日のユーザープロフィールは、指定された属性から設定されます",
+ "Pronouns Field" : "代名詞フィールド",
+ "User profile Pronouns will be set from the specified attribute" : "ユーザープロファイルの代名詞は、指定された属性から設定されます",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "デフォルトでは、内部的なユーザー名がUUID属性から作成されます。これにより、ユーザー名がユニークであり、かつ文字の変換が不要であることを保証します。内部ユーザー名には、[ a-zA-Z0-9_.@- ] の文字のみが有効であるという制限があり、その他の文字は対応する ASCII コードに変換されるか単に無視されます。そのため、他のユーザー名との衝突の回数が増加するでしょう。内部ユーザー名は、内部的にユーザーを識別するために用いられ、また、Nextcloud におけるデフォルトのホームフォルダー名としても用いられます。例えば*DAVサービスのように、リモートURLの一部でもあります。この設定により、デフォルトの振る舞いを再定義します。これは、たとえばすべての* DAVサービスのリモートURLの一部でもあります。この設定を使用すると、デフォルトの動作を上書きできます。変更は、新しくマップされた(追加された)LDAPユーザーにのみ影響します。デフォルトの動作のために空のままにします。",
"Internal Username Attribute:" : "内部ユーザー名属性:",
@@ -215,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ユーザー名は、メタデータの保存と割り当てに使用されます。 ユーザーを正確に識別して認識するために、各LDAPユーザーには内部ユーザー名が割り当てられます。 これには、ユーザー名からLDAPユーザーへのマッピングが必要です。 作成されたユーザー名は、LDAPユーザーのUUIDにマップされます。 さらに、DNはLDAPインタラクションを減らすためにキャッシュされますが、識別には使用されません。 DNが変更された場合、変更が検出されます。 内部ユーザー名はいたるところで使用されます。 マッピングをクリアすると、どこに残っているか分かります。 マッピングの消去はコンフィギュレーションセンシティブではなく、すべてのLDAP構成に影響します。 本番環境のマッピングをクリアしないでください。テスト環境または実験段階でのみ実施してください。",
"Clear Username-LDAP User Mapping" : "ユーザー名とLDAPユーザーのマッピングをクリアする",
"Clear Groupname-LDAP Group Mapping" : "グループ名とLDAPグループのマッピングをクリアする",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "無効なLDAPユーザーまたはグループのUUIDが見つかりました。LDAP設定の詳細設定に存在する\"UUID検出の上書き\"設定を再度ご確認いただき、更新するには\"occ ldap:update-uuid\"をご使用ください。"
+ "Invalid configuration. Please have a look at the logs for further details." : "設定が無効です。詳細はログを確認してください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ka.js b/apps/user_ldap/l10n/ka.js
index bb81b524d50..768c8ddd732 100644
--- a/apps/user_ldap/l10n/ka.js
+++ b/apps/user_ldap/l10n/ka.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
"Valid configuration, connection established!" : "Valid configuration, connection established!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
"No action specified" : "No action specified",
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
"Invalid data specified" : "Invalid data specified",
- " Could not set configuration %s" : " Could not set configuration %s",
"Action does not exist" : "Action does not exist",
"Renewing …" : "Renewing …",
"Very weak password" : "Very weak password",
@@ -54,7 +52,6 @@ OC.L10N.register(
"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.",
- "Password change rejected. Hint: " : "Password change rejected. Hint: ",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
@@ -217,6 +214,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign metadata. 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.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
"Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them."
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details."
},
"nplurals=2; plural=(n!=1);");
diff --git a/apps/user_ldap/l10n/ka.json b/apps/user_ldap/l10n/ka.json
index bc775eba946..bc1ae2d991c 100644
--- a/apps/user_ldap/l10n/ka.json
+++ b/apps/user_ldap/l10n/ka.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Invalid configuration: Anonymous binding is not allowed.",
"Valid configuration, connection established!" : "Valid configuration, connection established!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Valid configuration, but binding failed. Please check the server settings and credentials.",
- "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details.",
"No action specified" : "No action specified",
"No configuration specified" : "No configuration specified",
"No data specified" : "No data specified",
"Invalid data specified" : "Invalid data specified",
- " Could not set configuration %s" : " Could not set configuration %s",
"Action does not exist" : "Action does not exist",
"Renewing …" : "Renewing …",
"Very weak password" : "Very weak password",
@@ -52,7 +50,6 @@
"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.",
- "Password change rejected. Hint: " : "Password change rejected. Hint: ",
"Please login with the new password" : "Please login with the new password",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Your password will expire tomorrow.",
@@ -215,6 +212,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign metadata. 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.",
"Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping",
"Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them."
+ "Invalid configuration. Please have a look at the logs for further details." : "Invalid configuration. Please have a look at the logs for further details."
},"pluralForm" :"nplurals=2; plural=(n!=1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ka_GE.js b/apps/user_ldap/l10n/ka_GE.js
index e011c19cc2a..80c4b8c791d 100644
--- a/apps/user_ldap/l10n/ka_GE.js
+++ b/apps/user_ldap/l10n/ka_GE.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "არასწორი კონფიგურაცია: ანონიმური კავშირები არაა დაშვებული.",
"Valid configuration, connection established!" : "სწორი კონფიგურაცია, კავშირი დამყარებულია!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "სწორი კონფიგურაცია, თუმცა მიბმა ვერ მოხერხდა. გთხოვთ შეამოწმოთ სერვერის კონფიგურაცია და უფლებამოსილებები.",
- "Invalid configuration. Please have a look at the logs for further details." : "არასწორი კონფიგურაცია. დეტალებისთვის გთხოვთ გადახედოთ ლოგებს.",
"No action specified" : "ქმედება არ იყო სპეციფირებული",
"No configuration specified" : "კონფიგურაცია არ იყო სპეციფირებული",
"No data specified" : "მონაცემები არ იყო სპეციფირებული",
- " Could not set configuration %s" : "კონფიგურაციის %s დაყენება ვერ მოხერხდა",
"Action does not exist" : "ქმედება არ არსებობს",
"Renewing …" : "განხილვა …",
"Very weak password" : "ძალიან სუსტი პაროლი",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "გამოჩნდა არასპეციფირებული შეცდომა. გთხოვთ შეამოწმოთ ლოგი და პარამეტრები.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ძიების ფილტრი არასწორია, ეს შესაძლოა გამოეწვიათ ისეთ სინტაქსის პრობლემებს, როგორებიცაა გახსნილი და დახურული ფრჩხილების არაჯერადი რაოდენობა. გთხოვთ გადახედოთ.",
"Please provide a login name to test against" : "ტესტისთვის გთხოვთ მიუთითოთ ლოგინის სახელი",
- "Password change rejected. Hint: " : "პაროლის ცვლილება უარყოფილ იქნა. მითითება:",
"Please login with the new password" : "გთხოვთ გაიაროთ ავტორიზაცია ახალი პაროლით",
"Your password will expire tomorrow." : "თქვენი პაროლი გაუქმდება ხვალ.",
"Your password will expire today." : "თქვენი პაროლი გაუქმდება დღეს.",
@@ -171,6 +168,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "UUID ატრიბუტი ჯგუფებისთვის:",
"Username-LDAP User Mapping" : "Username-LDAP მომხმარებლის ბმები",
"Clear Username-LDAP User Mapping" : "Username-LDAP მომხმარებლის ბმების გასუფთავება",
- "Clear Groupname-LDAP Group Mapping" : "Groupname-LDAP ჯგუფის ბმების გასუფთავება"
+ "Clear Groupname-LDAP Group Mapping" : "Groupname-LDAP ჯგუფის ბმების გასუფთავება",
+ "Invalid configuration. Please have a look at the logs for further details." : "არასწორი კონფიგურაცია. დეტალებისთვის გთხოვთ გადახედოთ ლოგებს."
},
"nplurals=2; plural=(n!=1);");
diff --git a/apps/user_ldap/l10n/ka_GE.json b/apps/user_ldap/l10n/ka_GE.json
index f0042c13f7b..caef3b06b29 100644
--- a/apps/user_ldap/l10n/ka_GE.json
+++ b/apps/user_ldap/l10n/ka_GE.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "არასწორი კონფიგურაცია: ანონიმური კავშირები არაა დაშვებული.",
"Valid configuration, connection established!" : "სწორი კონფიგურაცია, კავშირი დამყარებულია!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "სწორი კონფიგურაცია, თუმცა მიბმა ვერ მოხერხდა. გთხოვთ შეამოწმოთ სერვერის კონფიგურაცია და უფლებამოსილებები.",
- "Invalid configuration. Please have a look at the logs for further details." : "არასწორი კონფიგურაცია. დეტალებისთვის გთხოვთ გადახედოთ ლოგებს.",
"No action specified" : "ქმედება არ იყო სპეციფირებული",
"No configuration specified" : "კონფიგურაცია არ იყო სპეციფირებული",
"No data specified" : "მონაცემები არ იყო სპეციფირებული",
- " Could not set configuration %s" : "კონფიგურაციის %s დაყენება ვერ მოხერხდა",
"Action does not exist" : "ქმედება არ არსებობს",
"Renewing …" : "განხილვა …",
"Very weak password" : "ძალიან სუსტი პაროლი",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "გამოჩნდა არასპეციფირებული შეცდომა. გთხოვთ შეამოწმოთ ლოგი და პარამეტრები.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ძიების ფილტრი არასწორია, ეს შესაძლოა გამოეწვიათ ისეთ სინტაქსის პრობლემებს, როგორებიცაა გახსნილი და დახურული ფრჩხილების არაჯერადი რაოდენობა. გთხოვთ გადახედოთ.",
"Please provide a login name to test against" : "ტესტისთვის გთხოვთ მიუთითოთ ლოგინის სახელი",
- "Password change rejected. Hint: " : "პაროლის ცვლილება უარყოფილ იქნა. მითითება:",
"Please login with the new password" : "გთხოვთ გაიაროთ ავტორიზაცია ახალი პაროლით",
"Your password will expire tomorrow." : "თქვენი პაროლი გაუქმდება ხვალ.",
"Your password will expire today." : "თქვენი პაროლი გაუქმდება დღეს.",
@@ -169,6 +166,7 @@
"UUID Attribute for Groups:" : "UUID ატრიბუტი ჯგუფებისთვის:",
"Username-LDAP User Mapping" : "Username-LDAP მომხმარებლის ბმები",
"Clear Username-LDAP User Mapping" : "Username-LDAP მომხმარებლის ბმების გასუფთავება",
- "Clear Groupname-LDAP Group Mapping" : "Groupname-LDAP ჯგუფის ბმების გასუფთავება"
+ "Clear Groupname-LDAP Group Mapping" : "Groupname-LDAP ჯგუფის ბმების გასუფთავება",
+ "Invalid configuration. Please have a look at the logs for further details." : "არასწორი კონფიგურაცია. დეტალებისთვის გთხოვთ გადახედოთ ლოგებს."
},"pluralForm" :"nplurals=2; plural=(n!=1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/km.js b/apps/user_ldap/l10n/km.js
deleted file mode 100644
index a42ee7b14f1..00000000000
--- a/apps/user_ldap/l10n/km.js
+++ /dev/null
@@ -1,17 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to delete the server configuration" : "លុប​ការ​កំណត់​រចនា​សម្ព័ន្ធ​ម៉ាស៊ីន​បម្រើ មិន​បាន​សម្រេច",
- "Do you really want to delete the current Server Configuration?" : "តើ​អ្នក​ពិត​ជា​ចង់​លុប​ការ​កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​បម្រើ​បច្ចុប្បន្ន​មែន​ទេ?",
- "Confirm Deletion" : "បញ្ជាក់​ការ​លុប",
- "Users" : "អ្នកប្រើ",
- "Groups" : "ក្រុ",
- "Help" : "ជំនួយ",
- "Host" : "ម៉ាស៊ីន​ផ្ទុក",
- "Port" : "ច្រក",
- "Password" : "ពាក្យសម្ងាត់",
- "Back" : "ត្រឡប់ក្រោយ",
- "Continue" : "បន្ត",
- "Advanced" : "កម្រិត​ខ្ពស់"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/km.json b/apps/user_ldap/l10n/km.json
deleted file mode 100644
index 5c8ec8897ba..00000000000
--- a/apps/user_ldap/l10n/km.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{ "translations": {
- "Failed to delete the server configuration" : "លុប​ការ​កំណត់​រចនា​សម្ព័ន្ធ​ម៉ាស៊ីន​បម្រើ មិន​បាន​សម្រេច",
- "Do you really want to delete the current Server Configuration?" : "តើ​អ្នក​ពិត​ជា​ចង់​លុប​ការ​កំណត់​រចនាសម្ព័ន្ធ​ម៉ាស៊ីន​បម្រើ​បច្ចុប្បន្ន​មែន​ទេ?",
- "Confirm Deletion" : "បញ្ជាក់​ការ​លុប",
- "Users" : "អ្នកប្រើ",
- "Groups" : "ក្រុ",
- "Help" : "ជំនួយ",
- "Host" : "ម៉ាស៊ីន​ផ្ទុក",
- "Port" : "ច្រក",
- "Password" : "ពាក្យសម្ងាត់",
- "Back" : "ត្រឡប់ក្រោយ",
- "Continue" : "បន្ត",
- "Advanced" : "កម្រិត​ខ្ពស់"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/kn.js b/apps/user_ldap/l10n/kn.js
deleted file mode 100644
index f70fc699983..00000000000
--- a/apps/user_ldap/l10n/kn.js
+++ /dev/null
@@ -1,12 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Users" : "ಬಳಕೆದಾರರು",
- "Groups" : "ಗುಂಪುಗಳು",
- "Help" : "ಸಹಾಯ",
- "Host" : "ಅತಿಥೆಯ-ಗಣಕ",
- "Port" : "ರೇವು",
- "Password" : "ಗುಪ್ತ ಪದ",
- "Continue" : "ಮುಂದುವರಿಸಿ"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/kn.json b/apps/user_ldap/l10n/kn.json
deleted file mode 100644
index 39705ffba6a..00000000000
--- a/apps/user_ldap/l10n/kn.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{ "translations": {
- "Users" : "ಬಳಕೆದಾರರು",
- "Groups" : "ಗುಂಪುಗಳು",
- "Help" : "ಸಹಾಯ",
- "Host" : "ಅತಿಥೆಯ-ಗಣಕ",
- "Port" : "ರೇವು",
- "Password" : "ಗುಪ್ತ ಪದ",
- "Continue" : "ಮುಂದುವರಿಸಿ"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js
index 1d3a31742a9..3081e8b2e5c 100644
--- a/apps/user_ldap/l10n/ko.js
+++ b/apps/user_ldap/l10n/ko.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "설정 잘못됨: 익명 바인딩이 허용되지 않습니다.",
"Valid configuration, connection established!" : "설정 올바름, 연결되었습니다!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "설정이 올바르지만 바인딩이 실패했습니다. 서버 설정과 인증 정보를 확인하십시오.",
- "Invalid configuration. Please have a look at the logs for further details." : "설정이 잘못되었습니다. 더 자세한 정보를 보려면 로그를 참조하십시오.",
"No action specified" : "동작이 지정되지 않음",
"No configuration specified" : "설정이 지정되지 않음",
"No data specified" : "데이터가 지정되지 않음",
"Invalid data specified" : "잘못된 데이터가 특정됨",
- " Could not set configuration %s" : " 설정 %s을(를) 지정할 수 없음",
"Action does not exist" : "동작이 존재하지 않음",
"Renewing …" : "갱신 중 …",
"Very weak password" : "매우 약한 암호",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "%uid 자리 비움자가 존재하지 않습니다. LDAP/AD에 조회할 때 로그인 사용자 이름으로 대체됩니다.",
"Please provide a login name to test against" : "테스트할 로그인 사용자 이름을 입력하십시오",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/AD 서버에서 memberOf를 지원하지 않아서 그룹 상자를 비활성화합니다.",
- "Password change rejected. Hint: " : "암호 변경이 거부되었습니다. 힌트:",
"Please login with the new password" : "새 암호로 로그인하십시오",
"LDAP User backend" : "사용자 백엔드",
"Your password will expire tomorrow." : "내 암호가 내일 만료됩니다.",
@@ -214,6 +211,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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 그룹 매핑 비우기",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "잘못된 LDAP 사용자 또는 그룹 UUID를 발견했습니다. LDAP 설정의 '전문가' 부분에서 \"Override UUID detection\"을 재확인하시고, \"occ ldap:update-uuid\" 명령어를 통해 이를 갱신하십시오."
+ "Invalid configuration. Please have a look at the logs for further details." : "설정이 잘못되었습니다. 더 자세한 정보를 보려면 로그를 참조하십시오."
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json
index 535085c661d..7f19afbeea7 100644
--- a/apps/user_ldap/l10n/ko.json
+++ b/apps/user_ldap/l10n/ko.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "설정 잘못됨: 익명 바인딩이 허용되지 않습니다.",
"Valid configuration, connection established!" : "설정 올바름, 연결되었습니다!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "설정이 올바르지만 바인딩이 실패했습니다. 서버 설정과 인증 정보를 확인하십시오.",
- "Invalid configuration. Please have a look at the logs for further details." : "설정이 잘못되었습니다. 더 자세한 정보를 보려면 로그를 참조하십시오.",
"No action specified" : "동작이 지정되지 않음",
"No configuration specified" : "설정이 지정되지 않음",
"No data specified" : "데이터가 지정되지 않음",
"Invalid data specified" : "잘못된 데이터가 특정됨",
- " Could not set configuration %s" : " 설정 %s을(를) 지정할 수 없음",
"Action does not exist" : "동작이 존재하지 않음",
"Renewing …" : "갱신 중 …",
"Very weak password" : "매우 약한 암호",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "%uid 자리 비움자가 존재하지 않습니다. LDAP/AD에 조회할 때 로그인 사용자 이름으로 대체됩니다.",
"Please provide a login name to test against" : "테스트할 로그인 사용자 이름을 입력하십시오",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/AD 서버에서 memberOf를 지원하지 않아서 그룹 상자를 비활성화합니다.",
- "Password change rejected. Hint: " : "암호 변경이 거부되었습니다. 힌트:",
"Please login with the new password" : "새 암호로 로그인하십시오",
"LDAP User backend" : "사용자 백엔드",
"Your password will expire tomorrow." : "내 암호가 내일 만료됩니다.",
@@ -212,6 +209,6 @@
"Usernames are used to store and assign metadata. 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 그룹 매핑 비우기",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "잘못된 LDAP 사용자 또는 그룹 UUID를 발견했습니다. LDAP 설정의 '전문가' 부분에서 \"Override UUID detection\"을 재확인하시고, \"occ ldap:update-uuid\" 명령어를 통해 이를 갱신하십시오."
+ "Invalid configuration. Please have a look at the logs for further details." : "설정이 잘못되었습니다. 더 자세한 정보를 보려면 로그를 참조하십시오."
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/lb.js b/apps/user_ldap/l10n/lb.js
deleted file mode 100644
index f62d2924488..00000000000
--- a/apps/user_ldap/l10n/lb.js
+++ /dev/null
@@ -1,51 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to delete the server configuration" : "D'Server-Konfiguratioun konnt net geläscht ginn",
- "The configuration is invalid: anonymous bind is not allowed." : "Dës Konfiguratioun ass ongëlteg: eng anonym Bindung ass net erlaabt.",
- "Action does not exist" : "Dës Aktioun gëtt et net",
- "Testing configuration…" : "D'Konfiguratioun gëtt getest...",
- "Configuration incorrect" : "D'Konfiguratioun ass net korrekt",
- "Configuration incomplete" : "D'Konfiguratioun ass net komplett",
- "Configuration OK" : "Konfiguratioun OK",
- "Select groups" : "Wiel Gruppen äus",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "D'Späicheren huet net geklappt. W.e.g. géi sécher dass Datebank an der Operatioun ass. Lued nach emol éiers de weider fiers.",
- "Select attributes" : "Wiel Attributer aus",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "De Benotzer konnt net fonnt ginn. W.e.g. kuck deng Login Attributer a Benotzernumm no. \n ",
- "_%s group found_::_%s groups found_" : ["%s Grupp fonnt","%s Gruppe fonnt"],
- "_%s user found_::_%s users found_" : ["%s Benotzer fonnt","%s Benotzere fonnt"],
- "Could not find the desired feature" : "Déi gewënschte Funktioun konnt net fonnt ginn",
- "Server" : "Server",
- "Users" : "Benotzer",
- "Groups" : "Gruppen",
- "Test Configuration" : "Konfiguratiounstest",
- "Help" : "Hëllef",
- "Groups meeting these criteria are available in %s:" : "D'Gruppen, déi dës Critèren erfëllen sinn am %s:",
- "Only these object classes:" : "Nëmmen des Klass vun Objeten:",
- "Only from these groups:" : "Nëmme vun dëse Gruppen:",
- "Search groups" : "Sich Gruppen",
- "Available groups" : "Disponibel Gruppen",
- "Selected groups" : "Ausgewielte Gruppen",
- "Test Loginname" : "Test Benotzernumm",
- "Verify settings" : "Astellungen iwwerpréiwen",
- "1. Server" : "1. Server",
- "%s. Server:" : "%s. Server",
- "Delete the current configuration" : "Läsch déi aktuell Konfiguratioun",
- "Host" : "Host",
- "Port" : "Port",
- "User DN" : "Benotzer DN",
- "Password" : "Passwuert",
- "Saving" : "Speicheren...",
- "Back" : "Zeréck",
- "Continue" : "Weider",
- "Advanced" : "Erweidert",
- "Connection Settings" : "D'Astellunge vun der Verbindung",
- "Configuration Active" : "D'Konfiguratioun ass aktiv",
- "When unchecked, this configuration will be skipped." : "Ouni Iwwerpréiwung wäert dës Konfiguratioun iwwergaange ginn.",
- "Directory Settings" : "Dossier's Astellungen",
- "in bytes" : "A Bytes",
- "Email Field" : "Email Feld",
- "Internal Username" : "Interne Benotzernumm",
- "Internal Username Attribute:" : "Interne Benotzernumm Attribut:"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/lb.json b/apps/user_ldap/l10n/lb.json
deleted file mode 100644
index e869a5821b1..00000000000
--- a/apps/user_ldap/l10n/lb.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{ "translations": {
- "Failed to delete the server configuration" : "D'Server-Konfiguratioun konnt net geläscht ginn",
- "The configuration is invalid: anonymous bind is not allowed." : "Dës Konfiguratioun ass ongëlteg: eng anonym Bindung ass net erlaabt.",
- "Action does not exist" : "Dës Aktioun gëtt et net",
- "Testing configuration…" : "D'Konfiguratioun gëtt getest...",
- "Configuration incorrect" : "D'Konfiguratioun ass net korrekt",
- "Configuration incomplete" : "D'Konfiguratioun ass net komplett",
- "Configuration OK" : "Konfiguratioun OK",
- "Select groups" : "Wiel Gruppen äus",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "D'Späicheren huet net geklappt. W.e.g. géi sécher dass Datebank an der Operatioun ass. Lued nach emol éiers de weider fiers.",
- "Select attributes" : "Wiel Attributer aus",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "De Benotzer konnt net fonnt ginn. W.e.g. kuck deng Login Attributer a Benotzernumm no. \n ",
- "_%s group found_::_%s groups found_" : ["%s Grupp fonnt","%s Gruppe fonnt"],
- "_%s user found_::_%s users found_" : ["%s Benotzer fonnt","%s Benotzere fonnt"],
- "Could not find the desired feature" : "Déi gewënschte Funktioun konnt net fonnt ginn",
- "Server" : "Server",
- "Users" : "Benotzer",
- "Groups" : "Gruppen",
- "Test Configuration" : "Konfiguratiounstest",
- "Help" : "Hëllef",
- "Groups meeting these criteria are available in %s:" : "D'Gruppen, déi dës Critèren erfëllen sinn am %s:",
- "Only these object classes:" : "Nëmmen des Klass vun Objeten:",
- "Only from these groups:" : "Nëmme vun dëse Gruppen:",
- "Search groups" : "Sich Gruppen",
- "Available groups" : "Disponibel Gruppen",
- "Selected groups" : "Ausgewielte Gruppen",
- "Test Loginname" : "Test Benotzernumm",
- "Verify settings" : "Astellungen iwwerpréiwen",
- "1. Server" : "1. Server",
- "%s. Server:" : "%s. Server",
- "Delete the current configuration" : "Läsch déi aktuell Konfiguratioun",
- "Host" : "Host",
- "Port" : "Port",
- "User DN" : "Benotzer DN",
- "Password" : "Passwuert",
- "Saving" : "Speicheren...",
- "Back" : "Zeréck",
- "Continue" : "Weider",
- "Advanced" : "Erweidert",
- "Connection Settings" : "D'Astellunge vun der Verbindung",
- "Configuration Active" : "D'Konfiguratioun ass aktiv",
- "When unchecked, this configuration will be skipped." : "Ouni Iwwerpréiwung wäert dës Konfiguratioun iwwergaange ginn.",
- "Directory Settings" : "Dossier's Astellungen",
- "in bytes" : "A Bytes",
- "Email Field" : "Email Feld",
- "Internal Username" : "Interne Benotzernumm",
- "Internal Username Attribute:" : "Interne Benotzernumm Attribut:"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/lo.js b/apps/user_ldap/l10n/lo.js
deleted file mode 100644
index 5494dcae62e..00000000000
--- a/apps/user_ldap/l10n/lo.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : [""],
- "_%s user found_::_%s users found_" : [""]
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/lo.json b/apps/user_ldap/l10n/lo.json
deleted file mode 100644
index 75f0f056cc4..00000000000
--- a/apps/user_ldap/l10n/lo.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : [""],
- "_%s user found_::_%s users found_" : [""]
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/lt_LT.js b/apps/user_ldap/l10n/lt_LT.js
index c36eee6ee44..9b5d942ba0e 100644
--- a/apps/user_ldap/l10n/lt_LT.js
+++ b/apps/user_ldap/l10n/lt_LT.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Neteisinga konfigūracija: Anoniminis prisijungimas neleidžiamas.",
"Valid configuration, connection established!" : "Konfigūracija teisinga, ryšys užmegztas!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigūracija teisinga, bet prisijungimas nepavyko. Patikrinkite serverio nustatymus ir prisijungimo duomenis.",
- "Invalid configuration. Please have a look at the logs for further details." : "Neteisinga konfigūracija. Išsamesnei informacijai, žiūrėkite žurnalus.",
"No action specified" : "Nenurodytas veiksmas",
"No configuration specified" : "Nenurodyta jokia konfigūracija",
"No data specified" : "Nepateikta duomenų",
- " Could not set configuration %s" : "Nepavyko nustatyti konfigūracijos %s",
"Action does not exist" : "Veiksmo nėra",
"Renewing …" : "Atnaujinama ...",
"Very weak password" : "Labai silpnas slaptažodis",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Įvyko nenustatyta klaida. Patikrinkite žurnalo įrašus ir nustatymus.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Paieškos filtras netinkamas, greičiausiai dėl sintaksės problemų, tokių kaip nevienodas atidarytų ir uždarų skliaustų skaičius. Prašome patikrinkite.",
"Please provide a login name to test against" : "Pateikite prisijungimo vardą, kurį norite patikrinti",
- "Password change rejected. Hint: " : "Slaptažodžio keitimas atmestas. Patarimas: ",
"Please login with the new password" : "Prisijunkite naudodami naują slaptažodį",
"LDAP User backend" : "LDAP naudotojo vidinė pusė",
"Your password will expire tomorrow." : "Jūsų slaptažodžio galiojimo laikas pasibaigs rytoj.",
@@ -72,6 +69,8 @@ OC.L10N.register(
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtras nurodo, kurios LDAP grupės turi turėti prieigą prie %s",
"Verify settings and count the groups" : "Patikrinkite nustatymus ir suskaičiuokite grupes",
"When logging in, %s will find the user based on the following attributes:" : "Prisijungiant, %s suras naudotoją, remiantis šiais požymiais:",
+ "LDAP/AD Username:" : "LDAP/AD naudotojo vardas:",
+ "LDAP/AD Email Address:" : "LDAP/AD el. pašto adresas:",
"Other Attributes:" : "Kiti požymiai:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Apibrėžia filtrą, kuris taikomas bandant prisijungti. \"%%uid\" pakeičia naudotojo vardą prisijungimo metu. Pavyzdys: \"uid=%%uid\"",
"Test Loginname" : "Ištestuokite prisijungimo vardą",
@@ -166,6 +165,7 @@ OC.L10N.register(
"UUID Attribute for Users:" : "UUID požymis naudotojams:",
"UUID Attribute for Groups:" : "UUID požymis grupėms:",
"Username-LDAP User Mapping" : "Naudotojo vardo - LDAP naudotojo sąsaja",
- "Clear Username-LDAP User Mapping" : "Išvalyti naudotojo vardo - LDAP naudotojo sąsają"
+ "Clear Username-LDAP User Mapping" : "Išvalyti naudotojo vardo - LDAP naudotojo sąsają",
+ "Invalid configuration. Please have a look at the logs for further details." : "Neteisinga konfigūracija. Išsamesnei informacijai, žiūrėkite žurnalus."
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/user_ldap/l10n/lt_LT.json b/apps/user_ldap/l10n/lt_LT.json
index bac1ea42a09..6eb4a8a3756 100644
--- a/apps/user_ldap/l10n/lt_LT.json
+++ b/apps/user_ldap/l10n/lt_LT.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Neteisinga konfigūracija: Anoniminis prisijungimas neleidžiamas.",
"Valid configuration, connection established!" : "Konfigūracija teisinga, ryšys užmegztas!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigūracija teisinga, bet prisijungimas nepavyko. Patikrinkite serverio nustatymus ir prisijungimo duomenis.",
- "Invalid configuration. Please have a look at the logs for further details." : "Neteisinga konfigūracija. Išsamesnei informacijai, žiūrėkite žurnalus.",
"No action specified" : "Nenurodytas veiksmas",
"No configuration specified" : "Nenurodyta jokia konfigūracija",
"No data specified" : "Nepateikta duomenų",
- " Could not set configuration %s" : "Nepavyko nustatyti konfigūracijos %s",
"Action does not exist" : "Veiksmo nėra",
"Renewing …" : "Atnaujinama ...",
"Very weak password" : "Labai silpnas slaptažodis",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Įvyko nenustatyta klaida. Patikrinkite žurnalo įrašus ir nustatymus.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Paieškos filtras netinkamas, greičiausiai dėl sintaksės problemų, tokių kaip nevienodas atidarytų ir uždarų skliaustų skaičius. Prašome patikrinkite.",
"Please provide a login name to test against" : "Pateikite prisijungimo vardą, kurį norite patikrinti",
- "Password change rejected. Hint: " : "Slaptažodžio keitimas atmestas. Patarimas: ",
"Please login with the new password" : "Prisijunkite naudodami naują slaptažodį",
"LDAP User backend" : "LDAP naudotojo vidinė pusė",
"Your password will expire tomorrow." : "Jūsų slaptažodžio galiojimo laikas pasibaigs rytoj.",
@@ -70,6 +67,8 @@
"The filter specifies which LDAP groups shall have access to the %s instance." : "Filtras nurodo, kurios LDAP grupės turi turėti prieigą prie %s",
"Verify settings and count the groups" : "Patikrinkite nustatymus ir suskaičiuokite grupes",
"When logging in, %s will find the user based on the following attributes:" : "Prisijungiant, %s suras naudotoją, remiantis šiais požymiais:",
+ "LDAP/AD Username:" : "LDAP/AD naudotojo vardas:",
+ "LDAP/AD Email Address:" : "LDAP/AD el. pašto adresas:",
"Other Attributes:" : "Kiti požymiai:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Apibrėžia filtrą, kuris taikomas bandant prisijungti. \"%%uid\" pakeičia naudotojo vardą prisijungimo metu. Pavyzdys: \"uid=%%uid\"",
"Test Loginname" : "Ištestuokite prisijungimo vardą",
@@ -164,6 +163,7 @@
"UUID Attribute for Users:" : "UUID požymis naudotojams:",
"UUID Attribute for Groups:" : "UUID požymis grupėms:",
"Username-LDAP User Mapping" : "Naudotojo vardo - LDAP naudotojo sąsaja",
- "Clear Username-LDAP User Mapping" : "Išvalyti naudotojo vardo - LDAP naudotojo sąsają"
+ "Clear Username-LDAP User Mapping" : "Išvalyti naudotojo vardo - LDAP naudotojo sąsają",
+ "Invalid configuration. Please have a look at the logs for further details." : "Neteisinga konfigūracija. Išsamesnei informacijai, žiūrėkite žurnalus."
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/lv.js b/apps/user_ldap/l10n/lv.js
deleted file mode 100644
index 2c623018a21..00000000000
--- a/apps/user_ldap/l10n/lv.js
+++ /dev/null
@@ -1,114 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Neizdevās nodzēstu samērošanu.",
- "Failed to delete the server configuration" : "Neizdevās izdzēst servera konfigurāciju",
- "No action specified" : "Nav norādīta darbība",
- "No configuration specified" : "Nav norādīta konfigurācija",
- "No data specified" : "Nav norādīti dati",
- " Could not set configuration %s" : "Nevarēja iestatīt konfigurāciju %s",
- "Action does not exist" : "Darbība neeksistē",
- "Very weak password" : "Ļoti vāja parole",
- "Weak password" : "Vāja parole",
- "So-so password" : "Normāla parole",
- "Good password" : "Laba parole",
- "Strong password" : "Lieliska parole",
- "The Base DN appears to be wrong" : "DN bāze šķiet nepareiza",
- "Testing configuration…" : "Konfigurācijas pārbaude...",
- "Configuration incorrect" : "Nepareiza konfigurācija",
- "Configuration incomplete" : "Nepilnīga konfigurācija",
- "Configuration OK" : "Konfigurācija OK",
- "Select groups" : "Izvēlieties grupas",
- "Select object classes" : "Atlasiet objektu klases",
- "Please check the credentials, they seem to be wrong." : "Lūdzu, pārbaudiet akreditācijas datus, tie šķiet nepareizi.",
- "Please specify the port, it could not be auto-detected." : "Lūdzu, norādiet portu, tas nevarēja būt noteikts automātiski.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "DN bāzi nevarēja noteikt, lūdzu, pārskatiet datus, resursdatoru un portu.",
- "Could not detect Base DN, please enter it manually." : "Nevarēja noteikt DN bāzi, lūdzu, ievadiet to manuāli.",
- "{nthServer}. Server" : "{nthServer}. Serveris",
- "No object found in the given Base DN. Please revise." : "Neviens objekts nav atrasts konkrētā DN bāzē. Lūdzu pārskatīt.",
- "More than 1,000 directory entries available." : "Vairāk nekā 1,000 kataloga ieraksti ir pieejami.",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Radās kļūda. Lūdzu, pārbaudiet bāzes DN, kā arī savienojuma iestatījumus vai akreditācijas datus.",
- "Do you really want to delete the current Server Configuration?" : "Vai tiešām vēlaties dzēst pašreizējo servera konfigurāciju?",
- "Confirm Deletion" : "Apstiprināt dzēšanu",
- "Mappings cleared successfully!" : "Kartējumi notīrīta veiksmīgi!",
- "Error while clearing the mappings." : "Kļūda, dzēšot kartējumus.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP operācijas kļūda. Anonīma sasaiste, iespējams, nav atļauta.",
- "Select attributes" : "Atlasīt atribūtus",
- "Password change rejected. Hint: " : "Paroles maiņas noraidīja. Padoms:",
- "Invalid Host" : "Nederīgs resursdators",
- "Test Configuration" : "Testa konfigurācija",
- "Help" : "Palīdzība",
- "Only these object classes:" : "Tikai šo objektu kategorijas:",
- "Only from these groups:" : "Tikai no šīm grupām:",
- "Search groups" : "Meklēt grupas",
- "Available groups" : "Pieejamās grupas",
- "Selected groups" : "Izvēlētās grupas",
- "Edit LDAP Query" : "Labot LDAP vaicājumu",
- "LDAP Filter:" : "LDAP filtrs:",
- "Verify settings and count the groups" : "Pārbaudiet iestatījumus un saskaitiet grupas",
- "Other Attributes:" : "Citi atribūti:",
- "Test Loginname" : "Pārbaudiet lietotājvārdu",
- "Verify settings" : "Pārbaudīt iestatījumus",
- "%s. Server:" : "%s. Serveris:",
- "Host" : "Resursdators",
- "Port" : "Ports",
- "Detect Port" : "Noteikt portu",
- "User DN" : "Lietotāja 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." : "Klienta lietotāja DN, ar ko veiks sasaisti, piemēram, uid=agent,dc=example,dc=com. Lai piekļūtu anonīmi, atstājiet DN un paroli tukšu.",
- "Password" : "Parole",
- "For anonymous access, leave DN and Password empty." : "Lai piekļūtu anonīmi, atstājiet DN un paroli tukšu.",
- "One Base DN per line" : "Viena bāzes DN rindā",
- "You can specify Base DN for users and groups in the Advanced tab" : "Lietotājiem un grupām var norādīt bāzes DN cilnē “Paplašināti”",
- "Detect Base DN" : "Noteikt bāzes DN",
- "Test Base DN" : "Testēt bāzes DN",
- "Verify settings and count users" : "Pārbaudiet iestatījumus un saskaitiet lietotājus",
- "Saving" : "Saglabā",
- "Back" : "Atpakaļ",
- "Continue" : "Turpināt",
- "An internal error occurred." : "Radās iekšēja kļūda.",
- "Please try again or contact your administrator." : "Lūdzu, mēģiniet vēlreiz vai sazinieties ar administratoru.",
- "Current password" : "Pašreizējā parole",
- "New password" : "Jauna parole",
- "Wrong password." : "Nepareiza parole.",
- "Cancel" : "Atcelt",
- "Server" : "Serveris",
- "Users" : "Lietotāji",
- "Login Attributes" : "Pieteikšanās atribūti",
- "Groups" : "Grupas",
- "Expert" : "Eksperts",
- "Advanced" : "Paplašināti",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Brīdinājums:</b> PHP LDAP modulis nav uzinstalēts, aizmugure nedarbosies. Lūdzu, prasiet savam sistēmas administratoram kādu no tām deaktivēt.",
- "Connection Settings" : "Savienojuma iestatījumi",
- "Configuration Active" : "Konfigurācija ir aktīva",
- "When unchecked, this configuration will be skipped." : "Ja nav atzīmēts, šī konfigurācija tiks izlaista.",
- "Backup (Replica) Host" : "Rezerves (kopija) serveris",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Norādi rezerves serveri (nav obligāti). Tam ir jābūt galvenā LDAP/AD servera kopijai.",
- "Backup (Replica) Port" : "Rezerves (kopijas) ports",
- "Disable Main Server" : "Deaktivēt galveno serveri",
- "Turn off SSL certificate validation." : "Izslēgt SSL sertifikātu validēšanu.",
- "Cache Time-To-Live" : "Kešatmiņas dzīvlaiks",
- "in seconds. A change empties the cache." : "sekundēs. Izmaiņas iztukšos kešatmiņu.",
- "Directory Settings" : "Direktorijas iestatījumi",
- "User Display Name Field" : "Lietotāja redzamā vārda lauks",
- "Base User Tree" : "Bāzes lietotāju koks",
- "One User Base DN per line" : "Viens lietotājs bāzes DN rindā",
- "User Search Attributes" : "Lietotāju meklēšanas atribūts",
- "Optional; one attribute per line" : "Neobligāti; viens atribūts rindā",
- "Group Display Name Field" : "Grupas redzamā nosaukuma lauks",
- "Base Group Tree" : "Bāzes grupu koks",
- "One Group Base DN per line" : "Viena grupu bāzes DN rindā",
- "Group Search Attributes" : "Grupu meklēšanas atribūts",
- "Group-Member association" : "Grupu piederības asociācija",
- "Enable LDAP password changes per user" : "Iespējot LDAP paroles maiņu katram lietotājam",
- "(New password is sent as plain text to LDAP)" : "(Jaunā parole tiek nosūtīta kā vienkāršs teksts ar LDAP)",
- "Special Attributes" : "Īpašie atribūti",
- "Quota Field" : "Kvotu lauks",
- "Quota Default" : "Kvotas noklusējums",
- "Email Field" : "E-pasta lauks",
- "User Home Folder Naming Rule" : "Lietotāja mājas mapes nosaukšanas kārtula",
- "Internal Username" : "Iekšējais lietotājvārds",
- "Override UUID detection" : "Ignorēt UUID noteikšanu",
- "UUID Attribute for Users:" : "UUID atribūti lietotājiem:",
- "UUID Attribute for Groups:" : "UUID atribūti grupām:"
-},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/user_ldap/l10n/lv.json b/apps/user_ldap/l10n/lv.json
deleted file mode 100644
index fdebc4b2287..00000000000
--- a/apps/user_ldap/l10n/lv.json
+++ /dev/null
@@ -1,112 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Neizdevās nodzēstu samērošanu.",
- "Failed to delete the server configuration" : "Neizdevās izdzēst servera konfigurāciju",
- "No action specified" : "Nav norādīta darbība",
- "No configuration specified" : "Nav norādīta konfigurācija",
- "No data specified" : "Nav norādīti dati",
- " Could not set configuration %s" : "Nevarēja iestatīt konfigurāciju %s",
- "Action does not exist" : "Darbība neeksistē",
- "Very weak password" : "Ļoti vāja parole",
- "Weak password" : "Vāja parole",
- "So-so password" : "Normāla parole",
- "Good password" : "Laba parole",
- "Strong password" : "Lieliska parole",
- "The Base DN appears to be wrong" : "DN bāze šķiet nepareiza",
- "Testing configuration…" : "Konfigurācijas pārbaude...",
- "Configuration incorrect" : "Nepareiza konfigurācija",
- "Configuration incomplete" : "Nepilnīga konfigurācija",
- "Configuration OK" : "Konfigurācija OK",
- "Select groups" : "Izvēlieties grupas",
- "Select object classes" : "Atlasiet objektu klases",
- "Please check the credentials, they seem to be wrong." : "Lūdzu, pārbaudiet akreditācijas datus, tie šķiet nepareizi.",
- "Please specify the port, it could not be auto-detected." : "Lūdzu, norādiet portu, tas nevarēja būt noteikts automātiski.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "DN bāzi nevarēja noteikt, lūdzu, pārskatiet datus, resursdatoru un portu.",
- "Could not detect Base DN, please enter it manually." : "Nevarēja noteikt DN bāzi, lūdzu, ievadiet to manuāli.",
- "{nthServer}. Server" : "{nthServer}. Serveris",
- "No object found in the given Base DN. Please revise." : "Neviens objekts nav atrasts konkrētā DN bāzē. Lūdzu pārskatīt.",
- "More than 1,000 directory entries available." : "Vairāk nekā 1,000 kataloga ieraksti ir pieejami.",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Radās kļūda. Lūdzu, pārbaudiet bāzes DN, kā arī savienojuma iestatījumus vai akreditācijas datus.",
- "Do you really want to delete the current Server Configuration?" : "Vai tiešām vēlaties dzēst pašreizējo servera konfigurāciju?",
- "Confirm Deletion" : "Apstiprināt dzēšanu",
- "Mappings cleared successfully!" : "Kartējumi notīrīta veiksmīgi!",
- "Error while clearing the mappings." : "Kļūda, dzēšot kartējumus.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP operācijas kļūda. Anonīma sasaiste, iespējams, nav atļauta.",
- "Select attributes" : "Atlasīt atribūtus",
- "Password change rejected. Hint: " : "Paroles maiņas noraidīja. Padoms:",
- "Invalid Host" : "Nederīgs resursdators",
- "Test Configuration" : "Testa konfigurācija",
- "Help" : "Palīdzība",
- "Only these object classes:" : "Tikai šo objektu kategorijas:",
- "Only from these groups:" : "Tikai no šīm grupām:",
- "Search groups" : "Meklēt grupas",
- "Available groups" : "Pieejamās grupas",
- "Selected groups" : "Izvēlētās grupas",
- "Edit LDAP Query" : "Labot LDAP vaicājumu",
- "LDAP Filter:" : "LDAP filtrs:",
- "Verify settings and count the groups" : "Pārbaudiet iestatījumus un saskaitiet grupas",
- "Other Attributes:" : "Citi atribūti:",
- "Test Loginname" : "Pārbaudiet lietotājvārdu",
- "Verify settings" : "Pārbaudīt iestatījumus",
- "%s. Server:" : "%s. Serveris:",
- "Host" : "Resursdators",
- "Port" : "Ports",
- "Detect Port" : "Noteikt portu",
- "User DN" : "Lietotāja 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." : "Klienta lietotāja DN, ar ko veiks sasaisti, piemēram, uid=agent,dc=example,dc=com. Lai piekļūtu anonīmi, atstājiet DN un paroli tukšu.",
- "Password" : "Parole",
- "For anonymous access, leave DN and Password empty." : "Lai piekļūtu anonīmi, atstājiet DN un paroli tukšu.",
- "One Base DN per line" : "Viena bāzes DN rindā",
- "You can specify Base DN for users and groups in the Advanced tab" : "Lietotājiem un grupām var norādīt bāzes DN cilnē “Paplašināti”",
- "Detect Base DN" : "Noteikt bāzes DN",
- "Test Base DN" : "Testēt bāzes DN",
- "Verify settings and count users" : "Pārbaudiet iestatījumus un saskaitiet lietotājus",
- "Saving" : "Saglabā",
- "Back" : "Atpakaļ",
- "Continue" : "Turpināt",
- "An internal error occurred." : "Radās iekšēja kļūda.",
- "Please try again or contact your administrator." : "Lūdzu, mēģiniet vēlreiz vai sazinieties ar administratoru.",
- "Current password" : "Pašreizējā parole",
- "New password" : "Jauna parole",
- "Wrong password." : "Nepareiza parole.",
- "Cancel" : "Atcelt",
- "Server" : "Serveris",
- "Users" : "Lietotāji",
- "Login Attributes" : "Pieteikšanās atribūti",
- "Groups" : "Grupas",
- "Expert" : "Eksperts",
- "Advanced" : "Paplašināti",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Brīdinājums:</b> PHP LDAP modulis nav uzinstalēts, aizmugure nedarbosies. Lūdzu, prasiet savam sistēmas administratoram kādu no tām deaktivēt.",
- "Connection Settings" : "Savienojuma iestatījumi",
- "Configuration Active" : "Konfigurācija ir aktīva",
- "When unchecked, this configuration will be skipped." : "Ja nav atzīmēts, šī konfigurācija tiks izlaista.",
- "Backup (Replica) Host" : "Rezerves (kopija) serveris",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Norādi rezerves serveri (nav obligāti). Tam ir jābūt galvenā LDAP/AD servera kopijai.",
- "Backup (Replica) Port" : "Rezerves (kopijas) ports",
- "Disable Main Server" : "Deaktivēt galveno serveri",
- "Turn off SSL certificate validation." : "Izslēgt SSL sertifikātu validēšanu.",
- "Cache Time-To-Live" : "Kešatmiņas dzīvlaiks",
- "in seconds. A change empties the cache." : "sekundēs. Izmaiņas iztukšos kešatmiņu.",
- "Directory Settings" : "Direktorijas iestatījumi",
- "User Display Name Field" : "Lietotāja redzamā vārda lauks",
- "Base User Tree" : "Bāzes lietotāju koks",
- "One User Base DN per line" : "Viens lietotājs bāzes DN rindā",
- "User Search Attributes" : "Lietotāju meklēšanas atribūts",
- "Optional; one attribute per line" : "Neobligāti; viens atribūts rindā",
- "Group Display Name Field" : "Grupas redzamā nosaukuma lauks",
- "Base Group Tree" : "Bāzes grupu koks",
- "One Group Base DN per line" : "Viena grupu bāzes DN rindā",
- "Group Search Attributes" : "Grupu meklēšanas atribūts",
- "Group-Member association" : "Grupu piederības asociācija",
- "Enable LDAP password changes per user" : "Iespējot LDAP paroles maiņu katram lietotājam",
- "(New password is sent as plain text to LDAP)" : "(Jaunā parole tiek nosūtīta kā vienkāršs teksts ar LDAP)",
- "Special Attributes" : "Īpašie atribūti",
- "Quota Field" : "Kvotu lauks",
- "Quota Default" : "Kvotas noklusējums",
- "Email Field" : "E-pasta lauks",
- "User Home Folder Naming Rule" : "Lietotāja mājas mapes nosaukšanas kārtula",
- "Internal Username" : "Iekšējais lietotājvārds",
- "Override UUID detection" : "Ignorēt UUID noteikšanu",
- "UUID Attribute for Users:" : "UUID atribūti lietotājiem:",
- "UUID Attribute for Groups:" : "UUID atribūti grupām:"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/mg.js b/apps/user_ldap/l10n/mg.js
deleted file mode 100644
index 95c97db2f9c..00000000000
--- a/apps/user_ldap/l10n/mg.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/mg.json b/apps/user_ldap/l10n/mg.json
deleted file mode 100644
index 8e0cd6f6783..00000000000
--- a/apps/user_ldap/l10n/mg.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/mk.js b/apps/user_ldap/l10n/mk.js
deleted file mode 100644
index 39fe8f5da90..00000000000
--- a/apps/user_ldap/l10n/mk.js
+++ /dev/null
@@ -1,18 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Неуспешно бришење на мапирањстс.",
- "Select groups" : "Одбери групи",
- "Confirm Deletion" : "Потврдете го бришењето",
- "Users" : "Корисници",
- "Groups" : "Групи",
- "Help" : "Помош",
- "Host" : "Домаќин",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Може да го скокнете протколот освен ако не ви треба SSL. Тогаш ставете ldaps://",
- "Port" : "Порта",
- "Password" : "Лозинка",
- "Back" : "Назад",
- "Continue" : "Продолжи",
- "Advanced" : "Напредно"
-},
-"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/user_ldap/l10n/mk.json b/apps/user_ldap/l10n/mk.json
deleted file mode 100644
index 238bd2a8ebc..00000000000
--- a/apps/user_ldap/l10n/mk.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Неуспешно бришење на мапирањстс.",
- "Select groups" : "Одбери групи",
- "Confirm Deletion" : "Потврдете го бришењето",
- "Users" : "Корисници",
- "Groups" : "Групи",
- "Help" : "Помош",
- "Host" : "Домаќин",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Може да го скокнете протколот освен ако не ви треба SSL. Тогаш ставете ldaps://",
- "Port" : "Порта",
- "Password" : "Лозинка",
- "Back" : "Назад",
- "Continue" : "Продолжи",
- "Advanced" : "Напредно"
-},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ml.js b/apps/user_ldap/l10n/ml.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/ml.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ml.json b/apps/user_ldap/l10n/ml.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/ml.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/mn.js b/apps/user_ldap/l10n/mn.js
deleted file mode 100644
index 304c0247840..00000000000
--- a/apps/user_ldap/l10n/mn.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Password" : "Нууц үг"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/mn.json b/apps/user_ldap/l10n/mn.json
deleted file mode 100644
index 13788221f43..00000000000
--- a/apps/user_ldap/l10n/mn.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Password" : "Нууц үг"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/mr.js b/apps/user_ldap/l10n/mr.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/mr.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/mr.json b/apps/user_ldap/l10n/mr.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/mr.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ms_MY.js b/apps/user_ldap/l10n/ms_MY.js
deleted file mode 100644
index 74bdc1b820f..00000000000
--- a/apps/user_ldap/l10n/ms_MY.js
+++ /dev/null
@@ -1,11 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Users" : "Pengguna",
- "Groups" : "Kumpulan",
- "Help" : "Bantuan",
- "Password" : "Kata laluan",
- "Back" : "Kembali",
- "Advanced" : "Maju"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/ms_MY.json b/apps/user_ldap/l10n/ms_MY.json
deleted file mode 100644
index 1d26cfcaf3d..00000000000
--- a/apps/user_ldap/l10n/ms_MY.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{ "translations": {
- "Users" : "Pengguna",
- "Groups" : "Kumpulan",
- "Help" : "Bantuan",
- "Password" : "Kata laluan",
- "Back" : "Kembali",
- "Advanced" : "Maju"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/mt_MT.js b/apps/user_ldap/l10n/mt_MT.js
deleted file mode 100644
index 8b3fcfae910..00000000000
--- a/apps/user_ldap/l10n/mt_MT.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["","","",""],
- "_%s user found_::_%s users found_" : ["","","",""]
-},
-"nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);");
diff --git a/apps/user_ldap/l10n/mt_MT.json b/apps/user_ldap/l10n/mt_MT.json
deleted file mode 100644
index cbda8c83cca..00000000000
--- a/apps/user_ldap/l10n/mt_MT.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["","","",""],
- "_%s user found_::_%s users found_" : ["","","",""]
-},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js
index 4e99f8cceea..50b9e2a40ff 100644
--- a/apps/user_ldap/l10n/nb.js
+++ b/apps/user_ldap/l10n/nb.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.",
"Valid configuration, connection established!" : "Gyldig oppsett, tilkoblet.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk server-oppsettet og påloggingsinformasjonen.",
- "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.",
"No action specified" : "Ingen handling spesifisert",
"No configuration specified" : "Ingen oppsett spesifisert",
"No data specified" : "Ingen data spesifisert",
"Invalid data specified" : "Ugyldige data er spesifisert",
- " Could not set configuration %s" : "Klarte ikke å utføre oppsett %s",
"Action does not exist" : "Handlingen finnes ikke",
"Renewing …" : "Fornyer…",
"Very weak password" : "Veldig svakt passord",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Plassholderen \"%uid\" mangler. Det vil bli erstattet med påloggingsnavnet når det spørres etter LDAP/AD.",
"Please provide a login name to test against" : "Oppgi et påloggingsnavn å teste mot",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP/AD-serveren ikke støtter memberOf.",
- "Password change rejected. Hint: " : "Passordendring avslått. Hint:",
"Please login with the new password" : "Logg inn med det nye passordet",
"LDAP User backend" : "LDAP-brukerbackend",
"Your password will expire tomorrow." : "Passordet ditt utløper i morgen.",
@@ -62,7 +59,6 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Passordet ditt utløper om %n dag.","Passordet ditt utløper om %n dager."],
"LDAP/AD integration" : "LDAP/AD-integrasjon",
"LDAP Connection" : "LDAP-forbindelse",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Binding mislyktes for denne LDAP-konfigurasjonen: %s","Binding mislyktes for disse LDAP-konfigurasjonene: %s"],
"Invalid LDAP UUIDs" : "Ugyldige LDAP UUID-er",
"None found" : "Ingen funnet",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Det er funnet ugyldige UUID-er for LDAP-brukere eller -grupper. Gå gjennom innstillingene for «Overstyr UUID-deteksjon» i Ekspert-delen av LDAP-konfigurasjonen, og bruk «occ ldap:update-uuid» for å oppdatere dem.",
@@ -209,6 +205,8 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Brukerprofil Overskrift vil bli satt fra det angitte attributtet",
"Biography Field" : "Biografifelt",
"User profile Biography will be set from the specified attribute" : "Brukerprofil Biografi vil bli satt fra det angitte attributtet",
+ "Birthdate Field" : "Felt for fødselsdato",
+ "User profile Date of birth will be set from the specified attribute" : "Brukerprofil Fødselsdato vil bli satt fra det angitte attributtet",
"Internal Username" : "Internt brukernavn",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Som standard vil det interne brukernavnet bli opprettet fra UUID-attributten. Den sørger for at brukernavnet er unikt og at tegn ikke trenger å konverteres. Det interne brukernavnet har en begrensning at kun disse tegnene er tillatt: [a-zA-Z0-9_.@-]. Andre tegn erstattes med deres ASCII-ekvivalent eller bare utelatt. Ved kollisjoner vil et tall legges til/økes. Det interne brukernavnet brukes til å identifisere en bruker internt. Det er også standardnavnet for brukerens hjemmeområde. Det er også en del av eksterne URL-er, for eksempel for alle DAV-tjenester. Med denne innstillingen kan standardoppførselen overstyres. Endringer vil bare ha effekt på nylig kartlagte (tillagte) LDAP-brukere. La det stå tomt for standard oppførsel.",
"Internal Username Attribute:" : "Attributt for internt brukernavn:",
@@ -220,6 +218,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brukernavn brukes til å lagre og tildele metadata. For å identifisere og gjenkjenne brukere nøyaktig, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en kartlegging fra brukernavn til LDAP-bruker. Det opprettede brukernavnet tilordnes UUID for LDAP-brukeren. I tillegg er DN også hurtigbufret for å redusere LDAP-interaksjon, men den brukes ikke til identifikasjon. Hvis DN endres, vil endringene bli funnet. Det interne brukernavnet brukes overalt. Å rydde kartleggingen vil ha rester overalt. Å rydde tilordningene er ikke konfigurasjonsfølsom, det påvirker alle LDAP-konfigurasjoner! Tøm aldri kartleggingen i et produksjonsmiljø, bare i et test- eller eksperimentelt stadium.",
"Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP bruker",
"Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP gruppe",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Det er funnet ugyldige UUID-er for LDAP-brukere eller -grupper. Gå gjennom innstillingene for «Overstyr UUID-deteksjon» i Ekspert-delen av LDAP-konfigurasjonen, og bruk «occ ldap:update-uuid» for å oppdatere dem."
+ "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json
index 985693db1de..d39154abc80 100644
--- a/apps/user_ldap/l10n/nb.json
+++ b/apps/user_ldap/l10n/nb.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Oppsettet er ugyldig: Anonym binding er ikke tillatt.",
"Valid configuration, connection established!" : "Gyldig oppsett, tilkoblet.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Oppsettet er i orden, men binding mislyktes. Sjekk server-oppsettet og påloggingsinformasjonen.",
- "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer.",
"No action specified" : "Ingen handling spesifisert",
"No configuration specified" : "Ingen oppsett spesifisert",
"No data specified" : "Ingen data spesifisert",
"Invalid data specified" : "Ugyldige data er spesifisert",
- " Could not set configuration %s" : "Klarte ikke å utføre oppsett %s",
"Action does not exist" : "Handlingen finnes ikke",
"Renewing …" : "Fornyer…",
"Very weak password" : "Veldig svakt passord",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Plassholderen \"%uid\" mangler. Det vil bli erstattet med påloggingsnavnet når det spørres etter LDAP/AD.",
"Please provide a login name to test against" : "Oppgi et påloggingsnavn å teste mot",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP/AD-serveren ikke støtter memberOf.",
- "Password change rejected. Hint: " : "Passordendring avslått. Hint:",
"Please login with the new password" : "Logg inn med det nye passordet",
"LDAP User backend" : "LDAP-brukerbackend",
"Your password will expire tomorrow." : "Passordet ditt utløper i morgen.",
@@ -60,7 +57,6 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Passordet ditt utløper om %n dag.","Passordet ditt utløper om %n dager."],
"LDAP/AD integration" : "LDAP/AD-integrasjon",
"LDAP Connection" : "LDAP-forbindelse",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Binding mislyktes for denne LDAP-konfigurasjonen: %s","Binding mislyktes for disse LDAP-konfigurasjonene: %s"],
"Invalid LDAP UUIDs" : "Ugyldige LDAP UUID-er",
"None found" : "Ingen funnet",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Det er funnet ugyldige UUID-er for LDAP-brukere eller -grupper. Gå gjennom innstillingene for «Overstyr UUID-deteksjon» i Ekspert-delen av LDAP-konfigurasjonen, og bruk «occ ldap:update-uuid» for å oppdatere dem.",
@@ -207,6 +203,8 @@
"User profile Headline will be set from the specified attribute" : "Brukerprofil Overskrift vil bli satt fra det angitte attributtet",
"Biography Field" : "Biografifelt",
"User profile Biography will be set from the specified attribute" : "Brukerprofil Biografi vil bli satt fra det angitte attributtet",
+ "Birthdate Field" : "Felt for fødselsdato",
+ "User profile Date of birth will be set from the specified attribute" : "Brukerprofil Fødselsdato vil bli satt fra det angitte attributtet",
"Internal Username" : "Internt brukernavn",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Som standard vil det interne brukernavnet bli opprettet fra UUID-attributten. Den sørger for at brukernavnet er unikt og at tegn ikke trenger å konverteres. Det interne brukernavnet har en begrensning at kun disse tegnene er tillatt: [a-zA-Z0-9_.@-]. Andre tegn erstattes med deres ASCII-ekvivalent eller bare utelatt. Ved kollisjoner vil et tall legges til/økes. Det interne brukernavnet brukes til å identifisere en bruker internt. Det er også standardnavnet for brukerens hjemmeområde. Det er også en del av eksterne URL-er, for eksempel for alle DAV-tjenester. Med denne innstillingen kan standardoppførselen overstyres. Endringer vil bare ha effekt på nylig kartlagte (tillagte) LDAP-brukere. La det stå tomt for standard oppførsel.",
"Internal Username Attribute:" : "Attributt for internt brukernavn:",
@@ -218,6 +216,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brukernavn brukes til å lagre og tildele metadata. For å identifisere og gjenkjenne brukere nøyaktig, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en kartlegging fra brukernavn til LDAP-bruker. Det opprettede brukernavnet tilordnes UUID for LDAP-brukeren. I tillegg er DN også hurtigbufret for å redusere LDAP-interaksjon, men den brukes ikke til identifikasjon. Hvis DN endres, vil endringene bli funnet. Det interne brukernavnet brukes overalt. Å rydde kartleggingen vil ha rester overalt. Å rydde tilordningene er ikke konfigurasjonsfølsom, det påvirker alle LDAP-konfigurasjoner! Tøm aldri kartleggingen i et produksjonsmiljø, bare i et test- eller eksperimentelt stadium.",
"Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP bruker",
"Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP gruppe",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Det er funnet ugyldige UUID-er for LDAP-brukere eller -grupper. Gå gjennom innstillingene for «Overstyr UUID-deteksjon» i Ekspert-delen av LDAP-konfigurasjonen, og bruk «occ ldap:update-uuid» for å oppdatere dem."
+ "Invalid configuration. Please have a look at the logs for further details." : "Oppsettet er ikke gyldig. Sjekk loggene for flere detaljer."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index 7e930736a89..2d3fd78aa99 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "De configuratie is ongeldig: anonieme bind is niet toegestaan.",
"Valid configuration, connection established!" : "Geldige configuratie, verbinding tot stand gebracht",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Geldige configuratie, maar Binding mislukte. Controleer de serverinstellingen en inloggegevens.",
- "Invalid configuration. Please have a look at the logs for further details." : "Ongeldige configuratie. Bekijk de logbestanden voor meer details.",
"No action specified" : "Geen actie opgegeven",
"No configuration specified" : "Geen configuratie opgegeven",
"No data specified" : "Geen gegevens verstrekt",
- " Could not set configuration %s" : "Kon configuratie %s niet instellen",
"Action does not exist" : "Actie bestaat niet",
"Renewing …" : "Herstellen ...",
"Very weak password" : "Zeer zwak wachtwoord",
@@ -53,7 +51,6 @@ OC.L10N.register(
"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.",
- "Password change rejected. Hint: " : "Wachtwoordwijziging geweigerd. Hint:",
"Please login with the new password" : "Login met je nieuwe wachtwoord",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Je wachtwoord vervalt morgen.",
@@ -179,14 +176,14 @@ OC.L10N.register(
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in een externe opslag configuratie wordt vervangen door de waarde van het gespecificeerde attribuut",
"Internal Username" : "Interne gebruikersnaam",
"Internal Username Attribute:" : "Interne gebruikersnaam attribuut:",
- "Override UUID detection" : "Negeren UUID detectie",
+ "Override UUID detection" : "UUID-detectie negeren",
"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." : "Standaard wordt het UUID-attribuut automatisch herkend. Het UUID attribuut wordt gebruikt om LDAP-gebruikers en -groepen uniek te identificeren. Ook zal de interne gebruikersnaam worden aangemaakt op basis van het UUID, tenzij deze hierboven anders is aangegeven. Je kunt de instelling overschrijven en zelf een waarde voor het attribuut opgeven. Je moet ervoor zorgen dat het ingestelde attribuut kan worden opgehaald voor zowel gebruikers als groepen en dat het uniek is. Laat het leeg voor standaard gedrag. Veranderingen worden alleen doorgevoerd op nieuw gekoppelde (toegevoegde) LDAP-gebruikers en-groepen.",
- "UUID Attribute for Users:" : "UUID attribuut voor gebruikers:",
- "UUID Attribute for Groups:" : "UUID attribuut voor groepen:",
+ "UUID Attribute for Users:" : "UUID-attribuut voor gebruikers:",
+ "UUID Attribute for Groups:" : "UUID-attribuut voor groepen:",
"Username-LDAP User Mapping" : "Gebruikersnaam-LDAP gebruikers vertaling",
"Usernames are used to store and assign metadata. 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." : "Gebruikersnamen worden gebruikt om metadata op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de gebruikersnaam naar een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne gebruikersnaam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.",
"Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling",
"Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Er zijn ongeldige UUID's van LDAP-gebruikers of -groepen gevonden. Controleer de instellingen voor \"UUID-detectie overschrijven\" in het Expert-gedeelte van de LDAP-configuratie en gebruik \"occ ldap:update-uuid\" om ze bij te werken."
+ "Invalid configuration. Please have a look at the logs for further details." : "Ongeldige configuratie. Bekijk de logbestanden voor meer details."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index 76cf050a15e..a54db70c9e7 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "De configuratie is ongeldig: anonieme bind is niet toegestaan.",
"Valid configuration, connection established!" : "Geldige configuratie, verbinding tot stand gebracht",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Geldige configuratie, maar Binding mislukte. Controleer de serverinstellingen en inloggegevens.",
- "Invalid configuration. Please have a look at the logs for further details." : "Ongeldige configuratie. Bekijk de logbestanden voor meer details.",
"No action specified" : "Geen actie opgegeven",
"No configuration specified" : "Geen configuratie opgegeven",
"No data specified" : "Geen gegevens verstrekt",
- " Could not set configuration %s" : "Kon configuratie %s niet instellen",
"Action does not exist" : "Actie bestaat niet",
"Renewing …" : "Herstellen ...",
"Very weak password" : "Zeer zwak wachtwoord",
@@ -51,7 +49,6 @@
"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.",
- "Password change rejected. Hint: " : "Wachtwoordwijziging geweigerd. Hint:",
"Please login with the new password" : "Login met je nieuwe wachtwoord",
"LDAP User backend" : "LDAP User backend",
"Your password will expire tomorrow." : "Je wachtwoord vervalt morgen.",
@@ -177,14 +174,14 @@
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in een externe opslag configuratie wordt vervangen door de waarde van het gespecificeerde attribuut",
"Internal Username" : "Interne gebruikersnaam",
"Internal Username Attribute:" : "Interne gebruikersnaam attribuut:",
- "Override UUID detection" : "Negeren UUID detectie",
+ "Override UUID detection" : "UUID-detectie negeren",
"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." : "Standaard wordt het UUID-attribuut automatisch herkend. Het UUID attribuut wordt gebruikt om LDAP-gebruikers en -groepen uniek te identificeren. Ook zal de interne gebruikersnaam worden aangemaakt op basis van het UUID, tenzij deze hierboven anders is aangegeven. Je kunt de instelling overschrijven en zelf een waarde voor het attribuut opgeven. Je moet ervoor zorgen dat het ingestelde attribuut kan worden opgehaald voor zowel gebruikers als groepen en dat het uniek is. Laat het leeg voor standaard gedrag. Veranderingen worden alleen doorgevoerd op nieuw gekoppelde (toegevoegde) LDAP-gebruikers en-groepen.",
- "UUID Attribute for Users:" : "UUID attribuut voor gebruikers:",
- "UUID Attribute for Groups:" : "UUID attribuut voor groepen:",
+ "UUID Attribute for Users:" : "UUID-attribuut voor gebruikers:",
+ "UUID Attribute for Groups:" : "UUID-attribuut voor groepen:",
"Username-LDAP User Mapping" : "Gebruikersnaam-LDAP gebruikers vertaling",
"Usernames are used to store and assign metadata. 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." : "Gebruikersnamen worden gebruikt om metadata op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de gebruikersnaam naar een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne gebruikersnaam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.",
"Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling",
"Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Er zijn ongeldige UUID's van LDAP-gebruikers of -groepen gevonden. Controleer de instellingen voor \"UUID-detectie overschrijven\" in het Expert-gedeelte van de LDAP-configuratie en gebruik \"occ ldap:update-uuid\" om ze bij te werken."
+ "Invalid configuration. Please have a look at the logs for further details." : "Ongeldige configuratie. Bekijk de logbestanden voor meer details."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nn_NO.js b/apps/user_ldap/l10n/nn_NO.js
deleted file mode 100644
index c14fc8b78b9..00000000000
--- a/apps/user_ldap/l10n/nn_NO.js
+++ /dev/null
@@ -1,14 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Select groups" : "Vel grupper",
- "Users" : "Brukarar",
- "Groups" : "Grupper",
- "Help" : "Hjelp",
- "Host" : "Tenar",
- "Password" : "Passord",
- "Back" : "Tilbake",
- "Continue" : "Gå vidare",
- "Advanced" : "Avansert"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/nn_NO.json b/apps/user_ldap/l10n/nn_NO.json
deleted file mode 100644
index 4cd54c39e08..00000000000
--- a/apps/user_ldap/l10n/nn_NO.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{ "translations": {
- "Select groups" : "Vel grupper",
- "Users" : "Brukarar",
- "Groups" : "Grupper",
- "Help" : "Hjelp",
- "Host" : "Tenar",
- "Password" : "Passord",
- "Back" : "Tilbake",
- "Continue" : "Gå vidare",
- "Advanced" : "Avansert"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/nqo.js b/apps/user_ldap/l10n/nqo.js
deleted file mode 100644
index 5494dcae62e..00000000000
--- a/apps/user_ldap/l10n/nqo.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : [""],
- "_%s user found_::_%s users found_" : [""]
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/nqo.json b/apps/user_ldap/l10n/nqo.json
deleted file mode 100644
index 75f0f056cc4..00000000000
--- a/apps/user_ldap/l10n/nqo.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : [""],
- "_%s user found_::_%s users found_" : [""]
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/oc.js b/apps/user_ldap/l10n/oc.js
deleted file mode 100644
index 4a06d436198..00000000000
--- a/apps/user_ldap/l10n/oc.js
+++ /dev/null
@@ -1,157 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Error al moment de la supression de las associacions.",
- "Failed to delete the server configuration" : "Fracàs de la supression de la configuracion del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuracion es pas valida : lo ligam anonim es pas autorizat.",
- "The configuration is valid and the connection could be established!" : "La configuracion es valida e la connexion pòt èsser establida !",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuracion es valabla, mas lo bind a fracassat. Verificatz los paramètres del servidor e tanben vòstres identificants de connexion.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuracion es pas valabla. Consultatz los logs per mai de detalhs.",
- "No action specified" : "Cap d'accion pas especificada",
- "No configuration specified" : "Cap de configuration pas especificada",
- "No data specified" : "Cap de donada pas especificada",
- " Could not set configuration %s" : "Impossible d'especificar la configuracion %s",
- "Action does not exist" : "L'accion existís pas",
- "The Base DN appears to be wrong" : "Lo DN de basa es erronèu",
- "Configuration incorrect" : "Configuracion incorrècta",
- "Configuration incomplete" : "Configuracion incompleta",
- "Configuration OK" : "Configuracion OK",
- "Select groups" : "Seleccionatz los gropes",
- "Select object classes" : "Seleccionar las classas d'objècte",
- "Please check the credentials, they seem to be wrong." : "Verificatz vòstras informacions d'identificacion",
- "Please specify the port, it could not be auto-detected." : "Especificatz lo pòrt, a pas pogut èsser detectat automaticament",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Lo DN de basa a pas pogut èsser detectat automaticament. Verificatz las informacions d'identificacion, l'òste e lo pòrt.",
- "Could not detect Base DN, please enter it manually." : "Impossible de detectar lo DN de basa, especificatz-lo manualament",
- "{nthServer}. Server" : "{nthServer}. Servidor",
- "No object found in the given Base DN. Please revise." : "Cap d'objècte pas trobat dins lo DN de basa especificat. Verificatz-lo.",
- "More than 1,000 directory entries available." : "I a mai de 1000 entradas de repertòri disponiblas.",
- " entries available within the provided Base DN" : "entradas disponiblas dins lo DN de basa especificat",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Una error s'es produsida. Verificatz lo DN de basa, e tanben los paramètres de connexion e las informacions d'identificacion.",
- "Do you really want to delete the current Server Configuration?" : "Sètz segur que volètz escafar la configuracion servidor actuala ?",
- "Confirm Deletion" : "Confirmar la supression",
- "Mappings cleared successfully!" : "Associacions suprimidas amb succès !",
- "Error while clearing the mappings." : "Error al moment de la supression de las associacions.",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Lo ligam anonim es pas autorizat. Mercé de provesir lo DN d'un utilizaire e un senhal.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "Error LDAP. La connexion anonima al servidor es probablament pas acceptada.",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Lo salvament a fracassat. Verificatz que la banca de donadas es operacionala. Recargatz abans de contunhar.",
- "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?" : "Cambiar de mòde activarà las requèstas LDAP automaticas. Segon la talha de vòstre annuari LDAP, aquò pòt préner del temps. Volètz totjorn cambiar de mòde ?",
- "Mode switch" : "Cambiar de mòde",
- "Select attributes" : "Seleccionar los atributs",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilizaire introbable. Verificatz los atributs de login e lo nom d'utilizaire. Filtre efectiu (de copiar-pegar per validar en linha de comanda):<br/>",
- "User found and settings verified." : "Utilizaire trobat e paramètres verificats.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres verificats, mas sol lo primièr utilizaire se poirà connectar. Utilizatz puslèu un filtre mens restrictiu.",
- "An unspecified error occurred. Please check the settings and the log." : "Una error desconeguda s'es produsida. Verificatz los paramètres e lo log.",
- "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Lo filtre de recèrca es pas valid, probablament a causa de problèmas de sintaxi tals coma de parentèsis mancantas. Corregissètz-los.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Una error s'es produsida al moment de la connexion al LDAP / AD. Verificatz l'òste, lo pòrt e las informacions d'identificacion.",
- "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La cadena %uid es mancanta. Aquesta cadena es remplaçada per l'identificant de connexion al moment de las requèstas LDAP / AD.",
- "Please provide a login name to test against" : "Indicatz un identificant de connexion amb lo qual cal testar.",
- "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Los gropes son desactivats perque lo servidor LDAP / AD pren pas en carga memberOf.",
- "_%s group found_::_%s groups found_" : ["%s grop trobat","%s gropes trobats"],
- "_%s user found_::_%s users found_" : ["%s utilizaire trobat","%s utilizaires trobats"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de detectar l'atribut que conten lo nom d'afichatge des utilizaires. Indicatz-lo vos-meteis dins los paramètres ldap avançats.",
- "Could not find the desired feature" : "Impossible de trobar la foncion desirada",
- "Invalid Host" : "Òste invalid",
- "Server" : "Servidor",
- "Users" : "Utilizaires",
- "Login Attributes" : "Atributs de login",
- "Groups" : "Gropes",
- "Test Configuration" : "Testar la configuracion",
- "Help" : "Ajuda",
- "Groups meeting these criteria are available in %s:" : "Los gropes que respèctan aquestes critèris son disponibles dins %s :",
- "Only these object classes:" : "Solament aquestas classes d'objèctes :",
- "Only from these groups:" : "Solament dins aquestes gropes :",
- "Search groups" : "Cercar dins los gropes",
- "Available groups" : "Gropes disponibles",
- "Selected groups" : "Gropes seleccionats",
- "Edit LDAP Query" : "Modificar la requèsta LDAP",
- "LDAP Filter:" : "Filtre LDAP :",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "Lo filtre especifica quins gropes LDAP an accès a l'instància %s.",
- "Verify settings and count groups" : "Verificar los paramètres e comptar los gropes",
- "When logging in, %s will find the user based on the following attributes:" : "Al login, %s cercarà l'utilizaire sus basa d'aquestes atributs :",
- "LDAP / AD Username:" : "Nom d'utilizaire LDAP / AD :",
- "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Autorizar lo login amb lo nom d'utilizaire LDAP / AD (uid o samaccountname, la deteccion es automatica). ",
- "LDAP / AD Email Address:" : "Adreça mail LDAP / AD :",
- "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Autorizar lo login amb una adreça mail. Mail e mailPrimaryAddress son autorizats.",
- "Other Attributes:" : "Autres atributs :",
- "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definís lo filtre d'aplicar al moment d'una temptativa de connexion. %%uid remplaça lo nom d'utilizaire. Exemple : \"uid=%%uid\"",
- "Test Loginname" : "Loginname de tèst",
- "Verify settings" : "Testar los paramètres",
- "1. Server" : "1. Servidor",
- "%s. Server:" : "%s. Servidor :",
- "Add a new and blank configuration" : "Apondre una novèla configuracion verge",
- "Copy current configuration into new directory binding" : "Copiar la configuracion actuala cap a una novèla",
- "Delete the current configuration" : "Suprimir la configuracion actuala",
- "Host" : "Òste",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Podètz ometre lo protocòl, levat se avètz besonh de SSL. Dins aqueste cas, prefixatz amb ldaps://",
- "Port" : "Pòrt",
- "Detect Port" : "Detectar lo pòrt",
- "User DN" : "DN Utilizaire",
- "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'utilizaire client pel qual la ligason se deu far, per exemple uid=agent,dc=example,dc=com. Per un accès anonim, daissar lo DN e lo senhal voids.",
- "Password" : "Senhal",
- "For anonymous access, leave DN and Password empty." : "Per un accès anonim, daissar lo DN utilizaire e lo senhal voids.",
- "One Base DN per line" : "Un DN de basa per linha",
- "You can specify Base DN for users and groups in the Advanced tab" : "Podètz especificar los DN de basa de vòstres utilizaires e gropes via l'onglet Avançat",
- "Detect Base DN" : "Detectar lo DN de basa",
- "Test Base DN" : "Testar lo DN de basa",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita las requèstas LDAP automaticas. Melhor per las installacions de grand ample, mas demanda de coneissenças en LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Sasir los filtres LDAP manualament (recomandat pels annuaris de grand ample)",
- "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." : "Las classas d'objèctes frequentas pels utilizaires son : organizationalPerson, person, user e inetOrgPerson. Se sètz pas segur de la classa d'utilizar, demandatz a l'administrator de l'annuari.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "Lo filtre especifica quins utilizaires LDAP auràn accès a l'instància %s.",
- "Verify settings and count users" : "Verificar los paramètres e comptar los utilizaires",
- "Saving" : "Enregistrament...",
- "Back" : "Retorn",
- "Continue" : "Contunhar",
- "LDAP" : "LDAP",
- "Expert" : "Expèrt",
- "Advanced" : "Avançat",
- "<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>Avertiment :</b> Las aplicacions user_ldap e user_webdavauth son incompatiblas. De disfoncionaments se pòdon provesir. Contactatz vòstre administrator sistèma per que ne desactive una.",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Atencion :</b> Lo modul php LDAP es pas installat, per consequéncia aquesta extension poirà pas foncionar. Contactatz vòstre administrator sistèma per tal que l'installe.",
- "Connection Settings" : "Paramètres de connexion",
- "Configuration Active" : "Configuracion activa",
- "When unchecked, this configuration will be skipped." : "Quand pas marcada, la configuracion serà ignorada.",
- "Backup (Replica) Host" : "Servidor de backup (replica)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Provesir un servidor de backup opcional. Se deu agir d'una replica del servidor LDAP/AD principal.",
- "Backup (Replica) Port" : "Pòrt del servidor de backup (replica)",
- "Disable Main Server" : "Desactivar lo servidor principal",
- "Only connect to the replica server." : "Se connectar unicament a la replica",
- "Turn off SSL certificate validation." : "Desactivar la validacion dels certificats SSL",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Pas recomandat, d'utilizar amb d'objectius de tèsts unicament. Se la connexion fonciona pas qu'amb aquesta opcion, importatz lo certificat SSL del servidor LDAP dins lo servidor %s.",
- "Cache Time-To-Live" : "Durada de vida de l'escondedor (TTL)",
- "in seconds. A change empties the cache." : "en segondas. Tot cambiament voida l'escondedor.",
- "Directory Settings" : "Paramètres del repertòri",
- "User Display Name Field" : "Camp \"nom d'afichatge\" de l'utilizaire",
- "The LDAP attribute to use to generate the user's display name." : "L'atribut LDAP utilizat per generar lo nom d'afichatge de l'utilizaire.",
- "Base User Tree" : "DN raiç de l'arbre utilizaires",
- "One User Base DN per line" : "Un DN de basa utilizaire per linha",
- "User Search Attributes" : "Atributs de recèrca utilizaires",
- "Optional; one attribute per line" : "Opcional, un atribut per linha",
- "Group Display Name Field" : "Camp \"nom d'afichatge\" del grop",
- "The LDAP attribute to use to generate the groups's display name." : "L'atribut LDAP utilizat per generar lo nom d'afichatge del grop.",
- "Base Group Tree" : "DN raiç de l'arbre gropes",
- "One Group Base DN per line" : "Un DN de basa grop per linha",
- "Group Search Attributes" : "Atributs de recèrca des gropes",
- "Group-Member association" : "Associacion grop-membre",
- "Nested Groups" : "Gropes imbricats",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Se activat, los gropes que contenon d'autres gropes son preses en carga (fonciona unicament se l'atribut membre del grop conten de DNs).",
- "Paging chunksize" : "Paging chunksize",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize utilizada per las recèrcas LDAP paginadas que pòdon tornar de resultats per lòts coma una enumeracion d'utilizaires o de gropes. (Configurar a 0 per desactivar las recèrcas LDAP paginadas)",
- "Special Attributes" : "Atributs especials",
- "Quota Field" : "Camp del quòta",
- "Quota Default" : "Quòta per defaut",
- "in bytes" : "en octets",
- "Email Field" : "Camp Email",
- "User Home Folder Naming Rule" : "Règla de nomenatge del repertòri utilizaire",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Daissar void per user name (defaut). Podètz tanben especificar un atribut LDAP / AD.",
- "Internal Username" : "Nom d'utilizaire intèrne",
- "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." : "Per defaut lo nom d'utilizaire intèrne serà creat a partir de l'atribut UUID. Aquò permet d'assegurar que lo nom d'utilizaire es unic e que los caractèrs necessitan pas de conversion. Lo nom d'utilizaire intèrne deu contenir unicament los caractèrs seguents : [ a-zA-Z0-9_.@- ]. Los autres caractèrs son remplaçats per lor correspondéncia ASCII o simplament omeses. En cas de collision, un nombre es apondut/incrementat. Lo nom d'utilizaire intèrne es utilizat per identificar l'utilizaire al dintre del sistèma. Es tanben lo nom per defaut del repertòri utilizaire dins ownCloud. Fa tanben partida de certans URL de servicis, per exemple per totes los servicis *DAV. Lo comportament per defaut pòt èsser modificat amb l'ajuda d'aqueste paramètre. Per obtenir un comportament similar a las versions precedentas a ownCloud 5, sasir lo nom d'utilizaire d'afichar dins lo camp seguent. Daissar a blanc pel comportement per defaut. Las modificacions prendràn efièch solament pels novèls (aponduts) utilizaires LDAP.",
- "Internal Username Attribute:" : "Nom d'utilizaire intèrne :",
- "Override UUID detection" : "Passar outra la deteccion des 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." : "Per defaut, l'atribut UUID es detectat automaticament. Aqueste atribut es utilizat per identificar los utilizaires e gropes de faiçon fisabla. Un nom d'utilizaire intèrne basat sus l'UUID serà automaticament creat, levat s'es especificat autrament çaisús. Podètz modificar aqueste comportament e definir l'atribut que volètz. Vos cal alara vos assegurar que l'atribut que volètz pòt èsser recuperat pels utilizaires e tanben pels gropes e que siá unic. Daissar a blanc pel comportament per defaut. Las modificacions seràn efectivas unicament pels novèls (aponduts) utilizaires e gropes LDAP.",
- "UUID Attribute for Users:" : "Atribut UUID pels Utilizaires :",
- "UUID Attribute for Groups:" : "Atribut UUID pels Gropes :",
- "Username-LDAP User Mapping" : "Associacion Nom d'utilizaire-Utilizaire LDAP",
- "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los noms d'utilizaires son utilizats per l'emmagazinatge e l'assignacion de (meta) donadas. Per identificar e reconéisser precisament los utilizaires, cada utilizaire LDAP aurà un nom intèrne especific. Aquò requerís l'associacion d'un nom d'utilizaire ownCloud a un nom d'utilizaire LDAP. Lo nom d'utilizaire creat es associat a l'atribut UUID de l'utilizaire LDAP. Amai, lo DN es memorizat en escondedor per limitar las interaccions LDAP mas es pas utilizat per l'identificacion. Se lo DN es modificat, aquelas modificacions seràn retrobadas. Sol lo nom intèrne a ownCloud es utilizat al dintre del produch. Suprimir las associacions crearà d'orfanèls e l'accion afectarà totas las configuracions LDAP. SUPRIMISSÈTZ PAS JAMAI LAS ASSOCIACIONS EN ENVIRONAMENT DE PRODUCCION, mas unicament sus d'environaments de tèsts e d'experimentacions.",
- "Clear Username-LDAP User Mapping" : "Suprimir l'associacion utilizaire intèrne-utilizaire LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Suprimir l'associacion nom de grop-grop LDAP"
-},
-"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/oc.json b/apps/user_ldap/l10n/oc.json
deleted file mode 100644
index ed63543180a..00000000000
--- a/apps/user_ldap/l10n/oc.json
+++ /dev/null
@@ -1,155 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Error al moment de la supression de las associacions.",
- "Failed to delete the server configuration" : "Fracàs de la supression de la configuracion del servidor",
- "The configuration is invalid: anonymous bind is not allowed." : "La configuracion es pas valida : lo ligam anonim es pas autorizat.",
- "The configuration is valid and the connection could be established!" : "La configuracion es valida e la connexion pòt èsser establida !",
- "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuracion es valabla, mas lo bind a fracassat. Verificatz los paramètres del servidor e tanben vòstres identificants de connexion.",
- "The configuration is invalid. Please have a look at the logs for further details." : "La configuracion es pas valabla. Consultatz los logs per mai de detalhs.",
- "No action specified" : "Cap d'accion pas especificada",
- "No configuration specified" : "Cap de configuration pas especificada",
- "No data specified" : "Cap de donada pas especificada",
- " Could not set configuration %s" : "Impossible d'especificar la configuracion %s",
- "Action does not exist" : "L'accion existís pas",
- "The Base DN appears to be wrong" : "Lo DN de basa es erronèu",
- "Configuration incorrect" : "Configuracion incorrècta",
- "Configuration incomplete" : "Configuracion incompleta",
- "Configuration OK" : "Configuracion OK",
- "Select groups" : "Seleccionatz los gropes",
- "Select object classes" : "Seleccionar las classas d'objècte",
- "Please check the credentials, they seem to be wrong." : "Verificatz vòstras informacions d'identificacion",
- "Please specify the port, it could not be auto-detected." : "Especificatz lo pòrt, a pas pogut èsser detectat automaticament",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "Lo DN de basa a pas pogut èsser detectat automaticament. Verificatz las informacions d'identificacion, l'òste e lo pòrt.",
- "Could not detect Base DN, please enter it manually." : "Impossible de detectar lo DN de basa, especificatz-lo manualament",
- "{nthServer}. Server" : "{nthServer}. Servidor",
- "No object found in the given Base DN. Please revise." : "Cap d'objècte pas trobat dins lo DN de basa especificat. Verificatz-lo.",
- "More than 1,000 directory entries available." : "I a mai de 1000 entradas de repertòri disponiblas.",
- " entries available within the provided Base DN" : "entradas disponiblas dins lo DN de basa especificat",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Una error s'es produsida. Verificatz lo DN de basa, e tanben los paramètres de connexion e las informacions d'identificacion.",
- "Do you really want to delete the current Server Configuration?" : "Sètz segur que volètz escafar la configuracion servidor actuala ?",
- "Confirm Deletion" : "Confirmar la supression",
- "Mappings cleared successfully!" : "Associacions suprimidas amb succès !",
- "Error while clearing the mappings." : "Error al moment de la supression de las associacions.",
- "Anonymous bind is not allowed. Please provide a User DN and Password." : "Lo ligam anonim es pas autorizat. Mercé de provesir lo DN d'un utilizaire e un senhal.",
- "LDAP Operations error. Anonymous bind might not be allowed." : "Error LDAP. La connexion anonima al servidor es probablament pas acceptada.",
- "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Lo salvament a fracassat. Verificatz que la banca de donadas es operacionala. Recargatz abans de contunhar.",
- "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?" : "Cambiar de mòde activarà las requèstas LDAP automaticas. Segon la talha de vòstre annuari LDAP, aquò pòt préner del temps. Volètz totjorn cambiar de mòde ?",
- "Mode switch" : "Cambiar de mòde",
- "Select attributes" : "Seleccionar los atributs",
- "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Utilizaire introbable. Verificatz los atributs de login e lo nom d'utilizaire. Filtre efectiu (de copiar-pegar per validar en linha de comanda):<br/>",
- "User found and settings verified." : "Utilizaire trobat e paramètres verificats.",
- "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Paramètres verificats, mas sol lo primièr utilizaire se poirà connectar. Utilizatz puslèu un filtre mens restrictiu.",
- "An unspecified error occurred. Please check the settings and the log." : "Una error desconeguda s'es produsida. Verificatz los paramètres e lo log.",
- "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Lo filtre de recèrca es pas valid, probablament a causa de problèmas de sintaxi tals coma de parentèsis mancantas. Corregissètz-los.",
- "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Una error s'es produsida al moment de la connexion al LDAP / AD. Verificatz l'òste, lo pòrt e las informacions d'identificacion.",
- "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La cadena %uid es mancanta. Aquesta cadena es remplaçada per l'identificant de connexion al moment de las requèstas LDAP / AD.",
- "Please provide a login name to test against" : "Indicatz un identificant de connexion amb lo qual cal testar.",
- "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Los gropes son desactivats perque lo servidor LDAP / AD pren pas en carga memberOf.",
- "_%s group found_::_%s groups found_" : ["%s grop trobat","%s gropes trobats"],
- "_%s user found_::_%s users found_" : ["%s utilizaire trobat","%s utilizaires trobats"],
- "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de detectar l'atribut que conten lo nom d'afichatge des utilizaires. Indicatz-lo vos-meteis dins los paramètres ldap avançats.",
- "Could not find the desired feature" : "Impossible de trobar la foncion desirada",
- "Invalid Host" : "Òste invalid",
- "Server" : "Servidor",
- "Users" : "Utilizaires",
- "Login Attributes" : "Atributs de login",
- "Groups" : "Gropes",
- "Test Configuration" : "Testar la configuracion",
- "Help" : "Ajuda",
- "Groups meeting these criteria are available in %s:" : "Los gropes que respèctan aquestes critèris son disponibles dins %s :",
- "Only these object classes:" : "Solament aquestas classes d'objèctes :",
- "Only from these groups:" : "Solament dins aquestes gropes :",
- "Search groups" : "Cercar dins los gropes",
- "Available groups" : "Gropes disponibles",
- "Selected groups" : "Gropes seleccionats",
- "Edit LDAP Query" : "Modificar la requèsta LDAP",
- "LDAP Filter:" : "Filtre LDAP :",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "Lo filtre especifica quins gropes LDAP an accès a l'instància %s.",
- "Verify settings and count groups" : "Verificar los paramètres e comptar los gropes",
- "When logging in, %s will find the user based on the following attributes:" : "Al login, %s cercarà l'utilizaire sus basa d'aquestes atributs :",
- "LDAP / AD Username:" : "Nom d'utilizaire LDAP / AD :",
- "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Autorizar lo login amb lo nom d'utilizaire LDAP / AD (uid o samaccountname, la deteccion es automatica). ",
- "LDAP / AD Email Address:" : "Adreça mail LDAP / AD :",
- "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Autorizar lo login amb una adreça mail. Mail e mailPrimaryAddress son autorizats.",
- "Other Attributes:" : "Autres atributs :",
- "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definís lo filtre d'aplicar al moment d'una temptativa de connexion. %%uid remplaça lo nom d'utilizaire. Exemple : \"uid=%%uid\"",
- "Test Loginname" : "Loginname de tèst",
- "Verify settings" : "Testar los paramètres",
- "1. Server" : "1. Servidor",
- "%s. Server:" : "%s. Servidor :",
- "Add a new and blank configuration" : "Apondre una novèla configuracion verge",
- "Copy current configuration into new directory binding" : "Copiar la configuracion actuala cap a una novèla",
- "Delete the current configuration" : "Suprimir la configuracion actuala",
- "Host" : "Òste",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Podètz ometre lo protocòl, levat se avètz besonh de SSL. Dins aqueste cas, prefixatz amb ldaps://",
- "Port" : "Pòrt",
- "Detect Port" : "Detectar lo pòrt",
- "User DN" : "DN Utilizaire",
- "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'utilizaire client pel qual la ligason se deu far, per exemple uid=agent,dc=example,dc=com. Per un accès anonim, daissar lo DN e lo senhal voids.",
- "Password" : "Senhal",
- "For anonymous access, leave DN and Password empty." : "Per un accès anonim, daissar lo DN utilizaire e lo senhal voids.",
- "One Base DN per line" : "Un DN de basa per linha",
- "You can specify Base DN for users and groups in the Advanced tab" : "Podètz especificar los DN de basa de vòstres utilizaires e gropes via l'onglet Avançat",
- "Detect Base DN" : "Detectar lo DN de basa",
- "Test Base DN" : "Testar lo DN de basa",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita las requèstas LDAP automaticas. Melhor per las installacions de grand ample, mas demanda de coneissenças en LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Sasir los filtres LDAP manualament (recomandat pels annuaris de grand ample)",
- "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." : "Las classas d'objèctes frequentas pels utilizaires son : organizationalPerson, person, user e inetOrgPerson. Se sètz pas segur de la classa d'utilizar, demandatz a l'administrator de l'annuari.",
- "The filter specifies which LDAP users shall have access to the %s instance." : "Lo filtre especifica quins utilizaires LDAP auràn accès a l'instància %s.",
- "Verify settings and count users" : "Verificar los paramètres e comptar los utilizaires",
- "Saving" : "Enregistrament...",
- "Back" : "Retorn",
- "Continue" : "Contunhar",
- "LDAP" : "LDAP",
- "Expert" : "Expèrt",
- "Advanced" : "Avançat",
- "<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>Avertiment :</b> Las aplicacions user_ldap e user_webdavauth son incompatiblas. De disfoncionaments se pòdon provesir. Contactatz vòstre administrator sistèma per que ne desactive una.",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Atencion :</b> Lo modul php LDAP es pas installat, per consequéncia aquesta extension poirà pas foncionar. Contactatz vòstre administrator sistèma per tal que l'installe.",
- "Connection Settings" : "Paramètres de connexion",
- "Configuration Active" : "Configuracion activa",
- "When unchecked, this configuration will be skipped." : "Quand pas marcada, la configuracion serà ignorada.",
- "Backup (Replica) Host" : "Servidor de backup (replica)",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Provesir un servidor de backup opcional. Se deu agir d'una replica del servidor LDAP/AD principal.",
- "Backup (Replica) Port" : "Pòrt del servidor de backup (replica)",
- "Disable Main Server" : "Desactivar lo servidor principal",
- "Only connect to the replica server." : "Se connectar unicament a la replica",
- "Turn off SSL certificate validation." : "Desactivar la validacion dels certificats SSL",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Pas recomandat, d'utilizar amb d'objectius de tèsts unicament. Se la connexion fonciona pas qu'amb aquesta opcion, importatz lo certificat SSL del servidor LDAP dins lo servidor %s.",
- "Cache Time-To-Live" : "Durada de vida de l'escondedor (TTL)",
- "in seconds. A change empties the cache." : "en segondas. Tot cambiament voida l'escondedor.",
- "Directory Settings" : "Paramètres del repertòri",
- "User Display Name Field" : "Camp \"nom d'afichatge\" de l'utilizaire",
- "The LDAP attribute to use to generate the user's display name." : "L'atribut LDAP utilizat per generar lo nom d'afichatge de l'utilizaire.",
- "Base User Tree" : "DN raiç de l'arbre utilizaires",
- "One User Base DN per line" : "Un DN de basa utilizaire per linha",
- "User Search Attributes" : "Atributs de recèrca utilizaires",
- "Optional; one attribute per line" : "Opcional, un atribut per linha",
- "Group Display Name Field" : "Camp \"nom d'afichatge\" del grop",
- "The LDAP attribute to use to generate the groups's display name." : "L'atribut LDAP utilizat per generar lo nom d'afichatge del grop.",
- "Base Group Tree" : "DN raiç de l'arbre gropes",
- "One Group Base DN per line" : "Un DN de basa grop per linha",
- "Group Search Attributes" : "Atributs de recèrca des gropes",
- "Group-Member association" : "Associacion grop-membre",
- "Nested Groups" : "Gropes imbricats",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Se activat, los gropes que contenon d'autres gropes son preses en carga (fonciona unicament se l'atribut membre del grop conten de DNs).",
- "Paging chunksize" : "Paging chunksize",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize utilizada per las recèrcas LDAP paginadas que pòdon tornar de resultats per lòts coma una enumeracion d'utilizaires o de gropes. (Configurar a 0 per desactivar las recèrcas LDAP paginadas)",
- "Special Attributes" : "Atributs especials",
- "Quota Field" : "Camp del quòta",
- "Quota Default" : "Quòta per defaut",
- "in bytes" : "en octets",
- "Email Field" : "Camp Email",
- "User Home Folder Naming Rule" : "Règla de nomenatge del repertòri utilizaire",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Daissar void per user name (defaut). Podètz tanben especificar un atribut LDAP / AD.",
- "Internal Username" : "Nom d'utilizaire intèrne",
- "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." : "Per defaut lo nom d'utilizaire intèrne serà creat a partir de l'atribut UUID. Aquò permet d'assegurar que lo nom d'utilizaire es unic e que los caractèrs necessitan pas de conversion. Lo nom d'utilizaire intèrne deu contenir unicament los caractèrs seguents : [ a-zA-Z0-9_.@- ]. Los autres caractèrs son remplaçats per lor correspondéncia ASCII o simplament omeses. En cas de collision, un nombre es apondut/incrementat. Lo nom d'utilizaire intèrne es utilizat per identificar l'utilizaire al dintre del sistèma. Es tanben lo nom per defaut del repertòri utilizaire dins ownCloud. Fa tanben partida de certans URL de servicis, per exemple per totes los servicis *DAV. Lo comportament per defaut pòt èsser modificat amb l'ajuda d'aqueste paramètre. Per obtenir un comportament similar a las versions precedentas a ownCloud 5, sasir lo nom d'utilizaire d'afichar dins lo camp seguent. Daissar a blanc pel comportement per defaut. Las modificacions prendràn efièch solament pels novèls (aponduts) utilizaires LDAP.",
- "Internal Username Attribute:" : "Nom d'utilizaire intèrne :",
- "Override UUID detection" : "Passar outra la deteccion des 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." : "Per defaut, l'atribut UUID es detectat automaticament. Aqueste atribut es utilizat per identificar los utilizaires e gropes de faiçon fisabla. Un nom d'utilizaire intèrne basat sus l'UUID serà automaticament creat, levat s'es especificat autrament çaisús. Podètz modificar aqueste comportament e definir l'atribut que volètz. Vos cal alara vos assegurar que l'atribut que volètz pòt èsser recuperat pels utilizaires e tanben pels gropes e que siá unic. Daissar a blanc pel comportament per defaut. Las modificacions seràn efectivas unicament pels novèls (aponduts) utilizaires e gropes LDAP.",
- "UUID Attribute for Users:" : "Atribut UUID pels Utilizaires :",
- "UUID Attribute for Groups:" : "Atribut UUID pels Gropes :",
- "Username-LDAP User Mapping" : "Associacion Nom d'utilizaire-Utilizaire LDAP",
- "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los noms d'utilizaires son utilizats per l'emmagazinatge e l'assignacion de (meta) donadas. Per identificar e reconéisser precisament los utilizaires, cada utilizaire LDAP aurà un nom intèrne especific. Aquò requerís l'associacion d'un nom d'utilizaire ownCloud a un nom d'utilizaire LDAP. Lo nom d'utilizaire creat es associat a l'atribut UUID de l'utilizaire LDAP. Amai, lo DN es memorizat en escondedor per limitar las interaccions LDAP mas es pas utilizat per l'identificacion. Se lo DN es modificat, aquelas modificacions seràn retrobadas. Sol lo nom intèrne a ownCloud es utilizat al dintre del produch. Suprimir las associacions crearà d'orfanèls e l'accion afectarà totas las configuracions LDAP. SUPRIMISSÈTZ PAS JAMAI LAS ASSOCIACIONS EN ENVIRONAMENT DE PRODUCCION, mas unicament sus d'environaments de tèsts e d'experimentacions.",
- "Clear Username-LDAP User Mapping" : "Suprimir l'associacion utilizaire intèrne-utilizaire LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Suprimir l'associacion nom de grop-grop LDAP"
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js
index 1175ddcdc50..5ffcf80e841 100644
--- a/apps/user_ldap/l10n/pl.js
+++ b/apps/user_ldap/l10n/pl.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Nieprawidłowa konfiguracja: Anonimowe podpinanie jest niedozwolone.",
"Valid configuration, connection established!" : "Konfiguracja poprawna, połączenie ustanowione!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfiguracja poprawna, ale powiązanie nie powiodło się. Sprawdź konfigurację serwera i poświadczenia.",
- "Invalid configuration. Please have a look at the logs for further details." : "Nieprawidłowa konfiguracja. Sprawdź logi po więcej szczegółów.",
+ "Invalid configuration: %s" : "Nieprawidłowa konfiguracja: %s",
"No action specified" : "Nie określono akcji",
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
"Invalid data specified" : "Podano nieprawidłowe dane",
- " Could not set configuration %s" : "Nie można ustawić konfiguracji %s",
+ "Could not set configuration %1$s to %2$s" : "Nie można ustawić konfiguracji %1$s na %2$s",
"Action does not exist" : "Akcja nie istnieje",
"Renewing …" : "Odnawianie…",
"Very weak password" : "Bardzo słabe hasło",
@@ -54,15 +54,28 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Brak symbolu zastępczego \"%uid\". Zostanie zastąpiony nazwą logowania podczas odpytywania LDAP/AD.",
"Please provide a login name to test against" : "Wprowadź nazwę użytkownika, aby wykonać test ponownie",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Pole do wpisu dla grupy zostało wyłączone, ponieważ LDAP/AD nie obsługuje memberOf.",
- "Password change rejected. Hint: " : "Zmiana hasła odrzucona: Wskazówka:",
+ "Password change rejected. Hint: %s" : "Zmiana hasła odrzucona: Wskazówka: %s",
+ "Mandatory field \"%s\" left empty" : "Obowiązkowe pole \"%s\" pozostawiono puste",
+ "A password is given, but not an LDAP agent" : "Podano hasło, ale nie wskazano agenta LDAP",
+ "No password is given for the user agent" : "Nie podano hasła dla agenta użytkownika",
+ "No LDAP base DN was given" : "Nie podano bazowego DN LDAP",
+ "User base DN is not a subnode of global base DN" : "Bazowy DN użytkownika nie jest podwęzłem globalnego DN",
+ "Group base DN is not a subnode of global base DN" : "Bazowy DN grupy nie jest podwęzłem globalnego DN",
+ "Login filter does not contain %s placeholder." : "Filtr logowania nie zawiera zastępnika %s.",
"Please login with the new password" : "Zaloguj się przy użyciu nowego hasła",
"LDAP User backend" : "Moduł użytkownika LDAP",
"Your password will expire tomorrow." : "Twoje hasło wygasa jutro.",
"Your password will expire today." : "Twoje hasło wygasa dzisiaj.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Twoje hasło wygaśnie w ciągu %n dnia.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni."],
"LDAP/AD integration" : "Integracja z LDAP/AD",
+ "LDAP Connection" : "Połączenie LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Dla tej konfiguracji LDAP: %s połączenie nie powiodło się","Połączenie nie powiodło się dla %n konfiguracji LDAP: %s","Połączenie nie powiodło się dla %n konfiguracji LDAP: %s","Połączenie nie powiodło się dla %n konfiguracji LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Dla tej konfiguracji LDAP: %s wyszukiwanie nie powiodło się ","Wyszukiwanie nie powiodło się dla %n konfiguracji LDAP: %s","Wyszukiwanie nie powiodło się dla %n konfiguracji LDAP: %s","Wyszukiwanie nie powiodło się dla %n konfiguracji LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Jest jedna nieaktywna konfiguracja LDAP\" %s","Istnieją %n nieaktywne konfiguracje LDAP: %s","Istnieje %n nieaktywnych konfiguracji LDAP: %s","Istnieje %n nieaktywnych konfiguracji LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Łączenie i wyszukiwanie działa dla skonfigurowanego połączenia LDAP (%s)","Łączenie i wyszukiwanie działa dla wszystkich %n skonfigurowanych połączeń LDAP (%s)","Łączenie i wyszukiwanie działa dla wszystkich %n skonfigurowanych połączeń LDAP (%s)","Łączenie i wyszukiwanie działa dla wszystkich %nskonfigurowanych połączeń LDAP (%s)"],
"Invalid LDAP UUIDs" : "Nieprawidłowy LDAP UUID",
"None found" : "Nie znaleziono",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Znaleziono nieprawidłowe identyfikatory UUID kont lub grup LDAP. Sprawdź ustawienia „Zastąp wykrywanie UUID” w części eksperckiej konfiguracji LDAP i użyj „occ ldap:update-uuid”, aby je zaktualizować.",
"_%n group found_::_%n groups found_" : ["Znaleziono %n grupę","Znaleziono %n grupy","Znaleziono %n grup","Znaleziono %n grup"],
"> 1000 groups found" : "> 1000 znalezionych grup",
"> 1000 users found" : "> 1000 znalezionych użytkowników",
@@ -93,6 +106,7 @@ OC.L10N.register(
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definiuje filter do zastosowania podczas próby logowania. \"%%uid\" zastępuje nazwę użytkownika podczas logowania. Przykład: \"uid=%%uid\"",
"Test Loginname" : "Testowa nazwa użytkownika",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Próbuje otrzymać nazwę wyróżniającą dla podanej nazwy użytkownika i bieżącego filtra logowania",
"Verify settings" : "Weryfikuj ustawienia",
"%s. Server:" : "%s. Serwer:",
"Add a new configuration" : "Dodaj nową konfigurację",
@@ -156,6 +170,8 @@ OC.L10N.register(
"One User Base DN per line" : "Jeden użytkownik Bazy DN na linię",
"User Search Attributes" : "Szukaj atrybutów",
"Optional; one attribute per line" : "Opcjonalnie; jeden atrybut w wierszu",
+ "Disable users missing from LDAP" : "Wyłącz brakujących użytkowników w LDAP",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Po włączeniu, użytkownicy zaimportowani z LDAP, których brakuje, zostaną wyłączeni",
"Group Display Name Field" : "Pole wyświetlanej nazwy grupy",
"The LDAP attribute to use to generate the groups's display name." : "Atrybut LDAP służący do generowania wyświetlanej nazwy grupy ownCloud.",
"Base Group Tree" : "Drzewo bazy grup",
@@ -184,6 +200,29 @@ OC.L10N.register(
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla nazwy użytkownika (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.",
"\"$home\" Placeholder Field" : "Pole zastępcze \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home w zewnętrznej konfiguracji pamięci zostanie zastąpiony wartością określonego atrybutu",
+ "User Profile Attributes" : "Atrybuty profilu użytkownika",
+ "Phone Field" : "Pole Telefonu",
+ "User profile Phone will be set from the specified attribute" : "Telefon profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Website Field" : "Pole witryny internetowej",
+ "User profile Website will be set from the specified attribute" : "Witryna internetowa profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Address Field" : "Pole adresu",
+ "User profile Address will be set from the specified attribute" : "Adres profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Twitter Field" : "Pole Twittera/X",
+ "User profile Twitter will be set from the specified attribute" : "Twitter profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Fediverse Field" : "Pole Fediversum",
+ "User profile Fediverse will be set from the specified attribute" : "Fediverse profilu użytkownika zostanie ustawione na podstawie określonego atrybutu",
+ "Organisation Field" : "Pole organizacji",
+ "User profile Organisation will be set from the specified attribute" : "Organizacja profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Role Field" : "Pole roli",
+ "User profile Role will be set from the specified attribute" : "Rola w profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Headline Field" : "Pole nagłówka",
+ "User profile Headline will be set from the specified attribute" : "Nagłówek profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Biography Field" : "Pole biografii",
+ "User profile Biography will be set from the specified attribute" : "Biografia profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Birthdate Field" : "Pole daty urodzenia",
+ "User profile Date of birth will be set from the specified attribute" : "Data urodzenia w profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Pronouns Field" : "Pole zaimków",
+ "User profile Pronouns will be set from the specified attribute" : "Zaimki w profilu użytkownika zostaną ustawione na podstawie określonego atrybutu",
"Internal Username" : "Wewnętrzna nazwa użytkownika",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Domyślnie wewnętrzna nazwa użytkownika zostanie utworzona z atrybutu UUID. Zapewnia to unikalność nazwy użytkownika, a znaki nie muszą być konwertowane. Wewnętrzna nazwa użytkownika ma ograniczenie, dlatego dozwolone są tylko znaki: [a-zA-Z0-9_.@-]. Inne znaki są zastępowane przez ich odpowiedniki ASCII lub po prostu pomijane. W przypadku kolizji zostanie dodany/zwiększony numer. Wewnętrzna nazwa użytkownika służy do wewnętrznej identyfikacji użytkownika. Jest również domyślną nazwą katalogu domowego użytkownika oraz częścią zdalnych adresów URL, na przykład dla wszystkich usług DAV. Dzięki temu ustawieniu można zastąpić domyślne zachowanie. Zmiany będą miały wpływ tylko na nowo zmapowanych (dodanych) użytkowników LDAP. Dla domyślnego zachowania pozostaw to puste.",
"Internal Username Attribute:" : "Wewnętrzny atrybut nazwy uzżytkownika:",
@@ -195,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "Nazwy użytkowników służą do przechowywania i przypisywania metadanych. Aby precyzyjnie zidentyfikować i rozpoznać użytkowników, każdy użytkownik LDAP będzie miał wewnętrzną nazwę użytkownika. Wymaga to mapowania z nazwy użytkownika na użytkownika LDAP. Utworzona nazwa użytkownika jest mapowana na UUID użytkownika LDAP. Dodatkowo DN jest buforowany w celu zmniejszenia interakcji LDAP, ale nie jest używany do identyfikacji. Zmiany zostaną wykryte jeśli DN zmieni się. Wewnętrzna nazwa użytkownika jest używana wszędzie. Wyczyszczenie mapowań pozostawi pozostałości po nim. Wyczyszczenie mapowań nie ma wpływu na konfigurację, ale ma wpływ na wszystkie konfiguracje LDAP! Nigdy nie usuwaj mapowań w środowisku produkcyjnym, tylko na etapie testowym lub eksperymentalnym.",
"Clear Username-LDAP User Mapping" : "Czyść Mapowanie użytkownika LDAP",
"Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Znaleziono nieprawidłowe identyfikatory UUID użytkowników lub grup LDAP. Sprawdź ustawienia \"Zastąp wykrywanie UUID\" w części eksperckiej konfiguracji LDAP i użyj \"occ ldap:update-uuid\", aby je zaktualizować."
+ "Invalid configuration. Please have a look at the logs for further details." : "Nieprawidłowa konfiguracja. Sprawdź logi po więcej szczegółów."
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json
index fdfdad1f415..36ed7181b95 100644
--- a/apps/user_ldap/l10n/pl.json
+++ b/apps/user_ldap/l10n/pl.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Nieprawidłowa konfiguracja: Anonimowe podpinanie jest niedozwolone.",
"Valid configuration, connection established!" : "Konfiguracja poprawna, połączenie ustanowione!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfiguracja poprawna, ale powiązanie nie powiodło się. Sprawdź konfigurację serwera i poświadczenia.",
- "Invalid configuration. Please have a look at the logs for further details." : "Nieprawidłowa konfiguracja. Sprawdź logi po więcej szczegółów.",
+ "Invalid configuration: %s" : "Nieprawidłowa konfiguracja: %s",
"No action specified" : "Nie określono akcji",
"No configuration specified" : "Nie określono konfiguracji",
"No data specified" : "Nie określono danych",
"Invalid data specified" : "Podano nieprawidłowe dane",
- " Could not set configuration %s" : "Nie można ustawić konfiguracji %s",
+ "Could not set configuration %1$s to %2$s" : "Nie można ustawić konfiguracji %1$s na %2$s",
"Action does not exist" : "Akcja nie istnieje",
"Renewing …" : "Odnawianie…",
"Very weak password" : "Bardzo słabe hasło",
@@ -52,15 +52,28 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Brak symbolu zastępczego \"%uid\". Zostanie zastąpiony nazwą logowania podczas odpytywania LDAP/AD.",
"Please provide a login name to test against" : "Wprowadź nazwę użytkownika, aby wykonać test ponownie",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Pole do wpisu dla grupy zostało wyłączone, ponieważ LDAP/AD nie obsługuje memberOf.",
- "Password change rejected. Hint: " : "Zmiana hasła odrzucona: Wskazówka:",
+ "Password change rejected. Hint: %s" : "Zmiana hasła odrzucona: Wskazówka: %s",
+ "Mandatory field \"%s\" left empty" : "Obowiązkowe pole \"%s\" pozostawiono puste",
+ "A password is given, but not an LDAP agent" : "Podano hasło, ale nie wskazano agenta LDAP",
+ "No password is given for the user agent" : "Nie podano hasła dla agenta użytkownika",
+ "No LDAP base DN was given" : "Nie podano bazowego DN LDAP",
+ "User base DN is not a subnode of global base DN" : "Bazowy DN użytkownika nie jest podwęzłem globalnego DN",
+ "Group base DN is not a subnode of global base DN" : "Bazowy DN grupy nie jest podwęzłem globalnego DN",
+ "Login filter does not contain %s placeholder." : "Filtr logowania nie zawiera zastępnika %s.",
"Please login with the new password" : "Zaloguj się przy użyciu nowego hasła",
"LDAP User backend" : "Moduł użytkownika LDAP",
"Your password will expire tomorrow." : "Twoje hasło wygasa jutro.",
"Your password will expire today." : "Twoje hasło wygasa dzisiaj.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Twoje hasło wygaśnie w ciągu %n dnia.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni."],
"LDAP/AD integration" : "Integracja z LDAP/AD",
+ "LDAP Connection" : "Połączenie LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Dla tej konfiguracji LDAP: %s połączenie nie powiodło się","Połączenie nie powiodło się dla %n konfiguracji LDAP: %s","Połączenie nie powiodło się dla %n konfiguracji LDAP: %s","Połączenie nie powiodło się dla %n konfiguracji LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Dla tej konfiguracji LDAP: %s wyszukiwanie nie powiodło się ","Wyszukiwanie nie powiodło się dla %n konfiguracji LDAP: %s","Wyszukiwanie nie powiodło się dla %n konfiguracji LDAP: %s","Wyszukiwanie nie powiodło się dla %n konfiguracji LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Jest jedna nieaktywna konfiguracja LDAP\" %s","Istnieją %n nieaktywne konfiguracje LDAP: %s","Istnieje %n nieaktywnych konfiguracji LDAP: %s","Istnieje %n nieaktywnych konfiguracji LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Łączenie i wyszukiwanie działa dla skonfigurowanego połączenia LDAP (%s)","Łączenie i wyszukiwanie działa dla wszystkich %n skonfigurowanych połączeń LDAP (%s)","Łączenie i wyszukiwanie działa dla wszystkich %n skonfigurowanych połączeń LDAP (%s)","Łączenie i wyszukiwanie działa dla wszystkich %nskonfigurowanych połączeń LDAP (%s)"],
"Invalid LDAP UUIDs" : "Nieprawidłowy LDAP UUID",
"None found" : "Nie znaleziono",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Znaleziono nieprawidłowe identyfikatory UUID kont lub grup LDAP. Sprawdź ustawienia „Zastąp wykrywanie UUID” w części eksperckiej konfiguracji LDAP i użyj „occ ldap:update-uuid”, aby je zaktualizować.",
"_%n group found_::_%n groups found_" : ["Znaleziono %n grupę","Znaleziono %n grupy","Znaleziono %n grup","Znaleziono %n grup"],
"> 1000 groups found" : "> 1000 znalezionych grup",
"> 1000 users found" : "> 1000 znalezionych użytkowników",
@@ -91,6 +104,7 @@
"Other Attributes:" : "Inne atrybuty:",
"Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Definiuje filter do zastosowania podczas próby logowania. \"%%uid\" zastępuje nazwę użytkownika podczas logowania. Przykład: \"uid=%%uid\"",
"Test Loginname" : "Testowa nazwa użytkownika",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Próbuje otrzymać nazwę wyróżniającą dla podanej nazwy użytkownika i bieżącego filtra logowania",
"Verify settings" : "Weryfikuj ustawienia",
"%s. Server:" : "%s. Serwer:",
"Add a new configuration" : "Dodaj nową konfigurację",
@@ -154,6 +168,8 @@
"One User Base DN per line" : "Jeden użytkownik Bazy DN na linię",
"User Search Attributes" : "Szukaj atrybutów",
"Optional; one attribute per line" : "Opcjonalnie; jeden atrybut w wierszu",
+ "Disable users missing from LDAP" : "Wyłącz brakujących użytkowników w LDAP",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Po włączeniu, użytkownicy zaimportowani z LDAP, których brakuje, zostaną wyłączeni",
"Group Display Name Field" : "Pole wyświetlanej nazwy grupy",
"The LDAP attribute to use to generate the groups's display name." : "Atrybut LDAP służący do generowania wyświetlanej nazwy grupy ownCloud.",
"Base Group Tree" : "Drzewo bazy grup",
@@ -182,6 +198,29 @@
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla nazwy użytkownika (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.",
"\"$home\" Placeholder Field" : "Pole zastępcze \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home w zewnętrznej konfiguracji pamięci zostanie zastąpiony wartością określonego atrybutu",
+ "User Profile Attributes" : "Atrybuty profilu użytkownika",
+ "Phone Field" : "Pole Telefonu",
+ "User profile Phone will be set from the specified attribute" : "Telefon profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Website Field" : "Pole witryny internetowej",
+ "User profile Website will be set from the specified attribute" : "Witryna internetowa profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Address Field" : "Pole adresu",
+ "User profile Address will be set from the specified attribute" : "Adres profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Twitter Field" : "Pole Twittera/X",
+ "User profile Twitter will be set from the specified attribute" : "Twitter profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Fediverse Field" : "Pole Fediversum",
+ "User profile Fediverse will be set from the specified attribute" : "Fediverse profilu użytkownika zostanie ustawione na podstawie określonego atrybutu",
+ "Organisation Field" : "Pole organizacji",
+ "User profile Organisation will be set from the specified attribute" : "Organizacja profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Role Field" : "Pole roli",
+ "User profile Role will be set from the specified attribute" : "Rola w profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Headline Field" : "Pole nagłówka",
+ "User profile Headline will be set from the specified attribute" : "Nagłówek profilu użytkownika zostanie ustawiony na podstawie określonego atrybutu",
+ "Biography Field" : "Pole biografii",
+ "User profile Biography will be set from the specified attribute" : "Biografia profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Birthdate Field" : "Pole daty urodzenia",
+ "User profile Date of birth will be set from the specified attribute" : "Data urodzenia w profilu użytkownika zostanie ustawiona na podstawie określonego atrybutu",
+ "Pronouns Field" : "Pole zaimków",
+ "User profile Pronouns will be set from the specified attribute" : "Zaimki w profilu użytkownika zostaną ustawione na podstawie określonego atrybutu",
"Internal Username" : "Wewnętrzna nazwa użytkownika",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Domyślnie wewnętrzna nazwa użytkownika zostanie utworzona z atrybutu UUID. Zapewnia to unikalność nazwy użytkownika, a znaki nie muszą być konwertowane. Wewnętrzna nazwa użytkownika ma ograniczenie, dlatego dozwolone są tylko znaki: [a-zA-Z0-9_.@-]. Inne znaki są zastępowane przez ich odpowiedniki ASCII lub po prostu pomijane. W przypadku kolizji zostanie dodany/zwiększony numer. Wewnętrzna nazwa użytkownika służy do wewnętrznej identyfikacji użytkownika. Jest również domyślną nazwą katalogu domowego użytkownika oraz częścią zdalnych adresów URL, na przykład dla wszystkich usług DAV. Dzięki temu ustawieniu można zastąpić domyślne zachowanie. Zmiany będą miały wpływ tylko na nowo zmapowanych (dodanych) użytkowników LDAP. Dla domyślnego zachowania pozostaw to puste.",
"Internal Username Attribute:" : "Wewnętrzny atrybut nazwy uzżytkownika:",
@@ -193,6 +232,6 @@
"Usernames are used to store and assign metadata. 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." : "Nazwy użytkowników służą do przechowywania i przypisywania metadanych. Aby precyzyjnie zidentyfikować i rozpoznać użytkowników, każdy użytkownik LDAP będzie miał wewnętrzną nazwę użytkownika. Wymaga to mapowania z nazwy użytkownika na użytkownika LDAP. Utworzona nazwa użytkownika jest mapowana na UUID użytkownika LDAP. Dodatkowo DN jest buforowany w celu zmniejszenia interakcji LDAP, ale nie jest używany do identyfikacji. Zmiany zostaną wykryte jeśli DN zmieni się. Wewnętrzna nazwa użytkownika jest używana wszędzie. Wyczyszczenie mapowań pozostawi pozostałości po nim. Wyczyszczenie mapowań nie ma wpływu na konfigurację, ale ma wpływ na wszystkie konfiguracje LDAP! Nigdy nie usuwaj mapowań w środowisku produkcyjnym, tylko na etapie testowym lub eksperymentalnym.",
"Clear Username-LDAP User Mapping" : "Czyść Mapowanie użytkownika LDAP",
"Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Znaleziono nieprawidłowe identyfikatory UUID użytkowników lub grup LDAP. Sprawdź ustawienia \"Zastąp wykrywanie UUID\" w części eksperckiej konfiguracji LDAP i użyj \"occ ldap:update-uuid\", aby je zaktualizować."
+ "Invalid configuration. Please have a look at the logs for further details." : "Nieprawidłowa konfiguracja. Sprawdź logi po więcej szczegółów."
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js
index 4d06acd5e9f..c78cbca2108 100644
--- a/apps/user_ldap/l10n/pt_BR.js
+++ b/apps/user_ldap/l10n/pt_BR.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.",
"Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes.",
+ "Invalid configuration: %s" : "Configuração inválida: %s",
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhum dado especificado",
"Invalid data specified" : "Dados inválidos especificados",
- " Could not set configuration %s" : "Não foi possível definir a configuração %s",
+ "Could not set configuration %1$s to %2$s" : "Não foi possível definir a configuração %1$s como %2$s",
"Action does not exist" : "A ação não existe",
"Renewing …" : "Renovando...",
"Very weak password" : "Senha muito fraca",
@@ -51,28 +51,35 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Ocorreu um erro não especificado. Verifique o log e as configurações.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.",
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Ocorreu um erro de conexão com o LDAP/AD. Verifique o host, a porta e as credenciais.",
- "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "O \"%uid\" está faltando o marcador de posição. Ele será substituído pelo nome de login ao consultar o LDAP/AD.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "O espaço reservado \"%uid\" está faltando. Ele será substituído pelo nome de login ao consultar o LDAP/AD.",
"Please provide a login name to test against" : "Por favor, forneça um nome de login para testar",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "A caixa de grupo foi desabilitada porque o servidor LDAP/AD não oferece suporte a memberOf.",
- "Password change rejected. Hint: " : "Troca de senha rejeitada. Dica:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "A caixa de grupo foi desabilitada porque o servidor LDAP/AD não é compatível com memberOf.",
+ "Password change rejected. Hint: %s" : "Alteração de senha rejeitada. Dica: %s",
+ "Mandatory field \"%s\" left empty" : "Campo obrigatório \"%s\" deixado vazio",
+ "A password is given, but not an LDAP agent" : "É fornecida uma senha, mas não um agente LDAP",
+ "No password is given for the user agent" : "Nenhuma senha é fornecida para o agente do usuário",
+ "No LDAP base DN was given" : "Nenhum DN de base de LDAP foi fornecido",
+ "User base DN is not a subnode of global base DN" : "O DN de base do usuário não é um subnó do DN de base global",
+ "Group base DN is not a subnode of global base DN" : "O DN de base do grupo não é um subnó do DN de base global",
+ "Login filter does not contain %s placeholder." : "O filtro de login não contém o espaço reservado %s",
"Please login with the new password" : "Logue-se com a nova senha",
"LDAP User backend" : "Estrutura do Usuário LDAP",
"Your password will expire tomorrow." : "Sua senha vai expirar amanhã.",
"Your password will expire today." : "Sua senha vai expirar hoje.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sua senha vai expirar dentro de%n dia.","Sua senha vai expirar dentro de%ndias.","Sua senha vai expirar dentro de%ndias."],
- "LDAP/AD integration" : "LDAP/AD integração",
+ "LDAP/AD integration" : "Integração LDAP/AD",
"LDAP Connection" : "Conexão LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Falha na ligação para estas configurações LDAP: %s","Falha na ligação para estas configurações LDAP: %s","Falha na ligação para estas configurações LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Falha na pesquisa destas configurações LDAP: %s","Falha na pesquisa destas configurações LDAP: %s","Falha na pesquisa destas configurações LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Existem configurações LDAP inativas: %s","Existem configurações LDAP inativas: %s","Existem configurações LDAP inativas: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["A vinculação e a pesquisa funcionam em todas as conexões LDAP configuradas (%s)","A vinculação e a pesquisa funcionam em todas as conexões LDAP configuradas (%s)","A vinculação e a pesquisa funcionam em todas as conexões LDAP configuradas (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Falha na ligação para essa configuração LDAP:%s","Falha na ligação para %n configurações LDAP:%s","Falha na ligação para %n configurações LDAP:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Falha na pesquisa dessa configuração LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Existe uma configuração LDAP inativa: %s","Existem %n configurações LDAP inativas: %s","Existem %n configurações LDAP inativas: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["A ligacão e a pesquisa funcionam na conexão LDAP configurada (%s)","A ligacão e a pesquisa funcionam em todas as %n conexões LDAP configuradas (%s)","A ligacão e a pesquisa funcionam em todas as %n conexões LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUIDs LDAP inválidos",
"None found" : "Nenhum encontrado",
- "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Foram encontrados UUIDs inválidos de contas ou grupos LDAP. Revise as configurações de \"Substituir detecção de UUID\" na parte Especialista da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las.",
- "_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupo encontrado","%n grupos encontrados"],
- "> 1000 groups found" : ">1000 grupos encontrados",
- "> 1000 users found" : ">1000 usuários encontrados",
- "_%n user found_::_%n users found_" : ["%n > 1000 grupos encontrados","%n usuário encontrado","%n usuários encontrados"],
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Foram encontrados UUIDs inválidos de contas ou grupos LDAP. Por favor, revise as configurações de \"Substituir detecção UUID\" na parte Especialista da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-los.",
+ "_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupos encontrado","%n grupos encontrados"],
+ "> 1000 groups found" : "> 1000 grupos encontrados",
+ "> 1000 users found" : "> 1000 usuários encontrados",
+ "_%n user found_::_%n users found_" : ["%n usuário encontrado","%n usuários encontrados","%n usuários encontrados"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.",
"Could not find the desired feature" : "Não foi possível encontrar o recurso desejado",
"Invalid Host" : "Host inválido",
@@ -94,12 +101,12 @@ OC.L10N.register(
"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 de usuário LDAP/AD:",
"Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permite o login com o nome de usuário LDAP/AD, que é \"uid\" ou \"sAMAccountName\" e será detectado.",
- "LDAP/AD Email Address:" : "LDAP/AD Endereço de E-mail:",
+ "LDAP/AD Email Address:" : "Endereço de E-mail LDAP/AD:",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de e-mail. \"Mail\" e \"mailPrimaryAddress\" são permitidos.",
"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 o login é tentado. \"%%uid\" substitui o nome de usuário durante o login. Por exemplo: \"uid=%%uid\"",
"Test Loginname" : "Testar nome de login",
- "Attempts to receive a DN for the given loginname and the current login filter" : "Attempts to receive a DN for the given loginname and the current login filter",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Tenta receber um DN para o nome de login fornecido e o filtro de login atual",
"Verify settings" : "Verificar configurações",
"%s. Server:" : "%s. Servidor:",
"Add a new configuration" : "Adiconar uma nova configuração",
@@ -163,7 +170,7 @@ OC.L10N.register(
"One User Base DN per line" : "Um usuário de Base DN por linha",
"User Search Attributes" : "Atributos de Busca de Usuário",
"Optional; one attribute per line" : "Opcional; um atributo por linha",
- "Disable users missing from LDAP" : "Desabilitar usuários ausentes do LDAP",
+ "Disable users missing from LDAP" : "Desativar usuários ausentes no LDAP",
"When switched on, users imported from LDAP which are then missing will be disabled" : "Quando ativado, os usuários importados do LDAP que estiverem ausentes serão desativados",
"Group Display Name Field" : "Campo de nome de exibição do Grupo",
"The LDAP attribute to use to generate the groups's display name." : "O atributo LDAP a usar para gerar o nome de apresentação do grupo.",
@@ -193,29 +200,31 @@ OC.L10N.register(
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixe em branco para o nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.",
"\"$home\" Placeholder Field" : "Campo Reservado \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home em uma configuração de armazenamento externo será substituído pelo valor do atributo especificado",
- "User Profile Attributes" : "Atributos do perfil do usuário",
+ "User Profile Attributes" : "Atributos do Perfil do Usuário",
"Phone Field" : "Campo de Telefone",
- "User profile Phone will be set from the specified attribute" : "O telefone do perfil do usuário será definido a partir do atributo especificado",
- "Website Field" : "Campo do Website",
- "User profile Website will be set from the specified attribute" : "O site do perfil do usuário será definido a partir do atributo especificado",
+ "User profile Phone will be set from the specified attribute" : "O Telefone no perfil do usuário será definido a partir do atributo especificado",
+ "Website Field" : "Campo de Website",
+ "User profile Website will be set from the specified attribute" : "O Website no perfil do usuário será definido a partir do atributo especificado",
"Address Field" : "Campo de Endereço",
- "User profile Address will be set from the specified attribute" : "O endereço do perfil do usuário será definido a partir do atributo especificado",
- "Twitter Field" : "Campo do Twitter",
- "User profile Twitter will be set from the specified attribute" : "O perfil do usuário Twitter será definido a partir do atributo especificado",
- "Fediverse Field" : "Campo Fediverso",
- "User profile Fediverse will be set from the specified attribute" : "O perfil do usuário Fediverse será definido a partir do atributo especificado",
- "Organisation Field" : "Campo da organização",
- "User profile Organisation will be set from the specified attribute" : "A organização do perfil do usuário será definida a partir do atributo especificado",
+ "User profile Address will be set from the specified attribute" : "O Endereço no perfil do usuário será definido a partir do atributo especificado",
+ "Twitter Field" : "Campo de Twitter",
+ "User profile Twitter will be set from the specified attribute" : "O Twitter no perfil do usuário será definido a partir do atributo especificado",
+ "Fediverse Field" : "Campo de Fediverso",
+ "User profile Fediverse will be set from the specified attribute" : "O Fediverso no perfil do usuário será definido a partir do atributo especificado",
+ "Organisation Field" : "Campo de Organização",
+ "User profile Organisation will be set from the specified attribute" : "A Organização no perfil do usuário será definida a partir do atributo especificado",
"Role Field" : "Campo de Função",
- "User profile Role will be set from the specified attribute" : "Perfil do usuário A função será definida a partir do atributo especificado",
+ "User profile Role will be set from the specified attribute" : "A Função no perfil do usuário será definida a partir do atributo especificado",
"Headline Field" : "Campo do Título",
- "User profile Headline will be set from the specified attribute" : "O título do perfil do usuário será definido a partir do atributo especificado",
- "Biography Field" : "Campo da Biografia",
- "User profile Biography will be set from the specified attribute" : "A biografia do perfil do usuário será definida a partir do atributo especificado",
- "Birthdate Field" : "Campo Data de Nascimento",
- "User profile Date of birth will be set from the specified attribute" : "Perfil do usuário A data de nascimento será definida a partir do atributo especificado",
- "Internal Username" : "Nome de usuário interno",
- "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por padrão, o nome de usuário interno será criado a partir do atributo UUID. Ele garante que o nome de usuário seja exclusivo e os caracteres não precisem ser convertidos. O nome de usuário interno tem a restrição de que apenas esses caracteres são permitidos: [a-zA-Z0-9_.@-]. Outros caracteres são substituídos por sua correspondência ASCII ou simplesmente omitidos. Em colisões, um número será adicionado/aumentado. O nome de usuário interno é usado para identificar um usuário internamente. Também é o nome padrão para a pasta inicial do usuário. Também faz parte de URLs remotos, por exemplo, para todos os serviços DAV. Com essa configuração, o comportamento padrão pode ser substituído. As alterações terão efeito apenas em usuários LDAP recém-mapeados (adicionados). Deixe-o vazio para o comportamento padrão.",
+ "User profile Headline will be set from the specified attribute" : "O Título do perfil do usuário será definido a partir do atributo especificado",
+ "Biography Field" : "Campo de Biografia",
+ "User profile Biography will be set from the specified attribute" : "A Biografia no perfil do usuário será definida a partir do atributo especificado",
+ "Birthdate Field" : "Campo de Data de Nascimento",
+ "User profile Date of birth will be set from the specified attribute" : "A Data de Nascimento no perfil do usuário será definida a partir do atributo especificado",
+ "Pronouns Field" : "Campo de Pronomes",
+ "User profile Pronouns will be set from the specified attribute" : "Os Pronomes no perfil do usuário serão definidos a partir do atributo especificado",
+ "Internal Username" : "Nome de Usuário Interno",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por padrão, o nome de usuário interno será criado a partir do atributo UUID. Isso garante que o nome de usuário seja exclusivo e os caracteres não precisem ser convertidos. O nome de usuário interno tem a restrição de que apenas esses caracteres são permitidos: [a-zA-Z0-9_.@-]. Outros caracteres são substituídos por sua correspondência ASCII ou simplesmente omitidos. Em colisões, um número será adicionado/aumentado. O nome de usuário interno é usado para identificar um usuário internamente. Também é o nome padrão para a pasta inicial do usuário. Também faz parte de URLs remotos, por exemplo, para todos os serviços DAV. Com essa configuração, o comportamento padrão pode ser substituído. As alterações terão efeito apenas em usuários LDAP recém-mapeados (adicionados). Deixe-a vazia para o comportamento padrão.",
"Internal Username Attribute:" : "Atributo Interno de Nome de Usuário:",
"Override UUID detection" : "Substituir detecção 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." : "Por padrão, o atributo UUID é detectado automaticamente. O atributo UUID é usado para identificar corretamente os usuários e grupos LDAP. Além disso, o nome de usuário interno será criado com base no UUID, se não especificado acima. Você pode substituir a configuração e passar um atributo de sua escolha. Você deve certificar-se de que o atributo de sua escolha pode ser lido tanto por usuários quanto por grupos, e que seja único. Deixe-o em branco para o comportamento padrão. As alterações terão efeito apenas para usuários e grupos LDAP recém mapeados (adicionados).",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuários são usados para armazenar e atribuir metadados. Para identificar e reconhecer com precisão os usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento do nome de usuário para o usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN também é armazenado em cache para reduzir a interação LDAP, mas não é usado para identificação. Se o DN mudar, as alterações serão encontradas. O nome de usuário interno é usado em todo lugar. Limpar os mapeamentos gerará sobras em todos os lugares. Limpar os mapeamentos não é sensível à configuração e afeta todas as configurações do LDAP! Nunca limpe os mapeamentos em um ambiente de produção, apenas em um estágio de teste ou experimental.",
"Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário username-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar Mapeamento do Grupo groupname-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "UUIDs inválidos de usuários ou grupos LDAP foram encontrados. Revise suas configurações de \"Substituir detecção de UUID\" na parte Expert da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json
index df2268091a3..9ea42ef697f 100644
--- a/apps/user_ldap/l10n/pt_BR.json
+++ b/apps/user_ldap/l10n/pt_BR.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.",
"Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.",
- "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes.",
+ "Invalid configuration: %s" : "Configuração inválida: %s",
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhum dado especificado",
"Invalid data specified" : "Dados inválidos especificados",
- " Could not set configuration %s" : "Não foi possível definir a configuração %s",
+ "Could not set configuration %1$s to %2$s" : "Não foi possível definir a configuração %1$s como %2$s",
"Action does not exist" : "A ação não existe",
"Renewing …" : "Renovando...",
"Very weak password" : "Senha muito fraca",
@@ -49,28 +49,35 @@
"An unspecified error occurred. Please check log and settings." : "Ocorreu um erro não especificado. Verifique o log e as configurações.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.",
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Ocorreu um erro de conexão com o LDAP/AD. Verifique o host, a porta e as credenciais.",
- "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "O \"%uid\" está faltando o marcador de posição. Ele será substituído pelo nome de login ao consultar o LDAP/AD.",
+ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "O espaço reservado \"%uid\" está faltando. Ele será substituído pelo nome de login ao consultar o LDAP/AD.",
"Please provide a login name to test against" : "Por favor, forneça um nome de login para testar",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "A caixa de grupo foi desabilitada porque o servidor LDAP/AD não oferece suporte a memberOf.",
- "Password change rejected. Hint: " : "Troca de senha rejeitada. Dica:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "A caixa de grupo foi desabilitada porque o servidor LDAP/AD não é compatível com memberOf.",
+ "Password change rejected. Hint: %s" : "Alteração de senha rejeitada. Dica: %s",
+ "Mandatory field \"%s\" left empty" : "Campo obrigatório \"%s\" deixado vazio",
+ "A password is given, but not an LDAP agent" : "É fornecida uma senha, mas não um agente LDAP",
+ "No password is given for the user agent" : "Nenhuma senha é fornecida para o agente do usuário",
+ "No LDAP base DN was given" : "Nenhum DN de base de LDAP foi fornecido",
+ "User base DN is not a subnode of global base DN" : "O DN de base do usuário não é um subnó do DN de base global",
+ "Group base DN is not a subnode of global base DN" : "O DN de base do grupo não é um subnó do DN de base global",
+ "Login filter does not contain %s placeholder." : "O filtro de login não contém o espaço reservado %s",
"Please login with the new password" : "Logue-se com a nova senha",
"LDAP User backend" : "Estrutura do Usuário LDAP",
"Your password will expire tomorrow." : "Sua senha vai expirar amanhã.",
"Your password will expire today." : "Sua senha vai expirar hoje.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sua senha vai expirar dentro de%n dia.","Sua senha vai expirar dentro de%ndias.","Sua senha vai expirar dentro de%ndias."],
- "LDAP/AD integration" : "LDAP/AD integração",
+ "LDAP/AD integration" : "Integração LDAP/AD",
"LDAP Connection" : "Conexão LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Falha na ligação para estas configurações LDAP: %s","Falha na ligação para estas configurações LDAP: %s","Falha na ligação para estas configurações LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Falha na pesquisa destas configurações LDAP: %s","Falha na pesquisa destas configurações LDAP: %s","Falha na pesquisa destas configurações LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Existem configurações LDAP inativas: %s","Existem configurações LDAP inativas: %s","Existem configurações LDAP inativas: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["A vinculação e a pesquisa funcionam em todas as conexões LDAP configuradas (%s)","A vinculação e a pesquisa funcionam em todas as conexões LDAP configuradas (%s)","A vinculação e a pesquisa funcionam em todas as conexões LDAP configuradas (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Falha na ligação para essa configuração LDAP:%s","Falha na ligação para %n configurações LDAP:%s","Falha na ligação para %n configurações LDAP:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Falha na pesquisa dessa configuração LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s","Falha na pesquisa de %n configurações LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Existe uma configuração LDAP inativa: %s","Existem %n configurações LDAP inativas: %s","Existem %n configurações LDAP inativas: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["A ligacão e a pesquisa funcionam na conexão LDAP configurada (%s)","A ligacão e a pesquisa funcionam em todas as %n conexões LDAP configuradas (%s)","A ligacão e a pesquisa funcionam em todas as %n conexões LDAP configuradas (%s)"],
"Invalid LDAP UUIDs" : "UUIDs LDAP inválidos",
"None found" : "Nenhum encontrado",
- "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Foram encontrados UUIDs inválidos de contas ou grupos LDAP. Revise as configurações de \"Substituir detecção de UUID\" na parte Especialista da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las.",
- "_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupo encontrado","%n grupos encontrados"],
- "> 1000 groups found" : ">1000 grupos encontrados",
- "> 1000 users found" : ">1000 usuários encontrados",
- "_%n user found_::_%n users found_" : ["%n > 1000 grupos encontrados","%n usuário encontrado","%n usuários encontrados"],
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Foram encontrados UUIDs inválidos de contas ou grupos LDAP. Por favor, revise as configurações de \"Substituir detecção UUID\" na parte Especialista da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-los.",
+ "_%n group found_::_%n groups found_" : ["%n grupo encontrado","%n grupos encontrado","%n grupos encontrados"],
+ "> 1000 groups found" : "> 1000 grupos encontrados",
+ "> 1000 users found" : "> 1000 usuários encontrados",
+ "_%n user found_::_%n users found_" : ["%n usuário encontrado","%n usuários encontrados","%n usuários encontrados"],
"Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.",
"Could not find the desired feature" : "Não foi possível encontrar o recurso desejado",
"Invalid Host" : "Host inválido",
@@ -92,12 +99,12 @@
"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 de usuário LDAP/AD:",
"Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permite o login com o nome de usuário LDAP/AD, que é \"uid\" ou \"sAMAccountName\" e será detectado.",
- "LDAP/AD Email Address:" : "LDAP/AD Endereço de E-mail:",
+ "LDAP/AD Email Address:" : "Endereço de E-mail LDAP/AD:",
"Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de e-mail. \"Mail\" e \"mailPrimaryAddress\" são permitidos.",
"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 o login é tentado. \"%%uid\" substitui o nome de usuário durante o login. Por exemplo: \"uid=%%uid\"",
"Test Loginname" : "Testar nome de login",
- "Attempts to receive a DN for the given loginname and the current login filter" : "Attempts to receive a DN for the given loginname and the current login filter",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "Tenta receber um DN para o nome de login fornecido e o filtro de login atual",
"Verify settings" : "Verificar configurações",
"%s. Server:" : "%s. Servidor:",
"Add a new configuration" : "Adiconar uma nova configuração",
@@ -161,7 +168,7 @@
"One User Base DN per line" : "Um usuário de Base DN por linha",
"User Search Attributes" : "Atributos de Busca de Usuário",
"Optional; one attribute per line" : "Opcional; um atributo por linha",
- "Disable users missing from LDAP" : "Desabilitar usuários ausentes do LDAP",
+ "Disable users missing from LDAP" : "Desativar usuários ausentes no LDAP",
"When switched on, users imported from LDAP which are then missing will be disabled" : "Quando ativado, os usuários importados do LDAP que estiverem ausentes serão desativados",
"Group Display Name Field" : "Campo de nome de exibição do Grupo",
"The LDAP attribute to use to generate the groups's display name." : "O atributo LDAP a usar para gerar o nome de apresentação do grupo.",
@@ -191,29 +198,31 @@
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixe em branco para o nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.",
"\"$home\" Placeholder Field" : "Campo Reservado \"$home\"",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home em uma configuração de armazenamento externo será substituído pelo valor do atributo especificado",
- "User Profile Attributes" : "Atributos do perfil do usuário",
+ "User Profile Attributes" : "Atributos do Perfil do Usuário",
"Phone Field" : "Campo de Telefone",
- "User profile Phone will be set from the specified attribute" : "O telefone do perfil do usuário será definido a partir do atributo especificado",
- "Website Field" : "Campo do Website",
- "User profile Website will be set from the specified attribute" : "O site do perfil do usuário será definido a partir do atributo especificado",
+ "User profile Phone will be set from the specified attribute" : "O Telefone no perfil do usuário será definido a partir do atributo especificado",
+ "Website Field" : "Campo de Website",
+ "User profile Website will be set from the specified attribute" : "O Website no perfil do usuário será definido a partir do atributo especificado",
"Address Field" : "Campo de Endereço",
- "User profile Address will be set from the specified attribute" : "O endereço do perfil do usuário será definido a partir do atributo especificado",
- "Twitter Field" : "Campo do Twitter",
- "User profile Twitter will be set from the specified attribute" : "O perfil do usuário Twitter será definido a partir do atributo especificado",
- "Fediverse Field" : "Campo Fediverso",
- "User profile Fediverse will be set from the specified attribute" : "O perfil do usuário Fediverse será definido a partir do atributo especificado",
- "Organisation Field" : "Campo da organização",
- "User profile Organisation will be set from the specified attribute" : "A organização do perfil do usuário será definida a partir do atributo especificado",
+ "User profile Address will be set from the specified attribute" : "O Endereço no perfil do usuário será definido a partir do atributo especificado",
+ "Twitter Field" : "Campo de Twitter",
+ "User profile Twitter will be set from the specified attribute" : "O Twitter no perfil do usuário será definido a partir do atributo especificado",
+ "Fediverse Field" : "Campo de Fediverso",
+ "User profile Fediverse will be set from the specified attribute" : "O Fediverso no perfil do usuário será definido a partir do atributo especificado",
+ "Organisation Field" : "Campo de Organização",
+ "User profile Organisation will be set from the specified attribute" : "A Organização no perfil do usuário será definida a partir do atributo especificado",
"Role Field" : "Campo de Função",
- "User profile Role will be set from the specified attribute" : "Perfil do usuário A função será definida a partir do atributo especificado",
+ "User profile Role will be set from the specified attribute" : "A Função no perfil do usuário será definida a partir do atributo especificado",
"Headline Field" : "Campo do Título",
- "User profile Headline will be set from the specified attribute" : "O título do perfil do usuário será definido a partir do atributo especificado",
- "Biography Field" : "Campo da Biografia",
- "User profile Biography will be set from the specified attribute" : "A biografia do perfil do usuário será definida a partir do atributo especificado",
- "Birthdate Field" : "Campo Data de Nascimento",
- "User profile Date of birth will be set from the specified attribute" : "Perfil do usuário A data de nascimento será definida a partir do atributo especificado",
- "Internal Username" : "Nome de usuário interno",
- "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por padrão, o nome de usuário interno será criado a partir do atributo UUID. Ele garante que o nome de usuário seja exclusivo e os caracteres não precisem ser convertidos. O nome de usuário interno tem a restrição de que apenas esses caracteres são permitidos: [a-zA-Z0-9_.@-]. Outros caracteres são substituídos por sua correspondência ASCII ou simplesmente omitidos. Em colisões, um número será adicionado/aumentado. O nome de usuário interno é usado para identificar um usuário internamente. Também é o nome padrão para a pasta inicial do usuário. Também faz parte de URLs remotos, por exemplo, para todos os serviços DAV. Com essa configuração, o comportamento padrão pode ser substituído. As alterações terão efeito apenas em usuários LDAP recém-mapeados (adicionados). Deixe-o vazio para o comportamento padrão.",
+ "User profile Headline will be set from the specified attribute" : "O Título do perfil do usuário será definido a partir do atributo especificado",
+ "Biography Field" : "Campo de Biografia",
+ "User profile Biography will be set from the specified attribute" : "A Biografia no perfil do usuário será definida a partir do atributo especificado",
+ "Birthdate Field" : "Campo de Data de Nascimento",
+ "User profile Date of birth will be set from the specified attribute" : "A Data de Nascimento no perfil do usuário será definida a partir do atributo especificado",
+ "Pronouns Field" : "Campo de Pronomes",
+ "User profile Pronouns will be set from the specified attribute" : "Os Pronomes no perfil do usuário serão definidos a partir do atributo especificado",
+ "Internal Username" : "Nome de Usuário Interno",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por padrão, o nome de usuário interno será criado a partir do atributo UUID. Isso garante que o nome de usuário seja exclusivo e os caracteres não precisem ser convertidos. O nome de usuário interno tem a restrição de que apenas esses caracteres são permitidos: [a-zA-Z0-9_.@-]. Outros caracteres são substituídos por sua correspondência ASCII ou simplesmente omitidos. Em colisões, um número será adicionado/aumentado. O nome de usuário interno é usado para identificar um usuário internamente. Também é o nome padrão para a pasta inicial do usuário. Também faz parte de URLs remotos, por exemplo, para todos os serviços DAV. Com essa configuração, o comportamento padrão pode ser substituído. As alterações terão efeito apenas em usuários LDAP recém-mapeados (adicionados). Deixe-a vazia para o comportamento padrão.",
"Internal Username Attribute:" : "Atributo Interno de Nome de Usuário:",
"Override UUID detection" : "Substituir detecção 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." : "Por padrão, o atributo UUID é detectado automaticamente. O atributo UUID é usado para identificar corretamente os usuários e grupos LDAP. Além disso, o nome de usuário interno será criado com base no UUID, se não especificado acima. Você pode substituir a configuração e passar um atributo de sua escolha. Você deve certificar-se de que o atributo de sua escolha pode ser lido tanto por usuários quanto por grupos, e que seja único. Deixe-o em branco para o comportamento padrão. As alterações terão efeito apenas para usuários e grupos LDAP recém mapeados (adicionados).",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuários são usados para armazenar e atribuir metadados. Para identificar e reconhecer com precisão os usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento do nome de usuário para o usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN também é armazenado em cache para reduzir a interação LDAP, mas não é usado para identificação. Se o DN mudar, as alterações serão encontradas. O nome de usuário interno é usado em todo lugar. Limpar os mapeamentos gerará sobras em todos os lugares. Limpar os mapeamentos não é sensível à configuração e afeta todas as configurações do LDAP! Nunca limpe os mapeamentos em um ambiente de produção, apenas em um estágio de teste ou experimental.",
"Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário username-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Limpar Mapeamento do Grupo groupname-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "UUIDs inválidos de usuários ou grupos LDAP foram encontrados. Revise suas configurações de \"Substituir detecção de UUID\" na parte Expert da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las."
+ "Invalid configuration. Please have a look at the logs for further details." : "Configuração inválida. Por favor dê uma olhada nos logs para mais detalhes."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js
index 7a46dd47813..cfa4702c62e 100644
--- a/apps/user_ldap/l10n/pt_PT.js
+++ b/apps/user_ldap/l10n/pt_PT.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhuns dados especificados",
- " Could not set configuration %s" : "Não foi possível definir a configuração %s",
"Action does not exist" : "A ação não existe",
"Very weak password" : "Palavra-passe muito fraca",
"Weak password" : "Palavra-passe fraca",
@@ -25,9 +24,9 @@ OC.L10N.register(
"Base DN could not be auto-detected, please revise credentials, host and port." : "Não foi possível detetar automaticamente o ND base, por favor, verifique as credenciais, anfitrião e porta.",
"Could not detect Base DN, please enter it manually." : "Não foi possível detetar o ND de base, por favor introduza-o manualmente.",
"{nthServer}. Server" : "{nthServer}. Servidor",
- "No object found in the given Base DN. Please revise." : "Nenhum objecto encontrado na Base DN fornecida. Por favor verifique.",
+ "No object found in the given Base DN. Please revise." : "Nenhum objeto encontrado na Base DN fornecida. Por favor verifique.",
"More than 1,000 directory entries available." : "Mais de 1,000 entradas de diretório disponíveis.",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ocorreu um erro. Por favor verifique o ND de base, bem como as definições de ligação e as credenciais.",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ocorreu um erro. Por favor, verifique o ND Base, bem como as definições de ligação e as credenciais.",
"Do you really want to delete the current Server Configuration?" : "Deseja eliminar a 'Configuração do Servidor' atual?",
"Confirm Deletion" : "Confirmar Eliminação",
"Mappings cleared successfully!" : "Mapas limpos com sucesso!",
@@ -41,6 +40,7 @@ OC.L10N.register(
"User found and settings verified." : "Utilizador encontrado e definições verificadas.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.",
"Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar",
+ "LDAP Connection" : "Ligação LDAP",
"Could not find the desired feature" : "Não se encontrou a função desejada",
"Invalid Host" : "Anfitrião Inválido",
"Test Configuration" : "Testar a configuração",
@@ -56,7 +56,7 @@ OC.L10N.register(
"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.",
"When logging in, %s will find the user based on the following attributes:" : "Quando entrar no sistema, %s irá encontrar o utilizador baseando-se nos seguintes atributos:",
"Other Attributes:" : "Outros Atributos:",
- "Test Loginname" : "Testar nome de login",
+ "Test Loginname" : "Testar nome de início de sessão",
"Verify settings" : "Verificar definições",
"%s. Server:" : "%s. Servidor:",
"Copy current configuration into new directory binding" : "Copiar a configuração atual para um novo registo de diretoria",
@@ -72,8 +72,8 @@ OC.L10N.register(
"Detect Base DN" : "Detetar Base DN",
"Test Base DN" : "Testar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita pedidos LDAP automáticos. Melhor para grandes configurações, mas requer conhecimentos LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Introduzir filtros LDAP manualmente (recomendado para directórios grandes)",
- "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." : "Os objectos mais comuns para utilizadores são <em>organizationalPerson, person, user, and inetOrgPerson</em>. Se não tem a certeza de que classe de objecto deverá seleccionar, por favor, contacte o administrador do Directório.",
+ "Manually enter LDAP filters (recommended for large directories)" : "Introduzir filtros LDAP manualmente (recomendado para diretórios grandes)",
+ "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." : "Os objetos mais comuns para utilizadores são <em>organizationalPerson, person, user, and inetOrgPerson</em>. Se não tem a certeza de que classe de objeto deverá selecionar, por favor, contacte o administrador do diretório.",
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica quais utilizadores do LDAP devem ter acesso à instância %s.",
"Verify settings and count users" : "Verificar definições e contar utilizadores",
"Saving" : "A guardar",
@@ -98,13 +98,13 @@ OC.L10N.register(
"Backup (Replica) Host" : "Anfitrião de Cópia de Segurança (Réplica)",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Indique um anfitrião de cópia de segurança. Este deve ser uma réplica do servidor principal de LDAP/AD ",
"Backup (Replica) Port" : "Porta do servidor de backup (Replica)",
- "Disable Main Server" : "Desactivar servidor principal",
+ "Disable Main Server" : "Desativar servidor principal",
"Only connect to the replica server." : "Ligar apenas ao servidor de réplicas.",
"Turn off SSL certificate validation." : "Desligar a validação de certificado SSL.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Não recomendado, use-o somente para teste! ligação só funciona com esta opção, importar o certificado SSL do servidor LDAP para o seu servidor %s.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Não recomendado, utilize-o apenas para testes! Se a ligação só funciona com esta opção, importe o certificado SSL do servidor LDAP para o seu servidor %s.",
"Cache Time-To-Live" : "Cache do tempo de vida dos objetos no servidor",
"in seconds. A change empties the cache." : "em segundos. Uma alteração esvazia a cache.",
- "Directory Settings" : "Definições de directorias",
+ "Directory Settings" : "Definições de diretorias",
"User Display Name Field" : "Mostrador do nome de utilizador.",
"The LDAP attribute to use to generate the user's display name." : "O atributo de LDAP para gerar o nome a exibir do utilizador.",
"2nd User Display Name Field" : "2.º Mostrador do Nome de Utilizador.",
@@ -122,9 +122,9 @@ OC.L10N.register(
"Dynamic Group Member URL" : "URL Dinâmica de Membro do Grupo",
"The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "O atributo LDAP que em objetos de grupo contém um URL de pesquisa LDAP que determina que objetos pertencem ao grupo. (Uma definição vazia desativa a funcionalidade de membros de grupo dinâmico.)",
"Nested Groups" : "Grupos agrupados",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Quando habilitado os grupos, os grupos são suportados. (Só funciona se o atributo de membro de grupo contém DNs.)",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Quando ativado, os grupos que contêm grupos são suportados. (Só funciona se o atributo de membro do grupo contiver DNs).",
"Paging chunksize" : "Bloco de paginação",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamanho do bloco usado para pesquisas LDAP paginados que podem retornar resultados volumosos como utilizador ou grupo de enumeração. (Defini-lo 0 desactiva paginada das pesquisas LDAP nessas situações.)",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamanho do bloco usado para pesquisas LDAP paginados que podem retornar resultados volumosos como utilizador ou grupo de enumeração. (Defini-lo 0 desativa paginada das pesquisas LDAP nessas situações.)",
"Special Attributes" : "Atributos especiais",
"Quota Field" : "Quota",
"Quota Default" : "Quota padrão",
@@ -132,8 +132,8 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "Regra da pasta inicial do utilizador",
"Internal Username" : "Nome de utilizador interno",
"Internal Username Attribute:" : "Atributo do nome de utilizador interno",
- "Override UUID detection" : "Passar a detecção do 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." : "Por defeito, o ownCloud detecta automaticamente o atributo UUID. Este atributo é usado para identificar inequivocamente grupos e utilizadores LDAP. Igualmente, o nome de utilizador interno é criado com base no UUID, se o contrário não for especificado. Pode sobrepor esta definição colocando um atributo à sua escolha. Tenha em atenção que esse atributo deve ser válido tanto para grupos como para utilizadores, e que é único. Deixe em branco para optar pelo comportamento por defeito. Estas alteração apenas terão efeito em novos utilizadores e grupos mapeados (adicionados).",
+ "Override UUID detection" : "Passar a deteção do 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." : "Por defeito, o ownCloud deteta automaticamente o atributo UUID. Este atributo é usado para identificar inequivocamente grupos e utilizadores LDAP. Igualmente, o nome de utilizador interno é criado com base no UUID, se o contrário não for especificado. Pode sobrepor esta definição colocando um atributo à sua escolha. Tenha em atenção que esse atributo deve ser válido tanto para grupos como para utilizadores, e que é único. Deixe em branco para optar pelo comportamento por defeito. Estas alteração apenas terão efeito em novos utilizadores e grupos mapeados (adicionados).",
"UUID Attribute for Users:" : "Atributo UUID para utilizadores:",
"UUID Attribute for Groups:" : "Atributo UUID para grupos:",
"Username-LDAP User Mapping" : "Mapeamento do utilizador LDAP",
diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json
index bd8401b9a5a..d508a7d7263 100644
--- a/apps/user_ldap/l10n/pt_PT.json
+++ b/apps/user_ldap/l10n/pt_PT.json
@@ -4,7 +4,6 @@
"No action specified" : "Nenhuma ação especificada",
"No configuration specified" : "Nenhuma configuração especificada",
"No data specified" : "Nenhuns dados especificados",
- " Could not set configuration %s" : "Não foi possível definir a configuração %s",
"Action does not exist" : "A ação não existe",
"Very weak password" : "Palavra-passe muito fraca",
"Weak password" : "Palavra-passe fraca",
@@ -23,9 +22,9 @@
"Base DN could not be auto-detected, please revise credentials, host and port." : "Não foi possível detetar automaticamente o ND base, por favor, verifique as credenciais, anfitrião e porta.",
"Could not detect Base DN, please enter it manually." : "Não foi possível detetar o ND de base, por favor introduza-o manualmente.",
"{nthServer}. Server" : "{nthServer}. Servidor",
- "No object found in the given Base DN. Please revise." : "Nenhum objecto encontrado na Base DN fornecida. Por favor verifique.",
+ "No object found in the given Base DN. Please revise." : "Nenhum objeto encontrado na Base DN fornecida. Por favor verifique.",
"More than 1,000 directory entries available." : "Mais de 1,000 entradas de diretório disponíveis.",
- "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ocorreu um erro. Por favor verifique o ND de base, bem como as definições de ligação e as credenciais.",
+ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ocorreu um erro. Por favor, verifique o ND Base, bem como as definições de ligação e as credenciais.",
"Do you really want to delete the current Server Configuration?" : "Deseja eliminar a 'Configuração do Servidor' atual?",
"Confirm Deletion" : "Confirmar Eliminação",
"Mappings cleared successfully!" : "Mapas limpos com sucesso!",
@@ -39,6 +38,7 @@
"User found and settings verified." : "Utilizador encontrado e definições verificadas.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.",
"Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar",
+ "LDAP Connection" : "Ligação LDAP",
"Could not find the desired feature" : "Não se encontrou a função desejada",
"Invalid Host" : "Anfitrião Inválido",
"Test Configuration" : "Testar a configuração",
@@ -54,7 +54,7 @@
"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.",
"When logging in, %s will find the user based on the following attributes:" : "Quando entrar no sistema, %s irá encontrar o utilizador baseando-se nos seguintes atributos:",
"Other Attributes:" : "Outros Atributos:",
- "Test Loginname" : "Testar nome de login",
+ "Test Loginname" : "Testar nome de início de sessão",
"Verify settings" : "Verificar definições",
"%s. Server:" : "%s. Servidor:",
"Copy current configuration into new directory binding" : "Copiar a configuração atual para um novo registo de diretoria",
@@ -70,8 +70,8 @@
"Detect Base DN" : "Detetar Base DN",
"Test Base DN" : "Testar Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita pedidos LDAP automáticos. Melhor para grandes configurações, mas requer conhecimentos LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Introduzir filtros LDAP manualmente (recomendado para directórios grandes)",
- "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." : "Os objectos mais comuns para utilizadores são <em>organizationalPerson, person, user, and inetOrgPerson</em>. Se não tem a certeza de que classe de objecto deverá seleccionar, por favor, contacte o administrador do Directório.",
+ "Manually enter LDAP filters (recommended for large directories)" : "Introduzir filtros LDAP manualmente (recomendado para diretórios grandes)",
+ "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." : "Os objetos mais comuns para utilizadores são <em>organizationalPerson, person, user, and inetOrgPerson</em>. Se não tem a certeza de que classe de objeto deverá selecionar, por favor, contacte o administrador do diretório.",
"The filter specifies which LDAP users shall have access to the %s instance." : "O filtro especifica quais utilizadores do LDAP devem ter acesso à instância %s.",
"Verify settings and count users" : "Verificar definições e contar utilizadores",
"Saving" : "A guardar",
@@ -96,13 +96,13 @@
"Backup (Replica) Host" : "Anfitrião de Cópia de Segurança (Réplica)",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Indique um anfitrião de cópia de segurança. Este deve ser uma réplica do servidor principal de LDAP/AD ",
"Backup (Replica) Port" : "Porta do servidor de backup (Replica)",
- "Disable Main Server" : "Desactivar servidor principal",
+ "Disable Main Server" : "Desativar servidor principal",
"Only connect to the replica server." : "Ligar apenas ao servidor de réplicas.",
"Turn off SSL certificate validation." : "Desligar a validação de certificado SSL.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Não recomendado, use-o somente para teste! ligação só funciona com esta opção, importar o certificado SSL do servidor LDAP para o seu servidor %s.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Não recomendado, utilize-o apenas para testes! Se a ligação só funciona com esta opção, importe o certificado SSL do servidor LDAP para o seu servidor %s.",
"Cache Time-To-Live" : "Cache do tempo de vida dos objetos no servidor",
"in seconds. A change empties the cache." : "em segundos. Uma alteração esvazia a cache.",
- "Directory Settings" : "Definições de directorias",
+ "Directory Settings" : "Definições de diretorias",
"User Display Name Field" : "Mostrador do nome de utilizador.",
"The LDAP attribute to use to generate the user's display name." : "O atributo de LDAP para gerar o nome a exibir do utilizador.",
"2nd User Display Name Field" : "2.º Mostrador do Nome de Utilizador.",
@@ -120,9 +120,9 @@
"Dynamic Group Member URL" : "URL Dinâmica de Membro do Grupo",
"The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "O atributo LDAP que em objetos de grupo contém um URL de pesquisa LDAP que determina que objetos pertencem ao grupo. (Uma definição vazia desativa a funcionalidade de membros de grupo dinâmico.)",
"Nested Groups" : "Grupos agrupados",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Quando habilitado os grupos, os grupos são suportados. (Só funciona se o atributo de membro de grupo contém DNs.)",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Quando ativado, os grupos que contêm grupos são suportados. (Só funciona se o atributo de membro do grupo contiver DNs).",
"Paging chunksize" : "Bloco de paginação",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamanho do bloco usado para pesquisas LDAP paginados que podem retornar resultados volumosos como utilizador ou grupo de enumeração. (Defini-lo 0 desactiva paginada das pesquisas LDAP nessas situações.)",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamanho do bloco usado para pesquisas LDAP paginados que podem retornar resultados volumosos como utilizador ou grupo de enumeração. (Defini-lo 0 desativa paginada das pesquisas LDAP nessas situações.)",
"Special Attributes" : "Atributos especiais",
"Quota Field" : "Quota",
"Quota Default" : "Quota padrão",
@@ -130,8 +130,8 @@
"User Home Folder Naming Rule" : "Regra da pasta inicial do utilizador",
"Internal Username" : "Nome de utilizador interno",
"Internal Username Attribute:" : "Atributo do nome de utilizador interno",
- "Override UUID detection" : "Passar a detecção do 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." : "Por defeito, o ownCloud detecta automaticamente o atributo UUID. Este atributo é usado para identificar inequivocamente grupos e utilizadores LDAP. Igualmente, o nome de utilizador interno é criado com base no UUID, se o contrário não for especificado. Pode sobrepor esta definição colocando um atributo à sua escolha. Tenha em atenção que esse atributo deve ser válido tanto para grupos como para utilizadores, e que é único. Deixe em branco para optar pelo comportamento por defeito. Estas alteração apenas terão efeito em novos utilizadores e grupos mapeados (adicionados).",
+ "Override UUID detection" : "Passar a deteção do 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." : "Por defeito, o ownCloud deteta automaticamente o atributo UUID. Este atributo é usado para identificar inequivocamente grupos e utilizadores LDAP. Igualmente, o nome de utilizador interno é criado com base no UUID, se o contrário não for especificado. Pode sobrepor esta definição colocando um atributo à sua escolha. Tenha em atenção que esse atributo deve ser válido tanto para grupos como para utilizadores, e que é único. Deixe em branco para optar pelo comportamento por defeito. Estas alteração apenas terão efeito em novos utilizadores e grupos mapeados (adicionados).",
"UUID Attribute for Users:" : "Atributo UUID para utilizadores:",
"UUID Attribute for Groups:" : "Atributo UUID para grupos:",
"Username-LDAP User Mapping" : "Mapeamento do utilizador LDAP",
diff --git a/apps/user_ldap/l10n/ro.js b/apps/user_ldap/l10n/ro.js
deleted file mode 100644
index 47788d4b17b..00000000000
--- a/apps/user_ldap/l10n/ro.js
+++ /dev/null
@@ -1,101 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Ștergerea mapărilor a eșuat.",
- "Failed to delete the server configuration" : "Ștergerea configurației serverului a eșuat.",
- "Valid configuration, connection established!" : "Configurație validată, conexiune stabilită!",
- "No action specified" : "Nu este specificată nicio acțiune ",
- "No configuration specified" : "Nu este specificată nicio configurație",
- "No data specified" : "Nu au fost specificate date",
- " Could not set configuration %s" : "Nu a putut fi setată configurația %s",
- "Action does not exist" : "Acțiunea nu există",
- "Renewing …" : "Reînnoiesc ...",
- "Very weak password" : "Parolă foarte slabă",
- "Weak password" : "Parolă slabă",
- "So-so password" : "Parolă medie",
- "Good password" : "Parolă bună",
- "Strong password" : "Parolă puternică",
- "The Base DN appears to be wrong" : "DN-ul de bază pare a fi greșit",
- "Testing configuration…" : "Se testează configurația...",
- "Configuration incorrect" : "Configurație incorectă",
- "Configuration incomplete" : "Configurație incompletă",
- "Configuration OK" : "Configurație validă",
- "Select groups" : "Selectează grupuri ",
- "Select object classes" : "Selectează clase de obiecte",
- "Please check the credentials, they seem to be wrong." : "Verifică datele de autentificare, ele par a fi greșite.",
- "Please specify the port, it could not be auto-detected." : "Specifică portul, nu a putut fi detectat automat.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "DN-ul de bază nu a putut fi detectat automat, te rugăm revizuiește datele de autentificare, gazda și portul.",
- "Could not detect Base DN, please enter it manually." : "DN-ul de bază nu a putut fi detectat, introdu-l manual.",
- "{nthServer}. Server" : "{nthServer}. Server",
- "More than 1,000 directory entries available." : "Mai mult de 1000 de directoare disponibile.",
- "Do you really want to delete the current Server Configuration?" : "Sigur vrei să ștergi configurația curentă a serverului?",
- "Confirm Deletion" : "Confirmă ștergerea",
- "Mappings cleared successfully!" : "Asocierile au fost șterse!",
- "Error while clearing the mappings." : "Eroare la ștergerea asocierilor.",
- "Select attributes" : "Selectaţi caracteristici",
- "Your password will expire tomorrow." : "Parola ta va expira mâine.",
- "Your password will expire today." : "Parola ta va expira astăzi.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parola ta va expira în %n zi.","Parola ta va expira în %n zile.","Parola ta va expira în %n zile."],
- "Could not find the desired feature" : "Nu s-a putut găsi funcționalitatea dorită.",
- "Invalid Host" : "Host invalid",
- "Test Configuration" : "Configurare test",
- "Help" : "Ajutor",
- "Search groups" : "Caută grupuri",
- "Available groups" : "Grupuri disponibile",
- "Selected groups" : "Grupurile selectate",
- "LDAP Filter:" : "Filtru LDAP:",
- "Other Attributes:" : "Alte caracteristici :",
- "Verify settings" : "Verifică setările",
- "%s. Server:" : "%s. Server:",
- "Delete the current configuration" : "Șterge configurația curentă",
- "Host" : "Gazdă",
- "Port" : "Portul",
- "Detect Port" : "Detectează portul",
- "User DN" : "DN-ul utilizatorului",
- "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-ul utilizatorului cu care se va efectua asocierea, de exemplu uid=agent,dc=example,dc=com. Pentru acces anonim, lasă DN-ul și parola libere.",
- "Password" : "Parolă",
- "For anonymous access, leave DN and Password empty." : "Pentru acces anonim, lasă DN-ul și parola libere.",
- "Save Credentials" : "Salvează datele de autentificare",
- "One Base DN per line" : "Un DN de bază pe linie",
- "You can specify Base DN for users and groups in the Advanced tab" : "Poți specifica DN-ul de bază pentru utilizatori și grupuri în fila Avansat",
- "Detect Base DN" : "Detectează DN-ul de bază",
- "Test Base DN" : "Testează DN-ul de bază",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evită solicitările LDAP automate. De preferat pentru instalările mai complexe, dar necesită câteva cunoștințe LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Introdu filtrele LDAP manual (recomandat pentru medii LDAP largi)",
- "Verify settings and count users" : "Verifică setările și numără utilizatorii",
- "Saving" : "Se salvează",
- "Back" : "Înapoi",
- "Continue" : "Continuă",
- "Please renew your password." : "Te rog reînnoiește parola.",
- "An internal error occurred." : "A apărut o eroare internă.",
- "Please try again or contact your administrator." : "Încearcă din nou sau contactează-ți administratorul.",
- "Current password" : "Parola curentă",
- "New password" : "Noua parolă",
- "Renew password" : "Reînnoiește parola",
- "Wrong password." : "Parolă greșită.",
- "Cancel" : "Anulează",
- "Server" : "Server",
- "Users" : "Utilizatori",
- "Login Attributes" : "Atribute de autentificare",
- "Groups" : "Grupuri",
- "Expert" : "Expert",
- "Advanced" : "Avansat",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Atenție</b> Modulul PHP LDAP nu este instalat, infrastructura nu va funcționa. Contactează administratorul sistemului pentru al instala.",
- "Connection Settings" : "Setările de conexiune",
- "Configuration Active" : "Configurație activă",
- "When unchecked, this configuration will be skipped." : "Dacă este debifat, se va sări peste această configurație.",
- "Disable Main Server" : "Dezactivaţi serverul principal",
- "Turn off SSL certificate validation." : "Oprește validarea certificatelor SSL ",
- "in seconds. A change empties the cache." : "în secunde. O schimbare curăță memoria tampon.",
- "Directory Settings" : "Setările directorului",
- "User Display Name Field" : "Câmpul cu numele vizibil al utilizatorului",
- "Base User Tree" : "Arborele de bază al utilizatorilor",
- "One User Base DN per line" : "Un DN utilizator de bază pe linie",
- "Group Display Name Field" : "Câmpul cu numele grupului",
- "Base Group Tree" : "Arborele de bază al Grupurilor",
- "One Group Base DN per line" : "Un Group Base DN pe linie",
- "Group-Member association" : "Asocierea Grup-Membru",
- "Special Attributes" : "Caracteristici speciale ",
- "Internal Username" : "Nume utilizator intern"
-},
-"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/user_ldap/l10n/ro.json b/apps/user_ldap/l10n/ro.json
deleted file mode 100644
index f5fca02f43d..00000000000
--- a/apps/user_ldap/l10n/ro.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Ștergerea mapărilor a eșuat.",
- "Failed to delete the server configuration" : "Ștergerea configurației serverului a eșuat.",
- "Valid configuration, connection established!" : "Configurație validată, conexiune stabilită!",
- "No action specified" : "Nu este specificată nicio acțiune ",
- "No configuration specified" : "Nu este specificată nicio configurație",
- "No data specified" : "Nu au fost specificate date",
- " Could not set configuration %s" : "Nu a putut fi setată configurația %s",
- "Action does not exist" : "Acțiunea nu există",
- "Renewing …" : "Reînnoiesc ...",
- "Very weak password" : "Parolă foarte slabă",
- "Weak password" : "Parolă slabă",
- "So-so password" : "Parolă medie",
- "Good password" : "Parolă bună",
- "Strong password" : "Parolă puternică",
- "The Base DN appears to be wrong" : "DN-ul de bază pare a fi greșit",
- "Testing configuration…" : "Se testează configurația...",
- "Configuration incorrect" : "Configurație incorectă",
- "Configuration incomplete" : "Configurație incompletă",
- "Configuration OK" : "Configurație validă",
- "Select groups" : "Selectează grupuri ",
- "Select object classes" : "Selectează clase de obiecte",
- "Please check the credentials, they seem to be wrong." : "Verifică datele de autentificare, ele par a fi greșite.",
- "Please specify the port, it could not be auto-detected." : "Specifică portul, nu a putut fi detectat automat.",
- "Base DN could not be auto-detected, please revise credentials, host and port." : "DN-ul de bază nu a putut fi detectat automat, te rugăm revizuiește datele de autentificare, gazda și portul.",
- "Could not detect Base DN, please enter it manually." : "DN-ul de bază nu a putut fi detectat, introdu-l manual.",
- "{nthServer}. Server" : "{nthServer}. Server",
- "More than 1,000 directory entries available." : "Mai mult de 1000 de directoare disponibile.",
- "Do you really want to delete the current Server Configuration?" : "Sigur vrei să ștergi configurația curentă a serverului?",
- "Confirm Deletion" : "Confirmă ștergerea",
- "Mappings cleared successfully!" : "Asocierile au fost șterse!",
- "Error while clearing the mappings." : "Eroare la ștergerea asocierilor.",
- "Select attributes" : "Selectaţi caracteristici",
- "Your password will expire tomorrow." : "Parola ta va expira mâine.",
- "Your password will expire today." : "Parola ta va expira astăzi.",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parola ta va expira în %n zi.","Parola ta va expira în %n zile.","Parola ta va expira în %n zile."],
- "Could not find the desired feature" : "Nu s-a putut găsi funcționalitatea dorită.",
- "Invalid Host" : "Host invalid",
- "Test Configuration" : "Configurare test",
- "Help" : "Ajutor",
- "Search groups" : "Caută grupuri",
- "Available groups" : "Grupuri disponibile",
- "Selected groups" : "Grupurile selectate",
- "LDAP Filter:" : "Filtru LDAP:",
- "Other Attributes:" : "Alte caracteristici :",
- "Verify settings" : "Verifică setările",
- "%s. Server:" : "%s. Server:",
- "Delete the current configuration" : "Șterge configurația curentă",
- "Host" : "Gazdă",
- "Port" : "Portul",
- "Detect Port" : "Detectează portul",
- "User DN" : "DN-ul utilizatorului",
- "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-ul utilizatorului cu care se va efectua asocierea, de exemplu uid=agent,dc=example,dc=com. Pentru acces anonim, lasă DN-ul și parola libere.",
- "Password" : "Parolă",
- "For anonymous access, leave DN and Password empty." : "Pentru acces anonim, lasă DN-ul și parola libere.",
- "Save Credentials" : "Salvează datele de autentificare",
- "One Base DN per line" : "Un DN de bază pe linie",
- "You can specify Base DN for users and groups in the Advanced tab" : "Poți specifica DN-ul de bază pentru utilizatori și grupuri în fila Avansat",
- "Detect Base DN" : "Detectează DN-ul de bază",
- "Test Base DN" : "Testează DN-ul de bază",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evită solicitările LDAP automate. De preferat pentru instalările mai complexe, dar necesită câteva cunoștințe LDAP.",
- "Manually enter LDAP filters (recommended for large directories)" : "Introdu filtrele LDAP manual (recomandat pentru medii LDAP largi)",
- "Verify settings and count users" : "Verifică setările și numără utilizatorii",
- "Saving" : "Se salvează",
- "Back" : "Înapoi",
- "Continue" : "Continuă",
- "Please renew your password." : "Te rog reînnoiește parola.",
- "An internal error occurred." : "A apărut o eroare internă.",
- "Please try again or contact your administrator." : "Încearcă din nou sau contactează-ți administratorul.",
- "Current password" : "Parola curentă",
- "New password" : "Noua parolă",
- "Renew password" : "Reînnoiește parola",
- "Wrong password." : "Parolă greșită.",
- "Cancel" : "Anulează",
- "Server" : "Server",
- "Users" : "Utilizatori",
- "Login Attributes" : "Atribute de autentificare",
- "Groups" : "Grupuri",
- "Expert" : "Expert",
- "Advanced" : "Avansat",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Atenție</b> Modulul PHP LDAP nu este instalat, infrastructura nu va funcționa. Contactează administratorul sistemului pentru al instala.",
- "Connection Settings" : "Setările de conexiune",
- "Configuration Active" : "Configurație activă",
- "When unchecked, this configuration will be skipped." : "Dacă este debifat, se va sări peste această configurație.",
- "Disable Main Server" : "Dezactivaţi serverul principal",
- "Turn off SSL certificate validation." : "Oprește validarea certificatelor SSL ",
- "in seconds. A change empties the cache." : "în secunde. O schimbare curăță memoria tampon.",
- "Directory Settings" : "Setările directorului",
- "User Display Name Field" : "Câmpul cu numele vizibil al utilizatorului",
- "Base User Tree" : "Arborele de bază al utilizatorilor",
- "One User Base DN per line" : "Un DN utilizator de bază pe linie",
- "Group Display Name Field" : "Câmpul cu numele grupului",
- "Base Group Tree" : "Arborele de bază al Grupurilor",
- "One Group Base DN per line" : "Un Group Base DN pe linie",
- "Group-Member association" : "Asocierea Grup-Membru",
- "Special Attributes" : "Caracteristici speciale ",
- "Internal Username" : "Nume utilizator intern"
-},"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/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js
index ff3fa7d8e35..e9abc7d540c 100644
--- a/apps/user_ldap/l10n/ru.js
+++ b/apps/user_ldap/l10n/ru.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Неверная конфигурация: анонимное связывание не разрешается.",
"Valid configuration, connection established!" : "Конфигурация настроена верно, связь установлена!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Конфигурация настроена верно, но связывание не удалось. Проверьте настройки сервера и реквизиты доступа.",
- "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений.",
+ "Invalid configuration: %s" : "Недопустимая конфигурация: %s",
"No action specified" : "Действие не указано",
"No configuration specified" : "Конфигурация не указана",
"No data specified" : "Нет данных",
"Invalid data specified" : "Указаны некорректные данные",
- " Could not set configuration %s" : "Невозможно создать конфигурацию %s",
+ "Could not set configuration %1$s to %2$s" : "Не удалось задать конфигурацию %1$s для %2$s",
"Action does not exist" : "Действие не существует",
"Renewing …" : "Обновление…",
"Very weak password" : "Очень слабый пароль",
@@ -26,12 +26,12 @@ OC.L10N.register(
"Configuration OK" : "Конфигурация в порядке",
"Select groups" : "Выберите группы",
"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." : "Пожалуйста укажите порт, он не может быть определен автоматически.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "База поиска не может быть определена автоматически, пожалуйста перепроверьте учетные данные, адрес и порт.",
"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. Пожалуйста перепроверьте.",
+ "No object found in the given Base DN. Please revise." : "В указанной базовой DN не найден ни один объект. Пожалуйста, перепроверьте.",
"More than 1,000 directory entries available." : "В каталоге доступно более 1,000 записей.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} элемент доступен в предоставленном базовом DN","{objectsFound} элементов доступно в предоставленном базовом DN","{objectsFound} элементов доступно в предоставленном базовом DN","{objectsFound} элементов доступно в предоставленном базовом DN"],
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Произошла ошибка. Пожалуйста проверьте базу поиска DN, а также настройки подключения и учетные данные.",
@@ -54,15 +54,28 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заполнитель \"%uid\" отсутствует. Он будет заменён именем пользователя при запросе LDAP/AD.",
"Please provide a login name to test against" : "Пожалуйста, укажите логин для проверки",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Блок группы был отключен, поскольку сервер LDAP/AD не поддерживает memberOf.",
- "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:",
+ "Password change rejected. Hint: %s" : "Изменение пароля отклонено. Подсказка: %s",
+ "Mandatory field \"%s\" left empty" : "Обязательное поле «%s» оставлено пустым",
+ "A password is given, but not an LDAP agent" : "Пароль задан, но не указан LDAP-агент",
+ "No password is given for the user agent" : "Пароль для LDAP-агента не задан",
+ "No LDAP base DN was given" : "Не указана базовая DN LDAP",
+ "User base DN is not a subnode of global base DN" : "Базовая DN пользователей не является подузлом глобальной базовой DN",
+ "Group base DN is not a subnode of global base DN" : " Базовая DN групп не является подузлом глобальной базовой DN",
+ "Login filter does not contain %s placeholder." : "Фильтр входа не содержит плейсхолдер %s.",
"Please login with the new password" : "Войдите в систему со своим новым паролем",
"LDAP User backend" : "Механизм учета пользователей LDAP",
"Your password will expire tomorrow." : "Завтра истекает срок действия пароля.",
"Your password will expire today." : "Сегодня истекает срок действия пароля.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Срок действия пароля истекает через %n день.","Срок действия пароля истекает через %n дня.","Срок действия пароля истекает через %n дней.","Срок действия пароля истекает через %n день."],
"LDAP/AD integration" : "LDAP/AD интеграция",
+ "LDAP Connection" : "Подключение по протоколу LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Не удалось выполнить привязку для этой конфигурации LDAP: %s","Не удалось выполнить привязку для %n конфигураций LDAP: %s","Не удалось выполнить привязку для %n конфигураций LDAP: %s","Не удалось выполнить привязку для %n конфигураций LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Ошибка поиска в этой конфигурации LDAP: %s","Ошибка поиска в %n конфигурациях LDAP: %s","Ошибка поиска в %n конфигурациях LDAP: %s","Ошибка поиска в %n конфигурациях LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Найдена неактивная конфигурация LDAP: %s","Найдено %n неактивных конфигурации LDAP: %s","Найдено %n неактивных конфигураций LDAP: %s","Найдено %n неактивных конфигураций LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : [" Привязка и поиск работают в настроенном LDAP-соединении (%s)"," Привязка и поиск работают во всех %n настроенных LDAP-соединениях (%s)"," Привязка и поиск работают во всех %n настроенных LDAP-соединениях (%s)"," Привязка и поиск работают во всех %n настроенных LDAP-соединениях (%s)"],
"Invalid LDAP UUIDs" : "Недопустимые UUID LDAP",
"None found" : "Ничего не найдено",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Обнаружены недопустимые идентификаторы UUID учетных записей или групп LDAP. Пожалуйста, ознакомьтесь с вашими настройками \"Переопределение обнаружения UUID\" в экспертной части конфигурации LDAP и используйте \"occ ldap:update-uuid\", чтобы обновить их.",
"_%n group found_::_%n groups found_" : ["Найдена %n группа","Найдено %n группы","Найдено %n групп","Найдено %n группы"],
"> 1000 groups found" : "Найдено более 1000 групп",
"> 1000 users found" : "Найдено более 1000 пользователей",
@@ -186,7 +199,7 @@ OC.L10N.register(
"User Home Folder Naming Rule" : "Правило именования домашнего каталога пользователя",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию) или укажите атрибут LDAP/AD.",
"\"$home\" Placeholder Field" : "Поле-заполнитель \"$home\"",
- "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменен значением указанного атрибута",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменён значением указанного атрибута",
"User Profile Attributes" : "Атрибуты профиля пользователей",
"Phone Field" : "Поле телефона",
"User profile Phone will be set from the specified attribute" : "Телефон в профиле пользователя будет установлен из указанного атрибута",
@@ -206,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Заголовок в профиле пользователя будет установлен из указанного атрибута",
"Biography Field" : "Поле биографии",
"User profile Biography will be set from the specified attribute" : "Биография в профиле пользователя будет установлена из указанного атрибута",
+ "Birthdate Field" : "Поле Даты рождения",
+ "User profile Date of birth will be set from the specified attribute" : "Дата рождения профиля пользователя будет установлена на основе указанного атрибута",
+ "Pronouns Field" : " Поле местоимений",
+ "User profile Pronouns will be set from the specified attribute" : "Местоимения в профиле пользователя будут заданы из указанного атрибута",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "По умолчанию внутреннее имя пользователя будет создано на основе атрибута UUID. Это гарантирует, что имя пользователя будет уникальным и символы не нужно будет преобразовывать. Внутреннее имя пользователя имеет ограничение – разрешены только эти символы: [a-zA-Z0-9_.@-]. Другие символы заменяются их ASCII-кодами или просто опускаются. При совпадениях число будет добавлено/увеличено. Внутреннее имя пользователя используется для внутренней идентификации пользователя. Оно также является именем по умолчанию для домашней папки пользователя. Оно также является частью удалённых URL-адресов, например, для всех служб DAV. С помощью этого параметра можно переопределить поведение по умолчанию. Изменения будут иметь силу только для новых сопоставленных (добавленных) пользователей LDAP. Оставьте этот параметр пустым для поведения по умолчанию.",
"Internal Username Attribute:" : "Атрибут для внутреннего имени:",
@@ -217,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Имена пользователей используются для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется DN для уменьшения числа обращений к LDAP, однако он не используется для идентификации. Если DN был изменён, то изменения будут найдены. Внутреннее имя используется повсеместно. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Обнаружены некорректные идентификаторы UUID пользователей или групп LDAP. Для их обновления обратите внимание на параметр «Переопределять определение UUID» в разделе экспертных настроек протокола LDAP и запустите в консоли команду «occ ldap:update-uuid»."
+ "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений."
},
"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 c7b89d7c5f6..97ac0b1eeb3 100644
--- a/apps/user_ldap/l10n/ru.json
+++ b/apps/user_ldap/l10n/ru.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Неверная конфигурация: анонимное связывание не разрешается.",
"Valid configuration, connection established!" : "Конфигурация настроена верно, связь установлена!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Конфигурация настроена верно, но связывание не удалось. Проверьте настройки сервера и реквизиты доступа.",
- "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений.",
+ "Invalid configuration: %s" : "Недопустимая конфигурация: %s",
"No action specified" : "Действие не указано",
"No configuration specified" : "Конфигурация не указана",
"No data specified" : "Нет данных",
"Invalid data specified" : "Указаны некорректные данные",
- " Could not set configuration %s" : "Невозможно создать конфигурацию %s",
+ "Could not set configuration %1$s to %2$s" : "Не удалось задать конфигурацию %1$s для %2$s",
"Action does not exist" : "Действие не существует",
"Renewing …" : "Обновление…",
"Very weak password" : "Очень слабый пароль",
@@ -24,12 +24,12 @@
"Configuration OK" : "Конфигурация в порядке",
"Select groups" : "Выберите группы",
"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." : "Пожалуйста укажите порт, он не может быть определен автоматически.",
"Base DN could not be auto-detected, please revise credentials, host and port." : "База поиска не может быть определена автоматически, пожалуйста перепроверьте учетные данные, адрес и порт.",
"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. Пожалуйста перепроверьте.",
+ "No object found in the given Base DN. Please revise." : "В указанной базовой DN не найден ни один объект. Пожалуйста, перепроверьте.",
"More than 1,000 directory entries available." : "В каталоге доступно более 1,000 записей.",
"_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} элемент доступен в предоставленном базовом DN","{objectsFound} элементов доступно в предоставленном базовом DN","{objectsFound} элементов доступно в предоставленном базовом DN","{objectsFound} элементов доступно в предоставленном базовом DN"],
"An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Произошла ошибка. Пожалуйста проверьте базу поиска DN, а также настройки подключения и учетные данные.",
@@ -52,15 +52,28 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заполнитель \"%uid\" отсутствует. Он будет заменён именем пользователя при запросе LDAP/AD.",
"Please provide a login name to test against" : "Пожалуйста, укажите логин для проверки",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Блок группы был отключен, поскольку сервер LDAP/AD не поддерживает memberOf.",
- "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:",
+ "Password change rejected. Hint: %s" : "Изменение пароля отклонено. Подсказка: %s",
+ "Mandatory field \"%s\" left empty" : "Обязательное поле «%s» оставлено пустым",
+ "A password is given, but not an LDAP agent" : "Пароль задан, но не указан LDAP-агент",
+ "No password is given for the user agent" : "Пароль для LDAP-агента не задан",
+ "No LDAP base DN was given" : "Не указана базовая DN LDAP",
+ "User base DN is not a subnode of global base DN" : "Базовая DN пользователей не является подузлом глобальной базовой DN",
+ "Group base DN is not a subnode of global base DN" : " Базовая DN групп не является подузлом глобальной базовой DN",
+ "Login filter does not contain %s placeholder." : "Фильтр входа не содержит плейсхолдер %s.",
"Please login with the new password" : "Войдите в систему со своим новым паролем",
"LDAP User backend" : "Механизм учета пользователей LDAP",
"Your password will expire tomorrow." : "Завтра истекает срок действия пароля.",
"Your password will expire today." : "Сегодня истекает срок действия пароля.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Срок действия пароля истекает через %n день.","Срок действия пароля истекает через %n дня.","Срок действия пароля истекает через %n дней.","Срок действия пароля истекает через %n день."],
"LDAP/AD integration" : "LDAP/AD интеграция",
+ "LDAP Connection" : "Подключение по протоколу LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Не удалось выполнить привязку для этой конфигурации LDAP: %s","Не удалось выполнить привязку для %n конфигураций LDAP: %s","Не удалось выполнить привязку для %n конфигураций LDAP: %s","Не удалось выполнить привязку для %n конфигураций LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Ошибка поиска в этой конфигурации LDAP: %s","Ошибка поиска в %n конфигурациях LDAP: %s","Ошибка поиска в %n конфигурациях LDAP: %s","Ошибка поиска в %n конфигурациях LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Найдена неактивная конфигурация LDAP: %s","Найдено %n неактивных конфигурации LDAP: %s","Найдено %n неактивных конфигураций LDAP: %s","Найдено %n неактивных конфигураций LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : [" Привязка и поиск работают в настроенном LDAP-соединении (%s)"," Привязка и поиск работают во всех %n настроенных LDAP-соединениях (%s)"," Привязка и поиск работают во всех %n настроенных LDAP-соединениях (%s)"," Привязка и поиск работают во всех %n настроенных LDAP-соединениях (%s)"],
"Invalid LDAP UUIDs" : "Недопустимые UUID LDAP",
"None found" : "Ничего не найдено",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Обнаружены недопустимые идентификаторы UUID учетных записей или групп LDAP. Пожалуйста, ознакомьтесь с вашими настройками \"Переопределение обнаружения UUID\" в экспертной части конфигурации LDAP и используйте \"occ ldap:update-uuid\", чтобы обновить их.",
"_%n group found_::_%n groups found_" : ["Найдена %n группа","Найдено %n группы","Найдено %n групп","Найдено %n группы"],
"> 1000 groups found" : "Найдено более 1000 групп",
"> 1000 users found" : "Найдено более 1000 пользователей",
@@ -184,7 +197,7 @@
"User Home Folder Naming Rule" : "Правило именования домашнего каталога пользователя",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию) или укажите атрибут LDAP/AD.",
"\"$home\" Placeholder Field" : "Поле-заполнитель \"$home\"",
- "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменен значением указанного атрибута",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменён значением указанного атрибута",
"User Profile Attributes" : "Атрибуты профиля пользователей",
"Phone Field" : "Поле телефона",
"User profile Phone will be set from the specified attribute" : "Телефон в профиле пользователя будет установлен из указанного атрибута",
@@ -204,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "Заголовок в профиле пользователя будет установлен из указанного атрибута",
"Biography Field" : "Поле биографии",
"User profile Biography will be set from the specified attribute" : "Биография в профиле пользователя будет установлена из указанного атрибута",
+ "Birthdate Field" : "Поле Даты рождения",
+ "User profile Date of birth will be set from the specified attribute" : "Дата рождения профиля пользователя будет установлена на основе указанного атрибута",
+ "Pronouns Field" : " Поле местоимений",
+ "User profile Pronouns will be set from the specified attribute" : "Местоимения в профиле пользователя будут заданы из указанного атрибута",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "По умолчанию внутреннее имя пользователя будет создано на основе атрибута UUID. Это гарантирует, что имя пользователя будет уникальным и символы не нужно будет преобразовывать. Внутреннее имя пользователя имеет ограничение – разрешены только эти символы: [a-zA-Z0-9_.@-]. Другие символы заменяются их ASCII-кодами или просто опускаются. При совпадениях число будет добавлено/увеличено. Внутреннее имя пользователя используется для внутренней идентификации пользователя. Оно также является именем по умолчанию для домашней папки пользователя. Оно также является частью удалённых URL-адресов, например, для всех служб DAV. С помощью этого параметра можно переопределить поведение по умолчанию. Изменения будут иметь силу только для новых сопоставленных (добавленных) пользователей LDAP. Оставьте этот параметр пустым для поведения по умолчанию.",
"Internal Username Attribute:" : "Атрибут для внутреннего имени:",
@@ -215,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Имена пользователей используются для хранения и назначения метаданных. Для точной идентификации и распознавания пользователей, каждый пользователь LDAP будет иметь свое внутреннее имя пользователя. Это требует привязки имени пользователя к пользователю LDAP. При создании имя пользователя назначается идентификатору UUID пользователя LDAP. Помимо этого кешируется DN для уменьшения числа обращений к LDAP, однако он не используется для идентификации. Если DN был изменён, то изменения будут найдены. Внутреннее имя используется повсеместно. После сброса привязок в базе могут сохраниться остатки старой информации. Сброс привязок не привязан к конфигурации, он повлияет на все LDAP подключения! Ни в коем случае не рекомендуется сбрасывать привязки если система уже находится в эксплуатации, только на этапе тестирования.",
"Clear Username-LDAP User Mapping" : "Очистить соответствия Имя-Пользователь LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистить соответствия Группа-Группа LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Обнаружены некорректные идентификаторы UUID пользователей или групп LDAP. Для их обновления обратите внимание на параметр «Переопределять определение UUID» в разделе экспертных настроек протокола LDAP и запустите в консоли команду «occ ldap:update-uuid»."
+ "Invalid configuration. Please have a look at the logs for further details." : "Неверная конфигурация. Просмотрите журналы для получения дополнительных сведений."
},"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/sc.js b/apps/user_ldap/l10n/sc.js
index bfc04fa1acb..801f642fe73 100644
--- a/apps/user_ldap/l10n/sc.js
+++ b/apps/user_ldap/l10n/sc.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Cunfiguratzione non bàlida: is ligòngios anònimos no sunt permìtidos.",
"Valid configuration, connection established!" : "Cunfiguratzione bàlida, connessione istabilida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Cunfiguratzione bàlida, ma ligòngiu no istabilidu. Càstia sa cunfiguratzione de su serbidore e is credentziales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Cunfiguratzione non bàlida. Càstia is registros pro detàllios in prus.",
"No action specified" : "Peruna atzione ispetzificada",
"No configuration specified" : "Peruna cunfiguratzione ispetzificada",
"No data specified" : "Perunu datu ispetzificadu",
- " Could not set configuration %s" : "No at fatu a impostare sa cunfiguratzione %s",
"Action does not exist" : "S'atzione no esistit",
"Renewing …" : "Renovende ...",
"Very weak password" : "Crae dèbile a beru",
@@ -53,7 +51,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Mancat s'elementu provisòriu\"%uid\". At a èssere cambiadu cun su nùmene de atzessu cando s'at a preguntare LDAP/AP.",
"Please provide a login name to test against" : "Fruni unu nùmene de atzessu pro torrare a fàghere sa proa",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Sa casella de grupu est istada disativada, ca su serbidore LDAP/AP no suportat memberOf.",
- "Password change rejected. Hint: " : "Càmbiu de sa crae refudadu. Cussìgiu:",
"Please login with the new password" : "Torra a fàghere s'atzessu cun sa crae noa",
"LDAP User backend" : "Motore utente LDAP",
"Your password will expire tomorrow." : "Sa crae tua at a iscadire cras.",
@@ -170,13 +167,22 @@ OC.L10N.register(
"Quota Field" : "Campu cuota",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lassa bòidu pro sa cuota utente predefinida. Si nono, ispetzìfica un'atributu LDAP/AD.",
"Quota Default" : "Cuota predefinida",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Subraiscriet una cuota predefinida por utentes LDAP chi non tenent unu valore impostadu in su campu cuota.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Subriscriet una cuota predefinida pro utentes LDAP chi non tenent unu valore cunfiguradu in su campu cuota.",
"Email Field" : "Campu posta eletrònica",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Imposta s'indiritzu de posta de is utentes dae s'atributu LDAP issoro. Lassa bòidu pro su funtzionamentu predefinidu.",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Cunfigura s'indiritzu de posta de is utentes dae s'atributu LDAP issoro. Lassa bòidu pro su funtzionamentu predefinidu.",
"User Home Folder Naming Rule" : "Règula de assignatzione de su nùmene de sa cartella utente",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Lassa bòidu pro su nùmene utente (predefinidu). Si nono, ispetzìfica un'atributu LDAP/AD.",
"\"$home\" Placeholder Field" : "\"$home\" Campu sostitutu temporàneu",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in una cunfiguratzione de archiviatzione de foras s'at a cambiare cun su valore de s'atributu ispetzìficu",
+ "Website Field" : "Campu Situ web",
+ "Organisation Field" : "Campu organizatzione",
+ "User profile Organisation will be set from the specified attribute" : "Su profilu de organizatzione de s'utente at a èssere cunfiguradu dae s'atributu ispetzificadu",
+ "Role Field" : "Campu de faina",
+ "User profile Role will be set from the specified attribute" : "Sa faina de su profilu de utente at a èssere cunfigurada dae s'atributu ispetzificadu",
+ "Headline Field" : "Campu de tìtulu",
+ "User profile Headline will be set from the specified attribute" : "Su tìtulu de su profilu de utente at a èssere cunfiguradu dae s'atributu ispetzificadu",
+ "Biography Field" : "Campu Biografia",
+ "User profile Biography will be set from the specified attribute" : "Sa biografia de su profilu de utente at a èssere cunfigurada dae s'atributu ispetzìficu",
"Internal Username" : "Nùmene utente de intro",
"Internal Username Attribute:" : "Atributu nùmene utente de intro:",
"Override UUID detection" : "Ignora rilevada UUID",
@@ -186,6 +192,7 @@ OC.L10N.register(
"Username-LDAP User Mapping" : "Assòtziu Nùmene utente-Utente LDAP",
"Usernames are used to store and assign metadata. 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." : "Is nùmenes utente d'impreant pro archiviare e assignare is metadatos. Pro identificare a pretzisu e connòschere is utentes, cada utente LDAP at a tènnere unu nùmene utente de intro. Custu rechedet un'assòtziu dae nùmene utente a utente LDAP. Su nùmene utente creadu est assotziadu a s'UUID de s'utente LDAP. In prus su DN si ponet in memòria temporànea pro minimare s'interatzione cun LDAP, ma non s'impreat pro s'identificatzione. Si su DN càmbiat, is càmbios s'ant a agatare. Su nùmene utente de intro s'impreat in totue. Limpiende is assòtzios s'ant a lassare arrastos a s'at a interessare totu sa cunfiguratzione LDAP! Non limpies mai is assòtzios in un'ambiente de produtzione, ma isceti in una fase de proa o isperimentos.",
"Clear Username-LDAP User Mapping" : "Lìmpia assòtziu Nùmene utente-Utente LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Lìmpia assòtziu Nùmene de su grupu-Grupu LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Lìmpia assòtziu Nùmene de su grupu-Grupu LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Cunfiguratzione non bàlida. Càstia is registros pro detàllios in prus."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sc.json b/apps/user_ldap/l10n/sc.json
index 27530ef4bed..b11458c74ca 100644
--- a/apps/user_ldap/l10n/sc.json
+++ b/apps/user_ldap/l10n/sc.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Cunfiguratzione non bàlida: is ligòngios anònimos no sunt permìtidos.",
"Valid configuration, connection established!" : "Cunfiguratzione bàlida, connessione istabilida!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Cunfiguratzione bàlida, ma ligòngiu no istabilidu. Càstia sa cunfiguratzione de su serbidore e is credentziales.",
- "Invalid configuration. Please have a look at the logs for further details." : "Cunfiguratzione non bàlida. Càstia is registros pro detàllios in prus.",
"No action specified" : "Peruna atzione ispetzificada",
"No configuration specified" : "Peruna cunfiguratzione ispetzificada",
"No data specified" : "Perunu datu ispetzificadu",
- " Could not set configuration %s" : "No at fatu a impostare sa cunfiguratzione %s",
"Action does not exist" : "S'atzione no esistit",
"Renewing …" : "Renovende ...",
"Very weak password" : "Crae dèbile a beru",
@@ -51,7 +49,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Mancat s'elementu provisòriu\"%uid\". At a èssere cambiadu cun su nùmene de atzessu cando s'at a preguntare LDAP/AP.",
"Please provide a login name to test against" : "Fruni unu nùmene de atzessu pro torrare a fàghere sa proa",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Sa casella de grupu est istada disativada, ca su serbidore LDAP/AP no suportat memberOf.",
- "Password change rejected. Hint: " : "Càmbiu de sa crae refudadu. Cussìgiu:",
"Please login with the new password" : "Torra a fàghere s'atzessu cun sa crae noa",
"LDAP User backend" : "Motore utente LDAP",
"Your password will expire tomorrow." : "Sa crae tua at a iscadire cras.",
@@ -168,13 +165,22 @@
"Quota Field" : "Campu cuota",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Lassa bòidu pro sa cuota utente predefinida. Si nono, ispetzìfica un'atributu LDAP/AD.",
"Quota Default" : "Cuota predefinida",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Subraiscriet una cuota predefinida por utentes LDAP chi non tenent unu valore impostadu in su campu cuota.",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Subriscriet una cuota predefinida pro utentes LDAP chi non tenent unu valore cunfiguradu in su campu cuota.",
"Email Field" : "Campu posta eletrònica",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Imposta s'indiritzu de posta de is utentes dae s'atributu LDAP issoro. Lassa bòidu pro su funtzionamentu predefinidu.",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Cunfigura s'indiritzu de posta de is utentes dae s'atributu LDAP issoro. Lassa bòidu pro su funtzionamentu predefinidu.",
"User Home Folder Naming Rule" : "Règula de assignatzione de su nùmene de sa cartella utente",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Lassa bòidu pro su nùmene utente (predefinidu). Si nono, ispetzìfica un'atributu LDAP/AD.",
"\"$home\" Placeholder Field" : "\"$home\" Campu sostitutu temporàneu",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in una cunfiguratzione de archiviatzione de foras s'at a cambiare cun su valore de s'atributu ispetzìficu",
+ "Website Field" : "Campu Situ web",
+ "Organisation Field" : "Campu organizatzione",
+ "User profile Organisation will be set from the specified attribute" : "Su profilu de organizatzione de s'utente at a èssere cunfiguradu dae s'atributu ispetzificadu",
+ "Role Field" : "Campu de faina",
+ "User profile Role will be set from the specified attribute" : "Sa faina de su profilu de utente at a èssere cunfigurada dae s'atributu ispetzificadu",
+ "Headline Field" : "Campu de tìtulu",
+ "User profile Headline will be set from the specified attribute" : "Su tìtulu de su profilu de utente at a èssere cunfiguradu dae s'atributu ispetzificadu",
+ "Biography Field" : "Campu Biografia",
+ "User profile Biography will be set from the specified attribute" : "Sa biografia de su profilu de utente at a èssere cunfigurada dae s'atributu ispetzìficu",
"Internal Username" : "Nùmene utente de intro",
"Internal Username Attribute:" : "Atributu nùmene utente de intro:",
"Override UUID detection" : "Ignora rilevada UUID",
@@ -184,6 +190,7 @@
"Username-LDAP User Mapping" : "Assòtziu Nùmene utente-Utente LDAP",
"Usernames are used to store and assign metadata. 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." : "Is nùmenes utente d'impreant pro archiviare e assignare is metadatos. Pro identificare a pretzisu e connòschere is utentes, cada utente LDAP at a tènnere unu nùmene utente de intro. Custu rechedet un'assòtziu dae nùmene utente a utente LDAP. Su nùmene utente creadu est assotziadu a s'UUID de s'utente LDAP. In prus su DN si ponet in memòria temporànea pro minimare s'interatzione cun LDAP, ma non s'impreat pro s'identificatzione. Si su DN càmbiat, is càmbios s'ant a agatare. Su nùmene utente de intro s'impreat in totue. Limpiende is assòtzios s'ant a lassare arrastos a s'at a interessare totu sa cunfiguratzione LDAP! Non limpies mai is assòtzios in un'ambiente de produtzione, ma isceti in una fase de proa o isperimentos.",
"Clear Username-LDAP User Mapping" : "Lìmpia assòtziu Nùmene utente-Utente LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Lìmpia assòtziu Nùmene de su grupu-Grupu LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Lìmpia assòtziu Nùmene de su grupu-Grupu LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Cunfiguratzione non bàlida. Càstia is registros pro detàllios in prus."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js
index 77a5e8197d5..0a9764a3962 100644
--- a/apps/user_ldap/l10n/sk.js
+++ b/apps/user_ldap/l10n/sk.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavenie: anonymné pripojenie nie je povolené.",
"Valid configuration, connection established!" : "Platná konfigurácia, spojenie nadviazané!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.",
- "Invalid configuration. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti.",
"No action specified" : "Nie je vybraná akcia",
"No configuration specified" : "Nie je určená konfigurácia",
"No data specified" : "Nie sú vybraté dáta",
"Invalid data specified" : "Boli zadané neplatné dáta",
- " Could not set configuration %s" : "Nemôžem nastaviť konfiguráciu %s",
"Action does not exist" : "Takáto akcia neexistuje",
"Renewing …" : "Obnovujem...",
"Very weak password" : "Veľmi slabé heslo",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Chýba zástupný znak %uid. Bude nahradený prihlasovacím menom pri požiadavke do LDAP/AD.",
"Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Pole skupín bolo vypnuté, pretože LDAP/AD server nepodporuje memberOf.",
- "Password change rejected. Hint: " : "Zmena hesla zamietnutá. Vodítko:",
"Please login with the new password" : "Prihláste sa prosím novým heslom",
"LDAP User backend" : "Podporná vrstva pre LDAP používateľa",
"Your password will expire tomorrow." : "Vaše heslo expiruje zajtra.",
@@ -62,10 +59,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."],
"LDAP/AD integration" : "Integrácia s LDAP/AD",
"LDAP Connection" : "Pripojenie LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Pripojenie zlyhalo pre túto konfiguráciu LDAP: %s","Pripojenie zlyhalo pre tieto konfigurácie LDAP: %s","Pripojenie zlyhalo pre tieto konfigurácie LDAP: %s","Pripojenie zlyhalo pre tieto konfigurácie LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Vyhľadávanie zlyhalo pre túto konfiguráciu LDAP: %s","Vyhľadávanie zlyhalo pre tieto konfigurácie LDAP: %s","Vyhľadávanie zlyhalo pre tieto konfigurácie LDAP: %s","Vyhľadávanie zlyhalo pre tieto konfigurácie LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Existuje neaktívna konfigurácia LDAP: %s","Existujú neaktívne konfigurácie LDAP: %s","Existujú neaktívne konfigurácie LDAP: %s","Existujú neaktívne konfigurácie LDAP: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Pripojenie a vyhľadávanie funguje na nakonfigurovanom LDAP pripojení (%s)","Pripojenie a vyhľadávanie funguje na všetkých nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých nakonfigurovaných LDAP pripojeniach (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Pripojenie zlyhalo pre túto konfiguráciu LDAP: %s","Pripojenie zlyhalo pre %n konfigurácie LDAP: %s","Pripojenie zlyhalo pre %n konfigurácií LDAP: %s","Pripojenie zlyhalo pre %n konfigurácií LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Vyhľadávanie zlyhalo pre túto konfiguráciu LDAP: %s","Vyhľadávanie zlyhalo pre %n konfigurácie LDAP: %s","Vyhľadávanie zlyhalo pre %n konfigurácií LDAP: %s","Vyhľadávanie zlyhalo pre %n konfigurácií LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Existuje neaktívna konfigurácie LDAP: %s","Existujú %n neaktívne konfigurácie LDAP: %s","Existujú %n neaktívných konfigurácie LDAP: %s","Existujú %n neaktívných konfigurácie LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Pripojenie a vyhľadávanie funguje na nakonfigurovanom LDAP pripojení (%s)","Pripojenie a vyhľadávanie funguje na všetkých %n nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých %n nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých %n nakonfigurovaných LDAP pripojeniach (%s)"],
"Invalid LDAP UUIDs" : "Neplatné LDAP UUIDs",
"None found" : "Nenájdené",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Boli nájdené neplatné UUID účtov alebo skupín LDAP. Skontrolujte svoje nastavenia „Prepísať detekciu UUID“ v expertnej časti konfigurácie LDAP a použite „occ ldap:update-uuid“ na ich aktualizáciu.",
@@ -212,6 +209,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Hlavička užívateľského profilu bude nastavená zo špecifikovaného atribútu.",
"Biography Field" : "Pole Životopis",
"User profile Biography will be set from the specified attribute" : "Životopis užívateľského profilu bude nastavený zo špecifikovaného atribútu.",
+ "Birthdate Field" : "Kolónka Dátum narodenia",
+ "User profile Date of birth will be set from the specified attribute" : "Dátum narodenia uživateľského profilu sa nastaví zo zadaného atribútu",
+ "Pronouns Field" : "Kolónka Oslovenie",
+ "User profile Pronouns will be set from the specified attribute" : "Oslovenie uživateľského profilu sa nastaví zo zadaného atribútu",
"Internal Username" : "Interné používateľské meno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "V predvolenom nastavení sa interné užívateľské meno vytvorí z atribútu UUID. Zabezpečuje jedinečnosť užívateľského mena a znaky nie je potrebné konvertovať. Interné užívateľské meno má obmedzenia, ktoré povoľujú iba tieto znaky: [a-zA-Z0-9 _. @ -]. Ostatné znaky sa nahradia zodpovedajúcimi znakmi ASCII alebo sa jednoducho vynechajú. Pri konfliktoch bude pridané/zvýšené číslo. Interné užívateľské meno sa používa na internú identifikáciu užívateľa. Je to tiež predvolený názov domovského priečinka užívateľa. Je tiež súčasťou URL, napríklad pre všetky služby * DAV. Týmto nastavením môže byť predvolené správanie zmenené. Zmeny majú vplyv iba na novo namapovaných (pridaných) užívateľov LDAP. Nechajte prázdne ak chcete nechať predvolené nastavenie.",
"Internal Username Attribute:" : "Atribút interného používateľského mena:",
@@ -223,6 +224,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Používateľské mená sa používajú na ukladanie a prideľovanie meta údajov. Pre presnú identifikáciu a rozpoznávanie má každý používateľ LDAP interné používateľské meno. To si vyžaduje mapovanie používateľského mena na užívateľa LDAP. Vytvorené meno používateľa je mapované na UUID používateľa LDAP. Okrem toho sa DN ukladá aj do vyrovnávacej pamäte, aby sa znížila interakcia LDAP, ale nepoužíva sa na identifikáciu. Ak sa DN zmení, zmeny sa nájdu. Interné používateľské meno sa používa všade. Vymazanie mápovania bude mať pozostatky všade. Vymazanie mapovania nie je citlivé na nastavenie, ovplyvňuje všetky nastavenia LDAP! Nikdy nemažte mapovanie vo produkčnom prostredí, ale iba v testovacej alebo experimentálnej fáze.",
"Clear Username-LDAP User Mapping" : "Zrušiť mapovanie LDAP používateľských mien",
"Clear Groupname-LDAP Group Mapping" : "Zrušiť mapovanie názvov LDAP skupín",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Boli nájdené neplatné UUID užívateľov alebo skupín LDAP. Skontrolujte svoje nastavenia „Prepísať detekciu UUID“ v expertnej časti konfigurácie LDAP a použite „occ ldap:update-uuid“ na ich aktualizáciu."
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti."
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json
index 052b7dc3642..8ff68e5a466 100644
--- a/apps/user_ldap/l10n/sk.json
+++ b/apps/user_ldap/l10n/sk.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Neplatné nastavenie: anonymné pripojenie nie je povolené.",
"Valid configuration, connection established!" : "Platná konfigurácia, spojenie nadviazané!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Nastavenie je v poriadku, ale pripojenie zlyhalo. Skontrolujte nastavenia servera a prihlasovacie údaje.",
- "Invalid configuration. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti.",
"No action specified" : "Nie je vybraná akcia",
"No configuration specified" : "Nie je určená konfigurácia",
"No data specified" : "Nie sú vybraté dáta",
"Invalid data specified" : "Boli zadané neplatné dáta",
- " Could not set configuration %s" : "Nemôžem nastaviť konfiguráciu %s",
"Action does not exist" : "Takáto akcia neexistuje",
"Renewing …" : "Obnovujem...",
"Very weak password" : "Veľmi slabé heslo",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Chýba zástupný znak %uid. Bude nahradený prihlasovacím menom pri požiadavke do LDAP/AD.",
"Please provide a login name to test against" : "Zadajte prihlasovacie meno na otestovanie",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Pole skupín bolo vypnuté, pretože LDAP/AD server nepodporuje memberOf.",
- "Password change rejected. Hint: " : "Zmena hesla zamietnutá. Vodítko:",
"Please login with the new password" : "Prihláste sa prosím novým heslom",
"LDAP User backend" : "Podporná vrstva pre LDAP používateľa",
"Your password will expire tomorrow." : "Vaše heslo expiruje zajtra.",
@@ -60,10 +57,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."],
"LDAP/AD integration" : "Integrácia s LDAP/AD",
"LDAP Connection" : "Pripojenie LDAP",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Pripojenie zlyhalo pre túto konfiguráciu LDAP: %s","Pripojenie zlyhalo pre tieto konfigurácie LDAP: %s","Pripojenie zlyhalo pre tieto konfigurácie LDAP: %s","Pripojenie zlyhalo pre tieto konfigurácie LDAP: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Vyhľadávanie zlyhalo pre túto konfiguráciu LDAP: %s","Vyhľadávanie zlyhalo pre tieto konfigurácie LDAP: %s","Vyhľadávanie zlyhalo pre tieto konfigurácie LDAP: %s","Vyhľadávanie zlyhalo pre tieto konfigurácie LDAP: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Existuje neaktívna konfigurácia LDAP: %s","Existujú neaktívne konfigurácie LDAP: %s","Existujú neaktívne konfigurácie LDAP: %s","Existujú neaktívne konfigurácie LDAP: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Pripojenie a vyhľadávanie funguje na nakonfigurovanom LDAP pripojení (%s)","Pripojenie a vyhľadávanie funguje na všetkých nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých nakonfigurovaných LDAP pripojeniach (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Pripojenie zlyhalo pre túto konfiguráciu LDAP: %s","Pripojenie zlyhalo pre %n konfigurácie LDAP: %s","Pripojenie zlyhalo pre %n konfigurácií LDAP: %s","Pripojenie zlyhalo pre %n konfigurácií LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Vyhľadávanie zlyhalo pre túto konfiguráciu LDAP: %s","Vyhľadávanie zlyhalo pre %n konfigurácie LDAP: %s","Vyhľadávanie zlyhalo pre %n konfigurácií LDAP: %s","Vyhľadávanie zlyhalo pre %n konfigurácií LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Existuje neaktívna konfigurácie LDAP: %s","Existujú %n neaktívne konfigurácie LDAP: %s","Existujú %n neaktívných konfigurácie LDAP: %s","Existujú %n neaktívných konfigurácie LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Pripojenie a vyhľadávanie funguje na nakonfigurovanom LDAP pripojení (%s)","Pripojenie a vyhľadávanie funguje na všetkých %n nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých %n nakonfigurovaných LDAP pripojeniach (%s)","Pripojenie a vyhľadávanie funguje na všetkých %n nakonfigurovaných LDAP pripojeniach (%s)"],
"Invalid LDAP UUIDs" : "Neplatné LDAP UUIDs",
"None found" : "Nenájdené",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Boli nájdené neplatné UUID účtov alebo skupín LDAP. Skontrolujte svoje nastavenia „Prepísať detekciu UUID“ v expertnej časti konfigurácie LDAP a použite „occ ldap:update-uuid“ na ich aktualizáciu.",
@@ -210,6 +207,10 @@
"User profile Headline will be set from the specified attribute" : "Hlavička užívateľského profilu bude nastavená zo špecifikovaného atribútu.",
"Biography Field" : "Pole Životopis",
"User profile Biography will be set from the specified attribute" : "Životopis užívateľského profilu bude nastavený zo špecifikovaného atribútu.",
+ "Birthdate Field" : "Kolónka Dátum narodenia",
+ "User profile Date of birth will be set from the specified attribute" : "Dátum narodenia uživateľského profilu sa nastaví zo zadaného atribútu",
+ "Pronouns Field" : "Kolónka Oslovenie",
+ "User profile Pronouns will be set from the specified attribute" : "Oslovenie uživateľského profilu sa nastaví zo zadaného atribútu",
"Internal Username" : "Interné používateľské meno",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "V predvolenom nastavení sa interné užívateľské meno vytvorí z atribútu UUID. Zabezpečuje jedinečnosť užívateľského mena a znaky nie je potrebné konvertovať. Interné užívateľské meno má obmedzenia, ktoré povoľujú iba tieto znaky: [a-zA-Z0-9 _. @ -]. Ostatné znaky sa nahradia zodpovedajúcimi znakmi ASCII alebo sa jednoducho vynechajú. Pri konfliktoch bude pridané/zvýšené číslo. Interné užívateľské meno sa používa na internú identifikáciu užívateľa. Je to tiež predvolený názov domovského priečinka užívateľa. Je tiež súčasťou URL, napríklad pre všetky služby * DAV. Týmto nastavením môže byť predvolené správanie zmenené. Zmeny majú vplyv iba na novo namapovaných (pridaných) užívateľov LDAP. Nechajte prázdne ak chcete nechať predvolené nastavenie.",
"Internal Username Attribute:" : "Atribút interného používateľského mena:",
@@ -221,6 +222,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Používateľské mená sa používajú na ukladanie a prideľovanie meta údajov. Pre presnú identifikáciu a rozpoznávanie má každý používateľ LDAP interné používateľské meno. To si vyžaduje mapovanie používateľského mena na užívateľa LDAP. Vytvorené meno používateľa je mapované na UUID používateľa LDAP. Okrem toho sa DN ukladá aj do vyrovnávacej pamäte, aby sa znížila interakcia LDAP, ale nepoužíva sa na identifikáciu. Ak sa DN zmení, zmeny sa nájdu. Interné používateľské meno sa používa všade. Vymazanie mápovania bude mať pozostatky všade. Vymazanie mapovania nie je citlivé na nastavenie, ovplyvňuje všetky nastavenia LDAP! Nikdy nemažte mapovanie vo produkčnom prostredí, ale iba v testovacej alebo experimentálnej fáze.",
"Clear Username-LDAP User Mapping" : "Zrušiť mapovanie LDAP používateľských mien",
"Clear Groupname-LDAP Group Mapping" : "Zrušiť mapovanie názvov LDAP skupín",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Boli nájdené neplatné UUID užívateľov alebo skupín LDAP. Skontrolujte svoje nastavenia „Prepísať detekciu UUID“ v expertnej časti konfigurácie LDAP a použite „occ ldap:update-uuid“ na ich aktualizáciu."
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurácia je chybná. Prosím, pozrite sa do logov pre ďalšie podrobnosti."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index 0c048861d5d..5edb617e5b1 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -6,12 +6,10 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Neveljavne nastavitve: brezimne vezi niso dovoljene.",
"Valid configuration, connection established!" : "Veljavne nastavitve: povezava je vzpostavljena!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Veljavne nastavitve, a je povezava vseeno spodletela: preverite nastavitve strežnika in poverila.",
- "Invalid configuration. Please have a look at the logs for further details." : "Neveljavne nastavitve: za več podrobnosti si oglejte dnevniške zapise.",
"No action specified" : "Ni določenega dejanja",
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
"Invalid data specified" : "Določeni so neveljavni podatki",
- " Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s",
"Action does not exist" : "Dejanje ne obstaja",
"Renewing …" : "Poteka ponastavljanje ...",
"Very weak password" : "Zelo šibko geslo",
@@ -54,7 +52,6 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Manjka vsebnik »ID %u«. Zamenjan bo z uporabniškim imenom pri poizvedbah LDAP / AD.",
"Please provide a login name to test against" : "Vpisati je treba uporabniško ime za preizkus",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Skupina je onemogočena, ker na strežniku LDAP / AD ni omogočena podpora atributu memberOf.",
- "Password change rejected. Hint: " : "Spreminjanje gesla je zavrnjeno. Namig: ",
"Please login with the new password" : "Prijavite se z novim geslom",
"LDAP User backend" : "Uporabniška povezava LDAP",
"Your password will expire tomorrow." : "Vaše geslo bo jutri poteklo.",
@@ -195,6 +192,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "Uporabniška imena se uporabljajo za shranjevanje in dodeljevanje metapodatkov. Za natančno določevanje uporabnikov je vsakemu uporabniku LDAP preslikano tudi notranje uporabniško ime in sicer na UUID uporabnika LDAP. Poleg tega se enoznačno ime DN shrani tudi v predpomnilnik, da se zmanjša število poslanih zahtevkov na strežnik, a se to ne uporablja za določevanje. Če se enoznačno ime spremeni, bodo usrezno usklajene tudi spremembe. Notranje uporabniško ime se sicer uporablja na več mestih, zato je pričakovati, da ostanejo pri čiščenju preslikav nepovezani podatki. To brisanje ne vpliva upošteva ravni nastavitev, ampak deluje na vse nastavitve LDAP! Preslikav ni nikoli piporočljivo počistiti v produkcijskem okolju, je pa to mogoče v preizkusnem. ",
"Clear Username-LDAP User Mapping" : "Izbriši preslikavo uporabniškega imena na LDAP",
"Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Zaznani so bili nepravilne vrednosti UUID uporabnikov ali skupin LDAP. Preveriti je treba nastavitve »Prepisovanja zaznavanja UUID« v skrbniškem delu nastavitev LDAP in jih posodobiti z ukazom »occ ldap:update-uuid«."
+ "Invalid configuration. Please have a look at the logs for further details." : "Neveljavne nastavitve: za več podrobnosti si oglejte dnevniške zapise."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index e5dab518b6e..1c3c57768b9 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -4,12 +4,10 @@
"Invalid configuration: Anonymous binding is not allowed." : "Neveljavne nastavitve: brezimne vezi niso dovoljene.",
"Valid configuration, connection established!" : "Veljavne nastavitve: povezava je vzpostavljena!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Veljavne nastavitve, a je povezava vseeno spodletela: preverite nastavitve strežnika in poverila.",
- "Invalid configuration. Please have a look at the logs for further details." : "Neveljavne nastavitve: za več podrobnosti si oglejte dnevniške zapise.",
"No action specified" : "Ni določenega dejanja",
"No configuration specified" : "Ni določenih nastavitev",
"No data specified" : "Ni navedenih podatkov",
"Invalid data specified" : "Določeni so neveljavni podatki",
- " Could not set configuration %s" : "Ni mogoče uveljaviti nastavitev %s",
"Action does not exist" : "Dejanje ne obstaja",
"Renewing …" : "Poteka ponastavljanje ...",
"Very weak password" : "Zelo šibko geslo",
@@ -52,7 +50,6 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Manjka vsebnik »ID %u«. Zamenjan bo z uporabniškim imenom pri poizvedbah LDAP / AD.",
"Please provide a login name to test against" : "Vpisati je treba uporabniško ime za preizkus",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Skupina je onemogočena, ker na strežniku LDAP / AD ni omogočena podpora atributu memberOf.",
- "Password change rejected. Hint: " : "Spreminjanje gesla je zavrnjeno. Namig: ",
"Please login with the new password" : "Prijavite se z novim geslom",
"LDAP User backend" : "Uporabniška povezava LDAP",
"Your password will expire tomorrow." : "Vaše geslo bo jutri poteklo.",
@@ -193,6 +190,6 @@
"Usernames are used to store and assign metadata. 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." : "Uporabniška imena se uporabljajo za shranjevanje in dodeljevanje metapodatkov. Za natančno določevanje uporabnikov je vsakemu uporabniku LDAP preslikano tudi notranje uporabniško ime in sicer na UUID uporabnika LDAP. Poleg tega se enoznačno ime DN shrani tudi v predpomnilnik, da se zmanjša število poslanih zahtevkov na strežnik, a se to ne uporablja za določevanje. Če se enoznačno ime spremeni, bodo usrezno usklajene tudi spremembe. Notranje uporabniško ime se sicer uporablja na več mestih, zato je pričakovati, da ostanejo pri čiščenju preslikav nepovezani podatki. To brisanje ne vpliva upošteva ravni nastavitev, ampak deluje na vse nastavitve LDAP! Preslikav ni nikoli piporočljivo počistiti v produkcijskem okolju, je pa to mogoče v preizkusnem. ",
"Clear Username-LDAP User Mapping" : "Izbriši preslikavo uporabniškega imena na LDAP",
"Clear Groupname-LDAP Group Mapping" : "Izbriši preslikavo skupine na LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Zaznani so bili nepravilne vrednosti UUID uporabnikov ali skupin LDAP. Preveriti je treba nastavitve »Prepisovanja zaznavanja UUID« v skrbniškem delu nastavitev LDAP in jih posodobiti z ukazom »occ ldap:update-uuid«."
+ "Invalid configuration. Please have a look at the logs for further details." : "Neveljavne nastavitve: za več podrobnosti si oglejte dnevniške zapise."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js
index ee433d876d2..8c45bd37c00 100644
--- a/apps/user_ldap/l10n/sq.js
+++ b/apps/user_ldap/l10n/sq.js
@@ -6,11 +6,9 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Konfigurim i pavlefshëm: Lidhja anonim nuk është e lejueshme.",
"Valid configuration, connection established!" : "Konfigurim i vlefshëm, lidhja u krijuar!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurime të vlefshme, por lidhja dështoi. Ju lutem kontrolloni konfigurimet dhe kredencialet e serverit.",
- "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme.",
"No action specified" : "S’është treguar veprim",
"No configuration specified" : "S’u dha formësim",
"No data specified" : "S’u treguan të dhëna",
- " Could not set configuration %s" : "S’vuri dot në punë formësimin %s",
"Action does not exist" : "Veprimi s’ekziston",
"Renewing …" : "Duke rinovuar...",
"Very weak password" : "Fjalëkalim shumë i dobët",
@@ -49,7 +47,6 @@ OC.L10N.register(
"An unspecified error occurred. Please check log and settings." : "Një gabim i pa specifikuar ndodhi. Ju lutem kontrolloni hyrjet dhe konfigurimet.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.",
"Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet",
- "Password change rejected. Hint: " : "Ndryshimi i fjalëkalimit u refuzua. Informatë:",
"Please login with the new password" : "Ju lutem kyçuni me fjalëkalimin e ri",
"Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër",
"Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.",
@@ -168,6 +165,7 @@ OC.L10N.register(
"UUID Attribute for Groups:" : "Atribut UUID për Grupe:",
"Username-LDAP User Mapping" : "Përshoqërim Emër përdoruesi-Përdorues LDAP",
"Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json
index 3f70efccb7d..aa6123c6a9c 100644
--- a/apps/user_ldap/l10n/sq.json
+++ b/apps/user_ldap/l10n/sq.json
@@ -4,11 +4,9 @@
"Invalid configuration: Anonymous binding is not allowed." : "Konfigurim i pavlefshëm: Lidhja anonim nuk është e lejueshme.",
"Valid configuration, connection established!" : "Konfigurim i vlefshëm, lidhja u krijuar!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Konfigurime të vlefshme, por lidhja dështoi. Ju lutem kontrolloni konfigurimet dhe kredencialet e serverit.",
- "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme.",
"No action specified" : "S’është treguar veprim",
"No configuration specified" : "S’u dha formësim",
"No data specified" : "S’u treguan të dhëna",
- " Could not set configuration %s" : "S’vuri dot në punë formësimin %s",
"Action does not exist" : "Veprimi s’ekziston",
"Renewing …" : "Duke rinovuar...",
"Very weak password" : "Fjalëkalim shumë i dobët",
@@ -47,7 +45,6 @@
"An unspecified error occurred. Please check log and settings." : "Një gabim i pa specifikuar ndodhi. Ju lutem kontrolloni hyrjet dhe konfigurimet.",
"The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtri i kërkimit është i pavlefshëm, ndoshta për shkak problemesh sintakse, të tillë si një numër jo i njëjtë kllpash të hapura dhe mbyllura. Ju lutemi, rishikojeni.",
"Please provide a login name to test against" : "Ju lutemi, jepni një emër hyrjesh që të ritestohet",
- "Password change rejected. Hint: " : "Ndryshimi i fjalëkalimit u refuzua. Informatë:",
"Please login with the new password" : "Ju lutem kyçuni me fjalëkalimin e ri",
"Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër",
"Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.",
@@ -166,6 +163,7 @@
"UUID Attribute for Groups:" : "Atribut UUID për Grupe:",
"Username-LDAP User Mapping" : "Përshoqërim Emër përdoruesi-Përdorues LDAP",
"Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP",
- "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP"
+ "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP",
+ "Invalid configuration. Please have a look at the logs for further details." : "Konfigurime të pavlefshme. Ju lutem shikoni hyrjet për detaje të mëtejshme."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js
index e3748783f93..4d4ef42ffba 100644
--- a/apps/user_ldap/l10n/sr.js
+++ b/apps/user_ldap/l10n/sr.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Неисправна конфигурација: Анонимно везивање није дозвољено.",
"Valid configuration, connection established!" : "Исправна конфигурација, веза успостављена!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Исправна конфигурација, али везивање није успело. Проверите поставке сервера и акредитиве.",
- "Invalid configuration. Please have a look at the logs for further details." : "Неисправна конфигурација. Погледајте дневник за више детаља.",
+ "Invalid configuration: %s" : "Неисправна конфигурације: %s",
"No action specified" : "Није наведена радња",
"No configuration specified" : "Није наведена постава",
"No data specified" : "Нису наведени подаци",
"Invalid data specified" : "Наведени су неисправни подаци",
- " Could not set configuration %s" : "Нисам могао да подесим конфигурацију %s",
+ "Could not set configuration %1$s to %2$s" : "Конфигурација %1$s није могла да се постави на %2$s",
"Action does not exist" : "Радња не постоји",
"Renewing …" : "Обнављам …",
"Very weak password" : "Веома слаба лозинка",
@@ -54,7 +54,14 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Недостаје „%uid” чувар места. Замениће се именом за пријаву када се буде вршио упит LDAP/AD.",
"Please provide a login name to test against" : "Наведите пријавно име за тест са",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Кутија групе је искључена јер LDAP/AD сервер не подржава memberOf.",
- "Password change rejected. Hint: " : "Промена лозинке није прихваћена. Смерница:",
+ "Password change rejected. Hint: %s" : "Промена лозинке није прихваћена. Савет: %s",
+ "Mandatory field \"%s\" left empty" : "Обавезно поље „%s” је остављено празно",
+ "A password is given, but not an LDAP agent" : "Лозинка је наведена, али LDAP агент није",
+ "No password is given for the user agent" : "Није наведена ниједна лозинка за корисничког агента",
+ "No LDAP base DN was given" : "Није наведен ниједан LDAP базни DN",
+ "User base DN is not a subnode of global base DN" : "Корисников базни DN није подчвор глобалног базног DN",
+ "Group base DN is not a subnode of global base DN" : "Базни DN групе није подчвор глобалног базног DN",
+ "Login filter does not contain %s placeholder." : "Филтер пријаве не садржи %s чувар места",
"Please login with the new password" : "Пријавите се са новом лозинком",
"LDAP User backend" : "LDAP позадина за кориснике",
"Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ваша лозинка ће истећи за %n дан.","Ваша лозинка ће истећи за %n дана.","Ваша лозинка ће истећи за %n дана."],
"LDAP/AD integration" : "LDAP/AD интеграција",
"LDAP Connection" : "LDAP веза",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Није успело везивање за ову LDAP конфигурацију: %s","Није успело везивање за ове LDAP конфигурације: %s","Није успело везивање за ове LDAP конфигурације: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Није успела претрага за ову LDAP конфигурацију: %s","Није успела претрага за ове LDAP конфигурације: %s","Није успела претрага за ове LDAP конфигурације: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Постоји неактивна LDAP конфигурација: %s","Постоје неактивне LDAP конфигурације: %s","Постоје неактивне LDAP конфигурације: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Везивање и претрага функционишу на конфигурисаној LDAP вези (%s)","Везивање и претрага функционишу на свим конфигурисаним LDAP везама (%s)","Везивање и претрага функционишу на свим конфигурисаним LDAP везама (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Није успело везивање за ову LDAP конфигурацију: %s","Није успело везивање за %n LDAP конфигурације: %s","Није успело везивање за %n LDAP конфигурација: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Није успела претрага за ову LDAP конфигурацију: %s","Није успела претрага за %n LDAP конфигурације: %s","Није успела претрага за %n LDAP конфигурација: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Постоји неактивна LDAP конфигурација: %s","Постоје %n неактивне LDAP конфигурације: %s","Постоји %n неактивних LDAP конфигурација: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Везивање и претрага функционишу на конфигурисаној LDAP вези (%s)","Везивање и претрага функционишу на свих %n конфигурисаних LDAP веза (%s)","Везивање и претрага функционишу на свих %n конфигурисаних LDAP веза (%s)"],
"Invalid LDAP UUIDs" : "Неисправни LDAP UUID идентификатори",
"None found" : "Није пронађен ниједан",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Пронађени су неисправни UUID бројеви LDAP налога или група. Молимо вас да ревидирате своја „Премости UUID детекцију\" подешавања у Експерт делу LDAP конфигурације и употребите „occ ldap:update-uuid” да их ажурирате.",
@@ -214,6 +221,8 @@ OC.L10N.register(
"User profile Biography will be set from the specified attribute" : "Биографија корисничког профила ће се поставити из наведеног атрибута",
"Birthdate Field" : "Пође рођендана",
"User profile Date of birth will be set from the specified attribute" : "Датум рођења за кориснички профил ће да се постави из наведеног атрибута",
+ "Pronouns Field" : "Поље заменица",
+ "User profile Pronouns will be set from the specified attribute" : "Заменице корисничког профила ће се поставити из наведеног атрибута",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Интерно име ће се подразумевано креирати из UUID атрибута. Тако се обезбеђује да је корисничко име јединствено и да нема потребе да се карактери конвертују. Интерно корисничко име је ограничено тако да су дозвољени само следећи карактери: [a-zA-Z0-9_.@-]. Остали карактери ће се заменити својим одговарајућим ASCII карактерима или ће се једноставно изоставити. У случају колизија, дописаће се/увећати број. Интерно корисничко име се користи да се корисник интерно идентификује. То је такође и подразумевано име за коринсиков почетни фолдер. Такође је део удаљених URL адреса, на пример за све DAV сервисе. Овим подешавањем је могуће преиначење подразумеваног понашања. Измене ће ступити на снагу само за ново мапиране (додате) LDAP кориснике. Оставите празно ако желите подразумевано понашање.",
"Internal Username Attribute:" : "Интерни параметри корисничког имена:",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Корисничка имена се користи за чување и додељивање метаподатака. Да би се прецизно идентификовали и препознавали кориснике, сваки LDAP корисник ће имати локално корисничко име. Ово захтева мапирање од корисничког имена до LDAP корисника. Креирано корисничко име се мапира у UUID LDAP корисника. Поред тога, DN се кешира да смањи LDAP интеракцију, али се не користи за идентификацију. Ако се DN мења, промене се могу наћи. Локално корисничко име се користи свуда. Чишћење мапирања оставља свуда остатке. Чишћење мапирања није осетљиво на конфигурацију, оно утиче на све LDAP конфигурације! Никада не користит чишћење мапирања у радном окружењу, већ само у тестирању или експерименталној фази.",
"Clear Username-LDAP User Mapping" : "Очисти Username-LDAP мапирање корисника",
"Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Пронађени су неисправни UUID бројеви LDAP корисника или група. Молимо вас да ревидирате своја „Премости UUID детекцију\" подешавања у Експерт делу LDAP конфигурације и употребите „occ ldap:update-uuid” да их ажурирате."
+ "Invalid configuration. Please have a look at the logs for further details." : "Неисправна конфигурација. Погледајте дневник за више детаља."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json
index 7ce5563883b..d2c8defd599 100644
--- a/apps/user_ldap/l10n/sr.json
+++ b/apps/user_ldap/l10n/sr.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Неисправна конфигурација: Анонимно везивање није дозвољено.",
"Valid configuration, connection established!" : "Исправна конфигурација, веза успостављена!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Исправна конфигурација, али везивање није успело. Проверите поставке сервера и акредитиве.",
- "Invalid configuration. Please have a look at the logs for further details." : "Неисправна конфигурација. Погледајте дневник за више детаља.",
+ "Invalid configuration: %s" : "Неисправна конфигурације: %s",
"No action specified" : "Није наведена радња",
"No configuration specified" : "Није наведена постава",
"No data specified" : "Нису наведени подаци",
"Invalid data specified" : "Наведени су неисправни подаци",
- " Could not set configuration %s" : "Нисам могао да подесим конфигурацију %s",
+ "Could not set configuration %1$s to %2$s" : "Конфигурација %1$s није могла да се постави на %2$s",
"Action does not exist" : "Радња не постоји",
"Renewing …" : "Обнављам …",
"Very weak password" : "Веома слаба лозинка",
@@ -52,7 +52,14 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Недостаје „%uid” чувар места. Замениће се именом за пријаву када се буде вршио упит LDAP/AD.",
"Please provide a login name to test against" : "Наведите пријавно име за тест са",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Кутија групе је искључена јер LDAP/AD сервер не подржава memberOf.",
- "Password change rejected. Hint: " : "Промена лозинке није прихваћена. Смерница:",
+ "Password change rejected. Hint: %s" : "Промена лозинке није прихваћена. Савет: %s",
+ "Mandatory field \"%s\" left empty" : "Обавезно поље „%s” је остављено празно",
+ "A password is given, but not an LDAP agent" : "Лозинка је наведена, али LDAP агент није",
+ "No password is given for the user agent" : "Није наведена ниједна лозинка за корисничког агента",
+ "No LDAP base DN was given" : "Није наведен ниједан LDAP базни DN",
+ "User base DN is not a subnode of global base DN" : "Корисников базни DN није подчвор глобалног базног DN",
+ "Group base DN is not a subnode of global base DN" : "Базни DN групе није подчвор глобалног базног DN",
+ "Login filter does not contain %s placeholder." : "Филтер пријаве не садржи %s чувар места",
"Please login with the new password" : "Пријавите се са новом лозинком",
"LDAP User backend" : "LDAP позадина за кориснике",
"Your password will expire tomorrow." : "Ваша лозинка ће истећи сутра.",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ваша лозинка ће истећи за %n дан.","Ваша лозинка ће истећи за %n дана.","Ваша лозинка ће истећи за %n дана."],
"LDAP/AD integration" : "LDAP/AD интеграција",
"LDAP Connection" : "LDAP веза",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Није успело везивање за ову LDAP конфигурацију: %s","Није успело везивање за ове LDAP конфигурације: %s","Није успело везивање за ове LDAP конфигурације: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Није успела претрага за ову LDAP конфигурацију: %s","Није успела претрага за ове LDAP конфигурације: %s","Није успела претрага за ове LDAP конфигурације: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Постоји неактивна LDAP конфигурација: %s","Постоје неактивне LDAP конфигурације: %s","Постоје неактивне LDAP конфигурације: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Везивање и претрага функционишу на конфигурисаној LDAP вези (%s)","Везивање и претрага функционишу на свим конфигурисаним LDAP везама (%s)","Везивање и претрага функционишу на свим конфигурисаним LDAP везама (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Није успело везивање за ову LDAP конфигурацију: %s","Није успело везивање за %n LDAP конфигурације: %s","Није успело везивање за %n LDAP конфигурација: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Није успела претрага за ову LDAP конфигурацију: %s","Није успела претрага за %n LDAP конфигурације: %s","Није успела претрага за %n LDAP конфигурација: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Постоји неактивна LDAP конфигурација: %s","Постоје %n неактивне LDAP конфигурације: %s","Постоји %n неактивних LDAP конфигурација: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Везивање и претрага функционишу на конфигурисаној LDAP вези (%s)","Везивање и претрага функционишу на свих %n конфигурисаних LDAP веза (%s)","Везивање и претрага функционишу на свих %n конфигурисаних LDAP веза (%s)"],
"Invalid LDAP UUIDs" : "Неисправни LDAP UUID идентификатори",
"None found" : "Није пронађен ниједан",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Пронађени су неисправни UUID бројеви LDAP налога или група. Молимо вас да ревидирате своја „Премости UUID детекцију\" подешавања у Експерт делу LDAP конфигурације и употребите „occ ldap:update-uuid” да их ажурирате.",
@@ -212,6 +219,8 @@
"User profile Biography will be set from the specified attribute" : "Биографија корисничког профила ће се поставити из наведеног атрибута",
"Birthdate Field" : "Пође рођендана",
"User profile Date of birth will be set from the specified attribute" : "Датум рођења за кориснички профил ће да се постави из наведеног атрибута",
+ "Pronouns Field" : "Поље заменица",
+ "User profile Pronouns will be set from the specified attribute" : "Заменице корисничког профила ће се поставити из наведеног атрибута",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Интерно име ће се подразумевано креирати из UUID атрибута. Тако се обезбеђује да је корисничко име јединствено и да нема потребе да се карактери конвертују. Интерно корисничко име је ограничено тако да су дозвољени само следећи карактери: [a-zA-Z0-9_.@-]. Остали карактери ће се заменити својим одговарајућим ASCII карактерима или ће се једноставно изоставити. У случају колизија, дописаће се/увећати број. Интерно корисничко име се користи да се корисник интерно идентификује. То је такође и подразумевано име за коринсиков почетни фолдер. Такође је део удаљених URL адреса, на пример за све DAV сервисе. Овим подешавањем је могуће преиначење подразумеваног понашања. Измене ће ступити на снагу само за ново мапиране (додате) LDAP кориснике. Оставите празно ако желите подразумевано понашање.",
"Internal Username Attribute:" : "Интерни параметри корисничког имена:",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Корисничка имена се користи за чување и додељивање метаподатака. Да би се прецизно идентификовали и препознавали кориснике, сваки LDAP корисник ће имати локално корисничко име. Ово захтева мапирање од корисничког имена до LDAP корисника. Креирано корисничко име се мапира у UUID LDAP корисника. Поред тога, DN се кешира да смањи LDAP интеракцију, али се не користи за идентификацију. Ако се DN мења, промене се могу наћи. Локално корисничко име се користи свуда. Чишћење мапирања оставља свуда остатке. Чишћење мапирања није осетљиво на конфигурацију, оно утиче на све LDAP конфигурације! Никада не користит чишћење мапирања у радном окружењу, већ само у тестирању или експерименталној фази.",
"Clear Username-LDAP User Mapping" : "Очисти Username-LDAP мапирање корисника",
"Clear Groupname-LDAP Group Mapping" : "Очисти Groupname-LDAP мапирање група",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Пронађени су неисправни UUID бројеви LDAP корисника или група. Молимо вас да ревидирате своја „Премости UUID детекцију\" подешавања у Експерт делу LDAP конфигурације и употребите „occ ldap:update-uuid” да их ажурирате."
+ "Invalid configuration. Please have a look at the logs for further details." : "Неисправна конфигурација. Погледајте дневник за више детаља."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sr@latin.js b/apps/user_ldap/l10n/sr@latin.js
deleted file mode 100644
index 7769a4b6bda..00000000000
--- a/apps/user_ldap/l10n/sr@latin.js
+++ /dev/null
@@ -1,14 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Server" : "Server",
- "Users" : "Korisnici",
- "Groups" : "Grupe",
- "Help" : "Pomoć",
- "Host" : "Računar",
- "Port" : "Port",
- "Password" : "Lozinka",
- "Continue" : "Nastavi",
- "Advanced" : "Napredno"
-},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/user_ldap/l10n/sr@latin.json b/apps/user_ldap/l10n/sr@latin.json
deleted file mode 100644
index ad4492827f7..00000000000
--- a/apps/user_ldap/l10n/sr@latin.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{ "translations": {
- "Server" : "Server",
- "Users" : "Korisnici",
- "Groups" : "Grupe",
- "Help" : "Pomoć",
- "Host" : "Računar",
- "Port" : "Port",
- "Password" : "Lozinka",
- "Continue" : "Nastavi",
- "Advanced" : "Napredno"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/su.js b/apps/user_ldap/l10n/su.js
deleted file mode 100644
index 5494dcae62e..00000000000
--- a/apps/user_ldap/l10n/su.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : [""],
- "_%s user found_::_%s users found_" : [""]
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/su.json b/apps/user_ldap/l10n/su.json
deleted file mode 100644
index 75f0f056cc4..00000000000
--- a/apps/user_ldap/l10n/su.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : [""],
- "_%s user found_::_%s users found_" : [""]
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js
index a3ab4669fc7..67024534e36 100644
--- a/apps/user_ldap/l10n/sv.js
+++ b/apps/user_ldap/l10n/sv.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Ogiltig konfiguration: Anonym bindning är inte tillåten.",
"Valid configuration, connection established!" : "Giltig konfiguration, anslutning upprättad!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Giltig konfiguration, men bindning misslyckades. Vänligen kontrollera uppgifter och serverinställningarna.",
- "Invalid configuration. Please have a look at the logs for further details." : "Ogiltig konfiguration. Vänligen undersök loggar för mer detaljer.",
+ "Invalid configuration: %s" : "Ogiltig konfiguration: %s",
"No action specified" : "Ingen funktion har angetts",
"No configuration specified" : "Ingen konfiguration har angetts",
"No data specified" : "Inga data har angetts",
"Invalid data specified" : "Ogiltig data har angetts",
- " Could not set configuration %s" : "Kunde inte sätta inställning %s",
+ "Could not set configuration %1$s to %2$s" : "Kunde inte ställa in konfigurationen %1$s till %2$s",
"Action does not exist" : "Åtgärd finns inte",
"Renewing …" : "Förnyar ...",
"Very weak password" : "Väldigt svagt lösenord",
@@ -54,7 +54,14 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%uid\"-platshållaren saknas. Den kommer att ersättas med inloggningsnamn när LDAP/AD efterfrågas.",
"Please provide a login name to test against" : "Ange ett inloggningsnamn att försöka ansluta med",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Grupprutan inaktiverades eftersom LDAP/AD-servern inte stöder memberOf.",
- "Password change rejected. Hint: " : "Lösenordsbyte nekad. Anledning/tips: ",
+ "Password change rejected. Hint: %s" : "Lösenordsändring avvisad. Anledning/tips: %s",
+ "Mandatory field \"%s\" left empty" : "Obligatoriskt fält \"%s\" lämnad tom",
+ "A password is given, but not an LDAP agent" : "Ett lösenord har angetts, men ingen LDAP-agent",
+ "No password is given for the user agent" : "Inget lösenord har angetts för användaragenten",
+ "No LDAP base DN was given" : "Ingen LDAP-base DN har angetts",
+ "User base DN is not a subnode of global base DN" : "Användarens base DN är inte en undernod till den globala base DN",
+ "Group base DN is not a subnode of global base DN" : "Gruppens base DN är inte en undernod till den globala base DN",
+ "Login filter does not contain %s placeholder." : "Inloggningsfiltret innehåller inte %s platshållare.",
"Please login with the new password" : "Vänligen logga in med det nya lösenordet",
"LDAP User backend" : "LDAP användarbackend",
"Your password will expire tomorrow." : "Ditt lösenord kommer att gå ut imorgon.",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ditt lösenord kommer gå ut inom %n dag.","Ditt lösenord kommer gå ut inom %n dagar."],
"LDAP/AD integration" : "LDAP/AD-integration",
"LDAP Connection" : "LDAP-anslutning",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Bindning misslyckades för denna LDAP-konfiguration: %s","Bindning misslyckades för dessa LDAP-konfigurationer: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Sökning misslyckades för denna LDAP-konfiguration: %s","Sökning misslyckades för dessa LDAP-konfigurationer: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Det finns en inaktiv LDAP-konfiguration: %s","Det finns inaktiva LDAP-konfigurationer: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Bindning och sökning fungerar på den konfigurerade LDAP-anslutningen (%s)","Bindning och sökning fungerar på alla konfigurerade LDAP-anslutningar (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bindning misslyckades för denna LDAP-konfiguration: %s","Bindning misslyckades för %n LDAP-konfigurationer: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Sökning misslyckades för denna LDAP-konfiguration: %s","Sökning misslyckades för %n LDAP-konfigurationer: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Det finns en inaktiv LDAP-konfiguration: %s","Det finns %n inaktiva LDAP-konfigurationer: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Bindning och sökning fungerar på den konfigurerade LDAP-anslutningen (%s)","Bindning och sökning fungerar på alla %n konfigurerade LDAP-anslutningar (%s)"],
"Invalid LDAP UUIDs" : "Ogiltiga LDAP UUIDs",
"None found" : "Ingen hittades",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Ogiltiga UUID för LDAP-användare eller -grupper har hittats. Granska dina \"Åsidosätt UUID-detektering\"-inställningar i expertdelen av LDAP-konfigurationen och använd \"occ ldap:update-uuid\" för att uppdatera dem.",
@@ -158,7 +165,7 @@ OC.L10N.register(
"User Display Name Field" : "Attribut för användarnamn",
"The LDAP attribute to use to generate the user's display name." : "LDAP-attributet som ska användas för att generera användarens visningsnamn.",
"2nd User Display Name Field" : "2:a Visningsnamns Fält",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Frivilligt. Ett LDAP-attribut att läggas till visningsnamnet i parentes. Resulterar i t.ex. »John Doe (john.doe@example.org)«.",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Frivilligt. Ett LDAP-attribut att läggas till visningsnamnet i parentes. Resulterar i t.ex. \"John Doe (john.doe@example.org)\".",
"Base User Tree" : "Bas för användare i katalogtjänst",
"One User Base DN per line" : "En användarstart-DN per rad",
"User Search Attributes" : "Användarsökningsattribut",
@@ -212,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Rubrik i användarprofilen kommer att ställas in från det angivna attributet",
"Biography Field" : "Biografi",
"User profile Biography will be set from the specified attribute" : "Biografi i användarprofilen kommer att ställas in från det angivna attributet",
+ "Birthdate Field" : "Fält för födelsedatum",
+ "User profile Date of birth will be set from the specified attribute" : "Födelsedatum i användarprofilen kommer att ställas in från det angivna attributet",
+ "Pronouns Field" : "Fält för pronomen",
+ "User profile Pronouns will be set from the specified attribute" : "Pronomen i användarprofilen kommer att ställas in från det angivna attributet",
"Internal Username" : "Internt användarnamn",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Som standard kommer de interna användarnamnen skapas från UUID-attributen. Det säkerställer att användarnamnet är unikt och att tecken inte behöver konverteras. Det interna användarnamnet har begränsningen att bara dessa tecken tillåts: [ a-zA-Z0-9_.@- ]. Andra tecken kommer att ersättas med deras korresponderande ASCII-kod eller utelämnas. Vid kollisioner kommer ett nummer läggas till/ökas. Det interna användarnamnet används för att identifiera en användare internt. Det är också standardnamnet för användarens hemmapp. Det är också en del av externa webbadresser, till exempel för alla *DAV-tjänster. Med denna inställning, kan standardbeteendet bli överskrivet. Lämna det tomt för standardbeteende. Ändringar kommer att bara gälla för nya mappningar (tillagda) LDAP-användare. Lämna tomt för standardbeteende.",
"Internal Username Attribute:" : "Internt användarnamnsattribut:",
@@ -223,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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." : "Användarnamn används för att lagra och tilldela metadata. För att exakt identifiera användare har varje LDAP-användare ett internt användarnamn. Detta kräver en mappning från användarnamn till LDAP-användare. Det skapade användarnamnet är mappat till UUID för LDAP-användaren. Dessutom cachas DN för att minska LDAP-interaktion, men den används inte för identifiering. Om DN ändras kommer ändringarna att hittas. Det interna användarnamnet används på nytt. Att rensa mappningarna kommer att ha rester överallt. Att rensa mappningarna är inte konfigurationskänsligt, det påverkar alla LDAP-konfigurationer! Rensa aldrig mappningarna i en produktionsmiljö, bara i en test- eller experimentfas.",
"Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning",
"Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Ogiltiga UUID för LDAP-användare eller -grupper har hittats. Granska dina \"Åsidosätt UUID-detektering\"-inställningar i expertdelen av LDAP-konfigurationen och använd \"occ ldap:update-uuid\" för att uppdatera dem."
+ "Invalid configuration. Please have a look at the logs for further details." : "Ogiltig konfiguration. Vänligen undersök loggar för mer detaljer."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json
index 7ece64d8c4d..d8f95dc5c97 100644
--- a/apps/user_ldap/l10n/sv.json
+++ b/apps/user_ldap/l10n/sv.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Ogiltig konfiguration: Anonym bindning är inte tillåten.",
"Valid configuration, connection established!" : "Giltig konfiguration, anslutning upprättad!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Giltig konfiguration, men bindning misslyckades. Vänligen kontrollera uppgifter och serverinställningarna.",
- "Invalid configuration. Please have a look at the logs for further details." : "Ogiltig konfiguration. Vänligen undersök loggar för mer detaljer.",
+ "Invalid configuration: %s" : "Ogiltig konfiguration: %s",
"No action specified" : "Ingen funktion har angetts",
"No configuration specified" : "Ingen konfiguration har angetts",
"No data specified" : "Inga data har angetts",
"Invalid data specified" : "Ogiltig data har angetts",
- " Could not set configuration %s" : "Kunde inte sätta inställning %s",
+ "Could not set configuration %1$s to %2$s" : "Kunde inte ställa in konfigurationen %1$s till %2$s",
"Action does not exist" : "Åtgärd finns inte",
"Renewing …" : "Förnyar ...",
"Very weak password" : "Väldigt svagt lösenord",
@@ -52,7 +52,14 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%uid\"-platshållaren saknas. Den kommer att ersättas med inloggningsnamn när LDAP/AD efterfrågas.",
"Please provide a login name to test against" : "Ange ett inloggningsnamn att försöka ansluta med",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Grupprutan inaktiverades eftersom LDAP/AD-servern inte stöder memberOf.",
- "Password change rejected. Hint: " : "Lösenordsbyte nekad. Anledning/tips: ",
+ "Password change rejected. Hint: %s" : "Lösenordsändring avvisad. Anledning/tips: %s",
+ "Mandatory field \"%s\" left empty" : "Obligatoriskt fält \"%s\" lämnad tom",
+ "A password is given, but not an LDAP agent" : "Ett lösenord har angetts, men ingen LDAP-agent",
+ "No password is given for the user agent" : "Inget lösenord har angetts för användaragenten",
+ "No LDAP base DN was given" : "Ingen LDAP-base DN har angetts",
+ "User base DN is not a subnode of global base DN" : "Användarens base DN är inte en undernod till den globala base DN",
+ "Group base DN is not a subnode of global base DN" : "Gruppens base DN är inte en undernod till den globala base DN",
+ "Login filter does not contain %s placeholder." : "Inloggningsfiltret innehåller inte %s platshållare.",
"Please login with the new password" : "Vänligen logga in med det nya lösenordet",
"LDAP User backend" : "LDAP användarbackend",
"Your password will expire tomorrow." : "Ditt lösenord kommer att gå ut imorgon.",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ditt lösenord kommer gå ut inom %n dag.","Ditt lösenord kommer gå ut inom %n dagar."],
"LDAP/AD integration" : "LDAP/AD-integration",
"LDAP Connection" : "LDAP-anslutning",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Bindning misslyckades för denna LDAP-konfiguration: %s","Bindning misslyckades för dessa LDAP-konfigurationer: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Sökning misslyckades för denna LDAP-konfiguration: %s","Sökning misslyckades för dessa LDAP-konfigurationer: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Det finns en inaktiv LDAP-konfiguration: %s","Det finns inaktiva LDAP-konfigurationer: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Bindning och sökning fungerar på den konfigurerade LDAP-anslutningen (%s)","Bindning och sökning fungerar på alla konfigurerade LDAP-anslutningar (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bindning misslyckades för denna LDAP-konfiguration: %s","Bindning misslyckades för %n LDAP-konfigurationer: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Sökning misslyckades för denna LDAP-konfiguration: %s","Sökning misslyckades för %n LDAP-konfigurationer: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Det finns en inaktiv LDAP-konfiguration: %s","Det finns %n inaktiva LDAP-konfigurationer: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Bindning och sökning fungerar på den konfigurerade LDAP-anslutningen (%s)","Bindning och sökning fungerar på alla %n konfigurerade LDAP-anslutningar (%s)"],
"Invalid LDAP UUIDs" : "Ogiltiga LDAP UUIDs",
"None found" : "Ingen hittades",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Ogiltiga UUID för LDAP-användare eller -grupper har hittats. Granska dina \"Åsidosätt UUID-detektering\"-inställningar i expertdelen av LDAP-konfigurationen och använd \"occ ldap:update-uuid\" för att uppdatera dem.",
@@ -156,7 +163,7 @@
"User Display Name Field" : "Attribut för användarnamn",
"The LDAP attribute to use to generate the user's display name." : "LDAP-attributet som ska användas för att generera användarens visningsnamn.",
"2nd User Display Name Field" : "2:a Visningsnamns Fält",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Frivilligt. Ett LDAP-attribut att läggas till visningsnamnet i parentes. Resulterar i t.ex. »John Doe (john.doe@example.org)«.",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Frivilligt. Ett LDAP-attribut att läggas till visningsnamnet i parentes. Resulterar i t.ex. \"John Doe (john.doe@example.org)\".",
"Base User Tree" : "Bas för användare i katalogtjänst",
"One User Base DN per line" : "En användarstart-DN per rad",
"User Search Attributes" : "Användarsökningsattribut",
@@ -210,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "Rubrik i användarprofilen kommer att ställas in från det angivna attributet",
"Biography Field" : "Biografi",
"User profile Biography will be set from the specified attribute" : "Biografi i användarprofilen kommer att ställas in från det angivna attributet",
+ "Birthdate Field" : "Fält för födelsedatum",
+ "User profile Date of birth will be set from the specified attribute" : "Födelsedatum i användarprofilen kommer att ställas in från det angivna attributet",
+ "Pronouns Field" : "Fält för pronomen",
+ "User profile Pronouns will be set from the specified attribute" : "Pronomen i användarprofilen kommer att ställas in från det angivna attributet",
"Internal Username" : "Internt användarnamn",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Som standard kommer de interna användarnamnen skapas från UUID-attributen. Det säkerställer att användarnamnet är unikt och att tecken inte behöver konverteras. Det interna användarnamnet har begränsningen att bara dessa tecken tillåts: [ a-zA-Z0-9_.@- ]. Andra tecken kommer att ersättas med deras korresponderande ASCII-kod eller utelämnas. Vid kollisioner kommer ett nummer läggas till/ökas. Det interna användarnamnet används för att identifiera en användare internt. Det är också standardnamnet för användarens hemmapp. Det är också en del av externa webbadresser, till exempel för alla *DAV-tjänster. Med denna inställning, kan standardbeteendet bli överskrivet. Lämna det tomt för standardbeteende. Ändringar kommer att bara gälla för nya mappningar (tillagda) LDAP-användare. Lämna tomt för standardbeteende.",
"Internal Username Attribute:" : "Internt användarnamnsattribut:",
@@ -221,6 +232,6 @@
"Usernames are used to store and assign metadata. 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." : "Användarnamn används för att lagra och tilldela metadata. För att exakt identifiera användare har varje LDAP-användare ett internt användarnamn. Detta kräver en mappning från användarnamn till LDAP-användare. Det skapade användarnamnet är mappat till UUID för LDAP-användaren. Dessutom cachas DN för att minska LDAP-interaktion, men den används inte för identifiering. Om DN ändras kommer ändringarna att hittas. Det interna användarnamnet används på nytt. Att rensa mappningarna kommer att ha rester överallt. Att rensa mappningarna är inte konfigurationskänsligt, det påverkar alla LDAP-konfigurationer! Rensa aldrig mappningarna i en produktionsmiljö, bara i en test- eller experimentfas.",
"Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning",
"Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Ogiltiga UUID för LDAP-användare eller -grupper har hittats. Granska dina \"Åsidosätt UUID-detektering\"-inställningar i expertdelen av LDAP-konfigurationen och använd \"occ ldap:update-uuid\" för att uppdatera dem."
+ "Invalid configuration. Please have a look at the logs for further details." : "Ogiltig konfiguration. Vänligen undersök loggar för mer detaljer."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/sw_KE.js b/apps/user_ldap/l10n/sw_KE.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/sw_KE.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/sw_KE.json b/apps/user_ldap/l10n/sw_KE.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/sw_KE.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/tg_TJ.js b/apps/user_ldap/l10n/tg_TJ.js
deleted file mode 100644
index 37042a4f412..00000000000
--- a/apps/user_ldap/l10n/tg_TJ.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/tg_TJ.json b/apps/user_ldap/l10n/tg_TJ.json
deleted file mode 100644
index 521de7ba1a8..00000000000
--- a/apps/user_ldap/l10n/tg_TJ.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/th.js b/apps/user_ldap/l10n/th.js
index bff42828ffc..c33d42a4871 100644
--- a/apps/user_ldap/l10n/th.js
+++ b/apps/user_ldap/l10n/th.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"No action specified" : "ไม่ได้ระบุการดำเนินการ",
"No configuration specified" : "ไม่ได้ระบุการกำหนดค่า",
"No data specified" : "ไม่ได้ระบุข้อมูล",
- " Could not set configuration %s" : "ไม่สามารถกำหนดค่า %s",
"Action does not exist" : "ไม่มีการดำเนินการนี้อยู่",
"Very weak password" : "รหัสผ่านคาดเดาง่ายมาก",
"Weak password" : "รหัสผ่านคาดเดาง่าย",
diff --git a/apps/user_ldap/l10n/th.json b/apps/user_ldap/l10n/th.json
index d73ad550ee3..3c745186c56 100644
--- a/apps/user_ldap/l10n/th.json
+++ b/apps/user_ldap/l10n/th.json
@@ -4,7 +4,6 @@
"No action specified" : "ไม่ได้ระบุการดำเนินการ",
"No configuration specified" : "ไม่ได้ระบุการกำหนดค่า",
"No data specified" : "ไม่ได้ระบุข้อมูล",
- " Could not set configuration %s" : "ไม่สามารถกำหนดค่า %s",
"Action does not exist" : "ไม่มีการดำเนินการนี้อยู่",
"Very weak password" : "รหัสผ่านคาดเดาง่ายมาก",
"Weak password" : "รหัสผ่านคาดเดาง่าย",
diff --git a/apps/user_ldap/l10n/tl_PH.js b/apps/user_ldap/l10n/tl_PH.js
deleted file mode 100644
index 95c97db2f9c..00000000000
--- a/apps/user_ldap/l10n/tl_PH.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/tl_PH.json b/apps/user_ldap/l10n/tl_PH.json
deleted file mode 100644
index 8e0cd6f6783..00000000000
--- a/apps/user_ldap/l10n/tl_PH.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js
index cab562a6f8d..d0f0f55c247 100644
--- a/apps/user_ldap/l10n/tr.js
+++ b/apps/user_ldap/l10n/tr.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Yapılandırma geçersiz: Adsız bağlantı kurulmasına izin verilmiyor.",
"Valid configuration, connection established!" : "Yapılandırma geçerli, bağlantı kuruldu.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlantı kurulamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.",
- "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlük dosyasına bakın.",
+ "Invalid configuration: %s" : "Yapılandırma geçersiz: %s",
"No action specified" : "Hehrangi bir işlem belirtilmemiş",
"No configuration specified" : "Henüz bir yapılandırma belirtilmemiş",
"No data specified" : "Henüz bir veri belirtilmemiş",
"Invalid data specified" : "Belirtilen veriler geçersiz",
- " Could not set configuration %s" : "%s yapılandırması ayarlanamadı",
+ "Could not set configuration %1$s to %2$s" : "%1$s yapılandırması %2$s için ayarlanamadı",
"Action does not exist" : "İşlem bulunamadı",
"Renewing …" : "Yenileniyor …",
"Very weak password" : "Parola çok zayıf",
@@ -42,7 +42,7 @@ OC.L10N.register(
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonim atamaya izin verilmiyor. Lütfen bir Kullanıcı DN ve parola belirtin.",
"LDAP Operations error. Anonymous bind might not be allowed." : "LDAP işleminde sorun çıktı. Anonim bağlamaya izin verilmiyor.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Kaydedilemedi. Veri tabanının çalışıyor olduğundan emin olun. İlerlemeden önce yeniden yükleyin.",
- "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?" : "Kipi değiştirmek otomatik LDAP sorgularını etkinleştirir. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?",
+ "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?" : "Kipi değiştirmek otomatik LDAP sorgularını açar. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?",
"Mode switch" : "Kip değişimi",
"Select attributes" : "Öznitelikleri seçin",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın): <br/>",
@@ -53,8 +53,15 @@ OC.L10N.register(
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Bir LDAP/AD bağlantı sorunu çıktı. Lütfen istemci, bağlantı noktası ve kimlik doğrulama bilgilerini denetleyin.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "LDAP/AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ",
"Please provide a login name to test against" : "Lütfen deneme için kullanılacak bir kullanıcı adı yazın",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/AD sunucusu memberOf parametresini desteklemediğinden grup kutusu devre dışı.",
- "Password change rejected. Hint: " : "Parola değişimi reddedildi. İpucu:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/AD sunucusu memberOf parametresini desteklemediğinden grup kutusu kullanımdan kaldırıldı.",
+ "Password change rejected. Hint: %s" : "Parola değişimi reddedildi. İpucu: %s",
+ "Mandatory field \"%s\" left empty" : "\"%s\" zorunlu alanı boş olamaz",
+ "A password is given, but not an LDAP agent" : "Bir parola belirtilmiş ancak bir LDAP aracısı değil",
+ "No password is given for the user agent" : "Kullanıcı uygulaması için bir parola belirtilmemiş",
+ "No LDAP base DN was given" : "LDAP base DN değeri belirtilmemiş",
+ "User base DN is not a subnode of global base DN" : "Kullanıcı base DN değeri genel base DN düğümünün bir alt düğümü değil ",
+ "Group base DN is not a subnode of global base DN" : "Grup base DN değeri genel base DN düğümünün bir alt düğümü değil ",
+ "Login filter does not contain %s placeholder." : "Oturum açma süzgecinde %s yer belirticisi bulunmuyor",
"Please login with the new password" : "Lütfen yeni parolanız ile oturum açın",
"LDAP User backend" : "LDAP kullanıcı arka yüzü",
"Your password will expire tomorrow." : "Parolanızın geçerlilik süresi yarın dolacak.",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parolanızın süresi %n gün içinde dolacak.","Parolanızın geçerlilik süresi %n gün içinde dolacak."],
"LDAP/AD integration" : "LDAP/AD bütünleştirmesi",
"LDAP Connection" : "LDAP bağlantısı",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Şu LDAP yapılandırması için bağlantı kurulamadı: %s","Şu LDAP yapılandırmaları için bağlantı kurulamadı: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Şu LDAP yapılandırması için arama tamamlanamadı: %s","Şu LDAP yapılandırmaları için arama tamamlanamadı: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Etkin olmayan LDAP yapılandırması var: %s","Etkin olmayan LDAP yapılandırmaları var: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Yapılandırılmış LDAP bağlantısında (%s) bağlantı ve arama çalışıyor","Tüm yapılandırılmış LDAP bağlantılarında (%s) bağlantı ve arama çalışıyor"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bu LDAP yapılandırması için bağlantı kurulamadı: %s","%n LDAP yapılandırması için bağlantı kurulamadı: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Bu LDAP yapılandırması için arama tamamlanamadı: %s","%n LDAP yapılandırması için arama tamamlanamadı: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Etkin olmayan bir LDAP yapılandırması var: %s","Etkin olmayan %n LDAP yapılandırması var: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Yapılandırılmış LDAP bağlantısında (%s) bağlantı ve arama çalışıyor","Yapılandırılmış %n LDAP bağlantısında (%s) bağlantı ve arama çalışıyor"],
"Invalid LDAP UUIDs" : "LDAP UUID değerleri geçersiz",
"None found" : "Herhangi bir şey bulunamadı",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP hesapları ya da grupları için geçersiz UUID değerleri bulundu. Lütfen LDAP yapılandırmasının Uzman bölümündeki \"UUID algılaması değiştirilsin\" seçeneğini gözden geçirin ve bunları güncellemek için \"occ ldap:update-uuid\" komutunu kullanın.",
@@ -129,7 +136,7 @@ OC.L10N.register(
"Continue" : "Sürdür",
"Please renew your password." : "Lütfen parolanızı yenileyin.",
"An internal error occurred." : "İçeride bir sorun çıktı.",
- "Please try again or contact your administrator." : "Lütfen yeniden deneyin ya da yöneticinizle görüşün.",
+ "Please try again or contact your administrator." : "Lütfen yeniden deneyin ya da yöneticiniz ile görüşün.",
"Current password" : "Geçerli parola",
"New password" : "Yeni parola",
"Renew password" : "Parolayı yenile",
@@ -141,17 +148,17 @@ OC.L10N.register(
"Groups" : "Gruplar",
"Expert" : "Uzman",
"Advanced" : "Gelişmiş",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulmamış, arka uç çalışmayacak. Lütfen kurması için BT yöneticinizle görüşün.",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulmamış, arka yüz çalışmayacak. Lütfen kurması için BT yöneticiniz ile görüşün.",
"Connection Settings" : "Bağlantı Ayarları",
- "Configuration Active" : "Yapılandırma Etkin",
+ "Configuration Active" : "Yapılandırma etkin",
"When unchecked, this configuration will be skipped." : "Bu seçenek işaretli değilse, bu yapılandırma atlanır.",
"Backup (Replica) Host" : "Yedek (Replika) Sunucu",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "İsteğe bağlı olarak bir yedekleme sunucusu belirtin. Ana LDAP/AD sunucusunun kopyası olmalıdır.",
"Backup (Replica) Port" : "Yedek (Replika) bağlantı noktası",
- "Disable Main Server" : "Ana Sunucuyu Devre Dışı Bırak",
+ "Disable Main Server" : "Ana sunucuyu kullanımdan kaldır",
"Only connect to the replica server." : "Yalnızca yedek sunucu ile bağlantı kurulsun.",
"Turn off SSL certificate validation." : "SSL sertifika doğrulaması kullanılmasın.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Önerilmez, yalnızca deneme amacıyla kullanın! Bağlantı yalnız bu seçenek etkinleştirildiğinde çalışıyorsa LDAP sunucusunun SSL sertifikasını %s sunucuzun içine aktarın.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Önerilmez, yalnızca deneme amacıyla kullanın! Bağlantı yalnızca bu seçenek ile çalışıyorsa LDAP sunucusunun SSL sertifikasını %s sunucuzun içine aktarın.",
"Cache Time-To-Live" : "Ön Bellek Time-To-Live Değeri",
"in seconds. A change empties the cache." : "saniye cinsinden. Değişiklik ön belleği temizler.",
"Directory Settings" : "Dizin Ayarları",
@@ -163,8 +170,8 @@ OC.L10N.register(
"One User Base DN per line" : "Her Satıra Bir Kullanıcı Base DN",
"User Search Attributes" : "Kullanıcı arama öznitelikleri",
"Optional; one attribute per line" : "İsteğe bağlı; her satıra bir öznitelik",
- "Disable users missing from LDAP" : "LDAP üzerinde bulunmayan kullanıcılar devre dışı bırakılsın",
- "When switched on, users imported from LDAP which are then missing will be disabled" : "Bu seçenek etkinleştirildiğinde, LDAP üzerinden içe aktarılmış ancak daha sonra kaybolmuş kullanıcılar devre dışı bırakılır",
+ "Disable users missing from LDAP" : "LDAP üzerinde bulunmayan kullanıcılar kullanımdan kaldırılsın",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Açıldığında, LDAP üzerinden içe aktarılmış ancak daha sonra kaybolmuş kullanıcılar kullanımdan kaldırılır",
"Group Display Name Field" : "Görüntülenecek Grup Adı Alanı",
"The LDAP attribute to use to generate the groups's display name." : "Görüntülenecek grup adını üretmek için kullanılacak LDAP özniteliği.",
"Base Group Tree" : "Temel Grup Ağacı",
@@ -172,22 +179,22 @@ OC.L10N.register(
"Group Search Attributes" : "Grup Arama Öznitelikleri",
"Group-Member association" : "Grup-Üye İlişkisi",
"Dynamic Group Member URL" : "Devingen Grup Üye Adresi",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Bu grup nesneleri üzerindeki LDAP özniteliği, grupa hangi nesnelerin ait olduğunu bulan bir LDAP arama adresi içeriyor (Seçenek boş bırakıldığında dinamik grup üyeliği özelliği devre dışı kalır).",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Bu grup nesneleri üzerindeki LDAP özniteliğinde, gruba hangi nesnelerin ait olduğunu bulan bir LDAP arama adresi bulunuyor (seçenek boş bırakıldığında dinamik grup üyeliği özelliği kapatılır).",
"Nested Groups" : "İç İçe Gruplar",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Bu seçenek etkinleştirildiğinde, gruplar içinde gruplar desteklenir (Yalnızca grup üyesi özniteliği DN içeriyorsa çalışır).",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Açılırsa, gruplar içinde gruplar desteklenir (Yalnızca grup üyesi özniteliğinde DN bulunuyorsa çalışır).",
"Paging chunksize" : "Sayfalandırma yığın boyutu",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Yığın boyutu, kullanıcı ya da grup listeleri gibi, çok sayıda sonuç verebilen sayfalandırılmış LDAP aramaları için kullanılır (0 olarak ayarlandığında bu durumlarda sayfalandırılmış LDAP aramaları devre dışı kalır).",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Yığın boyutu, kullanıcı ya da grup listeleri gibi, çok sayıda sonuç verebilen sayfalandırılmış LDAP aramaları için kullanılır (0 olarak ayarlandığında bu durumlarda sayfalandırılmış LDAP aramaları kapatılır).",
"Enable LDAP password changes per user" : "Kullanıcılar LDAP parolalarını değiştirebilsin",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : " Bu seçenek etkinleştirildiğinde, LDAP kullanıcıları kendi parolalarını değiştirebilir ve Süper Yöneticiler ile Grup Yöneticileri kendi LDAP kullanıcılarının parolalarını değiştirebilir. Yalnızca erişim denetimi ilkeleri LDAP sunucuya uygun olarak yapılandırılmış ise çalışır. Parolalar LDAP sunucuya düz metin biçiminde aktarıldığından, LDAP sunucu üzerinde aktarım şifrelemesi ve parola karması kullanılmalıdır.",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP kullanıcıları kendi parolalarını değiştirebilir ve Süper Yöneticiler ile Grup Yöneticileri kendi LDAP kullanıcılarının parolalarını değiştirebilir. Yalnızca erişim denetimi ilkeleri LDAP sunucusuna uygun olarak yapılandırılmış ise çalışır. Parolalar LDAP sunucusuna düz metin biçiminde aktarıldığından, LDAP sunucusu üzerinde aktarım şifrelemesi ve parola karması kullanılmalıdır.",
"(New password is sent as plain text to LDAP)" : "(Yeni parola LDAP üzerine düz metin olarak gönderildi)",
"Default password policy DN" : "Varsayılan parola ilkesi DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Parola geçerlilik süresinin sona erme işlemleri için kullanılacak varsayılan parola ilkesi için DN. Yalnızca her kullanıcı için LDAP parola değişikliği etkinleştirilmiş ise çalışır ve yalnızca OpenLDAP tarafından desteklenir. Parola süresi sona erme işlemlerini devre dışı bırakmak için boş bırakın.",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Parola geçerlilik süresinin sona erme işlemleri için kullanılacak varsayılan parola ilkesinin etki alanı adı (DN). Yalnızca her kullanıcı için LDAP parola değişikliği açıksa çalışır ve yalnızca OpenLDAP tarafından desteklenir. Parola süresi sona erme işlemlerini kapatmak için boş bırakın.",
"Special Attributes" : "Özel Öznitelikler",
"Quota Field" : "Kota Alanı",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Kullanıcının varsayılan kotasının kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.",
"Quota Default" : "Varsayılan Kota",
"Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Kota Alanına bir kota değeri yazılmamış olan LDAP kullanıcıları için kullanılacak varsayılan kota değerini yazın.",
- "Email Field" : "E-posta Alanı",
+ "Email Field" : "E-posta alanı",
"Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Kullanıcı varsayılan e-posta adresinin kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.",
"User Home Folder Naming Rule" : "Kullanıcı Ana Klasörünü Adlandırma Kuralı",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adının kullanılması için boş bırakın (varsayılan) ya da bir LDAP/AD özniteliği belirtin.",
@@ -214,6 +221,8 @@ OC.L10N.register(
"User profile Biography will be set from the specified attribute" : "Kullanıcı profilindeki özgeçmiş alanının değeri belirtilen öznitelikten alınır",
"Birthdate Field" : "Doğum tarihi alanı",
"User profile Date of birth will be set from the specified attribute" : "Kullanıcı profilindeki doğum tarihi alanının değeri belirtilen öznitelikten alınır",
+ "Pronouns Field" : "Hitap alanı",
+ "User profile Pronouns will be set from the specified attribute" : "Kullanıcı profilindeki hitap alanının değeri belirtilen öznitelikten alınır",
"Internal Username" : "İç kullanıcı adı",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Varsayılan olarak, iç kullanıcı adı UUID özniteliğinden oluşturulur. Böylece kullanıcı adının eşsiz olması ve dönüştürülmesi gereken karakterler içermediğinden emin olunur. İç kullanıcı adında kısıtlaması yalnızca şu karakterleri kullanılabilir: [ a-zA-Z0-9_.@-]. Diğer karakterler ASCII karşılıklarına dönüştürülür ya da yok sayılır. Çakışmalarda ada bir sayı eklenir. İç kullanıcı adı bir kullanıcıyı içsel olarak belirlemeye yarar. Aynı zamanda kullanıcı ana klasörünün varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin DAV hizmetlerinin bir parçasıdır. Bu seçenek ile varsayılan davranış değiştirilebilir. Değişiklikler yalnızca yeni eşleştirilecek (eklenecek) LDAP kullanıcılarını etkiler. Varsayılan davranışın kullanılması için boş bırakın.",
"Internal Username Attribute:" : "İç kullanıcı adı özniteliği:",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Kullanıcı adları, üst veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak belirlemek ve algılamak için, her LDAP kullanıcısına bir iç kullanıcı verilir. Bu kullanıcı adı ile LDAP kullanıcısının eşleştirilmesi gerekir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID değeri ile eşleştirilir. Bunun yanında LDAP etkileşimini azaltmak için DN ön belleğe alınır ancak bu işlem kimlik belirleme için kullanılmaz. DN üzerinde yapılan değişiklikler aktarılır. İç kullanıcı her yerde kullanıldığından, bir eşleştirmeyi kaldırmak pek çok yerde kalıntılar bırakır. Eşleştirmeleri kaldırmak yalnızca yapılandırmaya bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla kaldırmayın, yalnızca sınama ya da deney aşamalarında kullanın.",
"Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Kaldır",
"Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Kaldır",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP kullanıcıları ya da grupları için geçersiz UUID değerleri bulundu. Lütfen LDAP yapılandırmasının Uzman bölümündeki \"UUID algılaması değiştirilsin\" seçeneğini gözden geçirin ve bunları güncellemek için \"occ ldap:update-uuid\" komutunu kullanın."
+ "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlük dosyasına bakın."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json
index e5d623731f5..f5c2c7306dd 100644
--- a/apps/user_ldap/l10n/tr.json
+++ b/apps/user_ldap/l10n/tr.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Yapılandırma geçersiz: Adsız bağlantı kurulmasına izin verilmiyor.",
"Valid configuration, connection established!" : "Yapılandırma geçerli, bağlantı kuruldu.",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Yapılandırma geçerli ancak bağlantı kurulamadı. Lütfen sunucu ayarları ve kimlik doğrulama bilgilerini denetleyin.",
- "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlük dosyasına bakın.",
+ "Invalid configuration: %s" : "Yapılandırma geçersiz: %s",
"No action specified" : "Hehrangi bir işlem belirtilmemiş",
"No configuration specified" : "Henüz bir yapılandırma belirtilmemiş",
"No data specified" : "Henüz bir veri belirtilmemiş",
"Invalid data specified" : "Belirtilen veriler geçersiz",
- " Could not set configuration %s" : "%s yapılandırması ayarlanamadı",
+ "Could not set configuration %1$s to %2$s" : "%1$s yapılandırması %2$s için ayarlanamadı",
"Action does not exist" : "İşlem bulunamadı",
"Renewing …" : "Yenileniyor …",
"Very weak password" : "Parola çok zayıf",
@@ -40,7 +40,7 @@
"Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonim atamaya izin verilmiyor. Lütfen bir Kullanıcı DN ve parola belirtin.",
"LDAP Operations error. Anonymous bind might not be allowed." : "LDAP işleminde sorun çıktı. Anonim bağlamaya izin verilmiyor.",
"Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Kaydedilemedi. Veri tabanının çalışıyor olduğundan emin olun. İlerlemeden önce yeniden yükleyin.",
- "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?" : "Kipi değiştirmek otomatik LDAP sorgularını etkinleştirir. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?",
+ "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?" : "Kipi değiştirmek otomatik LDAP sorgularını açar. LDAP sisteminizin boyutlarına göre bu işlem uzun sürebilir. Kipi yine de değiştirmek istiyor musunuz?",
"Mode switch" : "Kip değişimi",
"Select attributes" : "Öznitelikleri seçin",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Kullanıcı bulunamadı. Lütfen oturum açma özniteliklerini ve kullanıcı adını denetleyin. Etkin süzgeç (komut satırı doğrulamasında kullanmak için kopyalayıp yapıştırın): <br/>",
@@ -51,8 +51,15 @@
"A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Bir LDAP/AD bağlantı sorunu çıktı. Lütfen istemci, bağlantı noktası ve kimlik doğrulama bilgilerini denetleyin.",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "LDAP/AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ",
"Please provide a login name to test against" : "Lütfen deneme için kullanılacak bir kullanıcı adı yazın",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/AD sunucusu memberOf parametresini desteklemediğinden grup kutusu devre dışı.",
- "Password change rejected. Hint: " : "Parola değişimi reddedildi. İpucu:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "LDAP/AD sunucusu memberOf parametresini desteklemediğinden grup kutusu kullanımdan kaldırıldı.",
+ "Password change rejected. Hint: %s" : "Parola değişimi reddedildi. İpucu: %s",
+ "Mandatory field \"%s\" left empty" : "\"%s\" zorunlu alanı boş olamaz",
+ "A password is given, but not an LDAP agent" : "Bir parola belirtilmiş ancak bir LDAP aracısı değil",
+ "No password is given for the user agent" : "Kullanıcı uygulaması için bir parola belirtilmemiş",
+ "No LDAP base DN was given" : "LDAP base DN değeri belirtilmemiş",
+ "User base DN is not a subnode of global base DN" : "Kullanıcı base DN değeri genel base DN düğümünün bir alt düğümü değil ",
+ "Group base DN is not a subnode of global base DN" : "Grup base DN değeri genel base DN düğümünün bir alt düğümü değil ",
+ "Login filter does not contain %s placeholder." : "Oturum açma süzgecinde %s yer belirticisi bulunmuyor",
"Please login with the new password" : "Lütfen yeni parolanız ile oturum açın",
"LDAP User backend" : "LDAP kullanıcı arka yüzü",
"Your password will expire tomorrow." : "Parolanızın geçerlilik süresi yarın dolacak.",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parolanızın süresi %n gün içinde dolacak.","Parolanızın geçerlilik süresi %n gün içinde dolacak."],
"LDAP/AD integration" : "LDAP/AD bütünleştirmesi",
"LDAP Connection" : "LDAP bağlantısı",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["Şu LDAP yapılandırması için bağlantı kurulamadı: %s","Şu LDAP yapılandırmaları için bağlantı kurulamadı: %s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["Şu LDAP yapılandırması için arama tamamlanamadı: %s","Şu LDAP yapılandırmaları için arama tamamlanamadı: %s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["Etkin olmayan LDAP yapılandırması var: %s","Etkin olmayan LDAP yapılandırmaları var: %s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["Yapılandırılmış LDAP bağlantısında (%s) bağlantı ve arama çalışıyor","Tüm yapılandırılmış LDAP bağlantılarında (%s) bağlantı ve arama çalışıyor"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Bu LDAP yapılandırması için bağlantı kurulamadı: %s","%n LDAP yapılandırması için bağlantı kurulamadı: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Bu LDAP yapılandırması için arama tamamlanamadı: %s","%n LDAP yapılandırması için arama tamamlanamadı: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Etkin olmayan bir LDAP yapılandırması var: %s","Etkin olmayan %n LDAP yapılandırması var: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Yapılandırılmış LDAP bağlantısında (%s) bağlantı ve arama çalışıyor","Yapılandırılmış %n LDAP bağlantısında (%s) bağlantı ve arama çalışıyor"],
"Invalid LDAP UUIDs" : "LDAP UUID değerleri geçersiz",
"None found" : "Herhangi bir şey bulunamadı",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP hesapları ya da grupları için geçersiz UUID değerleri bulundu. Lütfen LDAP yapılandırmasının Uzman bölümündeki \"UUID algılaması değiştirilsin\" seçeneğini gözden geçirin ve bunları güncellemek için \"occ ldap:update-uuid\" komutunu kullanın.",
@@ -127,7 +134,7 @@
"Continue" : "Sürdür",
"Please renew your password." : "Lütfen parolanızı yenileyin.",
"An internal error occurred." : "İçeride bir sorun çıktı.",
- "Please try again or contact your administrator." : "Lütfen yeniden deneyin ya da yöneticinizle görüşün.",
+ "Please try again or contact your administrator." : "Lütfen yeniden deneyin ya da yöneticiniz ile görüşün.",
"Current password" : "Geçerli parola",
"New password" : "Yeni parola",
"Renew password" : "Parolayı yenile",
@@ -139,17 +146,17 @@
"Groups" : "Gruplar",
"Expert" : "Uzman",
"Advanced" : "Gelişmiş",
- "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulmamış, arka uç çalışmayacak. Lütfen kurması için BT yöneticinizle görüşün.",
+ "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulmamış, arka yüz çalışmayacak. Lütfen kurması için BT yöneticiniz ile görüşün.",
"Connection Settings" : "Bağlantı Ayarları",
- "Configuration Active" : "Yapılandırma Etkin",
+ "Configuration Active" : "Yapılandırma etkin",
"When unchecked, this configuration will be skipped." : "Bu seçenek işaretli değilse, bu yapılandırma atlanır.",
"Backup (Replica) Host" : "Yedek (Replika) Sunucu",
"Give an optional backup host. It must be a replica of the main LDAP/AD server." : "İsteğe bağlı olarak bir yedekleme sunucusu belirtin. Ana LDAP/AD sunucusunun kopyası olmalıdır.",
"Backup (Replica) Port" : "Yedek (Replika) bağlantı noktası",
- "Disable Main Server" : "Ana Sunucuyu Devre Dışı Bırak",
+ "Disable Main Server" : "Ana sunucuyu kullanımdan kaldır",
"Only connect to the replica server." : "Yalnızca yedek sunucu ile bağlantı kurulsun.",
"Turn off SSL certificate validation." : "SSL sertifika doğrulaması kullanılmasın.",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Önerilmez, yalnızca deneme amacıyla kullanın! Bağlantı yalnız bu seçenek etkinleştirildiğinde çalışıyorsa LDAP sunucusunun SSL sertifikasını %s sunucuzun içine aktarın.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Önerilmez, yalnızca deneme amacıyla kullanın! Bağlantı yalnızca bu seçenek ile çalışıyorsa LDAP sunucusunun SSL sertifikasını %s sunucuzun içine aktarın.",
"Cache Time-To-Live" : "Ön Bellek Time-To-Live Değeri",
"in seconds. A change empties the cache." : "saniye cinsinden. Değişiklik ön belleği temizler.",
"Directory Settings" : "Dizin Ayarları",
@@ -161,8 +168,8 @@
"One User Base DN per line" : "Her Satıra Bir Kullanıcı Base DN",
"User Search Attributes" : "Kullanıcı arama öznitelikleri",
"Optional; one attribute per line" : "İsteğe bağlı; her satıra bir öznitelik",
- "Disable users missing from LDAP" : "LDAP üzerinde bulunmayan kullanıcılar devre dışı bırakılsın",
- "When switched on, users imported from LDAP which are then missing will be disabled" : "Bu seçenek etkinleştirildiğinde, LDAP üzerinden içe aktarılmış ancak daha sonra kaybolmuş kullanıcılar devre dışı bırakılır",
+ "Disable users missing from LDAP" : "LDAP üzerinde bulunmayan kullanıcılar kullanımdan kaldırılsın",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "Açıldığında, LDAP üzerinden içe aktarılmış ancak daha sonra kaybolmuş kullanıcılar kullanımdan kaldırılır",
"Group Display Name Field" : "Görüntülenecek Grup Adı Alanı",
"The LDAP attribute to use to generate the groups's display name." : "Görüntülenecek grup adını üretmek için kullanılacak LDAP özniteliği.",
"Base Group Tree" : "Temel Grup Ağacı",
@@ -170,22 +177,22 @@
"Group Search Attributes" : "Grup Arama Öznitelikleri",
"Group-Member association" : "Grup-Üye İlişkisi",
"Dynamic Group Member URL" : "Devingen Grup Üye Adresi",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Bu grup nesneleri üzerindeki LDAP özniteliği, grupa hangi nesnelerin ait olduğunu bulan bir LDAP arama adresi içeriyor (Seçenek boş bırakıldığında dinamik grup üyeliği özelliği devre dışı kalır).",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Bu grup nesneleri üzerindeki LDAP özniteliğinde, gruba hangi nesnelerin ait olduğunu bulan bir LDAP arama adresi bulunuyor (seçenek boş bırakıldığında dinamik grup üyeliği özelliği kapatılır).",
"Nested Groups" : "İç İçe Gruplar",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Bu seçenek etkinleştirildiğinde, gruplar içinde gruplar desteklenir (Yalnızca grup üyesi özniteliği DN içeriyorsa çalışır).",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Açılırsa, gruplar içinde gruplar desteklenir (Yalnızca grup üyesi özniteliğinde DN bulunuyorsa çalışır).",
"Paging chunksize" : "Sayfalandırma yığın boyutu",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Yığın boyutu, kullanıcı ya da grup listeleri gibi, çok sayıda sonuç verebilen sayfalandırılmış LDAP aramaları için kullanılır (0 olarak ayarlandığında bu durumlarda sayfalandırılmış LDAP aramaları devre dışı kalır).",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Yığın boyutu, kullanıcı ya da grup listeleri gibi, çok sayıda sonuç verebilen sayfalandırılmış LDAP aramaları için kullanılır (0 olarak ayarlandığında bu durumlarda sayfalandırılmış LDAP aramaları kapatılır).",
"Enable LDAP password changes per user" : "Kullanıcılar LDAP parolalarını değiştirebilsin",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : " Bu seçenek etkinleştirildiğinde, LDAP kullanıcıları kendi parolalarını değiştirebilir ve Süper Yöneticiler ile Grup Yöneticileri kendi LDAP kullanıcılarının parolalarını değiştirebilir. Yalnızca erişim denetimi ilkeleri LDAP sunucuya uygun olarak yapılandırılmış ise çalışır. Parolalar LDAP sunucuya düz metin biçiminde aktarıldığından, LDAP sunucu üzerinde aktarım şifrelemesi ve parola karması kullanılmalıdır.",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP kullanıcıları kendi parolalarını değiştirebilir ve Süper Yöneticiler ile Grup Yöneticileri kendi LDAP kullanıcılarının parolalarını değiştirebilir. Yalnızca erişim denetimi ilkeleri LDAP sunucusuna uygun olarak yapılandırılmış ise çalışır. Parolalar LDAP sunucusuna düz metin biçiminde aktarıldığından, LDAP sunucusu üzerinde aktarım şifrelemesi ve parola karması kullanılmalıdır.",
"(New password is sent as plain text to LDAP)" : "(Yeni parola LDAP üzerine düz metin olarak gönderildi)",
"Default password policy DN" : "Varsayılan parola ilkesi DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Parola geçerlilik süresinin sona erme işlemleri için kullanılacak varsayılan parola ilkesi için DN. Yalnızca her kullanıcı için LDAP parola değişikliği etkinleştirilmiş ise çalışır ve yalnızca OpenLDAP tarafından desteklenir. Parola süresi sona erme işlemlerini devre dışı bırakmak için boş bırakın.",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Parola geçerlilik süresinin sona erme işlemleri için kullanılacak varsayılan parola ilkesinin etki alanı adı (DN). Yalnızca her kullanıcı için LDAP parola değişikliği açıksa çalışır ve yalnızca OpenLDAP tarafından desteklenir. Parola süresi sona erme işlemlerini kapatmak için boş bırakın.",
"Special Attributes" : "Özel Öznitelikler",
"Quota Field" : "Kota Alanı",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Kullanıcının varsayılan kotasının kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.",
"Quota Default" : "Varsayılan Kota",
"Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Kota Alanına bir kota değeri yazılmamış olan LDAP kullanıcıları için kullanılacak varsayılan kota değerini yazın.",
- "Email Field" : "E-posta Alanı",
+ "Email Field" : "E-posta alanı",
"Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Kullanıcı varsayılan e-posta adresinin kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.",
"User Home Folder Naming Rule" : "Kullanıcı Ana Klasörünü Adlandırma Kuralı",
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adının kullanılması için boş bırakın (varsayılan) ya da bir LDAP/AD özniteliği belirtin.",
@@ -212,6 +219,8 @@
"User profile Biography will be set from the specified attribute" : "Kullanıcı profilindeki özgeçmiş alanının değeri belirtilen öznitelikten alınır",
"Birthdate Field" : "Doğum tarihi alanı",
"User profile Date of birth will be set from the specified attribute" : "Kullanıcı profilindeki doğum tarihi alanının değeri belirtilen öznitelikten alınır",
+ "Pronouns Field" : "Hitap alanı",
+ "User profile Pronouns will be set from the specified attribute" : "Kullanıcı profilindeki hitap alanının değeri belirtilen öznitelikten alınır",
"Internal Username" : "İç kullanıcı adı",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Varsayılan olarak, iç kullanıcı adı UUID özniteliğinden oluşturulur. Böylece kullanıcı adının eşsiz olması ve dönüştürülmesi gereken karakterler içermediğinden emin olunur. İç kullanıcı adında kısıtlaması yalnızca şu karakterleri kullanılabilir: [ a-zA-Z0-9_.@-]. Diğer karakterler ASCII karşılıklarına dönüştürülür ya da yok sayılır. Çakışmalarda ada bir sayı eklenir. İç kullanıcı adı bir kullanıcıyı içsel olarak belirlemeye yarar. Aynı zamanda kullanıcı ana klasörünün varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin DAV hizmetlerinin bir parçasıdır. Bu seçenek ile varsayılan davranış değiştirilebilir. Değişiklikler yalnızca yeni eşleştirilecek (eklenecek) LDAP kullanıcılarını etkiler. Varsayılan davranışın kullanılması için boş bırakın.",
"Internal Username Attribute:" : "İç kullanıcı adı özniteliği:",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Kullanıcı adları, üst veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak belirlemek ve algılamak için, her LDAP kullanıcısına bir iç kullanıcı verilir. Bu kullanıcı adı ile LDAP kullanıcısının eşleştirilmesi gerekir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID değeri ile eşleştirilir. Bunun yanında LDAP etkileşimini azaltmak için DN ön belleğe alınır ancak bu işlem kimlik belirleme için kullanılmaz. DN üzerinde yapılan değişiklikler aktarılır. İç kullanıcı her yerde kullanıldığından, bir eşleştirmeyi kaldırmak pek çok yerde kalıntılar bırakır. Eşleştirmeleri kaldırmak yalnızca yapılandırmaya bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla kaldırmayın, yalnızca sınama ya da deney aşamalarında kullanın.",
"Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Kaldır",
"Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Kaldır",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP kullanıcıları ya da grupları için geçersiz UUID değerleri bulundu. Lütfen LDAP yapılandırmasının Uzman bölümündeki \"UUID algılaması değiştirilsin\" seçeneğini gözden geçirin ve bunları güncellemek için \"occ ldap:update-uuid\" komutunu kullanın."
+ "Invalid configuration. Please have a look at the logs for further details." : "Yapılandırma geçersiz. Lütfen ayrıntılı bilgi almak için günlük dosyasına bakın."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/tzm.js b/apps/user_ldap/l10n/tzm.js
deleted file mode 100644
index 1d621c04a77..00000000000
--- a/apps/user_ldap/l10n/tzm.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},
-"nplurals=2; plural=(n == 0 || n == 1 || (n > 10 && n < 100) ? 0 : 1;");
diff --git a/apps/user_ldap/l10n/tzm.json b/apps/user_ldap/l10n/tzm.json
deleted file mode 100644
index 2c3a3581b99..00000000000
--- a/apps/user_ldap/l10n/tzm.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "_%s group found_::_%s groups found_" : ["",""],
- "_%s user found_::_%s users found_" : ["",""]
-},"pluralForm" :"nplurals=2; plural=(n == 0 || n == 1 || (n > 10 && n < 100) ? 0 : 1;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ug.js b/apps/user_ldap/l10n/ug.js
index c1020b1c32b..8026cf7e3f0 100644
--- a/apps/user_ldap/l10n/ug.js
+++ b/apps/user_ldap/l10n/ug.js
@@ -1,14 +1,221 @@
OC.L10N.register(
"user_ldap",
{
- "Users" : "ئىشلەتكۈچىلەر",
- "Groups" : "گۇرۇپپا",
+ "Failed to clear the mappings." : "خەرىتىنى تازىلاش مەغلۇب بولدى.",
+ "Failed to delete the server configuration" : "مۇلازىمېتىر سەپلىمىسىنى ئۆچۈرەلمىدى",
+ "Invalid configuration: Anonymous binding is not allowed." : "ئىناۋەتسىز سەپلىمىسى: نامسىز باغلاشقا بولمايدۇ.",
+ "Valid configuration, connection established!" : "ئىناۋەتلىك سەپلىمە ، ئۇلىنىش قۇرۇلدى!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "ئىناۋەتلىك سەپلىمىسى ، ئەمما باغلاش مەغلۇپ بولدى. مۇلازىمېتىر تەڭشىكى ۋە كىنىشكىسىنى تەكشۈرۈپ بېقىڭ.",
+ "No action specified" : "ھېچقانداق ھەرىكەت بەلگىلەنمىدى",
+ "No configuration specified" : "سەپلىمىسى ئېنىق ئەمەس",
+ "No data specified" : "ھېچقانداق سانلىق مەلۇمات كۆرسىتىلمىدى",
+ "Invalid data specified" : "ئىناۋەتسىز سانلىق مەلۇمات",
+ "Action does not exist" : "ھەرىكەت مەۋجۇت ئەمەس",
+ "Renewing …" : "يېڭىلاش…",
+ "Very weak password" : "پارول بەك ئاجىز",
+ "Weak password" : "پارول ئاجىز",
+ "So-so password" : "شۇڭا مەخپىي نومۇر",
+ "Good password" : "ياخشى پارول",
+ "Strong password" : "كۈچلۈك پارول",
+ "The Base DN appears to be wrong" : "Base DN خاتادەك قىلىدۇ",
+ "Testing configuration…" : "سىناق سەپلىمىسى…",
+ "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." : "Base DN نى ئاپتوماتىك بايقىغىلى بولمايدۇ ، كىنىشكا ، باش ئاپپارات ۋە پورتنى تۈزىتىڭ.",
+ "Could not detect Base DN, please enter it manually." : "Base DN نى بايقىيالمىدى ، قولدا كىرگۈزۈڭ.",
+ "{nthServer}. Server" : "th nthServer}. مۇلازىمېتىر",
+ "No object found in the given Base DN. Please revise." : "بېرىلگەن Base DN دا ھېچقانداق نەرسە تېپىلمىدى. قايتا قاراپ بېقىڭ.",
+ "More than 1,000 directory entries available." : "1000 دىن ئارتۇق مۇندەرىجە تۈرى بار.",
+ "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?" : "نۆۋەتتىكى مۇلازىمېتىر سەپلىمىسىنى ئۆچۈرمەكچىمۇ؟",
+ "Confirm Deletion" : "ئۆچۈرۈشنى جەزملەشتۈرۈڭ",
+ "Mappings cleared successfully!" : "خەرىتە مۇۋەپپەقىيەتلىك تازىلاندى!",
+ "Error while clearing the mappings." : "خەرىتىنى تازىلاش جەريانىدا خاتالىق.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "نامسىز باغلاشقا بولمايدۇ. ئىشلەتكۈچى DN ۋە پارول بىلەن تەمىنلەڭ.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP مەشغۇلات خاتالىقى. نامسىز باغلىنىشقا رۇخسەت قىلىنمايدۇ.",
+ "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/>" : "ئىشلەتكۈچى تېپىلمىدى. كىرىش خاسلىقىڭىز ۋە ئىشلەتكۈچى ئىسمىڭىزنى تەكشۈرۈپ بېقىڭ. ئۈنۈملۈك سۈزگۈچ (بۇيرۇق قۇرىنى دەلىللەش ئۈچۈن كۆچۈرۈپ چاپلاش): <br/>",
+ "User found and settings verified." : "ئىشلەتكۈچى تېپىلدى ۋە تەڭشەكلىرى دەلىللەندى.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "ئىزدەشنى تارايتىشنى ئويلاڭ ، چۈنكى ئۇ نۇرغۇن ئىشلەتكۈچىلەرنى ئۆز ئىچىگە ئالىدۇ ، پەقەت بىرىنچىسىلا كىرەلەيدۇ.",
+ "An unspecified error occurred. Please check log and settings." : "ئېنىقلانمىغان خاتالىق كۆرۈلدى. خاتىرە ۋە تەڭشەكلەرنى تەكشۈرۈپ بېقىڭ.",
+ "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 نى قوللىمايدۇ.",
+ "Please login with the new password" : "يېڭى پارول بىلەن كىرىڭ",
+ "LDAP User backend" : "LDAP ئىشلەتكۈچى ئارقا سۇپىسى",
+ "Your password will expire tomorrow." : "پارولىڭىز ئەتە توشىدۇ.",
+ "Your password will expire today." : "پارولىڭىز بۈگۈن توشىدۇ.",
+ "LDAP/AD integration" : "LDAP / AD بىرلەشتۈرۈش",
+ "LDAP Connection" : "LDAP ئۇلىنىشى",
+ "Invalid LDAP UUIDs" : "ئىناۋەتسىز LDAP UUIDs",
+ "None found" : "تېپىلمىدى",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP ھېساباتى ياكى گۇرۇپپىلارنىڭ ئىناۋەتسىز UUID تېپىلدى. LDAP سەپلىمىسىنىڭ مۇتەخەسسىسلەر بۆلىكىدىكى «UUID بايقاشنى قاپلاش» تەڭشەكلىرىڭىزنى تەكشۈرۈپ ، «occ ldap: update-uuid» نى ئىشلىتىپ ئۇلارنى يېڭىلاڭ.",
+ "> 1000 groups found" : "> 1000 گۇرۇپپا تېپىلدى",
+ "> 1000 users found" : "> 1000 ئىشلەتكۈچى تېپىلدى",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "ئىشلەتكۈچى كۆرسىتىش ئىسمى خاسلىقىنى بايقىيالمىدى. ئىلغار LDAP تەڭشىكىدە ئۆزىڭىز بەلگىلىۈڭ.",
+ "Could not find the desired feature" : "لازىملىق ئىقتىدارنى تاپالمىدى",
+ "Invalid Host" : "ئىناۋەتسىز",
+ "LDAP user and group backend" : "LDAP ئىشلەتكۈچى ۋە گۇرۇپپا ئارقا سەھنىسى",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "بۇ پروگرامما باشقۇرغۇچىنىڭ Nextcloud نى LDAP ئاساسىدىكى ئىشلەتكۈچى مۇندەرىجىسىگە ئۇلىيالايدۇ.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "بۇ پروگرامما باشقۇرغۇچىنىڭ Nextcloud نى LDAP ئاساسىدىكى ئىشلەتكۈچى مۇندەرىجىسىگە ئۇلاپ ، ئىشلەتكۈچى ، گۇرۇپپا ۋە ئىشلەتكۈچى خاسلىقى بىلەن تەمىنلەيدۇ. باشقۇرغۇچى بۇ پروگراممىنى LDAP كۆرۈنمە يۈزى ئارقىلىق بىر ياكى بىر قانچە LDAP مۇندەرىجىسىگە ياكى ئاكتىپ مۇندەرىجىگە ئۇلىيالايدۇ. ئىشلەتكۈچى نورمىسى ، ئېلېكترونلۇق خەت ، باش سۈرەت ، گۇرۇپپا ئەزالىرى ۋە باشقىلار قاتارلىق خاسلىقلارنى مۇناسىپ سوئال ۋە سۈزگۈچلەر بىلەن مۇندەرىجىدىن Nextcloud غا تارتقىلى بولىدۇ.\n\nئىشلەتكۈچى LDAP ياكى AD كىنىشكىسى بىلەن Nextcloud غا كىرىدۇ ، ھەمدە LDAP ياكى AD مۇلازىمېتىرى بىر تەرەپ قىلغان دەلىللەش تەلىپىگە ئاساسەن ئىجازەتكە ئېرىشىدۇ. Nextcloud LDAP ياكى AD مەخپىي نومۇرىنى ساقلىمايدۇ ، بەلكى بۇ كىنىشكىلار ئىشلەتكۈچىنى دەلىللەش ئۈچۈن ئىشلىتىلىدۇ ، ئاندىن Nextcloud ئىشلەتكۈچى كىملىكى ئۈچۈن بىر يىغىن ئىشلىتىدۇ. LDAP ئىشلەتكۈچى ۋە گۇرۇپپا ئارقا بەت ھۆججىتىدە تېخىمۇ كۆپ ئۇچۇرلار بار.",
+ "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." : "سۈزگۈچ قايسى LDAP گۇرۇپپىسىنىڭ% s مىسالىغا ئېرىشەلەيدىغانلىقىنى بەلگىلەيدۇ.",
+ "Verify settings and count the 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." : "LDAP / AD ئىشلەتكۈچى نامىغا كىرىشكە يول قويىدۇ ، بۇ «uid» ياكى «sAMAccountName» بولۇپ ، بايقايدۇ.",
+ "LDAP/AD Email Address:" : "LDAP / AD ئېلېكترونلۇق خەت ئادرېسى:",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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" : "سىناق خاتىرىسى",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "بېرىلگەن كىرىش ئىسمى ۋە نۆۋەتتىكى كىرىش سۈزگۈچ ئۈچۈن DN تاپشۇرۇۋېلىشقا ئۇرۇنۇش",
+ "Verify settings" : "تەڭشەكلەرنى دەلىللەڭ",
+ "%s. Server:" : "% s. مۇلازىمېتىر:",
+ "Add a new configuration" : "يېڭى سەپلىمە قوشۇڭ",
+ "Copy current configuration into new directory binding" : "نۆۋەتتىكى سەپلىمىنى يېڭى مۇندەرىجە باغلاشقا كۆچۈرۈڭ",
+ "Delete the current configuration" : "نۆۋەتتىكى سەپلىمىنى ئۆچۈرۈڭ",
"Host" : "باش ئاپپارات",
+ "You can omit the protocol, unless you require SSL. If so, 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 = ۋاكالەتچى ، dc = مىسال ، dc = com. نامسىز زىيارەت قىلىش ئۈچۈن DN ۋە پارولنى بوش قويۇڭ.",
"Password" : "ئىم",
+ "For anonymous access, leave DN and Password empty." : "نامسىز زىيارەت قىلىش ئۈچۈن DN ۋە پارولنى بوش قويۇڭ.",
+ "Save Credentials" : "كىنىشكىنى ساقلاش",
+ "One Base DN per line" : "ھەر بىر قۇر DN",
+ "You can specify Base DN for users and groups in the Advanced tab" : "ئالىي بەتكۈچتىكى ئىشلەتكۈچى ۋە گۇرۇپپىلار ئۈچۈن Base DN نى بەلگىلىيەلەيسىز",
+ "Detect Base DN" : "Base 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 سۈزگۈچنى قولدا كىرگۈزۈڭ (چوڭ مۇندەرىجە تەۋسىيە قىلىنىدۇ)",
+ "Listing and searching for users is constrained by 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." : "ئىشلەتكۈچىلەر ئۈچۈن ئەڭ كۆپ ئۇچرايدىغان ئوبيېكت سىنىپلىرى تەشكىلىي شەخس ، ئادەم ، ئىشلەتكۈچى ۋە inetOrgPerson. قايسى ئوبيېكت سىنىپىنى تاللاشنى بىلمىسىڭىز مۇندەرىجە باشقۇرغۇچىڭىز بىلەن مەسلىھەتلىشىڭ.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "سۈزگۈچ قايسى LDAP ئىشلەتكۈچىلەرنىڭ% s مىسالىغا ئېرىشەلەيدىغانلىقىنى بەلگىلەيدۇ.",
+ "Verify settings and count users" : "تەڭشەكلەرنى تەكشۈرۈپ ، ئىشلەتكۈچىنى ساناپ بېقىڭ",
+ "Saving" : "تېجەش",
+ "Back" : "قايتىش",
+ "Continue" : "داۋاملاشتۇر",
+ "Please renew your password." : "پارولىڭىزنى يېڭىلاڭ.",
+ "An internal error occurred." : "ئىچكى خاتالىق كۆرۈلدى.",
+ "Please try again or contact your administrator." : "قايتا سىناڭ ياكى باشقۇرغۇچىڭىز بىلەن ئالاقىلىشىڭ.",
+ "Current password" : "نۆۋەتتىكى ئىم",
+ "New password" : "يېڭى ئىم",
+ "Renew password" : "پارولنى يېڭىلاڭ",
+ "Wrong password." : "پارول خاتا.",
+ "Cancel" : "ۋاز كەچ",
+ "Server" : "مۇلازىمېتىر",
+ "Users" : "ئىشلەتكۈچىلەر",
+ "Login Attributes" : "كىرىش خاسلىقى",
+ "Groups" : "گۇرۇپپا",
+ "Expert" : "مۇتەخەسسىس",
"Advanced" : "ئالىي",
+ "<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> PHP LDAP مودۇلى ئورنىتىلمىدى ، ئارقا تەرىپى ئىشلىمەيدۇ. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.",
"Connection Settings" : "باغلىنىش تەڭشىكى",
- "Configuration Active" : "سەپلىمە ئاكتىپ"
+ "Configuration Active" : "سەپلىمە ئاكتىپ",
+ "When unchecked, this configuration will be skipped." : "تەكشۈرۈلمىسە ، بۇ سەپلىمە ئاتلاپ كېتىدۇ.",
+ "Backup (Replica) Host" : "زاپاسلاش (Replica) رىياسەتچىسى",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "ئىختىيارى زاپاسلاش مۇلازىمىتىرى بېرىڭ. ئۇ چوقۇم ئاساسلىق LDAP / AD مۇلازىمېتىرنىڭ كۆپەيتىلگەن نۇسخىسى بولۇشى كېرەك.",
+ "Backup (Replica) Port" : "زاپاسلاش (Replica) ئېغىزى",
+ "Disable Main Server" : "ئاساسلىق مۇلازىمېتىرنى چەكلەڭ",
+ "Only connect to the replica server." : "پەقەت كۆپەيتىلگەن مۇلازىمېتىرغا ئۇلاڭ.",
+ "Turn off SSL certificate validation." : "SSL گۇۋاھنامىسىنى دەلىللەشنى ئېتىۋېتىڭ.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "تەۋسىيە قىلىنمايدۇ ، ئۇنى پەقەت سىناق ئۈچۈن ئىشلىتىڭ! ئەگەر ئۇلىنىش پەقەت مۇشۇ تاللاش بىلەنلا ئىشلەيدىغان بولسا ،% s مۇلازىمېتىرىڭىزغا LDAP مۇلازىمېتىرنىڭ SSL گۇۋاھنامىسىنى ئەكىرىڭ.",
+ "Cache Time-To-Live" : "Cache Time-To-Live",
+ "in seconds. A change empties the cache." : "سېكۇنتتا. ئۆزگەرتىش غەملەكنى بوشاتتى.",
+ "Directory Settings" : "مۇندەرىجە تەڭشىكى",
+ "User Display Name Field" : "ئىشلەتكۈچى كۆرسىتىش ئىسمى",
+ "The LDAP attribute to use to generate the user's display name." : "LDAP خاسلىقى ئىشلەتكۈچىنىڭ كۆرسىتىش نامىنى ھاسىل قىلىشقا ئىشلىتىلىدۇ.",
+ "2nd User Display Name Field" : "2-ئىشلەتكۈچى كۆرسىتىش ئىسمى مەيدانى",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "ئىختىيارىي. تىرناق ئىچىدىكى كۆرسىتىش نامىغا قوشۇلىدىغان LDAP خاسلىقى. مەسىلەن: »جون دو (john.doe@example.org)«.",
+ "Base User Tree" : "ئاساسى ئىشلەتكۈچى دەرىخى",
+ "One User Base DN per line" : "ھەر بىر قۇردا بىر ئىشلەتكۈچى ئاساسى DN",
+ "User Search Attributes" : "ئىشلەتكۈچى ئىزدەش خاسلىقى",
+ "Optional; one attribute per line" : "ئىختىيارىي ھەر بىر قۇرغا بىر خاسلىق",
+ "Disable users missing from LDAP" : "LDAP دىن يوقاپ كەتكەن ئىشلەتكۈچىلەرنى چەكلەڭ",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "قوزغىتىلغاندا LDAP دىن ئىمپورت قىلىنغان ئىشلەتكۈچىلەر ئىناۋەتسىز بولىدۇ",
+ "Group Display Name Field" : "گۇرۇپپا كۆرسىتىش ئىسمى مەيدانى",
+ "The LDAP attribute to use to generate the groups's display name." : "LDAP خاسلىقى گۇرۇپپىلارنىڭ كۆرسىتىش نامىنى ھاسىل قىلىشقا ئىشلىتىلىدۇ.",
+ "Base Group Tree" : "ئاساسى گۇرۇپپا دەرىخى",
+ "One Group Base DN per line" : "ھەر بىر قۇر بىر گۇرۇپپا ئاساسى DN",
+ "Group Search Attributes" : "گۇرۇپپا ئىزدەش خاسلىقى",
+ "Group-Member association" : "گۇرۇپپا-ئەزالار جەمئىيىتى",
+ "Dynamic Group Member URL" : "ھەرىكەتچان گۇرۇپپا ئەزالىرىنىڭ ئادرېسى",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "گۇرۇپپا ئوبيېكتلىرىدىكى LDAP خاسلىقى LDAP ئىزدەش URL نى ئۆز ئىچىگە ئالغان بولۇپ ، قايسى ئوبيېكتلارنىڭ گۇرۇپپىغا تەۋە ئىكەنلىكىنى بەلگىلەيدۇ. (قۇرۇق تەڭشەك ھەرىكەتچان گۇرۇپپا ئەزالىق ئىقتىدارىنى چەكلەيدۇ.)",
+ "Nested Groups" : "توپلانغان گۇرۇپپىلار",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "ئاچقاندا گۇرۇپپىلارنى ئۆز ئىچىگە ئالغان گۇرۇپپىلارنى قوللايدۇ. (پەقەت گۇرۇپپا ئەزالىرىنىڭ خاسلىقى DNs بولغاندىلا ئىشلەيدۇ.)",
+ "Paging chunksize" : "Paging chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize تور بەت LDAP ئىزدەش ئۈچۈن ئىشلىتىلىدۇ ، بۇ ئىشلەتكۈچى ياكى گۇرۇپپا تىزىملاش قاتارلىق چوڭ نەتىجىلەرنى قايتۇرىدۇ. (ئۇنى 0 قىلىپ تەڭشەش بۇ خىل ئەھۋال ئاستىدا LDAP ئىزدەشنى چەكلەيدۇ.)",
+ "Enable LDAP password changes per user" : "ھەر بىر ئىشلەتكۈچىگە LDAP پارول ئۆزگەرتىشنى قوزغىتىڭ",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP ئىشلەتكۈچىلىرىنىڭ مەخپىي نومۇرىنى ئۆزگەرتىشىگە يول قويۇڭ ۋە دەرىجىدىن تاشقىرى باشقۇرغۇچى ۋە گۇرۇپپا باشقۇرغۇچىلارنىڭ LDAP ئابونتلىرىنىڭ پارولىنى ئۆزگەرتىشىگە يول قويۇڭ. زىيارەتنى كونترول قىلىش سىياسىتى LDAP مۇلازىمېتىرىغا ئاساسەن تەڭشەلگەندىلا ئىشلەيدۇ. مەخپىي نومۇر LDAP مۇلازىمېتىرىغا ئوچۇق تېكىستتە ئەۋەتىلگەنلىكتىن ، چوقۇم مەخپىيلەشتۈرۈشنى ئىشلىتىپ ، LDAP مۇلازىمېتىرىدا مەخپىي نومۇرنى تەڭشەش كېرەك.",
+ "(New password is sent as plain text to LDAP)" : "(يېڭى پارول LDAP غا ئاددىي تېكىست سۈپىتىدە ئەۋەتىلدى)",
+ "Default password policy DN" : "كۆڭۈلدىكى پارول سىياسىتى DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "پارولنىڭ مۇددىتى توشقاندا بىر تەرەپ قىلىنىدىغان كۆڭۈلدىكى پارول سىياسىتىنىڭ DN. ھەر بىر ئىشلەتكۈچىگە LDAP پارولى ئۆزگەرتىلگەندىلا ئىشلەيدۇ ، پەقەت OpenLDAP قوللايدۇ. پارولنىڭ ۋاقتى توشۇشنى بىر تەرەپ قىلىش ئۈچۈن بوش قويۇڭ.",
+ "Special Attributes" : "ئالاھىدە خاسلىق",
+ "Quota Field" : "Quota Field",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ئىشلەتكۈچىنىڭ سۈكۈتتىكى نورمىسى ئۈچۈن بوش قويۇڭ. بولمىسا ، LDAP / AD خاسلىقىنى بەلگىلەڭ.",
+ "Quota Default" : "Quota Default",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "نورما ئۆلچىمىدە نورما بېكىتىلمىگەن LDAP ئىشلەتكۈچىلىرىنىڭ سۈكۈتتىكى نورمىسىنى قاپلىۋېتىڭ.",
+ "Email Field" : "ئېلېكترونلۇق خەت مەيدانى",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "ئىشلەتكۈچىنىڭ ئېلېكترونلۇق خەتلىرىنى LDAP خاسلىقىدىن تەڭشەڭ. سۈكۈتتىكى ھەرىكەت ئۈچۈن ئۇنى بوش قويۇڭ.",
+ "User Home Folder Naming Rule" : "ئىشلەتكۈچى ئائىلە ھۆججەت قىسقۇچىغا ئىسىم قويۇش قائىدىسى",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "ئىشلەتكۈچى نامىغا قۇرۇق قويۇڭ (سۈكۈتتىكى). بولمىسا ، LDAP / AD خاسلىقىنى بەلگىلەڭ.",
+ "\"$home\" Placeholder Field" : "\"$ home\" ئورۇن ئىگىسى",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "سىرتقى ساقلاش سەپلىمىسىدىكى $ home كۆرسىتىلگەن خاسلىقنىڭ قىممىتى بىلەن ئالماشتۇرۇلىدۇ",
+ "User Profile Attributes" : "ئىشلەتكۈچى ئارخىپى خاسلىقى",
+ "Phone Field" : "تېلېفون مەيدانى",
+ "User profile Phone will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تېلېفون بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Website Field" : "تور بېكەت مەيدانى",
+ "User profile Website will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تور بېكىتى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Address Field" : "ئادرېس مەيدانى",
+ "User profile Address will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى ئادرېسى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Twitter Field" : "Twitter Field",
+ "User profile Twitter will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى Twitter كۆرسىتىلگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Fediverse Field" : "Fediverse Field",
+ "User profile Fediverse will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى Fediverse كۆرسىتىلگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Organisation Field" : "تەشكىلات مەيدانى",
+ "User profile Organisation will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تەشكىلاتى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Role Field" : "رول مەيدانى",
+ "User profile Role will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى رولى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Headline Field" : "ماۋزۇ مەيدانى",
+ "User profile Headline will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى ماۋزۇ بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Biography Field" : "تەرجىمىھالى",
+ "User profile Biography will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تەرجىمىھالى كۆرسىتىلگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Birthdate Field" : "تۇغۇلغان كۈنى",
+ "User profile Date of birth will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تۇغۇلغان ۋاقتى بەلگىلەنگەن خاسلىقتىن بېكىتىلىدۇ",
+ "Pronouns Field" : "ئالمىشىش مەيدانى",
+ "User profile Pronouns will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى ئالماشلار بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "سۈكۈتتىكى ھالەتتە ئىشلەتكۈچى ئىسمى UUID خاسلىقىدىن قۇرۇلىدۇ. ئىشلەتكۈچى نامىنىڭ ئۆزگىچە ئىكەنلىكى ۋە ھەرپلەرنى ئۆزگەرتىشنىڭ ھاجىتى يوقلىقىغا كاپالەتلىك قىلىدۇ. ئىچكى ئىشلەتكۈچى نامىدا پەقەت بۇ ھەرپلەرلا رۇخسەت قىلىنغان چەكلىمە بار: [a-zA-Z0-9 _. @ -]. باشقا ھەرپلەر ئۇلارنىڭ ASCII خەت ئالاقىسى بىلەن ئالماشتۇرۇلىدۇ ياكى ئاددىيلا چىقىرىۋېتىلىدۇ. سوقۇلغاندا بىر سان قوشۇلىدۇ / كۆپەيتىلىدۇ. ئىچكى ئىشلەتكۈچى ئىسمى ئىچكى ئىشلەتكۈچىنى پەرقلەندۈرۈش ئۈچۈن ئىشلىتىلىدۇ. ئۇ يەنە ئىشلەتكۈچىنىڭ ئائىلە قىسقۇچىنىڭ سۈكۈتتىكى ئىسمى. ئۇ يىراقتىكى URL لارنىڭ بىر قىسمى ، مەسىلەن بارلىق DAV مۇلازىمىتى ئۈچۈن. بۇ تەڭشەك ئارقىلىق سۈكۈتتىكى ھەرىكەتنى بېسىپ ئۆتكىلى بولىدۇ. ئۆزگەرتىش پەقەت يېڭى سىزىلغان (قوشۇلغان) LDAP ئىشلەتكۈچىلەرگىلا تەسىر كۆرسىتىدۇ. سۈكۈتتىكى ھەرىكەت ئۈچۈن ئۇنى بوش قويۇڭ.",
+ "Internal Username Attribute:" : "ئىچكى ئىشلەتكۈچى ئىسمى خاسلىقى:",
+ "Override UUID detection" : "UUID بايقاشنى قاپلىۋېتىڭ",
+ "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "سۈكۈت بويىچە ، UUID خاسلىقى ئاپتوماتىك بايقىلىدۇ. UUID خاسلىقى LDAP ئىشلەتكۈچىلىرى ۋە گۇرۇپپىلىرىنى شەكسىز پەرقلەندۈرۈش ئۈچۈن ئىشلىتىلىدۇ. ئۇندىن باشقا ، ئىچكى ئىشلەتكۈچى ئىسمى UUID ئاساسىدا قۇرۇلىدۇ ، ئەگەر يۇقىرىدا ئېنىق بەلگىلەنمىگەن بولسا. تەڭشەكنى بېسىپ ئۆتۈپ ، ئۆزىڭىز تاللىغان خاسلىقنى يەتكۈزەلەيسىز. سىز ئۆزىڭىز تاللىغان خاسلىقنىڭ ئىشلەتكۈچىلەر ۋە گۇرۇپپىلار ئۈچۈن ئېلىپ كېلىنەلەيدىغانلىقىغا كاپالەتلىك قىلىشىڭىز كېرەك. سۈكۈتتىكى ھەرىكەت ئۈچۈن ئۇنى بوش قويۇڭ. ئۆزگەرتىش پەقەت يېڭى سىزىلغان (قوشۇلغان) LDAP ئىشلەتكۈچىلىرى ۋە گۇرۇپپىلىرىغىلا تەسىر كۆرسىتىدۇ.",
+ "UUID Attribute for Users:" : "ئىشلەتكۈچىلەر ئۈچۈن UUID خاسلىقى:",
+ "UUID Attribute for Groups:" : "گۇرۇپپىلارغا UUID خاسلىقى:",
+ "Username-LDAP User Mapping" : "ئىشلەتكۈچى ئىسمى-LDAP ئىشلەتكۈچى خەرىتىسى",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ئىشلەتكۈچى ئىسمى مېتا سانلىق مەلۇماتنى ساقلاش ۋە تەقسىملەشتە ئىشلىتىلىدۇ. ئىشلەتكۈچىلەرنى ئېنىق تونۇش ۋە تونۇش ئۈچۈن ، ھەر بىر LDAP ئىشلەتكۈچىنىڭ ئىچكى ئىشلەتكۈچى ئىسمى بولىدۇ. بۇ ئىشلەتكۈچى نامىدىن LDAP ئىشلەتكۈچىگە خەرىتە سىزىشنى تەلەپ قىلىدۇ. قۇرۇلغان ئىشلەتكۈچى ئىسمى LDAP ئىشلەتكۈچىنىڭ UUID غا سىزىلغان. بۇنىڭدىن باشقا ، DN غەملەك بىلەن LDAP ئۆز-ئارا تەسىرنى ئازايتىدۇ ، ئەمما ئۇ پەرقلەندۈرۈشكە ئىشلىتىلمەيدۇ. ئەگەر DN ئۆزگەرسە ، ئۆزگىرىشلەر تېپىلىدۇ. ئىچكى ئىشلەتكۈچى ئىسمى ھەممە يەردە ئىشلىتىلىدۇ. خەرىتىنى تازىلاش ھەممە يەردە ئېشىپ قالىدۇ. خەرىتىنى تازىلاش سەپلىمىگە سەزگۈر ئەمەس ، ئۇ بارلىق LDAP سەپلىمىسىگە تەسىر كۆرسىتىدۇ! خەرىتىنى ئىشلەپچىقىرىش مۇھىتىدا ھەرگىز تازىلىماڭ ، پەقەت سىناق ياكى تەجرىبە باسقۇچىدىلا.",
+ "Clear Username-LDAP User Mapping" : "ئىشلەتكۈچى ئىسمى- LDAP ئىشلەتكۈچى خەرىتىسىنى تازىلاڭ",
+ "Clear Groupname-LDAP Group Mapping" : "گۇرۇپپا ئىسمى- LDAP گۇرۇپپا خەرىتىسىنى تازىلاش",
+ "Invalid configuration. Please have a look at the logs for further details." : "سەپلىمە ئىناۋەتسىز. تېخىمۇ كۆپ تەپسىلاتلار ئۈچۈن خاتىرىلەرنى كۆرۈپ بېقىڭ."
},
-"nplurals=1; plural=0;");
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ug.json b/apps/user_ldap/l10n/ug.json
index adecc82972d..1a0ac4aa77e 100644
--- a/apps/user_ldap/l10n/ug.json
+++ b/apps/user_ldap/l10n/ug.json
@@ -1,12 +1,219 @@
{ "translations": {
- "Users" : "ئىشلەتكۈچىلەر",
- "Groups" : "گۇرۇپپا",
+ "Failed to clear the mappings." : "خەرىتىنى تازىلاش مەغلۇب بولدى.",
+ "Failed to delete the server configuration" : "مۇلازىمېتىر سەپلىمىسىنى ئۆچۈرەلمىدى",
+ "Invalid configuration: Anonymous binding is not allowed." : "ئىناۋەتسىز سەپلىمىسى: نامسىز باغلاشقا بولمايدۇ.",
+ "Valid configuration, connection established!" : "ئىناۋەتلىك سەپلىمە ، ئۇلىنىش قۇرۇلدى!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "ئىناۋەتلىك سەپلىمىسى ، ئەمما باغلاش مەغلۇپ بولدى. مۇلازىمېتىر تەڭشىكى ۋە كىنىشكىسىنى تەكشۈرۈپ بېقىڭ.",
+ "No action specified" : "ھېچقانداق ھەرىكەت بەلگىلەنمىدى",
+ "No configuration specified" : "سەپلىمىسى ئېنىق ئەمەس",
+ "No data specified" : "ھېچقانداق سانلىق مەلۇمات كۆرسىتىلمىدى",
+ "Invalid data specified" : "ئىناۋەتسىز سانلىق مەلۇمات",
+ "Action does not exist" : "ھەرىكەت مەۋجۇت ئەمەس",
+ "Renewing …" : "يېڭىلاش…",
+ "Very weak password" : "پارول بەك ئاجىز",
+ "Weak password" : "پارول ئاجىز",
+ "So-so password" : "شۇڭا مەخپىي نومۇر",
+ "Good password" : "ياخشى پارول",
+ "Strong password" : "كۈچلۈك پارول",
+ "The Base DN appears to be wrong" : "Base DN خاتادەك قىلىدۇ",
+ "Testing configuration…" : "سىناق سەپلىمىسى…",
+ "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." : "Base DN نى ئاپتوماتىك بايقىغىلى بولمايدۇ ، كىنىشكا ، باش ئاپپارات ۋە پورتنى تۈزىتىڭ.",
+ "Could not detect Base DN, please enter it manually." : "Base DN نى بايقىيالمىدى ، قولدا كىرگۈزۈڭ.",
+ "{nthServer}. Server" : "th nthServer}. مۇلازىمېتىر",
+ "No object found in the given Base DN. Please revise." : "بېرىلگەن Base DN دا ھېچقانداق نەرسە تېپىلمىدى. قايتا قاراپ بېقىڭ.",
+ "More than 1,000 directory entries available." : "1000 دىن ئارتۇق مۇندەرىجە تۈرى بار.",
+ "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?" : "نۆۋەتتىكى مۇلازىمېتىر سەپلىمىسىنى ئۆچۈرمەكچىمۇ؟",
+ "Confirm Deletion" : "ئۆچۈرۈشنى جەزملەشتۈرۈڭ",
+ "Mappings cleared successfully!" : "خەرىتە مۇۋەپپەقىيەتلىك تازىلاندى!",
+ "Error while clearing the mappings." : "خەرىتىنى تازىلاش جەريانىدا خاتالىق.",
+ "Anonymous bind is not allowed. Please provide a User DN and Password." : "نامسىز باغلاشقا بولمايدۇ. ئىشلەتكۈچى DN ۋە پارول بىلەن تەمىنلەڭ.",
+ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP مەشغۇلات خاتالىقى. نامسىز باغلىنىشقا رۇخسەت قىلىنمايدۇ.",
+ "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/>" : "ئىشلەتكۈچى تېپىلمىدى. كىرىش خاسلىقىڭىز ۋە ئىشلەتكۈچى ئىسمىڭىزنى تەكشۈرۈپ بېقىڭ. ئۈنۈملۈك سۈزگۈچ (بۇيرۇق قۇرىنى دەلىللەش ئۈچۈن كۆچۈرۈپ چاپلاش): <br/>",
+ "User found and settings verified." : "ئىشلەتكۈچى تېپىلدى ۋە تەڭشەكلىرى دەلىللەندى.",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "ئىزدەشنى تارايتىشنى ئويلاڭ ، چۈنكى ئۇ نۇرغۇن ئىشلەتكۈچىلەرنى ئۆز ئىچىگە ئالىدۇ ، پەقەت بىرىنچىسىلا كىرەلەيدۇ.",
+ "An unspecified error occurred. Please check log and settings." : "ئېنىقلانمىغان خاتالىق كۆرۈلدى. خاتىرە ۋە تەڭشەكلەرنى تەكشۈرۈپ بېقىڭ.",
+ "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 نى قوللىمايدۇ.",
+ "Please login with the new password" : "يېڭى پارول بىلەن كىرىڭ",
+ "LDAP User backend" : "LDAP ئىشلەتكۈچى ئارقا سۇپىسى",
+ "Your password will expire tomorrow." : "پارولىڭىز ئەتە توشىدۇ.",
+ "Your password will expire today." : "پارولىڭىز بۈگۈن توشىدۇ.",
+ "LDAP/AD integration" : "LDAP / AD بىرلەشتۈرۈش",
+ "LDAP Connection" : "LDAP ئۇلىنىشى",
+ "Invalid LDAP UUIDs" : "ئىناۋەتسىز LDAP UUIDs",
+ "None found" : "تېپىلمىدى",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP ھېساباتى ياكى گۇرۇپپىلارنىڭ ئىناۋەتسىز UUID تېپىلدى. LDAP سەپلىمىسىنىڭ مۇتەخەسسىسلەر بۆلىكىدىكى «UUID بايقاشنى قاپلاش» تەڭشەكلىرىڭىزنى تەكشۈرۈپ ، «occ ldap: update-uuid» نى ئىشلىتىپ ئۇلارنى يېڭىلاڭ.",
+ "> 1000 groups found" : "> 1000 گۇرۇپپا تېپىلدى",
+ "> 1000 users found" : "> 1000 ئىشلەتكۈچى تېپىلدى",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "ئىشلەتكۈچى كۆرسىتىش ئىسمى خاسلىقىنى بايقىيالمىدى. ئىلغار LDAP تەڭشىكىدە ئۆزىڭىز بەلگىلىۈڭ.",
+ "Could not find the desired feature" : "لازىملىق ئىقتىدارنى تاپالمىدى",
+ "Invalid Host" : "ئىناۋەتسىز",
+ "LDAP user and group backend" : "LDAP ئىشلەتكۈچى ۋە گۇرۇپپا ئارقا سەھنىسى",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "بۇ پروگرامما باشقۇرغۇچىنىڭ Nextcloud نى LDAP ئاساسىدىكى ئىشلەتكۈچى مۇندەرىجىسىگە ئۇلىيالايدۇ.",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "بۇ پروگرامما باشقۇرغۇچىنىڭ Nextcloud نى LDAP ئاساسىدىكى ئىشلەتكۈچى مۇندەرىجىسىگە ئۇلاپ ، ئىشلەتكۈچى ، گۇرۇپپا ۋە ئىشلەتكۈچى خاسلىقى بىلەن تەمىنلەيدۇ. باشقۇرغۇچى بۇ پروگراممىنى LDAP كۆرۈنمە يۈزى ئارقىلىق بىر ياكى بىر قانچە LDAP مۇندەرىجىسىگە ياكى ئاكتىپ مۇندەرىجىگە ئۇلىيالايدۇ. ئىشلەتكۈچى نورمىسى ، ئېلېكترونلۇق خەت ، باش سۈرەت ، گۇرۇپپا ئەزالىرى ۋە باشقىلار قاتارلىق خاسلىقلارنى مۇناسىپ سوئال ۋە سۈزگۈچلەر بىلەن مۇندەرىجىدىن Nextcloud غا تارتقىلى بولىدۇ.\n\nئىشلەتكۈچى LDAP ياكى AD كىنىشكىسى بىلەن Nextcloud غا كىرىدۇ ، ھەمدە LDAP ياكى AD مۇلازىمېتىرى بىر تەرەپ قىلغان دەلىللەش تەلىپىگە ئاساسەن ئىجازەتكە ئېرىشىدۇ. Nextcloud LDAP ياكى AD مەخپىي نومۇرىنى ساقلىمايدۇ ، بەلكى بۇ كىنىشكىلار ئىشلەتكۈچىنى دەلىللەش ئۈچۈن ئىشلىتىلىدۇ ، ئاندىن Nextcloud ئىشلەتكۈچى كىملىكى ئۈچۈن بىر يىغىن ئىشلىتىدۇ. LDAP ئىشلەتكۈچى ۋە گۇرۇپپا ئارقا بەت ھۆججىتىدە تېخىمۇ كۆپ ئۇچۇرلار بار.",
+ "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." : "سۈزگۈچ قايسى LDAP گۇرۇپپىسىنىڭ% s مىسالىغا ئېرىشەلەيدىغانلىقىنى بەلگىلەيدۇ.",
+ "Verify settings and count the 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." : "LDAP / AD ئىشلەتكۈچى نامىغا كىرىشكە يول قويىدۇ ، بۇ «uid» ياكى «sAMAccountName» بولۇپ ، بايقايدۇ.",
+ "LDAP/AD Email Address:" : "LDAP / AD ئېلېكترونلۇق خەت ئادرېسى:",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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" : "سىناق خاتىرىسى",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "بېرىلگەن كىرىش ئىسمى ۋە نۆۋەتتىكى كىرىش سۈزگۈچ ئۈچۈن DN تاپشۇرۇۋېلىشقا ئۇرۇنۇش",
+ "Verify settings" : "تەڭشەكلەرنى دەلىللەڭ",
+ "%s. Server:" : "% s. مۇلازىمېتىر:",
+ "Add a new configuration" : "يېڭى سەپلىمە قوشۇڭ",
+ "Copy current configuration into new directory binding" : "نۆۋەتتىكى سەپلىمىنى يېڭى مۇندەرىجە باغلاشقا كۆچۈرۈڭ",
+ "Delete the current configuration" : "نۆۋەتتىكى سەپلىمىنى ئۆچۈرۈڭ",
"Host" : "باش ئاپپارات",
+ "You can omit the protocol, unless you require SSL. If so, 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 = ۋاكالەتچى ، dc = مىسال ، dc = com. نامسىز زىيارەت قىلىش ئۈچۈن DN ۋە پارولنى بوش قويۇڭ.",
"Password" : "ئىم",
+ "For anonymous access, leave DN and Password empty." : "نامسىز زىيارەت قىلىش ئۈچۈن DN ۋە پارولنى بوش قويۇڭ.",
+ "Save Credentials" : "كىنىشكىنى ساقلاش",
+ "One Base DN per line" : "ھەر بىر قۇر DN",
+ "You can specify Base DN for users and groups in the Advanced tab" : "ئالىي بەتكۈچتىكى ئىشلەتكۈچى ۋە گۇرۇپپىلار ئۈچۈن Base DN نى بەلگىلىيەلەيسىز",
+ "Detect Base DN" : "Base 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 سۈزگۈچنى قولدا كىرگۈزۈڭ (چوڭ مۇندەرىجە تەۋسىيە قىلىنىدۇ)",
+ "Listing and searching for users is constrained by 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." : "ئىشلەتكۈچىلەر ئۈچۈن ئەڭ كۆپ ئۇچرايدىغان ئوبيېكت سىنىپلىرى تەشكىلىي شەخس ، ئادەم ، ئىشلەتكۈچى ۋە inetOrgPerson. قايسى ئوبيېكت سىنىپىنى تاللاشنى بىلمىسىڭىز مۇندەرىجە باشقۇرغۇچىڭىز بىلەن مەسلىھەتلىشىڭ.",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "سۈزگۈچ قايسى LDAP ئىشلەتكۈچىلەرنىڭ% s مىسالىغا ئېرىشەلەيدىغانلىقىنى بەلگىلەيدۇ.",
+ "Verify settings and count users" : "تەڭشەكلەرنى تەكشۈرۈپ ، ئىشلەتكۈچىنى ساناپ بېقىڭ",
+ "Saving" : "تېجەش",
+ "Back" : "قايتىش",
+ "Continue" : "داۋاملاشتۇر",
+ "Please renew your password." : "پارولىڭىزنى يېڭىلاڭ.",
+ "An internal error occurred." : "ئىچكى خاتالىق كۆرۈلدى.",
+ "Please try again or contact your administrator." : "قايتا سىناڭ ياكى باشقۇرغۇچىڭىز بىلەن ئالاقىلىشىڭ.",
+ "Current password" : "نۆۋەتتىكى ئىم",
+ "New password" : "يېڭى ئىم",
+ "Renew password" : "پارولنى يېڭىلاڭ",
+ "Wrong password." : "پارول خاتا.",
+ "Cancel" : "ۋاز كەچ",
+ "Server" : "مۇلازىمېتىر",
+ "Users" : "ئىشلەتكۈچىلەر",
+ "Login Attributes" : "كىرىش خاسلىقى",
+ "Groups" : "گۇرۇپپا",
+ "Expert" : "مۇتەخەسسىس",
"Advanced" : "ئالىي",
+ "<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> PHP LDAP مودۇلى ئورنىتىلمىدى ، ئارقا تەرىپى ئىشلىمەيدۇ. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.",
"Connection Settings" : "باغلىنىش تەڭشىكى",
- "Configuration Active" : "سەپلىمە ئاكتىپ"
-},"pluralForm" :"nplurals=1; plural=0;"
+ "Configuration Active" : "سەپلىمە ئاكتىپ",
+ "When unchecked, this configuration will be skipped." : "تەكشۈرۈلمىسە ، بۇ سەپلىمە ئاتلاپ كېتىدۇ.",
+ "Backup (Replica) Host" : "زاپاسلاش (Replica) رىياسەتچىسى",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "ئىختىيارى زاپاسلاش مۇلازىمىتىرى بېرىڭ. ئۇ چوقۇم ئاساسلىق LDAP / AD مۇلازىمېتىرنىڭ كۆپەيتىلگەن نۇسخىسى بولۇشى كېرەك.",
+ "Backup (Replica) Port" : "زاپاسلاش (Replica) ئېغىزى",
+ "Disable Main Server" : "ئاساسلىق مۇلازىمېتىرنى چەكلەڭ",
+ "Only connect to the replica server." : "پەقەت كۆپەيتىلگەن مۇلازىمېتىرغا ئۇلاڭ.",
+ "Turn off SSL certificate validation." : "SSL گۇۋاھنامىسىنى دەلىللەشنى ئېتىۋېتىڭ.",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "تەۋسىيە قىلىنمايدۇ ، ئۇنى پەقەت سىناق ئۈچۈن ئىشلىتىڭ! ئەگەر ئۇلىنىش پەقەت مۇشۇ تاللاش بىلەنلا ئىشلەيدىغان بولسا ،% s مۇلازىمېتىرىڭىزغا LDAP مۇلازىمېتىرنىڭ SSL گۇۋاھنامىسىنى ئەكىرىڭ.",
+ "Cache Time-To-Live" : "Cache Time-To-Live",
+ "in seconds. A change empties the cache." : "سېكۇنتتا. ئۆزگەرتىش غەملەكنى بوشاتتى.",
+ "Directory Settings" : "مۇندەرىجە تەڭشىكى",
+ "User Display Name Field" : "ئىشلەتكۈچى كۆرسىتىش ئىسمى",
+ "The LDAP attribute to use to generate the user's display name." : "LDAP خاسلىقى ئىشلەتكۈچىنىڭ كۆرسىتىش نامىنى ھاسىل قىلىشقا ئىشلىتىلىدۇ.",
+ "2nd User Display Name Field" : "2-ئىشلەتكۈچى كۆرسىتىش ئىسمى مەيدانى",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "ئىختىيارىي. تىرناق ئىچىدىكى كۆرسىتىش نامىغا قوشۇلىدىغان LDAP خاسلىقى. مەسىلەن: »جون دو (john.doe@example.org)«.",
+ "Base User Tree" : "ئاساسى ئىشلەتكۈچى دەرىخى",
+ "One User Base DN per line" : "ھەر بىر قۇردا بىر ئىشلەتكۈچى ئاساسى DN",
+ "User Search Attributes" : "ئىشلەتكۈچى ئىزدەش خاسلىقى",
+ "Optional; one attribute per line" : "ئىختىيارىي ھەر بىر قۇرغا بىر خاسلىق",
+ "Disable users missing from LDAP" : "LDAP دىن يوقاپ كەتكەن ئىشلەتكۈچىلەرنى چەكلەڭ",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "قوزغىتىلغاندا LDAP دىن ئىمپورت قىلىنغان ئىشلەتكۈچىلەر ئىناۋەتسىز بولىدۇ",
+ "Group Display Name Field" : "گۇرۇپپا كۆرسىتىش ئىسمى مەيدانى",
+ "The LDAP attribute to use to generate the groups's display name." : "LDAP خاسلىقى گۇرۇپپىلارنىڭ كۆرسىتىش نامىنى ھاسىل قىلىشقا ئىشلىتىلىدۇ.",
+ "Base Group Tree" : "ئاساسى گۇرۇپپا دەرىخى",
+ "One Group Base DN per line" : "ھەر بىر قۇر بىر گۇرۇپپا ئاساسى DN",
+ "Group Search Attributes" : "گۇرۇپپا ئىزدەش خاسلىقى",
+ "Group-Member association" : "گۇرۇپپا-ئەزالار جەمئىيىتى",
+ "Dynamic Group Member URL" : "ھەرىكەتچان گۇرۇپپا ئەزالىرىنىڭ ئادرېسى",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "گۇرۇپپا ئوبيېكتلىرىدىكى LDAP خاسلىقى LDAP ئىزدەش URL نى ئۆز ئىچىگە ئالغان بولۇپ ، قايسى ئوبيېكتلارنىڭ گۇرۇپپىغا تەۋە ئىكەنلىكىنى بەلگىلەيدۇ. (قۇرۇق تەڭشەك ھەرىكەتچان گۇرۇپپا ئەزالىق ئىقتىدارىنى چەكلەيدۇ.)",
+ "Nested Groups" : "توپلانغان گۇرۇپپىلار",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "ئاچقاندا گۇرۇپپىلارنى ئۆز ئىچىگە ئالغان گۇرۇپپىلارنى قوللايدۇ. (پەقەت گۇرۇپپا ئەزالىرىنىڭ خاسلىقى DNs بولغاندىلا ئىشلەيدۇ.)",
+ "Paging chunksize" : "Paging chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize تور بەت LDAP ئىزدەش ئۈچۈن ئىشلىتىلىدۇ ، بۇ ئىشلەتكۈچى ياكى گۇرۇپپا تىزىملاش قاتارلىق چوڭ نەتىجىلەرنى قايتۇرىدۇ. (ئۇنى 0 قىلىپ تەڭشەش بۇ خىل ئەھۋال ئاستىدا LDAP ئىزدەشنى چەكلەيدۇ.)",
+ "Enable LDAP password changes per user" : "ھەر بىر ئىشلەتكۈچىگە LDAP پارول ئۆزگەرتىشنى قوزغىتىڭ",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP ئىشلەتكۈچىلىرىنىڭ مەخپىي نومۇرىنى ئۆزگەرتىشىگە يول قويۇڭ ۋە دەرىجىدىن تاشقىرى باشقۇرغۇچى ۋە گۇرۇپپا باشقۇرغۇچىلارنىڭ LDAP ئابونتلىرىنىڭ پارولىنى ئۆزگەرتىشىگە يول قويۇڭ. زىيارەتنى كونترول قىلىش سىياسىتى LDAP مۇلازىمېتىرىغا ئاساسەن تەڭشەلگەندىلا ئىشلەيدۇ. مەخپىي نومۇر LDAP مۇلازىمېتىرىغا ئوچۇق تېكىستتە ئەۋەتىلگەنلىكتىن ، چوقۇم مەخپىيلەشتۈرۈشنى ئىشلىتىپ ، LDAP مۇلازىمېتىرىدا مەخپىي نومۇرنى تەڭشەش كېرەك.",
+ "(New password is sent as plain text to LDAP)" : "(يېڭى پارول LDAP غا ئاددىي تېكىست سۈپىتىدە ئەۋەتىلدى)",
+ "Default password policy DN" : "كۆڭۈلدىكى پارول سىياسىتى DN",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "پارولنىڭ مۇددىتى توشقاندا بىر تەرەپ قىلىنىدىغان كۆڭۈلدىكى پارول سىياسىتىنىڭ DN. ھەر بىر ئىشلەتكۈچىگە LDAP پارولى ئۆزگەرتىلگەندىلا ئىشلەيدۇ ، پەقەت OpenLDAP قوللايدۇ. پارولنىڭ ۋاقتى توشۇشنى بىر تەرەپ قىلىش ئۈچۈن بوش قويۇڭ.",
+ "Special Attributes" : "ئالاھىدە خاسلىق",
+ "Quota Field" : "Quota Field",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ئىشلەتكۈچىنىڭ سۈكۈتتىكى نورمىسى ئۈچۈن بوش قويۇڭ. بولمىسا ، LDAP / AD خاسلىقىنى بەلگىلەڭ.",
+ "Quota Default" : "Quota Default",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "نورما ئۆلچىمىدە نورما بېكىتىلمىگەن LDAP ئىشلەتكۈچىلىرىنىڭ سۈكۈتتىكى نورمىسىنى قاپلىۋېتىڭ.",
+ "Email Field" : "ئېلېكترونلۇق خەت مەيدانى",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "ئىشلەتكۈچىنىڭ ئېلېكترونلۇق خەتلىرىنى LDAP خاسلىقىدىن تەڭشەڭ. سۈكۈتتىكى ھەرىكەت ئۈچۈن ئۇنى بوش قويۇڭ.",
+ "User Home Folder Naming Rule" : "ئىشلەتكۈچى ئائىلە ھۆججەت قىسقۇچىغا ئىسىم قويۇش قائىدىسى",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "ئىشلەتكۈچى نامىغا قۇرۇق قويۇڭ (سۈكۈتتىكى). بولمىسا ، LDAP / AD خاسلىقىنى بەلگىلەڭ.",
+ "\"$home\" Placeholder Field" : "\"$ home\" ئورۇن ئىگىسى",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "سىرتقى ساقلاش سەپلىمىسىدىكى $ home كۆرسىتىلگەن خاسلىقنىڭ قىممىتى بىلەن ئالماشتۇرۇلىدۇ",
+ "User Profile Attributes" : "ئىشلەتكۈچى ئارخىپى خاسلىقى",
+ "Phone Field" : "تېلېفون مەيدانى",
+ "User profile Phone will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تېلېفون بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Website Field" : "تور بېكەت مەيدانى",
+ "User profile Website will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تور بېكىتى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Address Field" : "ئادرېس مەيدانى",
+ "User profile Address will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى ئادرېسى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Twitter Field" : "Twitter Field",
+ "User profile Twitter will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى Twitter كۆرسىتىلگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Fediverse Field" : "Fediverse Field",
+ "User profile Fediverse will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى Fediverse كۆرسىتىلگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Organisation Field" : "تەشكىلات مەيدانى",
+ "User profile Organisation will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تەشكىلاتى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Role Field" : "رول مەيدانى",
+ "User profile Role will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى رولى بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Headline Field" : "ماۋزۇ مەيدانى",
+ "User profile Headline will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى ماۋزۇ بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Biography Field" : "تەرجىمىھالى",
+ "User profile Biography will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تەرجىمىھالى كۆرسىتىلگەن خاسلىقتىن تەڭشىلىدۇ",
+ "Birthdate Field" : "تۇغۇلغان كۈنى",
+ "User profile Date of birth will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى تۇغۇلغان ۋاقتى بەلگىلەنگەن خاسلىقتىن بېكىتىلىدۇ",
+ "Pronouns Field" : "ئالمىشىش مەيدانى",
+ "User profile Pronouns will be set from the specified attribute" : "ئىشلەتكۈچى ئارخىپى ئالماشلار بەلگىلەنگەن خاسلىقتىن تەڭشىلىدۇ",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "سۈكۈتتىكى ھالەتتە ئىشلەتكۈچى ئىسمى UUID خاسلىقىدىن قۇرۇلىدۇ. ئىشلەتكۈچى نامىنىڭ ئۆزگىچە ئىكەنلىكى ۋە ھەرپلەرنى ئۆزگەرتىشنىڭ ھاجىتى يوقلىقىغا كاپالەتلىك قىلىدۇ. ئىچكى ئىشلەتكۈچى نامىدا پەقەت بۇ ھەرپلەرلا رۇخسەت قىلىنغان چەكلىمە بار: [a-zA-Z0-9 _. @ -]. باشقا ھەرپلەر ئۇلارنىڭ ASCII خەت ئالاقىسى بىلەن ئالماشتۇرۇلىدۇ ياكى ئاددىيلا چىقىرىۋېتىلىدۇ. سوقۇلغاندا بىر سان قوشۇلىدۇ / كۆپەيتىلىدۇ. ئىچكى ئىشلەتكۈچى ئىسمى ئىچكى ئىشلەتكۈچىنى پەرقلەندۈرۈش ئۈچۈن ئىشلىتىلىدۇ. ئۇ يەنە ئىشلەتكۈچىنىڭ ئائىلە قىسقۇچىنىڭ سۈكۈتتىكى ئىسمى. ئۇ يىراقتىكى URL لارنىڭ بىر قىسمى ، مەسىلەن بارلىق DAV مۇلازىمىتى ئۈچۈن. بۇ تەڭشەك ئارقىلىق سۈكۈتتىكى ھەرىكەتنى بېسىپ ئۆتكىلى بولىدۇ. ئۆزگەرتىش پەقەت يېڭى سىزىلغان (قوشۇلغان) LDAP ئىشلەتكۈچىلەرگىلا تەسىر كۆرسىتىدۇ. سۈكۈتتىكى ھەرىكەت ئۈچۈن ئۇنى بوش قويۇڭ.",
+ "Internal Username Attribute:" : "ئىچكى ئىشلەتكۈچى ئىسمى خاسلىقى:",
+ "Override UUID detection" : "UUID بايقاشنى قاپلىۋېتىڭ",
+ "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "سۈكۈت بويىچە ، UUID خاسلىقى ئاپتوماتىك بايقىلىدۇ. UUID خاسلىقى LDAP ئىشلەتكۈچىلىرى ۋە گۇرۇپپىلىرىنى شەكسىز پەرقلەندۈرۈش ئۈچۈن ئىشلىتىلىدۇ. ئۇندىن باشقا ، ئىچكى ئىشلەتكۈچى ئىسمى UUID ئاساسىدا قۇرۇلىدۇ ، ئەگەر يۇقىرىدا ئېنىق بەلگىلەنمىگەن بولسا. تەڭشەكنى بېسىپ ئۆتۈپ ، ئۆزىڭىز تاللىغان خاسلىقنى يەتكۈزەلەيسىز. سىز ئۆزىڭىز تاللىغان خاسلىقنىڭ ئىشلەتكۈچىلەر ۋە گۇرۇپپىلار ئۈچۈن ئېلىپ كېلىنەلەيدىغانلىقىغا كاپالەتلىك قىلىشىڭىز كېرەك. سۈكۈتتىكى ھەرىكەت ئۈچۈن ئۇنى بوش قويۇڭ. ئۆزگەرتىش پەقەت يېڭى سىزىلغان (قوشۇلغان) LDAP ئىشلەتكۈچىلىرى ۋە گۇرۇپپىلىرىغىلا تەسىر كۆرسىتىدۇ.",
+ "UUID Attribute for Users:" : "ئىشلەتكۈچىلەر ئۈچۈن UUID خاسلىقى:",
+ "UUID Attribute for Groups:" : "گۇرۇپپىلارغا UUID خاسلىقى:",
+ "Username-LDAP User Mapping" : "ئىشلەتكۈچى ئىسمى-LDAP ئىشلەتكۈچى خەرىتىسى",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ئىشلەتكۈچى ئىسمى مېتا سانلىق مەلۇماتنى ساقلاش ۋە تەقسىملەشتە ئىشلىتىلىدۇ. ئىشلەتكۈچىلەرنى ئېنىق تونۇش ۋە تونۇش ئۈچۈن ، ھەر بىر LDAP ئىشلەتكۈچىنىڭ ئىچكى ئىشلەتكۈچى ئىسمى بولىدۇ. بۇ ئىشلەتكۈچى نامىدىن LDAP ئىشلەتكۈچىگە خەرىتە سىزىشنى تەلەپ قىلىدۇ. قۇرۇلغان ئىشلەتكۈچى ئىسمى LDAP ئىشلەتكۈچىنىڭ UUID غا سىزىلغان. بۇنىڭدىن باشقا ، DN غەملەك بىلەن LDAP ئۆز-ئارا تەسىرنى ئازايتىدۇ ، ئەمما ئۇ پەرقلەندۈرۈشكە ئىشلىتىلمەيدۇ. ئەگەر DN ئۆزگەرسە ، ئۆزگىرىشلەر تېپىلىدۇ. ئىچكى ئىشلەتكۈچى ئىسمى ھەممە يەردە ئىشلىتىلىدۇ. خەرىتىنى تازىلاش ھەممە يەردە ئېشىپ قالىدۇ. خەرىتىنى تازىلاش سەپلىمىگە سەزگۈر ئەمەس ، ئۇ بارلىق LDAP سەپلىمىسىگە تەسىر كۆرسىتىدۇ! خەرىتىنى ئىشلەپچىقىرىش مۇھىتىدا ھەرگىز تازىلىماڭ ، پەقەت سىناق ياكى تەجرىبە باسقۇچىدىلا.",
+ "Clear Username-LDAP User Mapping" : "ئىشلەتكۈچى ئىسمى- LDAP ئىشلەتكۈچى خەرىتىسىنى تازىلاڭ",
+ "Clear Groupname-LDAP Group Mapping" : "گۇرۇپپا ئىسمى- LDAP گۇرۇپپا خەرىتىسىنى تازىلاش",
+ "Invalid configuration. Please have a look at the logs for further details." : "سەپلىمە ئىناۋەتسىز. تېخىمۇ كۆپ تەپسىلاتلار ئۈچۈن خاتىرىلەرنى كۆرۈپ بېقىڭ."
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js
index d6713600a4f..21992698f59 100644
--- a/apps/user_ldap/l10n/uk.js
+++ b/apps/user_ldap/l10n/uk.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "Неправильна конфігурація. Анонімне приєднання не дозволено.",
"Valid configuration, connection established!" : "Правильна конфігурація, з'єднання встановлено!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Правильна конфігурація, але приєднання не вдалося. Будь ласка, перевірте налаштування сервера та дані авторизації.",
- "Invalid configuration. Please have a look at the logs for further details." : "Неправильна конфігурація. Перевірте журнал для докладної інформації.",
+ "Invalid configuration: %s" : "Неправильна конфігурація: %s",
"No action specified" : "Ніяких дій не вказано",
"No configuration specified" : "Немає конфігурації",
"No data specified" : "Немає даних",
"Invalid data specified" : "Вказано неправильні дані",
- " Could not set configuration %s" : "Не вдалося встановити конфігурацію %s",
+ "Could not set configuration %1$s to %2$s" : "Не вдалося встановити конфігурацію %1$s на %2$s",
"Action does not exist" : "Дія не існує",
"Renewing …" : "Оновлення...",
"Very weak password" : "Дуже слабкий пароль",
@@ -54,13 +54,25 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заповнювач \"%uid\" відсутній. Його буде замінено ім’ям для входу під час запиту LDAP/AD.",
"Please provide a login name to test against" : "Будь ласка, введіть ім’я для входу для перевірки",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Поле групи було вимкнено, оскільки сервер LDAP/AD не підтримує memberOf.",
- "Password change rejected. Hint: " : "Зміна пароля відхилена. Підказка: ",
+ "Password change rejected. Hint: %s" : "Зміну пароля відхилено. Підказка: %s",
+ "Mandatory field \"%s\" left empty" : "Обов'язкове поле \"%s\" залишено порожнім",
+ "A password is given, but not an LDAP agent" : "Надається пароль, але не агент LDAP",
+ "No password is given for the user agent" : "Для користувача-агента пароль не задається",
+ "No LDAP base DN was given" : "Базовий DN LDAP не вказано",
+ "User base DN is not a subnode of global base DN" : "Базовий DN користувача не є підвузлом глобального базового DN",
+ "Group base DN is not a subnode of global base DN" : "Груповий базовий DN не є підвузлом глобального базового DN",
+ "Login filter does not contain %s placeholder." : "Фільтр логінів не містить заповнювача %s.",
"Please login with the new password" : "Будь ласка, увійдіть з новим паролем",
"LDAP User backend" : "Інтерфейс керування користувачами LDAP",
"Your password will expire tomorrow." : "Дія вашого пароля завершується завтра.",
"Your password will expire today." : "Дія вашого пароля завершується сьогодні.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Дія вашого пароля завершується через %n день.","Дія вашого пароля завершується через %n дні.","Дія вашого пароля завершується через %n днів.","Дія вашого пароля завершується через %n днів."],
"LDAP/AD integration" : "Інтеграція LDAP/AD",
+ "LDAP Connection" : "Підключення LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Зв'язування не вдалося для цієї конфігурації LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Не вдалося виконати пошук для цієї конфігурації LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Існує неактивна конфігурація LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Прив'язка та пошук працює на налаштованому LDAP-з'єднанні (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)"],
"Invalid LDAP UUIDs" : "Недійсні LDAP UUID",
"None found" : "Нічого не знайдено",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Знайдено недійсні ідентифікатори UUID користувачів або груп LDAP. Перевірте налаштування \"Пропускати визначення UUID\" у розділі \"Для експертів\" налаштувань LDAP або виконайте команду \"occ ldap:update-uuid\" для їхнього оновлення.",
@@ -207,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "Заголовок в профілі користувача буде встановлено на основі вказаного атрибута",
"Biography Field" : "Поле Біографія",
"User profile Biography will be set from the specified attribute" : "Біографія в профілі користувача буде встановлена на основі вказаного атрибута",
+ "Birthdate Field" : "Поле Дата народження",
+ "User profile Date of birth will be set from the specified attribute" : "Профіль користувача Дата народження буде встановлена з вказаного атрибуту",
+ "Pronouns Field" : "Поле займенників",
+ "User profile Pronouns will be set from the specified attribute" : "Профіль користувача Займенники будуть встановлені з вказаного атрибуту",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.",
"Internal Username Attribute:" : "Внутрішня Ім'я користувача, Атрибут:",
@@ -218,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Імена користувачів використовуються для зберігання та призначення метаданих. Для точної ідентифікації та розпізнавання користувачів кожен користувач LDAP матиме внутрішнє ім’я користувача. Для цього потрібне зіставлення імені користувача з користувачем LDAP. Створене ім’я користувача зіставляється з UUID користувача LDAP. Крім того, DN також кешується, щоб зменшити взаємодію LDAP, але він не використовується для ідентифікації. Якщо DN змінюється, зміни будуть знайдені. Внутрішнє ім'я користувача використовується всюди. Очищення зіставлення залишить залишки всюди. Очищення зіставлення не залежить від конфігурації, воно впливає на всі конфігурації LDAP! Ніколи не очищайте зіставлення у продуктовому середовищі, лише на стадії тестування чи експерименту.",
"Clear Username-LDAP User Mapping" : "Очистити картографію Імен користувачів-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистити картографію Імен груп-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Знайдено недійсні UUID користувачів або груп LDAP. Будь ласка, перегляньте свої параметри «Перевизначити виявлення UUID» у експертній частині конфігурації LDAP і використовуйте «occ ldap:update-uuid», щоб оновити їх."
+ "Invalid configuration. Please have a look at the logs for further details." : "Неправильна конфігурація. Перевірте журнал для докладної інформації."
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json
index 1cb3f80f600..b1837d05eca 100644
--- a/apps/user_ldap/l10n/uk.json
+++ b/apps/user_ldap/l10n/uk.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "Неправильна конфігурація. Анонімне приєднання не дозволено.",
"Valid configuration, connection established!" : "Правильна конфігурація, з'єднання встановлено!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "Правильна конфігурація, але приєднання не вдалося. Будь ласка, перевірте налаштування сервера та дані авторизації.",
- "Invalid configuration. Please have a look at the logs for further details." : "Неправильна конфігурація. Перевірте журнал для докладної інформації.",
+ "Invalid configuration: %s" : "Неправильна конфігурація: %s",
"No action specified" : "Ніяких дій не вказано",
"No configuration specified" : "Немає конфігурації",
"No data specified" : "Немає даних",
"Invalid data specified" : "Вказано неправильні дані",
- " Could not set configuration %s" : "Не вдалося встановити конфігурацію %s",
+ "Could not set configuration %1$s to %2$s" : "Не вдалося встановити конфігурацію %1$s на %2$s",
"Action does not exist" : "Дія не існує",
"Renewing …" : "Оновлення...",
"Very weak password" : "Дуже слабкий пароль",
@@ -52,13 +52,25 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заповнювач \"%uid\" відсутній. Його буде замінено ім’ям для входу під час запиту LDAP/AD.",
"Please provide a login name to test against" : "Будь ласка, введіть ім’я для входу для перевірки",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "Поле групи було вимкнено, оскільки сервер LDAP/AD не підтримує memberOf.",
- "Password change rejected. Hint: " : "Зміна пароля відхилена. Підказка: ",
+ "Password change rejected. Hint: %s" : "Зміну пароля відхилено. Підказка: %s",
+ "Mandatory field \"%s\" left empty" : "Обов'язкове поле \"%s\" залишено порожнім",
+ "A password is given, but not an LDAP agent" : "Надається пароль, але не агент LDAP",
+ "No password is given for the user agent" : "Для користувача-агента пароль не задається",
+ "No LDAP base DN was given" : "Базовий DN LDAP не вказано",
+ "User base DN is not a subnode of global base DN" : "Базовий DN користувача не є підвузлом глобального базового DN",
+ "Group base DN is not a subnode of global base DN" : "Груповий базовий DN не є підвузлом глобального базового DN",
+ "Login filter does not contain %s placeholder." : "Фільтр логінів не містить заповнювача %s.",
"Please login with the new password" : "Будь ласка, увійдіть з новим паролем",
"LDAP User backend" : "Інтерфейс керування користувачами LDAP",
"Your password will expire tomorrow." : "Дія вашого пароля завершується завтра.",
"Your password will expire today." : "Дія вашого пароля завершується сьогодні.",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Дія вашого пароля завершується через %n день.","Дія вашого пароля завершується через %n дні.","Дія вашого пароля завершується через %n днів.","Дія вашого пароля завершується через %n днів."],
"LDAP/AD integration" : "Інтеграція LDAP/AD",
+ "LDAP Connection" : "Підключення LDAP",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Зв'язування не вдалося для цієї конфігурації LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Не вдалося виконати пошук для цієї конфігурації LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Існує неактивна конфігурація LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Прив'язка та пошук працює на налаштованому LDAP-з'єднанні (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)"],
"Invalid LDAP UUIDs" : "Недійсні LDAP UUID",
"None found" : "Нічого не знайдено",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Знайдено недійсні ідентифікатори UUID користувачів або груп LDAP. Перевірте налаштування \"Пропускати визначення UUID\" у розділі \"Для експертів\" налаштувань LDAP або виконайте команду \"occ ldap:update-uuid\" для їхнього оновлення.",
@@ -205,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "Заголовок в профілі користувача буде встановлено на основі вказаного атрибута",
"Biography Field" : "Поле Біографія",
"User profile Biography will be set from the specified attribute" : "Біографія в профілі користувача буде встановлена на основі вказаного атрибута",
+ "Birthdate Field" : "Поле Дата народження",
+ "User profile Date of birth will be set from the specified attribute" : "Профіль користувача Дата народження буде встановлена з вказаного атрибуту",
+ "Pronouns Field" : "Поле займенників",
+ "User profile Pronouns will be set from the specified attribute" : "Профіль користувача Займенники будуть встановлені з вказаного атрибуту",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.",
"Internal Username Attribute:" : "Внутрішня Ім'я користувача, Атрибут:",
@@ -216,6 +232,6 @@
"Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Імена користувачів використовуються для зберігання та призначення метаданих. Для точної ідентифікації та розпізнавання користувачів кожен користувач LDAP матиме внутрішнє ім’я користувача. Для цього потрібне зіставлення імені користувача з користувачем LDAP. Створене ім’я користувача зіставляється з UUID користувача LDAP. Крім того, DN також кешується, щоб зменшити взаємодію LDAP, але він не використовується для ідентифікації. Якщо DN змінюється, зміни будуть знайдені. Внутрішнє ім'я користувача використовується всюди. Очищення зіставлення залишить залишки всюди. Очищення зіставлення не залежить від конфігурації, воно впливає на всі конфігурації LDAP! Ніколи не очищайте зіставлення у продуктовому середовищі, лише на стадії тестування чи експерименту.",
"Clear Username-LDAP User Mapping" : "Очистити картографію Імен користувачів-LDAP",
"Clear Groupname-LDAP Group Mapping" : "Очистити картографію Імен груп-LDAP",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Знайдено недійсні UUID користувачів або груп LDAP. Будь ласка, перегляньте свої параметри «Перевизначити виявлення UUID» у експертній частині конфігурації LDAP і використовуйте «occ ldap:update-uuid», щоб оновити їх."
+ "Invalid configuration. Please have a look at the logs for further details." : "Неправильна конфігурація. Перевірте журнал для докладної інформації."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ur_PK.js b/apps/user_ldap/l10n/ur_PK.js
deleted file mode 100644
index 693a42b0543..00000000000
--- a/apps/user_ldap/l10n/ur_PK.js
+++ /dev/null
@@ -1,9 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Users" : "صارفین",
- "Help" : "مدد",
- "Password" : "پاسورڈ",
- "Advanced" : "ایڈوانسڈ"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/ur_PK.json b/apps/user_ldap/l10n/ur_PK.json
deleted file mode 100644
index 26ff4cf5671..00000000000
--- a/apps/user_ldap/l10n/ur_PK.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "translations": {
- "Users" : "صارفین",
- "Help" : "مدد",
- "Password" : "پاسورڈ",
- "Advanced" : "ایڈوانسڈ"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/vi.js b/apps/user_ldap/l10n/vi.js
deleted file mode 100644
index e20feb8abba..00000000000
--- a/apps/user_ldap/l10n/vi.js
+++ /dev/null
@@ -1,45 +0,0 @@
-OC.L10N.register(
- "user_ldap",
- {
- "Failed to clear the mappings." : "Lỗi khi xóa ánh xạ.",
- "Failed to delete the server configuration" : "Lỗi khi xóa cấu hình máy chủ",
- "Select groups" : "Chọn nhóm",
- "Invalid Host" : "Host không hợp lệ",
- "Server" : "Máy chủ",
- "Users" : "Người dùng",
- "Groups" : "Nhóm",
- "Test Configuration" : "Kiểm tra cấu hình",
- "Help" : "Giúp đỡ",
- "Other Attributes:" : "Thuộc tính khác",
- "1. Server" : "1. Máy chủ",
- "%s. Server:" : "%s. Máy chủ:",
- "Host" : "Máy chủ",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Bạn có thể bỏ qua các giao thức, ngoại trừ SSL. Sau đó bắt đầu với ldaps://",
- "Port" : "Cổng",
- "User DN" : "Người dùng 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." : "Các DN của người sử dụng đã được thực hiện, ví dụ như uid =agent , dc = example, dc = com. Để truy cập nặc danh ,DN và mật khẩu trống.",
- "Password" : "Mật khẩu",
- "For anonymous access, leave DN and Password empty." : "Cho phép truy cập nặc danh , DN và mật khẩu trống.",
- "You can specify Base DN for users and groups in the Advanced tab" : "Bạn có thể chỉ định DN cơ bản cho người dùng và các nhóm trong tab Advanced",
- "Back" : "Trở lại",
- "Continue" : "Tiếp tục",
- "Advanced" : "Nâng cao",
- "Connection Settings" : "Connection Settings",
- "Backup (Replica) Port" : "Cổng sao lưu (Replica)",
- "Disable Main Server" : "Tắt máy chủ chính",
- "Turn off SSL certificate validation." : "Tắt xác thực chứng nhận SSL",
- "in seconds. A change empties the cache." : "trong vài giây. Một sự thay đổi bộ nhớ cache.",
- "Directory Settings" : "Directory Settings",
- "User Display Name Field" : "Hiển thị tên người sử dụng",
- "Base User Tree" : "Cây người dùng cơ bản",
- "User Search Attributes" : "User Search Attributes",
- "Optional; one attribute per line" : "Optional; one attribute per line",
- "Group Display Name Field" : "Hiển thị tên nhóm",
- "Base Group Tree" : "Cây nhóm cơ bản",
- "Group Search Attributes" : "Group Search Attributes",
- "Group-Member association" : "Nhóm thành viên Cộng đồng",
- "Special Attributes" : "Special Attributes",
- "in bytes" : "Theo Byte",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Để trống tên người dùng (mặc định). Nếu không chỉ định thuộc tính LDAP/AD"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/vi.json b/apps/user_ldap/l10n/vi.json
deleted file mode 100644
index ffbeff90189..00000000000
--- a/apps/user_ldap/l10n/vi.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{ "translations": {
- "Failed to clear the mappings." : "Lỗi khi xóa ánh xạ.",
- "Failed to delete the server configuration" : "Lỗi khi xóa cấu hình máy chủ",
- "Select groups" : "Chọn nhóm",
- "Invalid Host" : "Host không hợp lệ",
- "Server" : "Máy chủ",
- "Users" : "Người dùng",
- "Groups" : "Nhóm",
- "Test Configuration" : "Kiểm tra cấu hình",
- "Help" : "Giúp đỡ",
- "Other Attributes:" : "Thuộc tính khác",
- "1. Server" : "1. Máy chủ",
- "%s. Server:" : "%s. Máy chủ:",
- "Host" : "Máy chủ",
- "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Bạn có thể bỏ qua các giao thức, ngoại trừ SSL. Sau đó bắt đầu với ldaps://",
- "Port" : "Cổng",
- "User DN" : "Người dùng 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." : "Các DN của người sử dụng đã được thực hiện, ví dụ như uid =agent , dc = example, dc = com. Để truy cập nặc danh ,DN và mật khẩu trống.",
- "Password" : "Mật khẩu",
- "For anonymous access, leave DN and Password empty." : "Cho phép truy cập nặc danh , DN và mật khẩu trống.",
- "You can specify Base DN for users and groups in the Advanced tab" : "Bạn có thể chỉ định DN cơ bản cho người dùng và các nhóm trong tab Advanced",
- "Back" : "Trở lại",
- "Continue" : "Tiếp tục",
- "Advanced" : "Nâng cao",
- "Connection Settings" : "Connection Settings",
- "Backup (Replica) Port" : "Cổng sao lưu (Replica)",
- "Disable Main Server" : "Tắt máy chủ chính",
- "Turn off SSL certificate validation." : "Tắt xác thực chứng nhận SSL",
- "in seconds. A change empties the cache." : "trong vài giây. Một sự thay đổi bộ nhớ cache.",
- "Directory Settings" : "Directory Settings",
- "User Display Name Field" : "Hiển thị tên người sử dụng",
- "Base User Tree" : "Cây người dùng cơ bản",
- "User Search Attributes" : "User Search Attributes",
- "Optional; one attribute per line" : "Optional; one attribute per line",
- "Group Display Name Field" : "Hiển thị tên nhóm",
- "Base Group Tree" : "Cây nhóm cơ bản",
- "Group Search Attributes" : "Group Search Attributes",
- "Group-Member association" : "Nhóm thành viên Cộng đồng",
- "Special Attributes" : "Special Attributes",
- "in bytes" : "Theo Byte",
- "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Để trống tên người dùng (mặc định). Nếu không chỉ định thuộc tính LDAP/AD"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index 5c8964a5684..ca609c816a0 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "配置无效:不允许匿名绑定。",
"Valid configuration, connection established!" : "配置有效,连接已建立!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。",
- "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。",
+ "Invalid configuration: %s" : "配置无效:%s",
"No action specified" : "未指定操作",
"No configuration specified" : "未指定配置文件",
"No data specified" : "未指定数据",
"Invalid data specified" : "指定了无效的数据",
- " Could not set configuration %s" : " 无法设定配置文件 %s",
+ "Could not set configuration %1$s to %2$s" : "无法将配置 %1$s 设置为 %2$s",
"Action does not exist" : "操作不存在",
"Renewing …" : "正在更新……",
"Very weak password" : "非常弱的密码",
@@ -54,13 +54,28 @@ OC.L10N.register(
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%u id\" 占位符缺失。查询LDAP/AD时,它将被替换为登录名。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "群组框被禁用,因为 LDAP/AD 服务器不支持 memberOf",
- "Password change rejected. Hint: " : "密码更改出错。提示:",
+ "Password change rejected. Hint: %s" : "密码更改被拒绝。提示:%s",
+ "Mandatory field \"%s\" left empty" : "必填字段“%s”留空",
+ "A password is given, but not an LDAP agent" : "已提供密码,但未提供 LDAP 代理",
+ "No password is given for the user agent" : "没有为用户代理提供密码",
+ "No LDAP base DN was given" : "未提供 LDAP 基本 DN",
+ "User base DN is not a subnode of global base DN" : "用户基本 DN 不是全局基本 DN 的子节点",
+ "Group base DN is not a subnode of global base DN" : "群组基本 DN 不是全局基本 DN 的子节点",
+ "Login filter does not contain %s placeholder." : "登录筛选器不包含 %s 占位符。",
"Please login with the new password" : "请使用新密码登录",
"LDAP User backend" : "LDAP 用户后端",
"Your password will expire tomorrow." : "您的密码将在明天过期",
"Your password will expire today." : "您的明码将在今天过期",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密码会在%n天后过期"],
"LDAP/AD integration" : "LDAP/AD 集成",
+ "LDAP Connection" : "LDAP 连接",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["%n LDAP 配置绑定失败:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["%n LDAP 配置搜索失败:%s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["有 %n 个非活动 LDAP 配置:%s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["绑定和搜索适用于所有 %n 配置的 LDAP 连接 (%s)"],
+ "Invalid LDAP UUIDs" : "LDAP UUID 无效",
+ "None found" : "未找到",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "发现 LDAP 账号或组的 UUID 无效。请检查 LDAP 配置的专家部分中的“覆盖 UUID 检测”设置,并使用“occ ldap:update-uuid”进行更新。",
"_%n group found_::_%n groups found_" : ["已找到%n个组"],
"> 1000 groups found" : "已找到>1000个组",
"> 1000 users found" : "已找到>1000个用户",
@@ -192,7 +207,7 @@ OC.L10N.register(
"User profile Website will be set from the specified attribute" : "用户个人资料中的网站将按照指定属性设置",
"Address Field" : "地址栏",
"User profile Address will be set from the specified attribute" : "用户个人资料中的地址将按照指定属性设置",
- "Twitter Field" : "Twitter栏",
+ "Twitter Field" : "Twitter 栏",
"User profile Twitter will be set from the specified attribute" : "用户个人资料中的Twitter将按照指定属性设置",
"Fediverse Field" : "联邦宇宙字段",
"User profile Fediverse will be set from the specified attribute" : "用户个人资料的联邦宇宙将从指定的属性设定",
@@ -204,6 +219,10 @@ OC.L10N.register(
"User profile Headline will be set from the specified attribute" : "用户个人资料中的标题栏将按照指定属性设置",
"Biography Field" : "自述栏",
"User profile Biography will be set from the specified attribute" : "用户个人资料中的自述将按照指定属性设置",
+ "Birthdate Field" : "生日栏",
+ "User profile Date of birth will be set from the specified attribute" : "用户个人资料的出生日期将从指定的属性中设置",
+ "Pronouns Field" : "代词栏",
+ "User profile Pronouns will be set from the specified attribute" : "用户个人资料中的代词将从指定属性设置",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "默认情况下,内部用户名将按照UUID属性创建。这确保用户名独一无二,且无需转换字符。内部用户名拥有限制,只允许下列字符:[a-zA-Z0-9_.@-]。其它字符将被替换成对应的ASCII码或被直接删除。如有冲突,将会添加/递增一个数字。内部用户名被用来在内部确认用户身份。其也是用户主目录文件夹的默认名称。其也是远程URL的一部分,例如所有DAV服务。在此设置下,默认行为将会被覆盖。修改仅对新映射(添加)的LDAP用户生效。置空则采取默认行为。",
"Internal Username Attribute:" : "内部用户名属性:",
@@ -215,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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 变了,这些变化会被识别到。在 Nextcloud 各个页面会使用内部用户名。清空映射会造成系统里面有大量的残留信息。清空映射会影响所有的 LDAP 配置,而不仅仅是当前配置。不要在生产环境里面应用清空映射,请仅用于测试环境或者早期验证步骤。",
"Clear Username-LDAP User Mapping" : "清除用户-LDAP用户映射",
"Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 用户或组的 UUID 无效。请审查你在 LDAP 配置的专家部分的 \"覆盖 UUID 检测 \"设置,并使用 \"occ ldap:update-uuid\" 来更新它们。"
+ "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index 754d579e6ae..b4c2ba4aa26 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "配置无效:不允许匿名绑定。",
"Valid configuration, connection established!" : "配置有效,连接已建立!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "配置有效但绑定失败。请检查服务器设置和认证信息。",
- "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。",
+ "Invalid configuration: %s" : "配置无效:%s",
"No action specified" : "未指定操作",
"No configuration specified" : "未指定配置文件",
"No data specified" : "未指定数据",
"Invalid data specified" : "指定了无效的数据",
- " Could not set configuration %s" : " 无法设定配置文件 %s",
+ "Could not set configuration %1$s to %2$s" : "无法将配置 %1$s 设置为 %2$s",
"Action does not exist" : "操作不存在",
"Renewing …" : "正在更新……",
"Very weak password" : "非常弱的密码",
@@ -52,13 +52,28 @@
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "\"%u id\" 占位符缺失。查询LDAP/AD时,它将被替换为登录名。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP/AD server does not support memberOf." : "群组框被禁用,因为 LDAP/AD 服务器不支持 memberOf",
- "Password change rejected. Hint: " : "密码更改出错。提示:",
+ "Password change rejected. Hint: %s" : "密码更改被拒绝。提示:%s",
+ "Mandatory field \"%s\" left empty" : "必填字段“%s”留空",
+ "A password is given, but not an LDAP agent" : "已提供密码,但未提供 LDAP 代理",
+ "No password is given for the user agent" : "没有为用户代理提供密码",
+ "No LDAP base DN was given" : "未提供 LDAP 基本 DN",
+ "User base DN is not a subnode of global base DN" : "用户基本 DN 不是全局基本 DN 的子节点",
+ "Group base DN is not a subnode of global base DN" : "群组基本 DN 不是全局基本 DN 的子节点",
+ "Login filter does not contain %s placeholder." : "登录筛选器不包含 %s 占位符。",
"Please login with the new password" : "请使用新密码登录",
"LDAP User backend" : "LDAP 用户后端",
"Your password will expire tomorrow." : "您的密码将在明天过期",
"Your password will expire today." : "您的明码将在今天过期",
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密码会在%n天后过期"],
"LDAP/AD integration" : "LDAP/AD 集成",
+ "LDAP Connection" : "LDAP 连接",
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["%n LDAP 配置绑定失败:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["%n LDAP 配置搜索失败:%s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["有 %n 个非活动 LDAP 配置:%s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["绑定和搜索适用于所有 %n 配置的 LDAP 连接 (%s)"],
+ "Invalid LDAP UUIDs" : "LDAP UUID 无效",
+ "None found" : "未找到",
+ "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "发现 LDAP 账号或组的 UUID 无效。请检查 LDAP 配置的专家部分中的“覆盖 UUID 检测”设置,并使用“occ ldap:update-uuid”进行更新。",
"_%n group found_::_%n groups found_" : ["已找到%n个组"],
"> 1000 groups found" : "已找到>1000个组",
"> 1000 users found" : "已找到>1000个用户",
@@ -190,7 +205,7 @@
"User profile Website will be set from the specified attribute" : "用户个人资料中的网站将按照指定属性设置",
"Address Field" : "地址栏",
"User profile Address will be set from the specified attribute" : "用户个人资料中的地址将按照指定属性设置",
- "Twitter Field" : "Twitter栏",
+ "Twitter Field" : "Twitter 栏",
"User profile Twitter will be set from the specified attribute" : "用户个人资料中的Twitter将按照指定属性设置",
"Fediverse Field" : "联邦宇宙字段",
"User profile Fediverse will be set from the specified attribute" : "用户个人资料的联邦宇宙将从指定的属性设定",
@@ -202,6 +217,10 @@
"User profile Headline will be set from the specified attribute" : "用户个人资料中的标题栏将按照指定属性设置",
"Biography Field" : "自述栏",
"User profile Biography will be set from the specified attribute" : "用户个人资料中的自述将按照指定属性设置",
+ "Birthdate Field" : "生日栏",
+ "User profile Date of birth will be set from the specified attribute" : "用户个人资料的出生日期将从指定的属性中设置",
+ "Pronouns Field" : "代词栏",
+ "User profile Pronouns will be set from the specified attribute" : "用户个人资料中的代词将从指定属性设置",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "默认情况下,内部用户名将按照UUID属性创建。这确保用户名独一无二,且无需转换字符。内部用户名拥有限制,只允许下列字符:[a-zA-Z0-9_.@-]。其它字符将被替换成对应的ASCII码或被直接删除。如有冲突,将会添加/递增一个数字。内部用户名被用来在内部确认用户身份。其也是用户主目录文件夹的默认名称。其也是远程URL的一部分,例如所有DAV服务。在此设置下,默认行为将会被覆盖。修改仅对新映射(添加)的LDAP用户生效。置空则采取默认行为。",
"Internal Username Attribute:" : "内部用户名属性:",
@@ -213,6 +232,6 @@
"Usernames are used to store and assign metadata. 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 变了,这些变化会被识别到。在 Nextcloud 各个页面会使用内部用户名。清空映射会造成系统里面有大量的残留信息。清空映射会影响所有的 LDAP 配置,而不仅仅是当前配置。不要在生产环境里面应用清空映射,请仅用于测试环境或者早期验证步骤。",
"Clear Username-LDAP User Mapping" : "清除用户-LDAP用户映射",
"Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAP级映射",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 用户或组的 UUID 无效。请审查你在 LDAP 配置的专家部分的 \"覆盖 UUID 检测 \"设置,并使用 \"occ ldap:update-uuid\" 来更新它们。"
+ "Invalid configuration. Please have a look at the logs for further details." : "配置无效。更多细节请查看日志。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/zh_HK.js b/apps/user_ldap/l10n/zh_HK.js
index 587c6930b8f..0409ced3b34 100644
--- a/apps/user_ldap/l10n/zh_HK.js
+++ b/apps/user_ldap/l10n/zh_HK.js
@@ -6,12 +6,12 @@ OC.L10N.register(
"Invalid configuration: Anonymous binding is not allowed." : "無效的配置:不允許匿名綁定。",
"Valid configuration, connection established!" : "有效的配置,連接成功!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "有效的配置,但是綁定失敗。請檢查伺服器設定和證書。",
- "Invalid configuration. Please have a look at the logs for further details." : "無效的配置。請查看日誌以獲取更多詳細訊息。",
+ "Invalid configuration: %s" : "無效配置:%s",
"No action specified" : "沒有指定操作",
"No configuration specified" : "沒有指定配置",
"No data specified" : "沒有指定資料",
"Invalid data specified" : "指定的數據無效",
- " Could not set configuration %s" : "無法為 %s 設定配置值",
+ "Could not set configuration %1$s to %2$s" : "無法將 %1$s 配置設定為 %2$s",
"Action does not exist" : "操作不存在",
"Renewing …" : "更新中...",
"Very weak password" : "密碼安全性極弱",
@@ -54,7 +54,14 @@ OC.L10N.register(
"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 伺服器並不支援",
- "Password change rejected. Hint: " : "密碼更改被拒絕。提示:",
+ "Password change rejected. Hint: %s" : "密碼更改被拒絕。提示:%s",
+ "Mandatory field \"%s\" left empty" : "必填欄位「%s」為空",
+ "A password is given, but not an LDAP agent" : "已提供密碼,但並未提供 LDAP 代理程式",
+ "No password is given for the user agent" : "未提供使用者代理程式的密碼",
+ "No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
+ "User base DN is not a subnode of global base DN" : "用戶基礎 DN 不是全域基礎 DN 的子節點",
+ "Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請登入並使用新的密碼",
"LDAP User backend" : "LDAP 用戶後端系統",
"Your password will expire tomorrow." : "您的密碼將於明日過期",
@@ -62,10 +69,10 @@ OC.L10N.register(
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密碼將於%n天後過期"],
"LDAP/AD integration" : "LDAP /AD 整合",
"LDAP Connection" : "LDAP 連線",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["這些 LDAP 配置綁紮失敗:%s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["這些 LDAP 配置搜尋失敗:%s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["有不活躍的 LDAP 配置:%s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["綁紮與搜尋適用於所有已設定的 LDAP 連線 (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["LDAP 配置綁紮失敗:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["搜尋 %n LDAP 配置失敗:%s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["有 %n 個非活動 LDAP 配置:%s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["綁定和搜尋適用於所有 %n 已設定的 LDAP 連線 (%s)"],
"Invalid LDAP UUIDs" : "無效的 LDAP UUID",
"None found" : "未找到",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 帳戶或群組的 UUID 無效。請查看 LDAP 配置專家部分中的“覆蓋 UUID 檢測”設置,並使用“occ ldap:update-uuid”更新它們。",
@@ -99,7 +106,7 @@ OC.L10N.register(
"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" : "測試登入姓名",
- "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收給定登錄名和當前登錄過濾器的 DN",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收給定登錄名和目前登錄過濾器的 DN",
"Verify settings" : "驗證設定",
"%s. Server:" : "%s。伺服器:",
"Add a new configuration" : "添加一個新的配置",
@@ -214,6 +221,8 @@ OC.L10N.register(
"User profile Biography will be set from the specified attribute" : "用戶個人資料小傳將從指定的屬性設置",
"Birthdate Field" : "出生日期欄位",
"User profile Date of birth will be set from the specified attribute" : "使用者個人資料的出生日期將從指定的屬性中設定",
+ "Pronouns Field" : "代名詞欄位",
+ "User profile Pronouns will be set from the specified attribute" : "用戶個人資料代名詞將從指定的屬性設置",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "默認情況下,內部用戶名稱將從 UUID 屬性建立。其確保了用戶名稱是唯一且不需要轉換字元。內部用戶名稱的限制是只能使用下列字元:[a-zA-Z0-9_.@-]。其他字元會使用其 ASCII 對映或被忽略。發生碰撞時,將會加入數字。內部用戶名稱用於內部識別用戶。其也是用戶家資料夾的預設名稱。也是遠端 URL 的一部分,舉例來說,會用於所有 *DAV 服務。使用此設定,預設的行為將會被覆寫。變更僅對新映射(新增)的 LDAP 用戶有效。將其留空會使用預設行為。",
"Internal Username Attribute:" : "內部用戶名稱屬性:",
@@ -225,6 +234,6 @@ OC.L10N.register(
"Usernames are used to store and assign metadata. 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變了,這些變化會被識別到。在Nextcloud各個頁面會使用內部用戶名。清除映射會造成 系統裡面有大量的殘留信息。清除映射會影響所有的LDAP配置,同時進行雙向配置。不要在生產環境裡面應用可變映射,請僅用於測試環境或早期驗證步驟。",
"Clear Username-LDAP User Mapping" : "清除 用戶名-LDAP 用戶 Mapping",
"Clear Groupname-LDAP Group Mapping" : "清除 群組名稱-LDAP 群組 Mapping",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 用戶或群組的 UUID 無效。請查看 LDAP 配置專家部分中的“覆蓋 UUID 檢測”設置,並使用“occ ldap:update-uuid”更新它們。"
+ "Invalid configuration. Please have a look at the logs for further details." : "無效的配置。請查看日誌以獲取更多詳細訊息。"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/zh_HK.json b/apps/user_ldap/l10n/zh_HK.json
index a7983c0ad2c..ecebd433141 100644
--- a/apps/user_ldap/l10n/zh_HK.json
+++ b/apps/user_ldap/l10n/zh_HK.json
@@ -4,12 +4,12 @@
"Invalid configuration: Anonymous binding is not allowed." : "無效的配置:不允許匿名綁定。",
"Valid configuration, connection established!" : "有效的配置,連接成功!",
"Valid configuration, but binding failed. Please check the server settings and credentials." : "有效的配置,但是綁定失敗。請檢查伺服器設定和證書。",
- "Invalid configuration. Please have a look at the logs for further details." : "無效的配置。請查看日誌以獲取更多詳細訊息。",
+ "Invalid configuration: %s" : "無效配置:%s",
"No action specified" : "沒有指定操作",
"No configuration specified" : "沒有指定配置",
"No data specified" : "沒有指定資料",
"Invalid data specified" : "指定的數據無效",
- " Could not set configuration %s" : "無法為 %s 設定配置值",
+ "Could not set configuration %1$s to %2$s" : "無法將 %1$s 配置設定為 %2$s",
"Action does not exist" : "操作不存在",
"Renewing …" : "更新中...",
"Very weak password" : "密碼安全性極弱",
@@ -52,7 +52,14 @@
"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 伺服器並不支援",
- "Password change rejected. Hint: " : "密碼更改被拒絕。提示:",
+ "Password change rejected. Hint: %s" : "密碼更改被拒絕。提示:%s",
+ "Mandatory field \"%s\" left empty" : "必填欄位「%s」為空",
+ "A password is given, but not an LDAP agent" : "已提供密碼,但並未提供 LDAP 代理程式",
+ "No password is given for the user agent" : "未提供使用者代理程式的密碼",
+ "No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
+ "User base DN is not a subnode of global base DN" : "用戶基礎 DN 不是全域基礎 DN 的子節點",
+ "Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請登入並使用新的密碼",
"LDAP User backend" : "LDAP 用戶後端系統",
"Your password will expire tomorrow." : "您的密碼將於明日過期",
@@ -60,10 +67,10 @@
"_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密碼將於%n天後過期"],
"LDAP/AD integration" : "LDAP /AD 整合",
"LDAP Connection" : "LDAP 連線",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["這些 LDAP 配置綁紮失敗:%s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["這些 LDAP 配置搜尋失敗:%s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["有不活躍的 LDAP 配置:%s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["綁紮與搜尋適用於所有已設定的 LDAP 連線 (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["LDAP 配置綁紮失敗:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["搜尋 %n LDAP 配置失敗:%s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["有 %n 個非活動 LDAP 配置:%s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["綁定和搜尋適用於所有 %n 已設定的 LDAP 連線 (%s)"],
"Invalid LDAP UUIDs" : "無效的 LDAP UUID",
"None found" : "未找到",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 帳戶或群組的 UUID 無效。請查看 LDAP 配置專家部分中的“覆蓋 UUID 檢測”設置,並使用“occ ldap:update-uuid”更新它們。",
@@ -97,7 +104,7 @@
"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" : "測試登入姓名",
- "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收給定登錄名和當前登錄過濾器的 DN",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收給定登錄名和目前登錄過濾器的 DN",
"Verify settings" : "驗證設定",
"%s. Server:" : "%s。伺服器:",
"Add a new configuration" : "添加一個新的配置",
@@ -212,6 +219,8 @@
"User profile Biography will be set from the specified attribute" : "用戶個人資料小傳將從指定的屬性設置",
"Birthdate Field" : "出生日期欄位",
"User profile Date of birth will be set from the specified attribute" : "使用者個人資料的出生日期將從指定的屬性中設定",
+ "Pronouns Field" : "代名詞欄位",
+ "User profile Pronouns will be set from the specified attribute" : "用戶個人資料代名詞將從指定的屬性設置",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "默認情況下,內部用戶名稱將從 UUID 屬性建立。其確保了用戶名稱是唯一且不需要轉換字元。內部用戶名稱的限制是只能使用下列字元:[a-zA-Z0-9_.@-]。其他字元會使用其 ASCII 對映或被忽略。發生碰撞時,將會加入數字。內部用戶名稱用於內部識別用戶。其也是用戶家資料夾的預設名稱。也是遠端 URL 的一部分,舉例來說,會用於所有 *DAV 服務。使用此設定,預設的行為將會被覆寫。變更僅對新映射(新增)的 LDAP 用戶有效。將其留空會使用預設行為。",
"Internal Username Attribute:" : "內部用戶名稱屬性:",
@@ -223,6 +232,6 @@
"Usernames are used to store and assign metadata. 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變了,這些變化會被識別到。在Nextcloud各個頁面會使用內部用戶名。清除映射會造成 系統裡面有大量的殘留信息。清除映射會影響所有的LDAP配置,同時進行雙向配置。不要在生產環境裡面應用可變映射,請僅用於測試環境或早期驗證步驟。",
"Clear Username-LDAP User Mapping" : "清除 用戶名-LDAP 用戶 Mapping",
"Clear Groupname-LDAP Group Mapping" : "清除 群組名稱-LDAP 群組 Mapping",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 用戶或群組的 UUID 無效。請查看 LDAP 配置專家部分中的“覆蓋 UUID 檢測”設置,並使用“occ ldap:update-uuid”更新它們。"
+ "Invalid configuration. Please have a look at the logs for further details." : "無效的配置。請查看日誌以獲取更多詳細訊息。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/zh_TW.js b/apps/user_ldap/l10n/zh_TW.js
index cb39b6e2742..d7fa6d00327 100644
--- a/apps/user_ldap/l10n/zh_TW.js
+++ b/apps/user_ldap/l10n/zh_TW.js
@@ -1,41 +1,41 @@
OC.L10N.register(
"user_ldap",
{
- "Failed to clear the mappings." : "清除映射失敗。",
- "Failed to delete the server configuration" : "刪除伺服器設定失敗",
- "Invalid configuration: Anonymous binding is not allowed." : "無效的設定:不允許匿名綁定。",
- "Valid configuration, connection established!" : "有效的設定,連線已建立!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "有效的設定,但是綁定失敗。請檢查伺服器設定和證書。",
- "Invalid configuration. Please have a look at the logs for further details." : "無效的設定。請檢查紀錄檔以取得更多詳細資訊。",
+ "Failed to clear the mappings." : "無法清除映射。",
+ "Failed to delete the server configuration" : "無法刪除伺服器組態設定",
+ "Invalid configuration: Anonymous binding is not allowed." : "無效的組態設定:不允許匿名綁定。",
+ "Valid configuration, connection established!" : "有效的組態設定,連線已建立!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "有效的組態設定,但是綁定失敗。請檢查伺服器設定與憑證。",
+ "Invalid configuration: %s" : "無效組態:%s",
"No action specified" : "未指定動作",
- "No configuration specified" : "未指定設定",
+ "No configuration specified" : "未指定組態設定",
"No data specified" : "未指定資料",
"Invalid data specified" : "指定了無效的資料",
- " Could not set configuration %s" : "無法設定 %s",
+ "Could not set configuration %1$s to %2$s" : "無法將組態 %1$s 設定為 %2$s",
"Action does not exist" : "動作不存在",
- "Renewing …" : "正在更新……",
+ "Renewing …" : "正在更新…",
"Very weak password" : "密碼安全性極弱",
"Weak password" : "密碼安全性弱",
"So-so password" : "密碼安全性普通",
"Good password" : "密碼安全性佳",
"Strong password" : "密碼安全性極佳",
"The Base DN appears to be wrong" : "Base DN 出現問題",
- "Testing configuration…" : "正在測試設定……",
- "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." : "無法自動偵測 Base DN,請修改憑證、主機與連接埠。",
+ "Testing configuration…" : "正在測試組態設定…",
+ "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." : "無法自動偵測 Base DN,請修改憑證、主機、連接埠等。",
"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 than 1,000 directory entries available." : "超過 1,000 個目錄項目可用。",
- "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["提供的 Base DN 中有 {objectsFound} 個項目"],
- "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?" : "您真的要刪除現在的伺服器設定嗎?",
+ "No object found in the given Base DN. Please revise." : "在 Base DN 中找不到物件。請修正。",
+ "More than 1,000 directory entries available." : "有超過 1,000 個目錄條目可用。",
+ "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["提供的 Base DN 中有 {objectsFound} 個條目可用"],
+ "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?" : "您真的要刪除現在的伺服器組態設定嗎?",
"Confirm Deletion" : "確認刪除",
"Mappings cleared successfully!" : "映射清除成功!",
"Error while clearing the mappings." : "清除映射時發生錯誤。",
@@ -44,28 +44,35 @@ OC.L10N.register(
"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" : "選擇屬性",
+ "Select attributes" : "選取特性",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "找不到使用者。請檢查您的登入資料與使用者名稱。有效的過濾條件(複製貼上以進行命令列驗證):<br/>",
"User found and settings verified." : "使用者存在,設定值正確。",
- "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "考慮縮小範圍,因為其涵蓋了許多使用者,但只有第一個才能登入。",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "請考慮縮小搜尋範圍,目前涵蓋了許多使用者,但只有第一個才能登入。",
"An unspecified error occurred. Please check log and settings." : "發生不明錯誤。請檢查紀錄檔與設定。",
- "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 search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜尋過濾條件無效,可能是語法問題引起,如括號不對稱等。請修正。",
+ "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "遭遇 LDAP/AD 的連線錯誤。請檢查主機、連接埠、憑證等。",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "「%uid」佔位字串遺失。查詢 LDAP/AD 時將會使用登入名稱取代。",
"Please provide a login name to test against" : "請提供登入名稱以便再次測試",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "因為 LDAP/AD 伺服器不支援 memberOf,所以停用群組盒。",
- "Password change rejected. Hint: " : "密碼變更被拒絕。提示:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "由於 LDAP/AD 伺服器不支援 memberOf,群組盒已停用。",
+ "Password change rejected. Hint: %s" : "密碼變更被拒絕。提示:%s",
+ "Mandatory field \"%s\" left empty" : "必填欄位「%s」為空",
+ "A password is given, but not an LDAP agent" : "已提供密碼,但並未提供 LDAP 代理程式",
+ "No password is given for the user agent" : "未提供使用者代理程式的密碼",
+ "No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
+ "User base DN is not a subnode of global base DN" : "使用者基礎 DN 不是全域基礎 DN 的子節點",
+ "Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請以新密碼登入",
"LDAP User backend" : "LDAP 使用者後端",
"Your password will expire tomorrow." : "您的密碼將於明天到期。",
"Your password will expire today." : "您的密碼將於今天到期。",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密碼將於%n天後到期。"],
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密碼將於 %n 天內到期。"],
"LDAP/AD integration" : "LDAP/AD 整合",
"LDAP Connection" : "LDAP 連線",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["這些 LDAP 設定綁紮失敗:%s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["這些 LDAP 設定搜尋失敗:%s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["有不活躍的 LDAP 設定:%s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["綁紮與搜尋適用於所有已設定的 LDAP 連線 (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["%n LDAP 設定綁紮失敗:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["%n LDAP 設定搜尋失敗:%s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["有 %n 個不活躍的 LDAP 設定:%s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["綁紮與搜尋適用於全部 %n 個已設定的 LDAP 連線 (%s)"],
"Invalid LDAP UUIDs" : "無效的 LDAP UUID",
"None found" : "找不到",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "找到無效的 LDAP 帳號或群組 UUID。請審閱您在 LDAP 專家設定中的「覆寫 UUID 偵測」設定,並使用「occ ldap:update-uuid」來更新它們。",
@@ -73,158 +80,160 @@ OC.L10N.register(
"> 1000 groups found" : "找到 > 1000 個群組",
"> 1000 users found" : "找到 > 1000 個使用者",
"_%n user found_::_%n users found_" : ["找到 %n 個使用者"],
- "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "偵測不到使用者顯示名稱屬性。請在進階 LDAP 設定中自行指定。",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "偵測不到使用者顯示名稱特性。請在進階 LDAP 設定中自行指定。",
"Could not find the desired feature" : "找不到所需的功能",
"Invalid Host" : "無效的主機",
"LDAP user and group backend" : "LDAP 使用者與群組後端",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "此應用程式讓管理員可以將 Nextcloud 連線到以 LDAP 為基礎的使用者目錄。",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "此應用程式讓管理員可以將 Nextcloud 連線到以 LDAP 為基礎的使用者目錄來進行驗證與提供使用者、群組與使用者屬性。管理員可以設定此應用程式來連線到一個或更多個 LDAP 目錄,或是透過 LDAP 介面的 Active Directories。如使用者配額、電子郵件、大頭照圖片、群組成員資格等屬性可以透過有適當查詢與過濾條件的目錄從 Nextcloud 拉取。\n\n使用者以其 LDAP 或 AD 憑證登入 Nextcloud,並根據 LDAP 或 AD 伺服器處理的身份驗證請求來授予存取權限。Nextcloud 並不儲存 LDAP 或 AD 的密碼,而是使用這些憑證來對使用者進行身份驗證,然後 Nextcloud 會使用工作階段作為使用者 ID。更多資訊在 LDAP 使用者與群組後端文件中提供。",
- "Test Configuration" : "測試設定",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "此應用程式讓管理員可以將 Nextcloud 連線到以 LDAP 為基礎的使用者目錄,來認證與供應使用者、群組與使用者特性。管理員可以設定此應用程式連線到一個或更多個 LDAP 目錄,或是透過 LDAP 介面連線到 Active Directory。像是使用者容量限制、電子郵件、頭像圖片、群組成員資格等特性,可以透過適當查詢與過濾條件後的目錄從 Nextcloud 拉取。\n\n使用者以其 LDAP 或 AD 憑證登入 Nextcloud,並根據 LDAP 或 AD 伺服器處理的身份認證請求來授予存取權。Nextcloud 並不儲存 LDAP 或 AD 的密碼,而是使用這些憑證來對使用者進行身份認證,接著 Nextcloud 會使用工作階段作為使用者 ID。更多資訊請參閱 LDAP 使用者與群組後端文件。",
+ "Test Configuration" : "測試組態設定",
"Help" : "說明",
- "Groups meeting these criteria are available in %s:" : "符合這些條件的群組可在 %s 找到:",
- "Only these object classes:" : "只有這些物件類別:",
- "Only from these groups:" : "僅從這些群組:",
+ "Groups meeting these criteria are available in %s:" : "在 %s 中符合這些條件可用群組:",
+ "Only these object classes:" : "僅限這些物件類別:",
+ "Only from these groups:" : "僅限這些群組:",
"Search groups" : "搜尋群組",
"Available groups" : "可用的群組",
- "Selected groups" : "已選擇的群組",
+ "Selected groups" : "已選取的群組",
"Edit LDAP Query" : "編輯 LDAP 查詢",
"LDAP Filter:" : "LDAP 過濾條件:",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "過濾條件指定哪些 LDAP 群組有存取 %s 的權限。",
+ "The filter specifies which LDAP groups shall have access to the %s instance." : "過濾條件指定哪些 LDAP 群組應該具備 %s 站台的存取權。",
"Verify settings and count the groups" : "驗證設定並計算群組",
- "When logging in, %s will find the user based on the following attributes:" : "登入時,%s 將會根據以下屬性尋找使用者:",
+ "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." : "允許使用 LDAP/AD 使用者名稱登入,可以是 \"uid\" 或 \"sAMAccountName\"。",
+ "Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "允許使用 LDAP/AD 使用者名稱登入,可以是「uid」或「sAMAccountName」,會自動偵測。",
"LDAP/AD Email Address:" : "LDAP/AD 電子郵件地址:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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\"",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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" : "測試登入名稱",
- "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收指定登入名稱與目前登入過濾條件的 DN",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收給定登入名稱與目前登入過濾條件的 DN",
"Verify settings" : "驗證設定",
"%s. Server:" : "%s. 伺服器:",
- "Add a new configuration" : "建立一個新的設定",
- "Copy current configuration into new directory binding" : "複製目前的設定檔到新目錄綁定",
- "Delete the current configuration" : "刪除目前的設定檔",
+ "Add a new configuration" : "建立新的組態設定",
+ "Copy current configuration into new directory binding" : "複製目前的組態設定檔到新目錄綁定",
+ "Delete the current configuration" : "刪除目前的組態設定",
"Host" : "主機",
- "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "除非您需要 SSL,否則您可以忽略通訊協定,反之則請以 ldaps:// 開頭",
+ "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "除非您需要 SSL,否則您可以忽略通訊協定。如果需要,請以 ldaps:// 開頭",
"Port" : "連接埠",
- "Detect 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 與密碼欄位留空。",
+ "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 與密碼欄位留空。",
+ "For anonymous access, leave DN and Password empty." : "匿名存取時,請將 DN 與密碼欄位留空。",
"Save Credentials" : "儲存憑證",
"One Base DN per line" : "一行一個 Base DN",
"You can specify Base DN for users and groups in the Advanced tab" : "您可以在「進階」分頁中為使用者與群組指定 Base DN",
"Detect Base DN" : "偵測 Base DN",
"Test Base DN" : "測試 Base DN",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "避免自動 LDAP 請求。適合較大規模的安裝,但需要一些 LDAP 知識。",
+ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "避免自動 LDAP 請求。適合較大規模的安裝設置,但需要具備一些 LDAP 知識。",
"Manually enter LDAP filters (recommended for large directories)" : "手動輸入 LDAP 過濾條件(建議用於大型目錄)",
- "Listing and searching for users is constrained by 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." : "使用者最常見的物件類別是 organizationalPerson、person、user 與 inetOrgPerson。如果不確定要選取哪個物件類別,請諮詢您的目錄管理員。",
- "The filter specifies which LDAP users shall have access to the %s instance." : "過濾條件指定哪些 LDAP 使用者有存取 %s 的權限。",
- "Verify settings and count users" : "驗證設定並計算使用者數",
+ "Listing and searching for users is constrained by 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." : "使用者最常見的物件類別是 organizationalPerson、person、user、inetOrgPerson 等。如果不確定要選取哪個物件類別,則請諮詢您的目錄管理員。",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "過濾條件指定哪些 LDAP 使用者應具備 %s 站台的存取權。",
+ "Verify settings and count users" : "驗證設定並計算使用者",
"Saving" : "儲存",
"Back" : "返回",
"Continue" : "繼續",
- "Please renew your password." : "請更新您的密碼",
+ "Please renew your password." : "請更新您的密碼。",
"An internal error occurred." : "發生內部錯誤。",
- "Please try again or contact your administrator." : "請重試或聯絡您的系統管理員。",
+ "Please try again or contact your administrator." : "請重試,或聯絡您的系統管理員。",
"Current password" : "目前密碼",
"New password" : "新密碼",
"Renew password" : "更新密碼",
- "Wrong password." : "密碼錯誤",
+ "Wrong password." : "密碼錯誤。",
"Cancel" : "取消",
"Server" : "伺服器",
"Users" : "使用者",
- "Login Attributes" : "登入屬性",
+ "Login Attributes" : "登入特性",
"Groups" : "群組",
"Expert" : "專家",
"Advanced" : "進階",
- "<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>未安裝 PHP LDAP 模組,後端系統將無法運作。請要求您的系統管理員安裝它。",
+ "<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>未安裝 PHP LDAP 模組,後端系統將無法運作。請要求您的系統管理員安裝。",
"Connection Settings" : "連線設定",
- "Configuration Active" : "設定作用中",
- "When unchecked, this configuration will be skipped." : "沒有被勾選時,此設定會被略過。",
- "Backup (Replica) Host" : "備用(複本)主機",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "提供可選的備用主機。其必須為主要 LDAP/AD 伺服器的複本。",
- "Backup (Replica) Port" : "備用(複本)連接埠",
+ "Configuration Active" : "組態設定作用中",
+ "When unchecked, this configuration will be skipped." : "沒有勾選時,此組態設定會被略過。",
+ "Backup (Replica) Host" : "備援(複本)主機",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "提供可選的備援主機。這必須是主要 LDAP/AD 伺服器的複本。",
+ "Backup (Replica) Port" : "備援(複本)連接埠",
"Disable Main Server" : "停用主伺服器",
"Only connect to the replica server." : "僅連線至複本伺服器。",
- "Turn off SSL certificate validation." : "關閉 SSL 憑證檢查。",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "不建議,請僅在測試時使用!如果連線只能在此設定下運作,請匯入 LDAP 伺服器的 SSL 憑證到您的伺服器 %s 上。",
+ "Turn off SSL certificate validation." : "關閉 SSL 憑證驗證。",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "不建議,請僅在測試時使用!如果連線只能在此選項下運作,請匯入 LDAP 伺服器的 SSL 憑證到您的 %s 伺服器上。",
"Cache Time-To-Live" : "快取的存活時間",
"in seconds. A change empties the cache." : "以秒為單位。變更後會清空快取。",
"Directory Settings" : "目錄設定",
"User Display Name Field" : "使用者顯示名稱欄位",
- "The LDAP attribute to use to generate the user's display name." : "用於生成使用者顯示名稱的 LDAP 屬性。",
+ "The LDAP attribute to use to generate the user's display name." : "用於生成使用者顯示名稱的 LDAP 特性。",
"2nd User Display Name Field" : "第二個使用者顯示名稱欄位",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "選填。要加進顯示名稱中括號的 LDAP 屬性。例如 »John Doe (john.doe@example.org)«。",
- "Base User Tree" : "Base User Tree",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "選填。要加進顯示名稱括號中的 LDAP 特性。例如 »John Doe (john.doe@example.org)«。",
+ "Base User Tree" : "基本使用者樹",
"One User Base DN per line" : "一行一個使用者 Base DN",
- "User Search Attributes" : "User Search Attributes",
- "Optional; one attribute per line" : "非必要,一行一項屬性",
- "Disable users missing from LDAP" : "停用 LDAP 中缺少的使用者",
- "When switched on, users imported from LDAP which are then missing will be disabled" : "開啟後,從 LDAP 匯入但隨後遺失的使用者將被停用",
+ "User Search Attributes" : "使用者搜尋特性",
+ "Optional; one attribute per line" : "選填;一行一項特性",
+ "Disable users missing from LDAP" : "停用 LDAP 中沒有的使用者",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "開啟後,從 LDAP 匯入但隨後消失的使用者將被停用",
"Group Display Name Field" : "群組顯示名稱欄位",
- "The LDAP attribute to use to generate the groups's display name." : "用於生成群組顯示名稱的 LDAP 屬性。",
- "Base Group Tree" : "Base Group Tree",
- "One Group Base DN per line" : "一行一個 Group Base DN",
- "Group Search Attributes" : "Group Search Attributes",
- "Group-Member association" : "Group-Member association",
- "Dynamic Group Member URL" : "Dynamic Group Member URL",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "群組物件上的 LDAP 屬性包含了一個 LDAP 搜尋 URL,該 URL 決定了哪些物件屬於群組。(空白設定將會停用動態群組成員資格功能。)",
- "Nested Groups" : "Nested Groups",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "啟用後,將會支援包含群組的群組。(僅在群組成員屬性包含 DN 時可正常運作。)",
+ "The LDAP attribute to use to generate the groups's display name." : "用於生成群組顯示名稱的 LDAP 特性。",
+ "Base Group Tree" : "Base 群組樹",
+ "One Group Base DN per line" : "一行一個群組 Base DN",
+ "Group Search Attributes" : "群組搜尋特性",
+ "Group-Member association" : "群組與成員關聯",
+ "Dynamic Group Member URL" : "動態群組成員 URL",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "群組物件上的 LDAP 特性包含了 LDAP 搜尋 URL,該 URL 決定了哪些物件屬於該群組。(空白設定將會停用動態群組成員資格功能。)",
+ "Nested Groups" : "巢狀群組",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "啟用後,將會支援包含群組的群組。(僅在群組成員特性包含 DN 時可正常運作。)",
"Paging chunksize" : "分頁區塊大小",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "分頁 LDAP 搜尋使用的區塊大小可能會回傳大量結果,如使用者或群組列舉。(在這種情況下,將其設定為 0 將會停用分頁 LDAP 搜尋。)",
- "Enable LDAP password changes per user" : "啟用每個使用者的 LDAP 密碼",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允許 LDAP 使用者變更他們的密碼,並允許超級管理員與群組管理員變更其 LDAP 使用者的密碼。僅當在 LDAP 伺服器上設定了對應的存取控制策略時,此選項才會有效。因為密碼以明文形式傳送到 LDAP 伺服器,因此必須使用傳輸加密,且必須在 LDAP 伺服器上設定密碼雜湊。",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "分頁式 LDAP 搜尋所使用的區塊大小,可能會回傳大量結果,例如使用者或群組列舉。(在這種情況下,設定為 0 會停用分頁式 LDAP 搜尋。)",
+ "Enable LDAP password changes per user" : "啟用每個使用者的 LDAP 密碼變更",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允許 LDAP 使用者變更他們的密碼,並允許超級管理員與群組管理員變更其 LDAP 使用者的密碼。僅當在 LDAP 伺服器上設定了對應的存取控制策略時,此選項才會生效。由於密碼會以明文形式傳送給 LDAP 伺服器,因此必須使用傳輸加密,且必須在 LDAP 伺服器上設定密碼雜湊處理。",
"(New password is sent as plain text to LDAP)" : "(新密碼會以明文傳送給 LDAP)",
"Default password policy DN" : "預設密碼策略 DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "預設密碼策略的 DN,其將用於密碼過期處理。僅當啟用了每個使用者的 LDAP 密碼變更且 OpenLDAP 支援時才能正常運作。保留為空將停用密碼過期處理。",
- "Special Attributes" : "特殊屬性",
- "Quota Field" : "配額欄位",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "留空將以使用者的預設配額為準。否則請指定 LDAP/AD 屬性。",
- "Quota Default" : "預設配額",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "覆寫沒有在配額欄位中設定配額的 LDAP 使用者的預設配額。",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "預設密碼策略的 DN,用於密碼過期處理。僅當啟用了每個使用者的 LDAP 密碼變更時才能正常運作,僅 OpenLDAP 有支援。保留空白將停用密碼過期處理。",
+ "Special Attributes" : "特殊特性",
+ "Quota Field" : "容量限制欄位",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "留空將以使用者的預設容量限制為準。否則,請指定 LDAP/AD 特性。",
+ "Quota Default" : "容量限制預設",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "凌駕在容量限制欄位中沒有設定配額容量的 LDAP 使用者的預設配額。",
"Email Field" : "電子郵件欄位",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "從 LDAP 屬性設定使用者的電子郵件。將其留空為預設行為。",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "根據 LDAP 特性設定使用者的電子郵件。留空將採預設行為。",
"User Home Folder Naming Rule" : "使用者家目錄的命名規則",
- "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "使用者名稱留空(預設值)。否則請指定 LDAP/AD 屬性。",
- "\"$home\" Placeholder Field" : "\"$home\" 佔位字串欄位",
- "$home in an external storage configuration will be replaced with the value of the specified attribute" : "外部儲存空間設定中的 $home 將會以指定屬性的值取代",
- "User Profile Attributes" : "使用者個人資料屬性",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "留空將採用使用者名稱(預設值)。否則,請指定 LDAP/AD 特性。",
+ "\"$home\" Placeholder Field" : "「$home」佔位字串欄位",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "外部儲存空間組態設定中的 $home 將會以指定特性的值取代",
+ "User Profile Attributes" : "使用者個人檔案特性",
"Phone Field" : "電話號碼欄位",
- "User profile Phone will be set from the specified attribute" : "使用者個人資料電話號碼將從指定的屬性設定",
+ "User profile Phone will be set from the specified attribute" : "使用者個人檔案電話號碼將根據指定的特性設定",
"Website Field" : "網站欄位",
- "User profile Website will be set from the specified attribute" : "使用者個人資料網站將從指定的屬性設定",
+ "User profile Website will be set from the specified attribute" : "使用者個人檔案網站將根據指定的特性設定",
"Address Field" : "地址欄位",
- "User profile Address will be set from the specified attribute" : "使用者個人資料地址將從指定的屬性設定",
+ "User profile Address will be set from the specified attribute" : "使用者個人檔案地址將根據指定的特性設定",
"Twitter Field" : "Twitter 欄位",
- "User profile Twitter will be set from the specified attribute" : "使用者個人資料 Twitter 將從指定的屬性設定",
- "Fediverse Field" : "Fediverse 欄位",
- "User profile Fediverse will be set from the specified attribute" : "使用者個人資料 Fediverse 將從指定的屬性設定",
- "Organisation Field" : "組織欄位",
- "User profile Organisation will be set from the specified attribute" : "使用者個人資料組織將從指定的屬性設定",
- "Role Field" : "職稱欄位",
- "User profile Role will be set from the specified attribute" : "使用者個人資料職稱將從指定的屬性設定",
- "Headline Field" : "標題欄位",
- "User profile Headline will be set from the specified attribute" : "使用者個人資料標題將從指定的屬性設定",
- "Biography Field" : "傳記欄位",
- "User profile Biography will be set from the specified attribute" : "使用者個人資料傳記將從指定的屬性設定",
+ "User profile Twitter will be set from the specified attribute" : "使用者個人檔案 Twitter 將根據指定的特性設定",
+ "Fediverse Field" : "聯邦宇宙欄位",
+ "User profile Fediverse will be set from the specified attribute" : "使用者個人檔案聯邦宇宙將根據指定的特性設定",
+ "Organisation Field" : "組織單位欄位",
+ "User profile Organisation will be set from the specified attribute" : "使用者個人檔案組織單位將根據指定的特性設定",
+ "Role Field" : "職位欄位",
+ "User profile Role will be set from the specified attribute" : "使用者個人檔案職位將根據指定的特性設定",
+ "Headline Field" : "重要經歷欄位",
+ "User profile Headline will be set from the specified attribute" : "使用者個人檔案重要經歷將根據指定的特性設定",
+ "Biography Field" : "自傳欄位",
+ "User profile Biography will be set from the specified attribute" : "使用者個人檔案自傳將根據指定的特性設定",
"Birthdate Field" : "出生日期欄位",
"User profile Date of birth will be set from the specified attribute" : "使用者個人資料的出生日期將從指定的屬性中設定",
+ "Pronouns Field" : "代名詞欄位",
+ "User profile Pronouns will be set from the specified attribute" : "使用者個人資料代名詞將從指定的屬性設定",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "預設情況下,內部使用者名稱將從 UUID 屬性建立。其確保了使用者名稱是唯一且不需要轉換字元。內部使用者名稱的限制是只能使用下列字元:[a-zA-Z0-9_.@-]。其他字元會使用其 ASCII 對映或被忽略。發生碰撞時,將會加入數字。內部使用者名稱用於內部識別使用者。其也是使用者家資料夾的預設名稱。也是遠端 URL 的一部分,舉例來說,會用於所有 DAV 服務。使用此設定,預設的行為將會被覆寫。變更僅對新映射(新增)的 LDAP 使用者有效。將其留空會使用預設行為。",
- "Internal Username Attribute:" : "內部使用者名稱屬性:",
- "Override UUID detection" : "偵測覆寫 UUID",
- "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "預設情況下,UUID 屬性會自動偵測。UUID 屬性用來準確識別 LDAP 使用者及群組。此外,如果未在上方指定,內部使用者名稱會以 UUID 為基礎建立。您能覆寫設定並直接指定屬性,但一定要確保指定的屬性能被使用者及群組取得且唯一。留空則執行預設行為。變更只會對新映射(新增)的 LDAP 使用者及群組生效。",
- "UUID Attribute for Users:" : "使用者的 UUID 屬性:",
- "UUID Attribute for Groups:" : "群組的 UUID 屬性:",
- "Username-LDAP User Mapping" : "使用者-LDAP 使用者映射",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "使用者名稱用於儲存並指派詮釋資料。為了精確識別並認出使用者,每個 LDAP 使用者都將會有內部使用者名稱。這需要從使用者名稱到 LDAP 使用者的映射。已建立的使用者名稱會映射到 LDAP 使用者的 UUID。另外,DN 會被快取以減少 LDAP 互動,但不會用於識別。若 DN 變更,將會找到變更。內部使用者名稱將會全面使用。清除映射將會讓到處都是未連結的項目。清除映射對設定並不敏感,其會影響到所有 LDAP 設定!不要在生產環境中清除映射,僅將其用於測試或實驗階段。",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "預設情況下,內部使用者名稱將根據 UUID 特性建立。這能確保使用者名稱是唯一,且不需要轉換字元。內部使用者名稱的限制是,只能使用下列字元:[a-zA-Z0-9_.@-]。其他字元會使用其 ASCII 對映取代,或是直接忽略。發生名稱碰撞時,將會加入或加大數字。內部使用者名稱用於內部識別使用者。這也是使用者家資料夾的預設名稱。也是遠端 URL 的一部分,例如,會用在所有 DAV 服務上。啟用此設定後,預設的行為會被凌駕。變更僅對新映射(新增)的 LDAP 使用者有效。將其留空會使用預設行為。",
+ "Internal Username Attribute:" : "內部使用者名稱特性:",
+ "Override UUID detection" : "凌駕 UUID 偵測",
+ "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "預設情況下,UUID 特性會自動偵測。UUID 特性用來準確識別 LDAP 使用者及群組。此外,如果未在上方指定,則內部使用者名稱會以 UUID 為基礎建立。您可以覆寫原設定,並且根據您的想法直接指定特性,但一定要確保所指定的特性能取得使用者及群組並是唯一的。留空將採取預設行為。變更只會對新映射(新增)的 LDAP 使用者及群組生效。",
+ "UUID Attribute for Users:" : "使用者的 UUID 特性:",
+ "UUID Attribute for Groups:" : "群組的 UUID 特性:",
+ "Username-LDAP User Mapping" : "使用者名稱-LDAP 使用者映射",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "使用者名稱用於儲存並指派中介資料。為了精確識別並認知使用者,每個 LDAP 使用者都會有其內部使用者名稱。這需要從使用者名稱作映射到 LDAP 使用者。建立的使用者名稱會映射到 LDAP 使用者的 UUID。另外,DN 會被快取以減少 LDAP 互動,但快取不用於識別身份。若 DN 變更時,系統會發現變動。內部使用者名稱在系統中全面使用,所以一旦清除映射,會讓到處都是未連結的殘留項目。清除映射的行為並不會區分組態設定,而是會影響所有 LDAP 組態設定!請永遠不要在正式環境中清除映射,僅在測試或實驗階段使用。",
"Clear Username-LDAP User Mapping" : "清除使用者名稱-LDAP 使用者映射",
"Clear Groupname-LDAP Group Mapping" : "清除群組名稱-LDAP 群組映射",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "找到無效的 LDAP 使用者或群組 UUID。請審閱您在 LDAP 專家設定中的「覆寫 UUID 偵測」設定,並使用「occ ldap:update-uuid」來更新它們。"
+ "Invalid configuration. Please have a look at the logs for further details." : "無效的組態設定。請檢查紀錄檔以取得更多詳細資訊。"
},
"nplurals=1; plural=0;");
diff --git a/apps/user_ldap/l10n/zh_TW.json b/apps/user_ldap/l10n/zh_TW.json
index 3a530460b61..d78cd7f2642 100644
--- a/apps/user_ldap/l10n/zh_TW.json
+++ b/apps/user_ldap/l10n/zh_TW.json
@@ -1,39 +1,39 @@
{ "translations": {
- "Failed to clear the mappings." : "清除映射失敗。",
- "Failed to delete the server configuration" : "刪除伺服器設定失敗",
- "Invalid configuration: Anonymous binding is not allowed." : "無效的設定:不允許匿名綁定。",
- "Valid configuration, connection established!" : "有效的設定,連線已建立!",
- "Valid configuration, but binding failed. Please check the server settings and credentials." : "有效的設定,但是綁定失敗。請檢查伺服器設定和證書。",
- "Invalid configuration. Please have a look at the logs for further details." : "無效的設定。請檢查紀錄檔以取得更多詳細資訊。",
+ "Failed to clear the mappings." : "無法清除映射。",
+ "Failed to delete the server configuration" : "無法刪除伺服器組態設定",
+ "Invalid configuration: Anonymous binding is not allowed." : "無效的組態設定:不允許匿名綁定。",
+ "Valid configuration, connection established!" : "有效的組態設定,連線已建立!",
+ "Valid configuration, but binding failed. Please check the server settings and credentials." : "有效的組態設定,但是綁定失敗。請檢查伺服器設定與憑證。",
+ "Invalid configuration: %s" : "無效組態:%s",
"No action specified" : "未指定動作",
- "No configuration specified" : "未指定設定",
+ "No configuration specified" : "未指定組態設定",
"No data specified" : "未指定資料",
"Invalid data specified" : "指定了無效的資料",
- " Could not set configuration %s" : "無法設定 %s",
+ "Could not set configuration %1$s to %2$s" : "無法將組態 %1$s 設定為 %2$s",
"Action does not exist" : "動作不存在",
- "Renewing …" : "正在更新……",
+ "Renewing …" : "正在更新…",
"Very weak password" : "密碼安全性極弱",
"Weak password" : "密碼安全性弱",
"So-so password" : "密碼安全性普通",
"Good password" : "密碼安全性佳",
"Strong password" : "密碼安全性極佳",
"The Base DN appears to be wrong" : "Base DN 出現問題",
- "Testing configuration…" : "正在測試設定……",
- "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." : "無法自動偵測 Base DN,請修改憑證、主機與連接埠。",
+ "Testing configuration…" : "正在測試組態設定…",
+ "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." : "無法自動偵測 Base DN,請修改憑證、主機、連接埠等。",
"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 than 1,000 directory entries available." : "超過 1,000 個目錄項目可用。",
- "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["提供的 Base DN 中有 {objectsFound} 個項目"],
- "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?" : "您真的要刪除現在的伺服器設定嗎?",
+ "No object found in the given Base DN. Please revise." : "在 Base DN 中找不到物件。請修正。",
+ "More than 1,000 directory entries available." : "有超過 1,000 個目錄條目可用。",
+ "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["提供的 Base DN 中有 {objectsFound} 個條目可用"],
+ "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?" : "您真的要刪除現在的伺服器組態設定嗎?",
"Confirm Deletion" : "確認刪除",
"Mappings cleared successfully!" : "映射清除成功!",
"Error while clearing the mappings." : "清除映射時發生錯誤。",
@@ -42,28 +42,35 @@
"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" : "選擇屬性",
+ "Select attributes" : "選取特性",
"User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "找不到使用者。請檢查您的登入資料與使用者名稱。有效的過濾條件(複製貼上以進行命令列驗證):<br/>",
"User found and settings verified." : "使用者存在,設定值正確。",
- "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "考慮縮小範圍,因為其涵蓋了許多使用者,但只有第一個才能登入。",
+ "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "請考慮縮小搜尋範圍,目前涵蓋了許多使用者,但只有第一個才能登入。",
"An unspecified error occurred. Please check log and settings." : "發生不明錯誤。請檢查紀錄檔與設定。",
- "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 search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "搜尋過濾條件無效,可能是語法問題引起,如括號不對稱等。請修正。",
+ "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "遭遇 LDAP/AD 的連線錯誤。請檢查主機、連接埠、憑證等。",
"The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "「%uid」佔位字串遺失。查詢 LDAP/AD 時將會使用登入名稱取代。",
"Please provide a login name to test against" : "請提供登入名稱以便再次測試",
- "The group box was disabled, because the LDAP/AD server does not support memberOf." : "因為 LDAP/AD 伺服器不支援 memberOf,所以停用群組盒。",
- "Password change rejected. Hint: " : "密碼變更被拒絕。提示:",
+ "The group box was disabled, because the LDAP/AD server does not support memberOf." : "由於 LDAP/AD 伺服器不支援 memberOf,群組盒已停用。",
+ "Password change rejected. Hint: %s" : "密碼變更被拒絕。提示:%s",
+ "Mandatory field \"%s\" left empty" : "必填欄位「%s」為空",
+ "A password is given, but not an LDAP agent" : "已提供密碼,但並未提供 LDAP 代理程式",
+ "No password is given for the user agent" : "未提供使用者代理程式的密碼",
+ "No LDAP base DN was given" : "未提供 LDAP 基礎 DN",
+ "User base DN is not a subnode of global base DN" : "使用者基礎 DN 不是全域基礎 DN 的子節點",
+ "Group base DN is not a subnode of global base DN" : "群組基礎 DN 不是全域基礎 DN 的子節點",
+ "Login filter does not contain %s placeholder." : "登入過濾條件不包含 %s 佔位字串。",
"Please login with the new password" : "請以新密碼登入",
"LDAP User backend" : "LDAP 使用者後端",
"Your password will expire tomorrow." : "您的密碼將於明天到期。",
"Your password will expire today." : "您的密碼將於今天到期。",
- "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密碼將於%n天後到期。"],
+ "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["您的密碼將於 %n 天內到期。"],
"LDAP/AD integration" : "LDAP/AD 整合",
"LDAP Connection" : "LDAP 連線",
- "_Binding failed for this LDAP configuration: %s_::_Binding failed for these LDAP configurations: %s_" : ["這些 LDAP 設定綁紮失敗:%s"],
- "_Searching failed for this LDAP configuration: %s_::_Searching failed for these LDAP configurations: %s_" : ["這些 LDAP 設定搜尋失敗:%s"],
- "_There is an inactive LDAP configuration: %s_::_There are inactive LDAP configurations: %s_" : ["有不活躍的 LDAP 設定:%s"],
- "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the configured LDAP connections (%s)_" : ["綁紮與搜尋適用於所有已設定的 LDAP 連線 (%s)"],
+ "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["%n LDAP 設定綁紮失敗:%s"],
+ "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["%n LDAP 設定搜尋失敗:%s"],
+ "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["有 %n 個不活躍的 LDAP 設定:%s"],
+ "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["綁紮與搜尋適用於全部 %n 個已設定的 LDAP 連線 (%s)"],
"Invalid LDAP UUIDs" : "無效的 LDAP UUID",
"None found" : "找不到",
"Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "找到無效的 LDAP 帳號或群組 UUID。請審閱您在 LDAP 專家設定中的「覆寫 UUID 偵測」設定,並使用「occ ldap:update-uuid」來更新它們。",
@@ -71,158 +78,160 @@
"> 1000 groups found" : "找到 > 1000 個群組",
"> 1000 users found" : "找到 > 1000 個使用者",
"_%n user found_::_%n users found_" : ["找到 %n 個使用者"],
- "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "偵測不到使用者顯示名稱屬性。請在進階 LDAP 設定中自行指定。",
+ "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "偵測不到使用者顯示名稱特性。請在進階 LDAP 設定中自行指定。",
"Could not find the desired feature" : "找不到所需的功能",
"Invalid Host" : "無效的主機",
"LDAP user and group backend" : "LDAP 使用者與群組後端",
"This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "此應用程式讓管理員可以將 Nextcloud 連線到以 LDAP 為基礎的使用者目錄。",
- "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "此應用程式讓管理員可以將 Nextcloud 連線到以 LDAP 為基礎的使用者目錄來進行驗證與提供使用者、群組與使用者屬性。管理員可以設定此應用程式來連線到一個或更多個 LDAP 目錄,或是透過 LDAP 介面的 Active Directories。如使用者配額、電子郵件、大頭照圖片、群組成員資格等屬性可以透過有適當查詢與過濾條件的目錄從 Nextcloud 拉取。\n\n使用者以其 LDAP 或 AD 憑證登入 Nextcloud,並根據 LDAP 或 AD 伺服器處理的身份驗證請求來授予存取權限。Nextcloud 並不儲存 LDAP 或 AD 的密碼,而是使用這些憑證來對使用者進行身份驗證,然後 Nextcloud 會使用工作階段作為使用者 ID。更多資訊在 LDAP 使用者與群組後端文件中提供。",
- "Test Configuration" : "測試設定",
+ "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "此應用程式讓管理員可以將 Nextcloud 連線到以 LDAP 為基礎的使用者目錄,來認證與供應使用者、群組與使用者特性。管理員可以設定此應用程式連線到一個或更多個 LDAP 目錄,或是透過 LDAP 介面連線到 Active Directory。像是使用者容量限制、電子郵件、頭像圖片、群組成員資格等特性,可以透過適當查詢與過濾條件後的目錄從 Nextcloud 拉取。\n\n使用者以其 LDAP 或 AD 憑證登入 Nextcloud,並根據 LDAP 或 AD 伺服器處理的身份認證請求來授予存取權。Nextcloud 並不儲存 LDAP 或 AD 的密碼,而是使用這些憑證來對使用者進行身份認證,接著 Nextcloud 會使用工作階段作為使用者 ID。更多資訊請參閱 LDAP 使用者與群組後端文件。",
+ "Test Configuration" : "測試組態設定",
"Help" : "說明",
- "Groups meeting these criteria are available in %s:" : "符合這些條件的群組可在 %s 找到:",
- "Only these object classes:" : "只有這些物件類別:",
- "Only from these groups:" : "僅從這些群組:",
+ "Groups meeting these criteria are available in %s:" : "在 %s 中符合這些條件可用群組:",
+ "Only these object classes:" : "僅限這些物件類別:",
+ "Only from these groups:" : "僅限這些群組:",
"Search groups" : "搜尋群組",
"Available groups" : "可用的群組",
- "Selected groups" : "已選擇的群組",
+ "Selected groups" : "已選取的群組",
"Edit LDAP Query" : "編輯 LDAP 查詢",
"LDAP Filter:" : "LDAP 過濾條件:",
- "The filter specifies which LDAP groups shall have access to the %s instance." : "過濾條件指定哪些 LDAP 群組有存取 %s 的權限。",
+ "The filter specifies which LDAP groups shall have access to the %s instance." : "過濾條件指定哪些 LDAP 群組應該具備 %s 站台的存取權。",
"Verify settings and count the groups" : "驗證設定並計算群組",
- "When logging in, %s will find the user based on the following attributes:" : "登入時,%s 將會根據以下屬性尋找使用者:",
+ "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." : "允許使用 LDAP/AD 使用者名稱登入,可以是 \"uid\" 或 \"sAMAccountName\"。",
+ "Allows login against the LDAP/AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "允許使用 LDAP/AD 使用者名稱登入,可以是「uid」或「sAMAccountName」,會自動偵測。",
"LDAP/AD Email Address:" : "LDAP/AD 電子郵件地址:",
- "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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\"",
+ "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" 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" : "測試登入名稱",
- "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收指定登入名稱與目前登入過濾條件的 DN",
+ "Attempts to receive a DN for the given loginname and the current login filter" : "嘗試接收給定登入名稱與目前登入過濾條件的 DN",
"Verify settings" : "驗證設定",
"%s. Server:" : "%s. 伺服器:",
- "Add a new configuration" : "建立一個新的設定",
- "Copy current configuration into new directory binding" : "複製目前的設定檔到新目錄綁定",
- "Delete the current configuration" : "刪除目前的設定檔",
+ "Add a new configuration" : "建立新的組態設定",
+ "Copy current configuration into new directory binding" : "複製目前的組態設定檔到新目錄綁定",
+ "Delete the current configuration" : "刪除目前的組態設定",
"Host" : "主機",
- "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "除非您需要 SSL,否則您可以忽略通訊協定,反之則請以 ldaps:// 開頭",
+ "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "除非您需要 SSL,否則您可以忽略通訊協定。如果需要,請以 ldaps:// 開頭",
"Port" : "連接埠",
- "Detect 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 與密碼欄位留空。",
+ "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 與密碼欄位留空。",
+ "For anonymous access, leave DN and Password empty." : "匿名存取時,請將 DN 與密碼欄位留空。",
"Save Credentials" : "儲存憑證",
"One Base DN per line" : "一行一個 Base DN",
"You can specify Base DN for users and groups in the Advanced tab" : "您可以在「進階」分頁中為使用者與群組指定 Base DN",
"Detect Base DN" : "偵測 Base DN",
"Test Base DN" : "測試 Base DN",
- "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "避免自動 LDAP 請求。適合較大規模的安裝,但需要一些 LDAP 知識。",
+ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "避免自動 LDAP 請求。適合較大規模的安裝設置,但需要具備一些 LDAP 知識。",
"Manually enter LDAP filters (recommended for large directories)" : "手動輸入 LDAP 過濾條件(建議用於大型目錄)",
- "Listing and searching for users is constrained by 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." : "使用者最常見的物件類別是 organizationalPerson、person、user 與 inetOrgPerson。如果不確定要選取哪個物件類別,請諮詢您的目錄管理員。",
- "The filter specifies which LDAP users shall have access to the %s instance." : "過濾條件指定哪些 LDAP 使用者有存取 %s 的權限。",
- "Verify settings and count users" : "驗證設定並計算使用者數",
+ "Listing and searching for users is constrained by 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." : "使用者最常見的物件類別是 organizationalPerson、person、user、inetOrgPerson 等。如果不確定要選取哪個物件類別,則請諮詢您的目錄管理員。",
+ "The filter specifies which LDAP users shall have access to the %s instance." : "過濾條件指定哪些 LDAP 使用者應具備 %s 站台的存取權。",
+ "Verify settings and count users" : "驗證設定並計算使用者",
"Saving" : "儲存",
"Back" : "返回",
"Continue" : "繼續",
- "Please renew your password." : "請更新您的密碼",
+ "Please renew your password." : "請更新您的密碼。",
"An internal error occurred." : "發生內部錯誤。",
- "Please try again or contact your administrator." : "請重試或聯絡您的系統管理員。",
+ "Please try again or contact your administrator." : "請重試,或聯絡您的系統管理員。",
"Current password" : "目前密碼",
"New password" : "新密碼",
"Renew password" : "更新密碼",
- "Wrong password." : "密碼錯誤",
+ "Wrong password." : "密碼錯誤。",
"Cancel" : "取消",
"Server" : "伺服器",
"Users" : "使用者",
- "Login Attributes" : "登入屬性",
+ "Login Attributes" : "登入特性",
"Groups" : "群組",
"Expert" : "專家",
"Advanced" : "進階",
- "<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>未安裝 PHP LDAP 模組,後端系統將無法運作。請要求您的系統管理員安裝它。",
+ "<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>未安裝 PHP LDAP 模組,後端系統將無法運作。請要求您的系統管理員安裝。",
"Connection Settings" : "連線設定",
- "Configuration Active" : "設定作用中",
- "When unchecked, this configuration will be skipped." : "沒有被勾選時,此設定會被略過。",
- "Backup (Replica) Host" : "備用(複本)主機",
- "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "提供可選的備用主機。其必須為主要 LDAP/AD 伺服器的複本。",
- "Backup (Replica) Port" : "備用(複本)連接埠",
+ "Configuration Active" : "組態設定作用中",
+ "When unchecked, this configuration will be skipped." : "沒有勾選時,此組態設定會被略過。",
+ "Backup (Replica) Host" : "備援(複本)主機",
+ "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "提供可選的備援主機。這必須是主要 LDAP/AD 伺服器的複本。",
+ "Backup (Replica) Port" : "備援(複本)連接埠",
"Disable Main Server" : "停用主伺服器",
"Only connect to the replica server." : "僅連線至複本伺服器。",
- "Turn off SSL certificate validation." : "關閉 SSL 憑證檢查。",
- "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "不建議,請僅在測試時使用!如果連線只能在此設定下運作,請匯入 LDAP 伺服器的 SSL 憑證到您的伺服器 %s 上。",
+ "Turn off SSL certificate validation." : "關閉 SSL 憑證驗證。",
+ "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "不建議,請僅在測試時使用!如果連線只能在此選項下運作,請匯入 LDAP 伺服器的 SSL 憑證到您的 %s 伺服器上。",
"Cache Time-To-Live" : "快取的存活時間",
"in seconds. A change empties the cache." : "以秒為單位。變更後會清空快取。",
"Directory Settings" : "目錄設定",
"User Display Name Field" : "使用者顯示名稱欄位",
- "The LDAP attribute to use to generate the user's display name." : "用於生成使用者顯示名稱的 LDAP 屬性。",
+ "The LDAP attribute to use to generate the user's display name." : "用於生成使用者顯示名稱的 LDAP 特性。",
"2nd User Display Name Field" : "第二個使用者顯示名稱欄位",
- "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "選填。要加進顯示名稱中括號的 LDAP 屬性。例如 »John Doe (john.doe@example.org)«。",
- "Base User Tree" : "Base User Tree",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "選填。要加進顯示名稱括號中的 LDAP 特性。例如 »John Doe (john.doe@example.org)«。",
+ "Base User Tree" : "基本使用者樹",
"One User Base DN per line" : "一行一個使用者 Base DN",
- "User Search Attributes" : "User Search Attributes",
- "Optional; one attribute per line" : "非必要,一行一項屬性",
- "Disable users missing from LDAP" : "停用 LDAP 中缺少的使用者",
- "When switched on, users imported from LDAP which are then missing will be disabled" : "開啟後,從 LDAP 匯入但隨後遺失的使用者將被停用",
+ "User Search Attributes" : "使用者搜尋特性",
+ "Optional; one attribute per line" : "選填;一行一項特性",
+ "Disable users missing from LDAP" : "停用 LDAP 中沒有的使用者",
+ "When switched on, users imported from LDAP which are then missing will be disabled" : "開啟後,從 LDAP 匯入但隨後消失的使用者將被停用",
"Group Display Name Field" : "群組顯示名稱欄位",
- "The LDAP attribute to use to generate the groups's display name." : "用於生成群組顯示名稱的 LDAP 屬性。",
- "Base Group Tree" : "Base Group Tree",
- "One Group Base DN per line" : "一行一個 Group Base DN",
- "Group Search Attributes" : "Group Search Attributes",
- "Group-Member association" : "Group-Member association",
- "Dynamic Group Member URL" : "Dynamic Group Member URL",
- "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "群組物件上的 LDAP 屬性包含了一個 LDAP 搜尋 URL,該 URL 決定了哪些物件屬於群組。(空白設定將會停用動態群組成員資格功能。)",
- "Nested Groups" : "Nested Groups",
- "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "啟用後,將會支援包含群組的群組。(僅在群組成員屬性包含 DN 時可正常運作。)",
+ "The LDAP attribute to use to generate the groups's display name." : "用於生成群組顯示名稱的 LDAP 特性。",
+ "Base Group Tree" : "Base 群組樹",
+ "One Group Base DN per line" : "一行一個群組 Base DN",
+ "Group Search Attributes" : "群組搜尋特性",
+ "Group-Member association" : "群組與成員關聯",
+ "Dynamic Group Member URL" : "動態群組成員 URL",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "群組物件上的 LDAP 特性包含了 LDAP 搜尋 URL,該 URL 決定了哪些物件屬於該群組。(空白設定將會停用動態群組成員資格功能。)",
+ "Nested Groups" : "巢狀群組",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "啟用後,將會支援包含群組的群組。(僅在群組成員特性包含 DN 時可正常運作。)",
"Paging chunksize" : "分頁區塊大小",
- "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "分頁 LDAP 搜尋使用的區塊大小可能會回傳大量結果,如使用者或群組列舉。(在這種情況下,將其設定為 0 將會停用分頁 LDAP 搜尋。)",
- "Enable LDAP password changes per user" : "啟用每個使用者的 LDAP 密碼",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允許 LDAP 使用者變更他們的密碼,並允許超級管理員與群組管理員變更其 LDAP 使用者的密碼。僅當在 LDAP 伺服器上設定了對應的存取控制策略時,此選項才會有效。因為密碼以明文形式傳送到 LDAP 伺服器,因此必須使用傳輸加密,且必須在 LDAP 伺服器上設定密碼雜湊。",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "分頁式 LDAP 搜尋所使用的區塊大小,可能會回傳大量結果,例如使用者或群組列舉。(在這種情況下,設定為 0 會停用分頁式 LDAP 搜尋。)",
+ "Enable LDAP password changes per user" : "啟用每個使用者的 LDAP 密碼變更",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "允許 LDAP 使用者變更他們的密碼,並允許超級管理員與群組管理員變更其 LDAP 使用者的密碼。僅當在 LDAP 伺服器上設定了對應的存取控制策略時,此選項才會生效。由於密碼會以明文形式傳送給 LDAP 伺服器,因此必須使用傳輸加密,且必須在 LDAP 伺服器上設定密碼雜湊處理。",
"(New password is sent as plain text to LDAP)" : "(新密碼會以明文傳送給 LDAP)",
"Default password policy DN" : "預設密碼策略 DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "預設密碼策略的 DN,其將用於密碼過期處理。僅當啟用了每個使用者的 LDAP 密碼變更且 OpenLDAP 支援時才能正常運作。保留為空將停用密碼過期處理。",
- "Special Attributes" : "特殊屬性",
- "Quota Field" : "配額欄位",
- "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "留空將以使用者的預設配額為準。否則請指定 LDAP/AD 屬性。",
- "Quota Default" : "預設配額",
- "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "覆寫沒有在配額欄位中設定配額的 LDAP 使用者的預設配額。",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "預設密碼策略的 DN,用於密碼過期處理。僅當啟用了每個使用者的 LDAP 密碼變更時才能正常運作,僅 OpenLDAP 有支援。保留空白將停用密碼過期處理。",
+ "Special Attributes" : "特殊特性",
+ "Quota Field" : "容量限制欄位",
+ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "留空將以使用者的預設容量限制為準。否則,請指定 LDAP/AD 特性。",
+ "Quota Default" : "容量限制預設",
+ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "凌駕在容量限制欄位中沒有設定配額容量的 LDAP 使用者的預設配額。",
"Email Field" : "電子郵件欄位",
- "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "從 LDAP 屬性設定使用者的電子郵件。將其留空為預設行為。",
+ "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "根據 LDAP 特性設定使用者的電子郵件。留空將採預設行為。",
"User Home Folder Naming Rule" : "使用者家目錄的命名規則",
- "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "使用者名稱留空(預設值)。否則請指定 LDAP/AD 屬性。",
- "\"$home\" Placeholder Field" : "\"$home\" 佔位字串欄位",
- "$home in an external storage configuration will be replaced with the value of the specified attribute" : "外部儲存空間設定中的 $home 將會以指定屬性的值取代",
- "User Profile Attributes" : "使用者個人資料屬性",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "留空將採用使用者名稱(預設值)。否則,請指定 LDAP/AD 特性。",
+ "\"$home\" Placeholder Field" : "「$home」佔位字串欄位",
+ "$home in an external storage configuration will be replaced with the value of the specified attribute" : "外部儲存空間組態設定中的 $home 將會以指定特性的值取代",
+ "User Profile Attributes" : "使用者個人檔案特性",
"Phone Field" : "電話號碼欄位",
- "User profile Phone will be set from the specified attribute" : "使用者個人資料電話號碼將從指定的屬性設定",
+ "User profile Phone will be set from the specified attribute" : "使用者個人檔案電話號碼將根據指定的特性設定",
"Website Field" : "網站欄位",
- "User profile Website will be set from the specified attribute" : "使用者個人資料網站將從指定的屬性設定",
+ "User profile Website will be set from the specified attribute" : "使用者個人檔案網站將根據指定的特性設定",
"Address Field" : "地址欄位",
- "User profile Address will be set from the specified attribute" : "使用者個人資料地址將從指定的屬性設定",
+ "User profile Address will be set from the specified attribute" : "使用者個人檔案地址將根據指定的特性設定",
"Twitter Field" : "Twitter 欄位",
- "User profile Twitter will be set from the specified attribute" : "使用者個人資料 Twitter 將從指定的屬性設定",
- "Fediverse Field" : "Fediverse 欄位",
- "User profile Fediverse will be set from the specified attribute" : "使用者個人資料 Fediverse 將從指定的屬性設定",
- "Organisation Field" : "組織欄位",
- "User profile Organisation will be set from the specified attribute" : "使用者個人資料組織將從指定的屬性設定",
- "Role Field" : "職稱欄位",
- "User profile Role will be set from the specified attribute" : "使用者個人資料職稱將從指定的屬性設定",
- "Headline Field" : "標題欄位",
- "User profile Headline will be set from the specified attribute" : "使用者個人資料標題將從指定的屬性設定",
- "Biography Field" : "傳記欄位",
- "User profile Biography will be set from the specified attribute" : "使用者個人資料傳記將從指定的屬性設定",
+ "User profile Twitter will be set from the specified attribute" : "使用者個人檔案 Twitter 將根據指定的特性設定",
+ "Fediverse Field" : "聯邦宇宙欄位",
+ "User profile Fediverse will be set from the specified attribute" : "使用者個人檔案聯邦宇宙將根據指定的特性設定",
+ "Organisation Field" : "組織單位欄位",
+ "User profile Organisation will be set from the specified attribute" : "使用者個人檔案組織單位將根據指定的特性設定",
+ "Role Field" : "職位欄位",
+ "User profile Role will be set from the specified attribute" : "使用者個人檔案職位將根據指定的特性設定",
+ "Headline Field" : "重要經歷欄位",
+ "User profile Headline will be set from the specified attribute" : "使用者個人檔案重要經歷將根據指定的特性設定",
+ "Biography Field" : "自傳欄位",
+ "User profile Biography will be set from the specified attribute" : "使用者個人檔案自傳將根據指定的特性設定",
"Birthdate Field" : "出生日期欄位",
"User profile Date of birth will be set from the specified attribute" : "使用者個人資料的出生日期將從指定的屬性中設定",
+ "Pronouns Field" : "代名詞欄位",
+ "User profile Pronouns will be set from the specified attribute" : "使用者個人資料代名詞將從指定的屬性設定",
"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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "預設情況下,內部使用者名稱將從 UUID 屬性建立。其確保了使用者名稱是唯一且不需要轉換字元。內部使用者名稱的限制是只能使用下列字元:[a-zA-Z0-9_.@-]。其他字元會使用其 ASCII 對映或被忽略。發生碰撞時,將會加入數字。內部使用者名稱用於內部識別使用者。其也是使用者家資料夾的預設名稱。也是遠端 URL 的一部分,舉例來說,會用於所有 DAV 服務。使用此設定,預設的行為將會被覆寫。變更僅對新映射(新增)的 LDAP 使用者有效。將其留空會使用預設行為。",
- "Internal Username Attribute:" : "內部使用者名稱屬性:",
- "Override UUID detection" : "偵測覆寫 UUID",
- "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "預設情況下,UUID 屬性會自動偵測。UUID 屬性用來準確識別 LDAP 使用者及群組。此外,如果未在上方指定,內部使用者名稱會以 UUID 為基礎建立。您能覆寫設定並直接指定屬性,但一定要確保指定的屬性能被使用者及群組取得且唯一。留空則執行預設行為。變更只會對新映射(新增)的 LDAP 使用者及群組生效。",
- "UUID Attribute for Users:" : "使用者的 UUID 屬性:",
- "UUID Attribute for Groups:" : "群組的 UUID 屬性:",
- "Username-LDAP User Mapping" : "使用者-LDAP 使用者映射",
- "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "使用者名稱用於儲存並指派詮釋資料。為了精確識別並認出使用者,每個 LDAP 使用者都將會有內部使用者名稱。這需要從使用者名稱到 LDAP 使用者的映射。已建立的使用者名稱會映射到 LDAP 使用者的 UUID。另外,DN 會被快取以減少 LDAP 互動,但不會用於識別。若 DN 變更,將會找到變更。內部使用者名稱將會全面使用。清除映射將會讓到處都是未連結的項目。清除映射對設定並不敏感,其會影響到所有 LDAP 設定!不要在生產環境中清除映射,僅將其用於測試或實驗階段。",
+ "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. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "預設情況下,內部使用者名稱將根據 UUID 特性建立。這能確保使用者名稱是唯一,且不需要轉換字元。內部使用者名稱的限制是,只能使用下列字元:[a-zA-Z0-9_.@-]。其他字元會使用其 ASCII 對映取代,或是直接忽略。發生名稱碰撞時,將會加入或加大數字。內部使用者名稱用於內部識別使用者。這也是使用者家資料夾的預設名稱。也是遠端 URL 的一部分,例如,會用在所有 DAV 服務上。啟用此設定後,預設的行為會被凌駕。變更僅對新映射(新增)的 LDAP 使用者有效。將其留空會使用預設行為。",
+ "Internal Username Attribute:" : "內部使用者名稱特性:",
+ "Override UUID detection" : "凌駕 UUID 偵測",
+ "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "預設情況下,UUID 特性會自動偵測。UUID 特性用來準確識別 LDAP 使用者及群組。此外,如果未在上方指定,則內部使用者名稱會以 UUID 為基礎建立。您可以覆寫原設定,並且根據您的想法直接指定特性,但一定要確保所指定的特性能取得使用者及群組並是唯一的。留空將採取預設行為。變更只會對新映射(新增)的 LDAP 使用者及群組生效。",
+ "UUID Attribute for Users:" : "使用者的 UUID 特性:",
+ "UUID Attribute for Groups:" : "群組的 UUID 特性:",
+ "Username-LDAP User Mapping" : "使用者名稱-LDAP 使用者映射",
+ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "使用者名稱用於儲存並指派中介資料。為了精確識別並認知使用者,每個 LDAP 使用者都會有其內部使用者名稱。這需要從使用者名稱作映射到 LDAP 使用者。建立的使用者名稱會映射到 LDAP 使用者的 UUID。另外,DN 會被快取以減少 LDAP 互動,但快取不用於識別身份。若 DN 變更時,系統會發現變動。內部使用者名稱在系統中全面使用,所以一旦清除映射,會讓到處都是未連結的殘留項目。清除映射的行為並不會區分組態設定,而是會影響所有 LDAP 組態設定!請永遠不要在正式環境中清除映射,僅在測試或實驗階段使用。",
"Clear Username-LDAP User Mapping" : "清除使用者名稱-LDAP 使用者映射",
"Clear Groupname-LDAP Group Mapping" : "清除群組名稱-LDAP 群組映射",
- "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "找到無效的 LDAP 使用者或群組 UUID。請審閱您在 LDAP 專家設定中的「覆寫 UUID 偵測」設定,並使用「occ ldap:update-uuid」來更新它們。"
+ "Invalid configuration. Please have a look at the logs for further details." : "無效的組態設定。請檢查紀錄檔以取得更多詳細資訊。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index 7134706ebfc..9fe0aa64268 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -15,9 +15,15 @@ use OCA\User_LDAP\Exceptions\NoMoreResults;
use OCA\User_LDAP\Mapping\AbstractMapping;
use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\User\OfflineUser;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\HintException;
+use OCP\IAppConfig;
use OCP\IConfig;
+use OCP\IGroupManager;
use OCP\IUserManager;
+use OCP\Server;
+use OCP\User\Events\UserIdAssignedEvent;
+use OCP\Util;
use Psr\Log\LoggerInterface;
use function strlen;
use function substr;
@@ -30,10 +36,6 @@ use function substr;
class Access extends LDAPUtility {
public const UUID_ATTRIBUTES = ['entryuuid', 'nsuniqueid', 'objectguid', 'guid', 'ipauniqueid'];
- /** @var \OCA\User_LDAP\Connection */
- public $connection;
- /** @var Manager */
- public $userManager;
/**
* never ever check this var directly, always use getPagedSearchResultState
* @var ?bool
@@ -46,35 +48,21 @@ class Access extends LDAPUtility {
/** @var ?AbstractMapping */
protected $groupMapper;
- /**
- * @var \OCA\User_LDAP\Helper
- */
- private $helper;
- /** @var IConfig */
- private $config;
- /** @var IUserManager */
- private $ncUserManager;
- /** @var LoggerInterface */
- private $logger;
private string $lastCookie = '';
public function __construct(
- Connection $connection,
ILDAPWrapper $ldap,
- Manager $userManager,
- Helper $helper,
- IConfig $config,
- IUserManager $ncUserManager,
- LoggerInterface $logger
+ public Connection $connection,
+ public Manager $userManager,
+ private Helper $helper,
+ private IConfig $config,
+ private IUserManager $ncUserManager,
+ private LoggerInterface $logger,
+ private IAppConfig $appConfig,
+ private IEventDispatcher $dispatcher,
) {
parent::__construct($ldap);
- $this->connection = $connection;
- $this->userManager = $userManager;
$this->userManager->setLdapAccess($this);
- $this->helper = $helper;
- $this->config = $config;
- $this->ncUserManager = $ncUserManager;
- $this->logger = $logger;
}
/**
@@ -130,14 +118,64 @@ class Access extends LDAPUtility {
}
/**
+ * Reads several attributes for an LDAP record identified by a DN and a filter
+ * No support for ranged attributes.
+ *
+ * @param string $dn the record in question
+ * @param array $attrs the attributes that shall be retrieved
+ * if empty, just check the record's existence
+ * @param string $filter
+ * @return array|false an array of values on success or an empty
+ * array if $attr is empty, false otherwise
+ * @throws ServerNotAvailableException
+ */
+ public function readAttributes(string $dn, array $attrs, string $filter = 'objectClass=*'): array|false {
+ if (!$this->checkConnection()) {
+ $this->logger->warning(
+ 'No LDAP Connector assigned, access impossible for readAttribute.',
+ ['app' => 'user_ldap']
+ );
+ return false;
+ }
+ $cr = $this->connection->getConnectionResource();
+ $attrs = array_map(
+ fn (string $attr): string => mb_strtolower($attr, 'UTF-8'),
+ $attrs,
+ );
+
+ $values = [];
+ $record = $this->executeRead($dn, $attrs, $filter);
+ if (is_bool($record)) {
+ // when an exists request was run and it was successful, an empty
+ // array must be returned
+ return $record ? [] : false;
+ }
+
+ $result = [];
+ foreach ($attrs as $attr) {
+ $values = $this->extractAttributeValuesFromResult($record, $attr);
+ if (!empty($values)) {
+ $result[$attr] = $values;
+ }
+ }
+
+ if (!empty($result)) {
+ return $result;
+ }
+
+ $this->logger->debug('Requested attributes {attrs} not found for ' . $dn, ['app' => 'user_ldap', 'attrs' => $attrs]);
+ return false;
+ }
+
+ /**
* reads a given attribute for an LDAP record identified by a DN
*
* @param string $dn the record in question
* @param string $attr the attribute that shall be retrieved
- * if empty, just check the record's existence
+ * if empty, just check the record's existence
* @param string $filter
* @return array|false an array of values on success or an empty
- * array if $attr is empty, false otherwise
+ * array if $attr is empty, false otherwise
* @throws ServerNotAvailableException
*/
public function readAttribute(string $dn, string $attr, string $filter = 'objectClass=*') {
@@ -204,9 +242,9 @@ class Access extends LDAPUtility {
* returned data on a successful usual operation
* @throws ServerNotAvailableException
*/
- public function executeRead(string $dn, string $attribute, string $filter) {
+ public function executeRead(string $dn, string|array $attribute, string $filter) {
$dn = $this->helper->DNasBaseParameter($dn);
- $rr = @$this->invokeLDAPMethod('read', $dn, $filter, [$attribute]);
+ $rr = @$this->invokeLDAPMethod('read', $dn, $filter, (is_string($attribute) ? [$attribute] : $attribute));
if (!$this->ldap->isResource($rr)) {
if ($attribute !== '') {
//do not throw this message on userExists check, irritates
@@ -225,7 +263,7 @@ class Access extends LDAPUtility {
return false;
}
//LDAP attributes are not case sensitive
- $result = \OCP\Util::mb_array_change_key_case(
+ $result = Util::mb_array_change_key_case(
$this->invokeLDAPMethod('getAttributes', $er), MB_CASE_LOWER, 'UTF-8');
return $result;
@@ -268,20 +306,19 @@ class Access extends LDAPUtility {
* @return array If a range was detected with keys 'values', 'attributeName',
* 'attributeFull' and 'rangeHigh', otherwise empty.
*/
- public function extractRangeData($result, $attribute) {
+ public function extractRangeData(array $result, string $attribute): array {
$keys = array_keys($result);
foreach ($keys as $key) {
if ($key !== $attribute && str_starts_with((string)$key, $attribute)) {
$queryData = explode(';', (string)$key);
- if (str_starts_with($queryData[1], 'range=')) {
+ if (isset($queryData[1]) && str_starts_with($queryData[1], 'range=')) {
$high = substr($queryData[1], 1 + strpos($queryData[1], '-'));
- $data = [
+ return [
'values' => $result[$key],
'attributeName' => $queryData[0],
'attributeFull' => $key,
'rangeHigh' => $high,
];
- return $data;
}
}
}
@@ -304,10 +341,10 @@ class Access extends LDAPUtility {
$cr = $this->connection->getConnectionResource();
try {
// try PASSWD extended operation first
- return @$this->invokeLDAPMethod('exopPasswd', $userDN, '', $password) ||
- @$this->invokeLDAPMethod('modReplace', $userDN, $password);
+ return @$this->invokeLDAPMethod('exopPasswd', $userDN, '', $password)
+ || @$this->invokeLDAPMethod('modReplace', $userDN, $password);
} catch (ConstraintViolationException $e) {
- throw new HintException('Password change rejected.', \OCP\Util::getL10N('user_ldap')->t('Password change rejected. Hint: ') . $e->getMessage(), (int)$e->getCode());
+ throw new HintException('Password change rejected.', Util::getL10N('user_ldap')->t('Password change rejected. Hint: %s', $e->getMessage()), (int)$e->getCode());
}
}
@@ -401,10 +438,11 @@ class Access extends LDAPUtility {
*
* @param string $fdn the dn of the group object
* @param string $ldapName optional, the display name of the object
+ * @param bool $autoMapping Should the group be mapped if not yet mapped
* @return string|false with the name to use in Nextcloud, false on DN outside of search DN
* @throws \Exception
*/
- public function dn2groupname($fdn, $ldapName = null) {
+ public function dn2groupname($fdn, $ldapName = null, bool $autoMapping = true) {
//To avoid bypassing the base DN settings under certain circumstances
//with the group support, check whether the provided DN matches one of
//the given Bases
@@ -412,7 +450,7 @@ class Access extends LDAPUtility {
return false;
}
- return $this->dn2ocname($fdn, $ldapName, false);
+ return $this->dn2ocname($fdn, $ldapName, false, autoMapping:$autoMapping);
}
/**
@@ -423,7 +461,7 @@ class Access extends LDAPUtility {
* @return string|false with with the name to use in Nextcloud
* @throws \Exception
*/
- public function dn2username($fdn, $ldapName = null) {
+ public function dn2username($fdn) {
//To avoid bypassing the base DN settings under certain circumstances
//with the group support, check whether the provided DN matches one of
//the given Bases
@@ -431,7 +469,7 @@ class Access extends LDAPUtility {
return false;
}
- return $this->dn2ocname($fdn, $ldapName, true);
+ return $this->dn2ocname($fdn, null, true);
}
/**
@@ -442,10 +480,11 @@ class Access extends LDAPUtility {
* @param bool $isUser optional, whether it is a user object (otherwise group assumed)
* @param bool|null $newlyMapped
* @param array|null $record
+ * @param bool $autoMapping Should the group be mapped if not yet mapped
* @return false|string with with the name to use in Nextcloud
* @throws \Exception
*/
- public function dn2ocname($fdn, $ldapName = null, $isUser = true, &$newlyMapped = null, ?array $record = null) {
+ public function dn2ocname($fdn, $ldapName = null, $isUser = true, &$newlyMapped = null, ?array $record = null, bool $autoMapping = true) {
static $intermediates = [];
if (isset($intermediates[($isUser ? 'user-' : 'group-') . $fdn])) {
return false; // is a known intermediate
@@ -454,12 +493,8 @@ class Access extends LDAPUtility {
$newlyMapped = false;
if ($isUser) {
$mapper = $this->getUserMapper();
- $nameAttribute = $this->connection->ldapUserDisplayName;
- $filter = $this->connection->ldapUserFilter;
} else {
$mapper = $this->getGroupMapper();
- $nameAttribute = $this->connection->ldapGroupDisplayName;
- $filter = $this->connection->ldapGroupFilter;
}
//let's try to retrieve the Nextcloud name from the mappings table
@@ -468,6 +503,41 @@ class Access extends LDAPUtility {
return $ncName;
}
+ if (!$autoMapping) {
+ /* If no auto mapping, stop there */
+ return false;
+ }
+
+ if ($isUser) {
+ $nameAttribute = strtolower($this->connection->ldapUserDisplayName);
+ $filter = $this->connection->ldapUserFilter;
+ $uuidAttr = 'ldapUuidUserAttribute';
+ $uuidOverride = $this->connection->ldapExpertUUIDUserAttr;
+ $usernameAttribute = strtolower($this->connection->ldapExpertUsernameAttr);
+ $attributesToRead = [$nameAttribute,$usernameAttribute];
+ // TODO fetch also display name attributes and cache them if the user is mapped
+ } else {
+ $nameAttribute = strtolower($this->connection->ldapGroupDisplayName);
+ $filter = $this->connection->ldapGroupFilter;
+ $uuidAttr = 'ldapUuidGroupAttribute';
+ $uuidOverride = $this->connection->ldapExpertUUIDGroupAttr;
+ $attributesToRead = [$nameAttribute];
+ }
+
+ if ($this->detectUuidAttribute($fdn, $isUser, false, $record)) {
+ $attributesToRead[] = $this->connection->$uuidAttr;
+ }
+
+ if ($record === null) {
+ /* No record was passed, fetch it */
+ $record = $this->readAttributes($fdn, $attributesToRead, $filter);
+ if ($record === false) {
+ $this->logger->debug('Cannot read attributes for ' . $fdn . '. Skipping.', ['filter' => $filter]);
+ $intermediates[($isUser ? 'user-' : 'group-') . $fdn] = true;
+ return false;
+ }
+ }
+
//second try: get the UUID and check if it is known. Then, update the DN and return the name.
$uuid = $this->getUUID($fdn, $isUser, $record);
if (is_string($uuid)) {
@@ -482,20 +552,9 @@ class Access extends LDAPUtility {
return false;
}
- if (is_null($ldapName)) {
- $ldapName = $this->readAttribute($fdn, $nameAttribute, $filter);
- if (!isset($ldapName[0]) || empty($ldapName[0])) {
- $this->logger->debug('No or empty name for ' . $fdn . ' with filter ' . $filter . '.', ['app' => 'user_ldap']);
- $intermediates[($isUser ? 'user-' : 'group-') . $fdn] = true;
- return false;
- }
- $ldapName = $ldapName[0];
- }
-
if ($isUser) {
- $usernameAttribute = (string)$this->connection->ldapExpertUsernameAttr;
if ($usernameAttribute !== '') {
- $username = $this->readAttribute($fdn, $usernameAttribute);
+ $username = $record[$usernameAttribute];
if (!isset($username[0]) || empty($username[0])) {
$this->logger->debug('No or empty username (' . $usernameAttribute . ') for ' . $fdn . '.', ['app' => 'user_ldap']);
return false;
@@ -517,6 +576,15 @@ class Access extends LDAPUtility {
return false;
}
} else {
+ if (is_null($ldapName)) {
+ $ldapName = $record[$nameAttribute];
+ if (!isset($ldapName[0]) || empty($ldapName[0])) {
+ $this->logger->debug('No or empty name for ' . $fdn . ' with filter ' . $filter . '.', ['app' => 'user_ldap']);
+ $intermediates['group-' . $fdn] = true;
+ return false;
+ }
+ $ldapName = $ldapName[0];
+ }
$intName = $this->sanitizeGroupIDCandidate($ldapName);
}
@@ -528,12 +596,13 @@ class Access extends LDAPUtility {
$this->connection->setConfiguration(['ldapCacheTTL' => 0]);
if ($intName !== ''
&& (($isUser && !$this->ncUserManager->userExists($intName))
- || (!$isUser && !\OC::$server->getGroupManager()->groupExists($intName))
+ || (!$isUser && !Server::get(IGroupManager::class)->groupExists($intName))
)
) {
$this->connection->setConfiguration(['ldapCacheTTL' => $originalTTL]);
$newlyMapped = $this->mapAndAnnounceIfApplicable($mapper, $fdn, $intName, $uuid, $isUser);
if ($newlyMapped) {
+ $this->logger->debug('Mapped {fdn} as {name}', ['fdn' => $fdn,'name' => $intName]);
return $intName;
}
}
@@ -548,7 +617,6 @@ class Access extends LDAPUtility {
'fdn' => $fdn,
'altName' => $altName,
'intName' => $intName,
- 'app' => 'user_ldap',
]
);
$newlyMapped = true;
@@ -566,13 +634,16 @@ class Access extends LDAPUtility {
string $fdn,
string $name,
string $uuid,
- bool $isUser
+ bool $isUser,
): bool {
if ($mapper->map($fdn, $name, $uuid)) {
- if ($this->ncUserManager instanceof PublicEmitter && $isUser) {
+ if ($isUser) {
$this->cacheUserExists($name);
- $this->ncUserManager->emit('\OC\User', 'assignedUserId', [$name]);
- } elseif (!$isUser) {
+ $this->dispatcher->dispatchTyped(new UserIdAssignedEvent($name));
+ if ($this->ncUserManager instanceof PublicEmitter) {
+ $this->ncUserManager->emit('\OC\User', 'assignedUserId', [$name]);
+ }
+ } else {
$this->cacheGroupExists($name);
}
return true;
@@ -673,6 +744,7 @@ class Access extends LDAPUtility {
*/
public function cacheUserExists(string $ocName): void {
$this->connection->writeToCache('userExists' . $ocName, true);
+ $this->connection->writeToCache('userExistsOnLDAP' . $ocName, true);
}
/**
@@ -742,7 +814,7 @@ class Access extends LDAPUtility {
* "Developers"
*/
private function _createAltInternalOwnCloudNameForGroups(string $name) {
- $usedNames = $this->getGroupMapper()->getNamesBySearch($name, "", '_%');
+ $usedNames = $this->getGroupMapper()->getNamesBySearch($name, '', '_%');
if (count($usedNames) === 0) {
$lastNo = 1; //will become name_2
} else {
@@ -758,7 +830,7 @@ class Access extends LDAPUtility {
// Check to be really sure it is unique
// while loop is just a precaution. If a name is not generated within
// 20 attempts, something else is very wrong. Avoids infinite loop.
- if (!\OC::$server->getGroupManager()->groupExists($altName)) {
+ if (!Server::get(IGroupManager::class)->groupExists($altName)) {
return $altName;
}
$altName = $name . '_' . ($lastNo + $attempts);
@@ -822,8 +894,7 @@ class Access extends LDAPUtility {
$ldapRecords = $this->searchUsers($filter, $attr, $limit, $offset);
$recordsToUpdate = $ldapRecords;
if (!$forceApplyAttributes) {
- $isBackgroundJobModeAjax = $this->config
- ->getAppValue('core', 'backgroundjobs_mode', 'ajax') === 'ajax';
+ $isBackgroundJobModeAjax = $this->appConfig->getValueString('core', 'backgroundjobs_mode', 'ajax') === 'ajax';
$listOfDNs = array_reduce($ldapRecords, function ($listOfDNs, $entry) {
$listOfDNs[] = $entry['dn'][0];
return $listOfDNs;
@@ -887,22 +958,6 @@ class Access extends LDAPUtility {
}
$groupRecords = $this->searchGroups($filter, $attr, $limit, $offset);
- $listOfDNs = array_reduce($groupRecords, function ($listOfDNs, $entry) {
- $listOfDNs[] = $entry['dn'][0];
- return $listOfDNs;
- }, []);
- $idsByDn = $this->getGroupMapper()->getListOfIdsByDn($listOfDNs);
-
- array_walk($groupRecords, function (array $record) use ($idsByDn) {
- $newlyMapped = false;
- $gid = $idsByDn[$record['dn'][0]] ?? null;
- if ($gid === null) {
- $gid = $this->dn2ocname($record['dn'][0], null, false, $newlyMapped, $record);
- }
- if (!$newlyMapped && is_string($gid)) {
- $this->cacheGroupExists($gid);
- }
- });
$listOfGroups = $this->fetchList($groupRecords, $this->manyAttributes($attr));
$this->connection->writeToCache($cacheKey, $listOfGroups);
return $listOfGroups;
@@ -1049,7 +1104,7 @@ class Access extends LDAPUtility {
* @param int|null $limit optional, maximum results to be counted
* @param int|null $offset optional, a starting point
* @return array|false array with the search result as first value and pagedSearchOK as
- * second | false if not successful
+ * second | false if not successful
* @throws ServerNotAvailableException
*/
private function executeSearch(
@@ -1057,7 +1112,7 @@ class Access extends LDAPUtility {
string $base,
?array &$attr,
?int $pageSize,
- ?int $offset
+ ?int $offset,
) {
// See if we have a resource, in case not cancel with message
$cr = $this->connection->getConnectionResource();
@@ -1088,7 +1143,7 @@ class Access extends LDAPUtility {
* @param int $limit maximum results to be counted
* @param bool $pagedSearchOK whether a paged search has been executed
* @param bool $skipHandling required for paged search when cookies to
- * prior results need to be gained
+ * prior results need to be gained
* @return bool cookie validity, true if we have more pages, false otherwise.
* @throws ServerNotAvailableException
*/
@@ -1097,7 +1152,7 @@ class Access extends LDAPUtility {
int $foundItems,
int $limit,
bool $pagedSearchOK,
- bool $skipHandling
+ bool $skipHandling,
): bool {
$cookie = '';
if ($pagedSearchOK) {
@@ -1111,7 +1166,7 @@ class Access extends LDAPUtility {
return false;
}
// if count is bigger, then the server does not support
- // paged search. Instead, he did a normal search. We set a
+ // paged search. Instead, they did a normal search. We set a
// flag here, so the callee knows how to deal with it.
if ($foundItems <= $limit) {
$this->pagedSearchedSuccessful = true;
@@ -1138,11 +1193,11 @@ class Access extends LDAPUtility {
* @param string $filter the LDAP filter for the search
* @param array $bases an array containing the LDAP subtree(s) that shall be searched
* @param ?string[] $attr optional, array, one or more attributes that shall be
- * retrieved. Results will according to the order in the array.
+ * retrieved. Results will according to the order in the array.
* @param int $limit maximum results to be counted, 0 means no limit
* @param int $offset a starting point, defaults to 0
* @param bool $skipHandling indicates whether the pages search operation is
- * completed
+ * completed
* @return int|false Integer or false if the search could not be initialized
* @throws ServerNotAvailableException
*/
@@ -1152,7 +1207,7 @@ class Access extends LDAPUtility {
?array $attr = null,
int $limit = 0,
int $offset = 0,
- bool $skipHandling = false
+ bool $skipHandling = false,
) {
$this->logger->debug('Count filter: {filter}', [
'app' => 'user_ldap',
@@ -1217,7 +1272,7 @@ class Access extends LDAPUtility {
?array $attr = null,
?int $limit = null,
?int $offset = null,
- bool $skipHandling = false
+ bool $skipHandling = false,
): array {
$limitPerPage = (int)$this->connection->ldapPagingSize;
if (!is_null($limit) && $limit < $limitPerPage && $limit > 0) {
@@ -1268,7 +1323,7 @@ class Access extends LDAPUtility {
if (!is_array($item)) {
continue;
}
- $item = \OCP\Util::mb_array_change_key_case($item, MB_CASE_LOWER, 'UTF-8');
+ $item = Util::mb_array_change_key_case($item, MB_CASE_LOWER, 'UTF-8');
foreach ($attr as $key) {
if (isset($item[$key])) {
if (is_array($item[$key]) && isset($item[$key]['count'])) {
@@ -1388,7 +1443,7 @@ class Access extends LDAPUtility {
*
* @param string[] $filters the filters to connect
* @return string the combined filter
- * Combines Filter arguments with OR
+ * Combines Filter arguments with OR
*/
public function combineFilterWithOr($filters) {
return $this->combineFilter($filters, '|');
@@ -1443,7 +1498,7 @@ class Access extends LDAPUtility {
*
* @param string $search the search term
* @param string[]|null|'' $searchAttributes needs to have at least two attributes,
- * otherwise it does not make sense :)
+ * otherwise it does not make sense :)
* @return string the final filter part to use in LDAP searches
* @throws DomainException
*/
@@ -1471,7 +1526,7 @@ class Access extends LDAPUtility {
* @param string $search the search term
* @param string[]|null|'' $searchAttributes
* @param string $fallbackAttribute a fallback attribute in case the user
- * did not define search attributes. Typically the display name attribute.
+ * did not define search attributes. Typically the display name attribute.
* @return string the final filter part to use in LDAP searches
*/
private function getFilterPartForSearch(string $search, $searchAttributes, string $fallbackAttribute): string {
@@ -1517,7 +1572,7 @@ class Access extends LDAPUtility {
* a *
*/
private function prepareSearchTerm(string $term): string {
- $config = \OC::$server->getConfig();
+ $config = Server::get(IConfig::class);
$allowEnum = $config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes');
@@ -1756,8 +1811,8 @@ class Access extends LDAPUtility {
* user. Instead we write a log message.
*/
$this->logger->info(
- 'Passed string does not resemble a valid GUID. Known UUID ' .
- '({uuid}) probably does not match UUID configuration.',
+ 'Passed string does not resemble a valid GUID. Known UUID '
+ . '({uuid}) probably does not match UUID configuration.',
['app' => 'user_ldap', 'uuid' => $guid]
);
return $guid;
@@ -1922,7 +1977,7 @@ class Access extends LDAPUtility {
string $base,
?array $attr,
int $pageSize,
- int $offset
+ int $offset,
): array {
$pagedSearchOK = false;
if ($pageSize !== 0) {
diff --git a/apps/user_ldap/lib/AccessFactory.php b/apps/user_ldap/lib/AccessFactory.php
index 2e5ee28d6d5..da114c467a7 100644
--- a/apps/user_ldap/lib/AccessFactory.php
+++ b/apps/user_ldap/lib/AccessFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,41 +7,38 @@
namespace OCA\User_LDAP;
use OCA\User_LDAP\User\Manager;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IUserManager;
use OCP\Server;
use Psr\Log\LoggerInterface;
class AccessFactory {
- private ILDAPWrapper $ldap;
- private Helper $helper;
- private IConfig $config;
- private IUserManager $ncUserManager;
- private LoggerInterface $logger;
public function __construct(
- ILDAPWrapper $ldap,
- Helper $helper,
- IConfig $config,
- IUserManager $ncUserManager,
- LoggerInterface $logger) {
- $this->ldap = $ldap;
- $this->helper = $helper;
- $this->config = $config;
- $this->ncUserManager = $ncUserManager;
- $this->logger = $logger;
+ private ILDAPWrapper $ldap,
+ private Helper $helper,
+ private IConfig $config,
+ private IAppConfig $appConfig,
+ private IUserManager $ncUserManager,
+ private LoggerInterface $logger,
+ private IEventDispatcher $dispatcher,
+ ) {
}
public function get(Connection $connection): Access {
/* Each Access instance gets its own Manager instance, see OCA\User_LDAP\AppInfo\Application::register() */
return new Access(
- $connection,
$this->ldap,
+ $connection,
Server::get(Manager::class),
$this->helper,
$this->config,
$this->ncUserManager,
- $this->logger
+ $this->logger,
+ $this->appConfig,
+ $this->dispatcher,
);
}
}
diff --git a/apps/user_ldap/lib/AppInfo/Application.php b/apps/user_ldap/lib/AppInfo/Application.php
index 400315442bb..70b7920f7ab 100644
--- a/apps/user_ldap/lib/AppInfo/Application.php
+++ b/apps/user_ldap/lib/AppInfo/Application.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -10,7 +11,6 @@ use OCA\Files_External\Service\BackendService;
use OCA\User_LDAP\Controller\RenewPasswordController;
use OCA\User_LDAP\Events\GroupBackendRegistered;
use OCA\User_LDAP\Events\UserBackendRegistered;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\Group_Proxy;
use OCA\User_LDAP\GroupPluginManager;
use OCA\User_LDAP\Handler\ExtStorageConfigHandler;
@@ -40,6 +40,7 @@ use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
use OCP\Share\IManager as IShareManager;
use OCP\User\Events\PostLoginEvent;
+use OCP\Util;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
@@ -84,7 +85,6 @@ class Application extends App implements IBootstrap {
function (ContainerInterface $c) {
return new Manager(
$c->get(IConfig::class),
- $c->get(FilesystemHelper::class),
$c->get(LoggerInterface::class),
$c->get(IAvatarManager::class),
$c->get(Image::class),
@@ -106,17 +106,18 @@ class Application extends App implements IBootstrap {
INotificationManager $notificationManager,
IAppContainer $appContainer,
IEventDispatcher $dispatcher,
+ IUserManager $userManager,
IGroupManager $groupManager,
User_Proxy $userBackend,
Group_Proxy $groupBackend,
- Helper $helper
- ) {
+ Helper $helper,
+ ): void {
$configPrefixes = $helper->getServerConfigurationPrefixes(true);
if (count($configPrefixes) > 0) {
$userPluginManager = $appContainer->get(UserPluginManager::class);
$groupPluginManager = $appContainer->get(GroupPluginManager::class);
- \OC_User::useBackend($userBackend);
+ $userManager->registerBackend($userBackend);
$groupManager->addBackend($groupBackend);
$userBackendRegisteredEvent = new UserBackendRegistered($userBackend, $userPluginManager);
@@ -129,7 +130,7 @@ class Application extends App implements IBootstrap {
$context->injectFn(Closure::fromCallable([$this, 'registerBackendDependents']));
- \OCP\Util::connectHook(
+ Util::connectHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',
'\OCA\User_LDAP\Helper',
@@ -140,7 +141,7 @@ class Application extends App implements IBootstrap {
private function registerBackendDependents(IAppContainer $appContainer, IEventDispatcher $dispatcher): void {
$dispatcher->addListener(
'OCA\\Files_External::loadAdditionalBackends',
- function () use ($appContainer) {
+ function () use ($appContainer): void {
$storagesBackendService = $appContainer->get(BackendService::class);
$storagesBackendService->registerConfigHandler('home', function () use ($appContainer) {
return $appContainer->get(ExtStorageConfigHandler::class);
diff --git a/apps/user_ldap/lib/BackendUtility.php b/apps/user_ldap/lib/BackendUtility.php
index 0e797abb8dc..88d7311cde0 100644
--- a/apps/user_ldap/lib/BackendUtility.php
+++ b/apps/user_ldap/lib/BackendUtility.php
@@ -8,13 +8,12 @@
namespace OCA\User_LDAP;
abstract class BackendUtility {
- protected $access;
-
/**
* constructor, make sure the subclasses call this one!
* @param Access $access an instance of Access for LDAP interaction
*/
- public function __construct(Access $access) {
- $this->access = $access;
+ public function __construct(
+ protected Access $access,
+ ) {
}
}
diff --git a/apps/user_ldap/lib/Command/CheckGroup.php b/apps/user_ldap/lib/Command/CheckGroup.php
index c376d0f890a..9c7ccb9d3b3 100644
--- a/apps/user_ldap/lib/Command/CheckGroup.php
+++ b/apps/user_ldap/lib/Command/CheckGroup.php
@@ -99,25 +99,25 @@ class CheckGroup extends Command {
throw new \Exception('The given group is not a recognized LDAP group.');
} catch (\Exception $e) {
- $output->writeln('<error>' . $e->getMessage(). '</error>');
+ $output->writeln('<error>' . $e->getMessage() . '</error>');
return self::FAILURE;
}
}
public function onGroupCreatedEvent(GroupCreatedEvent $event, OutputInterface $output): void {
- $output->writeln('<info>The group '.$event->getGroup()->getGID().' was added to Nextcloud with '.$event->getGroup()->count().' users</info>');
+ $output->writeln('<info>The group ' . $event->getGroup()->getGID() . ' was added to Nextcloud with ' . $event->getGroup()->count() . ' users</info>');
}
public function onUserAddedEvent(UserAddedEvent $event, OutputInterface $output): void {
$user = $event->getUser();
$group = $event->getGroup();
- $output->writeln('<info>The user '.$user->getUID().' was added to group '.$group->getGID().'</info>');
+ $output->writeln('<info>The user ' . $user->getUID() . ' was added to group ' . $group->getGID() . '</info>');
}
public function onUserRemovedEvent(UserRemovedEvent $event, OutputInterface $output): void {
$user = $event->getUser();
$group = $event->getGroup();
- $output->writeln('<info>The user '.$user->getUID().' was removed from group '.$group->getGID().'</info>');
+ $output->writeln('<info>The user ' . $user->getUID() . ' was removed from group ' . $group->getGID() . '</info>');
}
/**
diff --git a/apps/user_ldap/lib/Command/CheckUser.php b/apps/user_ldap/lib/Command/CheckUser.php
index ebb416c24a6..8bb26ce3d0e 100644
--- a/apps/user_ldap/lib/Command/CheckUser.php
+++ b/apps/user_ldap/lib/Command/CheckUser.php
@@ -18,15 +18,12 @@ use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class CheckUser extends Command {
- protected User_Proxy $backend;
-
public function __construct(
- User_Proxy $uBackend,
+ protected User_Proxy $backend,
protected Helper $helper,
protected DeletedUsersIndex $dui,
protected UserMapping $mapping,
) {
- $this->backend = $uBackend;
parent::__construct();
}
@@ -84,7 +81,7 @@ class CheckUser extends Command {
throw new \Exception('The given user is not a recognized LDAP user.');
} catch (\Exception $e) {
- $output->writeln('<error>' . $e->getMessage(). '</error>');
+ $output->writeln('<error>' . $e->getMessage() . '</error>');
return self::FAILURE;
}
}
diff --git a/apps/user_ldap/lib/Command/PromoteGroup.php b/apps/user_ldap/lib/Command/PromoteGroup.php
index bb5362e4700..b203a910b14 100644
--- a/apps/user_ldap/lib/Command/PromoteGroup.php
+++ b/apps/user_ldap/lib/Command/PromoteGroup.php
@@ -22,7 +22,7 @@ class PromoteGroup extends Command {
public function __construct(
private IGroupManager $groupManager,
- private Group_Proxy $backend
+ private Group_Proxy $backend,
) {
parent::__construct();
}
diff --git a/apps/user_ldap/lib/Command/ResetGroup.php b/apps/user_ldap/lib/Command/ResetGroup.php
index 89d3f31f69d..5833ca980f2 100644
--- a/apps/user_ldap/lib/Command/ResetGroup.php
+++ b/apps/user_ldap/lib/Command/ResetGroup.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Command/ResetUser.php b/apps/user_ldap/lib/Command/ResetUser.php
index 58dfbf68519..1409806e4ac 100644
--- a/apps/user_ldap/lib/Command/ResetUser.php
+++ b/apps/user_ldap/lib/Command/ResetUser.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Command/Search.php b/apps/user_ldap/lib/Command/Search.php
index 4886e0c7638..85906b20e9a 100644
--- a/apps/user_ldap/lib/Command/Search.php
+++ b/apps/user_ldap/lib/Command/Search.php
@@ -12,6 +12,7 @@ use OCA\User_LDAP\Helper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\User_Proxy;
use OCP\IConfig;
+use OCP\Server;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
@@ -81,7 +82,7 @@ class Search extends Command {
}
protected function execute(InputInterface $input, OutputInterface $output): int {
- $helper = new Helper($this->ocConfig, \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
$configPrefixes = $helper->getServerConfigurationPrefixes(true);
$ldapWrapper = new LDAP();
@@ -106,7 +107,7 @@ class Search extends Command {
$result = $proxy->$getMethod($input->getArgument('search'), $limit, $offset);
foreach ($result as $id => $name) {
- $line = $name . ($printID ? ' ('.$id.')' : '');
+ $line = $name . ($printID ? ' (' . $id . ')' : '');
$output->writeln($line);
}
return self::SUCCESS;
diff --git a/apps/user_ldap/lib/Command/SetConfig.php b/apps/user_ldap/lib/Command/SetConfig.php
index 66a79d8c439..7e9efcf34d0 100644
--- a/apps/user_ldap/lib/Command/SetConfig.php
+++ b/apps/user_ldap/lib/Command/SetConfig.php
@@ -11,6 +11,7 @@ use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\ConnectionFactory;
use OCA\User_LDAP\Helper;
use OCA\User_LDAP\LDAP;
+use OCP\Server;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -40,11 +41,11 @@ class SetConfig extends Command {
}
protected function execute(InputInterface $input, OutputInterface $output): int {
- $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
$availableConfigs = $helper->getServerConfigurationPrefixes();
$configID = $input->getArgument('configID');
if (!in_array($configID, $availableConfigs)) {
- $output->writeln("Invalid configID");
+ $output->writeln('Invalid configID');
return self::FAILURE;
}
diff --git a/apps/user_ldap/lib/Command/ShowConfig.php b/apps/user_ldap/lib/Command/ShowConfig.php
index 933d1129d42..fa021192ac4 100644
--- a/apps/user_ldap/lib/Command/ShowConfig.php
+++ b/apps/user_ldap/lib/Command/ShowConfig.php
@@ -54,7 +54,7 @@ class ShowConfig extends Base {
if (!is_null($configID)) {
$configIDs[] = $configID;
if (!in_array($configIDs[0], $availableConfigs)) {
- $output->writeln("Invalid configID");
+ $output->writeln('Invalid configID');
return self::FAILURE;
}
} else {
diff --git a/apps/user_ldap/lib/Command/TestUserSettings.php b/apps/user_ldap/lib/Command/TestUserSettings.php
new file mode 100644
index 00000000000..12690158f98
--- /dev/null
+++ b/apps/user_ldap/lib/Command/TestUserSettings.php
@@ -0,0 +1,248 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCA\User_LDAP\Command;
+
+use OCA\User_LDAP\Group_Proxy;
+use OCA\User_LDAP\Helper;
+use OCA\User_LDAP\Mapping\GroupMapping;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\User\DeletedUsersIndex;
+use OCA\User_LDAP\User_Proxy;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class TestUserSettings extends Command {
+ public function __construct(
+ protected User_Proxy $backend,
+ protected Group_Proxy $groupBackend,
+ protected Helper $helper,
+ protected DeletedUsersIndex $dui,
+ protected UserMapping $mapping,
+ protected GroupMapping $groupMapping,
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('ldap:test-user-settings')
+ ->setDescription('Runs tests and show information about user related LDAP settings')
+ ->addArgument(
+ 'user',
+ InputArgument::REQUIRED,
+ 'the user name as used in Nextcloud, or the LDAP DN'
+ )
+ ->addOption(
+ 'group',
+ 'g',
+ InputOption::VALUE_REQUIRED,
+ 'A group DN to check if the user is a member or not'
+ )
+ ->addOption(
+ 'clearcache',
+ null,
+ InputOption::VALUE_NONE,
+ 'Clear the cache of the LDAP connection before the beginning of tests'
+ )
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int {
+ try {
+ $uid = $input->getArgument('user');
+ $access = $this->backend->getLDAPAccess($uid);
+ $connection = $access->getConnection();
+ if ($input->getOption('clearcache')) {
+ $connection->clearCache();
+ }
+ $configPrefix = $connection->getConfigPrefix();
+ $knownDn = '';
+ if ($access->stringResemblesDN($uid)) {
+ $knownDn = $uid;
+ $username = $access->dn2username($uid);
+ if ($username !== false) {
+ $uid = $username;
+ }
+ }
+
+ $dn = $this->mapping->getDNByName($uid);
+ if ($dn !== false) {
+ $output->writeln("User <info>$dn</info> is mapped with account name <info>$uid</info>.");
+ $uuid = $this->mapping->getUUIDByDN($dn);
+ $output->writeln("Known UUID is <info>$uuid</info>.");
+ if ($knownDn === '') {
+ $knownDn = $dn;
+ }
+ } else {
+ $output->writeln("User <info>$uid</info> is not mapped.");
+ }
+
+ if ($knownDn === '') {
+ return self::SUCCESS;
+ }
+
+ if (!$access->isDNPartOfBase($knownDn, $access->getConnection()->ldapBaseUsers)) {
+ $output->writeln(
+ "User <info>$knownDn</info> is not in one of the configured user bases: <info>"
+ . implode(',', $access->getConnection()->ldapBaseUsers)
+ . '</info>.'
+ );
+ }
+
+ $output->writeln("Configuration prefix is <info>$configPrefix</info>");
+ $output->writeln('');
+
+ $attributeNames = [
+ 'ldapBase',
+ 'ldapBaseUsers',
+ 'ldapExpertUsernameAttr',
+ 'ldapUuidUserAttribute',
+ 'ldapExpertUUIDUserAttr',
+ 'ldapQuotaAttribute',
+ 'ldapEmailAttribute',
+ 'ldapUserDisplayName',
+ 'ldapUserDisplayName2',
+ 'ldapExtStorageHomeAttribute',
+ 'ldapAttributePhone',
+ 'ldapAttributeWebsite',
+ 'ldapAttributeAddress',
+ 'ldapAttributeTwitter',
+ 'ldapAttributeFediverse',
+ 'ldapAttributeOrganisation',
+ 'ldapAttributeRole',
+ 'ldapAttributeHeadline',
+ 'ldapAttributeBiography',
+ 'ldapAttributeBirthDate',
+ 'ldapAttributePronouns',
+ 'ldapGidNumber',
+ 'hasGidNumber',
+ ];
+ $output->writeln('Attributes set in configuration:');
+ foreach ($attributeNames as $attributeName) {
+ if (($connection->$attributeName !== '') && ($connection->$attributeName !== [])) {
+ if (\is_string($connection->$attributeName)) {
+ $output->writeln("- $attributeName: <info>" . $connection->$attributeName . '</info>');
+ } else {
+ $output->writeln("- $attributeName: <info>" . \json_encode($connection->$attributeName) . '</info>');
+ }
+ }
+ }
+
+ $filter = $connection->ldapUserFilter;
+ $attrs = $access->userManager->getAttributes(true);
+ $attrs[] = strtolower($connection->ldapExpertUsernameAttr);
+ if ($connection->ldapUuidUserAttribute !== 'auto') {
+ $attrs[] = strtolower($connection->ldapUuidUserAttribute);
+ }
+ if ($connection->hasGidNumber) {
+ $attrs[] = strtolower($connection->ldapGidNumber);
+ }
+ $attrs[] = 'memberof';
+ $attrs = array_values(array_unique($attrs));
+ $attributes = $access->readAttributes($knownDn, $attrs, $filter);
+
+ if ($attributes === false) {
+ $output->writeln(
+ "LDAP read on <info>$knownDn</info> with filter <info>$filter</info> failed."
+ );
+ return self::FAILURE;
+ }
+
+ $output->writeln("Attributes fetched from LDAP using filter <info>$filter</info>:");
+ foreach ($attributes as $attribute => $value) {
+ $output->writeln(
+ "- $attribute: <info>" . json_encode($value) . '</info>'
+ );
+ }
+
+ $uuid = $access->getUUID($knownDn);
+ if ($connection->ldapUuidUserAttribute === 'auto') {
+ $output->writeln('<error>Failed to detect UUID attribute</error>');
+ } else {
+ $output->writeln('Detected UUID attribute: <info>' . $connection->ldapUuidUserAttribute . '</info>');
+ }
+ if ($uuid === false) {
+ $output->writeln("<error>Failed to find UUID for $knownDn</error>");
+ } else {
+ $output->writeln("UUID for <info>$knownDn</info>: <info>$uuid</info>");
+ }
+
+ $groupLdapInstance = $this->groupBackend->getBackend($configPrefix);
+
+ $output->writeln('');
+ $output->writeln('Group information:');
+
+ $attributeNames = [
+ 'ldapBaseGroups',
+ 'ldapDynamicGroupMemberURL',
+ 'ldapGroupFilter',
+ 'ldapGroupMemberAssocAttr',
+ ];
+ $output->writeln('Configuration:');
+ foreach ($attributeNames as $attributeName) {
+ if ($connection->$attributeName !== '') {
+ $output->writeln("- $attributeName: <info>" . $connection->$attributeName . '</info>');
+ }
+ }
+
+ $primaryGroup = $groupLdapInstance->getUserPrimaryGroup($knownDn);
+ $output->writeln('Primary group: <info>' . ($primaryGroup !== false? $primaryGroup:'') . '</info>');
+
+ $groupByGid = $groupLdapInstance->getUserGroupByGid($knownDn);
+ $output->writeln('Group from gidNumber: <info>' . ($groupByGid !== false? $groupByGid:'') . '</info>');
+
+ $groups = $groupLdapInstance->getUserGroups($uid);
+ $output->writeln('All known groups: <info>' . json_encode($groups) . '</info>');
+
+ $memberOfUsed = ((int)$access->connection->hasMemberOfFilterSupport === 1
+ && (int)$access->connection->useMemberOfToDetectMembership === 1);
+
+ $output->writeln('MemberOf usage: <info>' . ($memberOfUsed ? 'on' : 'off') . '</info> (' . $access->connection->hasMemberOfFilterSupport . ',' . $access->connection->useMemberOfToDetectMembership . ')');
+
+ $gid = (string)$input->getOption('group');
+ if ($gid === '') {
+ return self::SUCCESS;
+ }
+
+ $output->writeln('');
+ $output->writeln("Group $gid:");
+ $knownGroupDn = '';
+ if ($access->stringResemblesDN($gid)) {
+ $knownGroupDn = $gid;
+ $groupname = $access->dn2groupname($gid);
+ if ($groupname !== false) {
+ $gid = $groupname;
+ }
+ }
+
+ $groupDn = $this->groupMapping->getDNByName($gid);
+ if ($groupDn !== false) {
+ $output->writeln("Group <info>$groupDn</info> is mapped with name <info>$gid</info>.");
+ $groupUuid = $this->groupMapping->getUUIDByDN($groupDn);
+ $output->writeln("Known UUID is <info>$groupUuid</info>.");
+ if ($knownGroupDn === '') {
+ $knownGroupDn = $groupDn;
+ }
+ } else {
+ $output->writeln("Group <info>$gid</info> is not mapped.");
+ }
+
+ $members = $groupLdapInstance->usersInGroup($gid);
+ $output->writeln('Members: <info>' . json_encode($members) . '</info>');
+
+ return self::SUCCESS;
+
+ } catch (\Exception $e) {
+ $output->writeln('<error>' . $e->getMessage() . '</error>');
+ return self::FAILURE;
+ }
+ }
+}
diff --git a/apps/user_ldap/lib/Command/UpdateUUID.php b/apps/user_ldap/lib/Command/UpdateUUID.php
index acf4acbe7d5..93dcc37bada 100644
--- a/apps/user_ldap/lib/Command/UpdateUUID.php
+++ b/apps/user_ldap/lib/Command/UpdateUUID.php
@@ -266,7 +266,7 @@ class UpdateUUID extends Command {
protected function handleMappingBasedUpdates(bool $invalidatedOnly): \Generator {
$limit = 1000;
- /** @var AbstractMapping $mapping*/
+ /** @var AbstractMapping $mapping */
foreach ([$this->userMapping, $this->groupMapping] as $mapping) {
$offset = 0;
do {
diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php
index 612a46d618e..b4a5b847204 100644
--- a/apps/user_ldap/lib/Configuration.php
+++ b/apps/user_ldap/lib/Configuration.php
@@ -7,6 +7,8 @@
*/
namespace OCA\User_LDAP;
+use OCP\IConfig;
+use OCP\Server;
use Psr\Log\LoggerInterface;
/**
@@ -80,6 +82,8 @@ use Psr\Log\LoggerInterface;
* @property string $ldapAttributeHeadline
* @property string $ldapAttributeBiography
* @property string $ldapAdminGroup
+ * @property string $ldapAttributeBirthDate
+ * @property string $ldapAttributePronouns
*/
class Configuration {
public const AVATAR_PREFIX_DEFAULT = 'default';
@@ -89,11 +93,6 @@ class Configuration {
public const LDAP_SERVER_FEATURE_UNKNOWN = 'unknown';
public const LDAP_SERVER_FEATURE_AVAILABLE = 'available';
public const LDAP_SERVER_FEATURE_UNAVAILABLE = 'unavailable';
-
- /**
- * @var string
- */
- protected $configPrefix;
/**
* @var bool
*/
@@ -179,10 +178,13 @@ class Configuration {
'ldapAdminGroup' => '',
'ldapAttributeBirthDate' => null,
'ldapAttributeAnniversaryDate' => null,
+ 'ldapAttributePronouns' => null,
];
- public function __construct(string $configPrefix, bool $autoRead = true) {
- $this->configPrefix = $configPrefix;
+ public function __construct(
+ protected string $configPrefix,
+ bool $autoRead = true,
+ ) {
if ($autoRead) {
$this->readConfiguration();
}
@@ -216,7 +218,7 @@ class Configuration {
* from configuration. It does not save the configuration! To do so, you
* must call saveConfiguration afterwards.
* @param array $config array that holds the config parameters in an associated
- * array
+ * array
* @param array &$applied optional; array where the set fields will be given to
*/
public function setConfiguration(array $config, ?array &$applied = null): void {
@@ -238,7 +240,7 @@ class Configuration {
case 'homeFolderNamingRule':
$trimmedVal = trim($val);
if ($trimmedVal !== '' && !str_contains($val, 'attr:')) {
- $val = 'attr:'.$trimmedVal;
+ $val = 'attr:' . $trimmedVal;
}
break;
case 'ldapBase':
@@ -294,6 +296,28 @@ class Configuration {
break;
case 'ldapUserDisplayName2':
case 'ldapGroupDisplayName':
+ case 'ldapGidNumber':
+ case 'ldapGroupMemberAssocAttr':
+ case 'ldapQuotaAttribute':
+ case 'ldapEmailAttribute':
+ case 'ldapUuidUserAttribute':
+ case 'ldapUuidGroupAttribute':
+ case 'ldapExpertUsernameAttr':
+ case 'ldapExpertUUIDUserAttr':
+ case 'ldapExpertUUIDGroupAttr':
+ case 'ldapExtStorageHomeAttribute':
+ case 'ldapAttributePhone':
+ case 'ldapAttributeWebsite':
+ case 'ldapAttributeAddress':
+ case 'ldapAttributeTwitter':
+ case 'ldapAttributeFediverse':
+ case 'ldapAttributeOrganisation':
+ case 'ldapAttributeRole':
+ case 'ldapAttributeHeadline':
+ case 'ldapAttributeBiography':
+ case 'ldapAttributeBirthDate':
+ case 'ldapAttributeAnniversaryDate':
+ case 'ldapAttributePronouns':
$readMethod = 'getLcValue';
break;
case 'ldapUserDisplayName':
@@ -416,7 +440,7 @@ class Configuration {
protected function getSystemValue(string $varName): string {
//FIXME: if another system value is added, softcode the default value
- return \OC::$server->getConfig()->getSystemValue($varName, false);
+ return Server::get(IConfig::class)->getSystemValue($varName, false);
}
protected function getValue(string $varName): string {
@@ -424,8 +448,8 @@ class Configuration {
if (is_null($defaults)) {
$defaults = $this->getDefaults();
}
- return \OC::$server->getConfig()->getAppValue('user_ldap',
- $this->configPrefix.$varName,
+ return Server::get(IConfig::class)->getAppValue('user_ldap',
+ $this->configPrefix . $varName,
$defaults[$varName]);
}
@@ -453,9 +477,9 @@ class Configuration {
}
protected function saveValue(string $varName, string $value): bool {
- \OC::$server->getConfig()->setAppValue(
+ Server::get(IConfig::class)->setAppValue(
'user_ldap',
- $this->configPrefix.$varName,
+ $this->configPrefix . $varName,
$value
);
return true;
@@ -463,7 +487,7 @@ class Configuration {
/**
* @return array an associative array with the default values. Keys are correspond
- * to config-value entries in the database table
+ * to config-value entries in the database table
*/
public function getDefaults(): array {
return [
@@ -538,6 +562,7 @@ class Configuration {
'ldap_admin_group' => '',
'ldap_attr_birthdate' => '',
'ldap_attr_anniversarydate' => '',
+ 'ldap_attr_pronouns' => '',
];
}
@@ -617,6 +642,7 @@ class Configuration {
'ldap_admin_group' => 'ldapAdminGroup',
'ldap_attr_birthdate' => 'ldapAttributeBirthDate',
'ldap_attr_anniversarydate' => 'ldapAttributeAnniversaryDate',
+ 'ldap_attr_pronouns' => 'ldapAttributePronouns',
];
return $array;
}
@@ -646,7 +672,7 @@ class Configuration {
return [strtolower($attribute)];
}
if ($value !== self::AVATAR_PREFIX_DEFAULT) {
- \OCP\Server::get(LoggerInterface::class)->warning('Invalid config value to ldapUserAvatarRule; falling back to default.');
+ Server::get(LoggerInterface::class)->warning('Invalid config value to ldapUserAvatarRule; falling back to default.');
}
return $defaultAttributes;
}
diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php
index c36229f59e5..336179ac341 100644
--- a/apps/user_ldap/lib/Connection.php
+++ b/apps/user_ldap/lib/Connection.php
@@ -8,6 +8,12 @@
namespace OCA\User_LDAP;
use OC\ServerNotAvailableException;
+use OCA\User_LDAP\Exceptions\ConfigurationIssueException;
+use OCP\ICache;
+use OCP\ICacheFactory;
+use OCP\IL10N;
+use OCP\Server;
+use OCP\Util;
use Psr\Log\LoggerInterface;
/**
@@ -85,11 +91,10 @@ use Psr\Log\LoggerInterface;
* @property string $ldapAttributeBiography
* @property string $ldapAdminGroup
* @property string $ldapAttributeBirthDate
+ * @property string $ldapAttributePronouns
*/
class Connection extends LDAPUtility {
private ?\LDAP\Connection $ldapConnectionRes = null;
- private string $configPrefix;
- private ?string $configID;
private bool $configured = false;
/**
@@ -108,11 +113,11 @@ class Connection extends LDAPUtility {
public $hasGidNumber = true;
/**
- * @var \OCP\ICache|null
+ * @var ICache|null
*/
protected $cache = null;
- /** @var Configuration settings handler **/
+ /** @var Configuration settings handler * */
protected $configuration;
/**
@@ -130,27 +135,30 @@ class Connection extends LDAPUtility {
*/
protected $bindResult = [];
- /** @var LoggerInterface */
- protected $logger;
+ protected LoggerInterface $logger;
+ private IL10N $l10n;
/**
* Constructor
* @param string $configPrefix a string with the prefix for the configkey column (appconfig table)
* @param string|null $configID a string with the value for the appid column (appconfig table) or null for on-the-fly connections
*/
- public function __construct(ILDAPWrapper $ldap, string $configPrefix = '', ?string $configID = 'user_ldap') {
+ public function __construct(
+ ILDAPWrapper $ldap,
+ private string $configPrefix = '',
+ private ?string $configID = 'user_ldap',
+ ) {
parent::__construct($ldap);
- $this->configPrefix = $configPrefix;
- $this->configID = $configID;
- $this->configuration = new Configuration($configPrefix, !is_null($configID));
- $memcache = \OC::$server->getMemCacheFactory();
+ $this->configuration = new Configuration($this->configPrefix, !is_null($this->configID));
+ $memcache = Server::get(ICacheFactory::class);
if ($memcache->isAvailable()) {
$this->cache = $memcache->createDistributed();
}
- $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
$this->doNotValidate = !in_array($this->configPrefix,
$helper->getServerConfigurationPrefixes());
- $this->logger = \OC::$server->get(LoggerInterface::class);
+ $this->logger = Server::get(LoggerInterface::class);
+ $this->l10n = Util::getL10N('user_ldap');
}
public function __destruct() {
@@ -258,11 +266,11 @@ class Connection extends LDAPUtility {
* @param string|null $key
*/
private function getCacheKey($key): string {
- $prefix = 'LDAP-'.$this->configID.'-'.$this->configPrefix.'-';
+ $prefix = 'LDAP-' . $this->configID . '-' . $this->configPrefix . '-';
if (is_null($key)) {
return $prefix;
}
- return $prefix.hash('sha256', $key);
+ return $prefix . hash('sha256', $key);
}
/**
@@ -313,7 +321,7 @@ class Connection extends LDAPUtility {
/**
* Caches the general LDAP configuration.
* @param bool $force optional. true, if the re-read should be forced. defaults
- * to false.
+ * to false.
*/
private function readConfiguration(bool $force = false): void {
if ((!$this->configured || $force) && !is_null($this->configID)) {
@@ -326,16 +334,17 @@ class Connection extends LDAPUtility {
* set LDAP configuration with values delivered by an array, not read from configuration
* @param array $config array that holds the config parameters in an associated array
* @param array &$setParameters optional; array where the set fields will be given to
+ * @param bool $throw if true, throw ConfigurationIssueException with details instead of returning false
* @return bool true if config validates, false otherwise. Check with $setParameters for detailed success on single parameters
*/
- public function setConfiguration($config, &$setParameters = null): bool {
+ public function setConfiguration(array $config, ?array &$setParameters = null, bool $throw = false): bool {
if (is_null($setParameters)) {
$setParameters = [];
}
$this->doNotValidate = false;
$this->configuration->setConfiguration($config, $setParameters);
if (count($setParameters) > 0) {
- $this->configured = $this->validateConfiguration();
+ $this->configured = $this->validateConfiguration($throw);
}
@@ -397,8 +406,7 @@ class Connection extends LDAPUtility {
}
foreach (['ldapExpertUUIDUserAttr' => 'ldapUuidUserAttribute',
- 'ldapExpertUUIDGroupAttr' => 'ldapUuidGroupAttribute']
- as $expertSetting => $effectiveSetting) {
+ 'ldapExpertUUIDGroupAttr' => 'ldapUuidGroupAttribute'] as $expertSetting => $effectiveSetting) {
$uuidOverride = $this->configuration->$expertSetting;
if (!empty($uuidOverride)) {
$this->configuration->$effectiveSetting = $uuidOverride;
@@ -410,7 +418,7 @@ class Connection extends LDAPUtility {
$this->configuration->$effectiveSetting = 'auto';
$this->configuration->saveConfiguration();
$this->logger->info(
- 'Illegal value for the '.$effectiveSetting.', reset to autodetect.',
+ 'Illegal value for the ' . $effectiveSetting . ', reset to autodetect.',
['app' => 'user_ldap']
);
}
@@ -442,10 +450,10 @@ class Connection extends LDAPUtility {
}
}
- private function doCriticalValidation(): bool {
- $configurationOK = true;
- $errorStr = 'Configuration Error (prefix ' . $this->configPrefix . '): ';
-
+ /**
+ * @throws ConfigurationIssueException
+ */
+ private function doCriticalValidation(): void {
//options that shall not be empty
$options = ['ldapHost', 'ldapUserDisplayName',
'ldapGroupDisplayName', 'ldapLoginFilter'];
@@ -478,10 +486,9 @@ class Connection extends LDAPUtility {
$subj = $key;
break;
}
- $configurationOK = false;
- $this->logger->warning(
- $errorStr.'No '.$subj.' given!',
- ['app' => 'user_ldap']
+ throw new ConfigurationIssueException(
+ 'No ' . $subj . ' given!',
+ $this->l10n->t('Mandatory field "%s" left empty', $subj),
);
}
}
@@ -489,47 +496,76 @@ class Connection extends LDAPUtility {
//combinations
$agent = $this->configuration->ldapAgentName;
$pwd = $this->configuration->ldapAgentPassword;
- if (
- ($agent === '' && $pwd !== '')
- || ($agent !== '' && $pwd === '')
- ) {
- $this->logger->warning(
- $errorStr.'either no password is given for the user ' .
- 'agent or a password is given, but not an LDAP agent.',
- ['app' => 'user_ldap']
+ if ($agent === '' && $pwd !== '') {
+ throw new ConfigurationIssueException(
+ 'A password is given, but not an LDAP agent',
+ $this->l10n->t('A password is given, but not an LDAP agent'),
+ );
+ }
+ if ($agent !== '' && $pwd === '') {
+ throw new ConfigurationIssueException(
+ 'No password is given for the user agent',
+ $this->l10n->t('No password is given for the user agent'),
);
- $configurationOK = false;
}
$base = $this->configuration->ldapBase;
$baseUsers = $this->configuration->ldapBaseUsers;
$baseGroups = $this->configuration->ldapBaseGroups;
- if (empty($base) && empty($baseUsers) && empty($baseGroups)) {
- $this->logger->warning(
- $errorStr.'Not a single Base DN given.',
- ['app' => 'user_ldap']
+ if (empty($base)) {
+ throw new ConfigurationIssueException(
+ 'Not a single Base DN given',
+ $this->l10n->t('No LDAP base DN was given'),
);
- $configurationOK = false;
}
- if (mb_strpos((string)$this->configuration->ldapLoginFilter, '%uid', 0, 'UTF-8')
- === false) {
- $this->logger->warning(
- $errorStr.'login filter does not contain %uid place holder.',
- ['app' => 'user_ldap']
+ if (!empty($baseUsers) && !$this->checkBasesAreValid($baseUsers, $base)) {
+ throw new ConfigurationIssueException(
+ 'User base is not in root base',
+ $this->l10n->t('User base DN is not a subnode of global base DN'),
);
- $configurationOK = false;
}
- return $configurationOK;
+ if (!empty($baseGroups) && !$this->checkBasesAreValid($baseGroups, $base)) {
+ throw new ConfigurationIssueException(
+ 'Group base is not in root base',
+ $this->l10n->t('Group base DN is not a subnode of global base DN'),
+ );
+ }
+
+ if (mb_strpos((string)$this->configuration->ldapLoginFilter, '%uid', 0, 'UTF-8') === false) {
+ throw new ConfigurationIssueException(
+ 'Login filter does not contain %uid placeholder.',
+ $this->l10n->t('Login filter does not contain %s placeholder.', ['%uid']),
+ );
+ }
+ }
+
+ /**
+ * Checks that all bases are subnodes of one of the root bases
+ */
+ private function checkBasesAreValid(array $bases, array $rootBases): bool {
+ foreach ($bases as $base) {
+ $ok = false;
+ foreach ($rootBases as $rootBase) {
+ if (str_ends_with($base, $rootBase)) {
+ $ok = true;
+ break;
+ }
+ }
+ if (!$ok) {
+ return false;
+ }
+ }
+ return true;
}
/**
* Validates the user specified configuration
* @return bool true if configuration seems OK, false otherwise
*/
- private function validateConfiguration(): bool {
+ private function validateConfiguration(bool $throw = false): bool {
if ($this->doNotValidate) {
//don't do a validation if it is a new configuration with pure
//default values. Will be allowed on changes via __set or
@@ -543,7 +579,19 @@ class Connection extends LDAPUtility {
//second step: critical checks. If left empty or filled wrong, mark as
//not configured and give a warning.
- return $this->doCriticalValidation();
+ try {
+ $this->doCriticalValidation();
+ return true;
+ } catch (ConfigurationIssueException $e) {
+ if ($throw) {
+ throw $e;
+ }
+ $this->logger->warning(
+ 'Configuration Error (prefix ' . $this->configPrefix . '): ' . $e->getMessage(),
+ ['exception' => $e]
+ );
+ return false;
+ }
}
@@ -577,19 +625,6 @@ class Connection extends LDAPUtility {
return false;
}
- if ($this->configuration->turnOffCertCheck) {
- if (putenv('LDAPTLS_REQCERT=never')) {
- $this->logger->debug(
- 'Turned off SSL certificate validation successfully.',
- ['app' => 'user_ldap']
- );
- } else {
- $this->logger->warning(
- 'Could not turn off SSL certificate validation.',
- ['app' => 'user_ldap']
- );
- }
- }
$hasBackupHost = (trim($this->configuration->ldapBackupHost ?? '') !== '');
$hasBackgroundHost = (trim($this->configuration->ldapBackgroundHost ?? '') !== '');
@@ -613,9 +648,11 @@ class Connection extends LDAPUtility {
}
}
$this->logger->warning(
- 'Main LDAP not reachable, connecting to backup',
+ 'Main LDAP not reachable, connecting to backup: {msg}',
[
- 'app' => 'user_ldap'
+ 'app' => 'user_ldap',
+ 'msg' => $e->getMessage(),
+ 'exception' => $e,
]
);
}
@@ -624,8 +661,8 @@ class Connection extends LDAPUtility {
$this->doConnect($this->configuration->ldapBackupHost ?? '', $this->configuration->ldapBackupPort ?? '');
$this->bindResult = [];
$bindStatus = $this->bind();
- $error = $this->ldap->isResource($this->ldapConnectionRes) ?
- $this->ldap->errno($this->ldapConnectionRes) : -1;
+ $error = $this->ldap->isResource($this->ldapConnectionRes)
+ ? $this->ldap->errno($this->ldapConnectionRes) : -1;
if ($bindStatus && $error === 0 && !$forceBackupHost) {
//when bind to backup server succeeded and failed to main server,
//skip contacting it for 15min
@@ -666,6 +703,20 @@ class Connection extends LDAPUtility {
}
if ($this->configuration->ldapTLS) {
+ if ($this->configuration->turnOffCertCheck) {
+ if ($this->ldap->setOption($this->ldapConnectionRes, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER)) {
+ $this->logger->debug(
+ 'Turned off SSL certificate validation successfully.',
+ ['app' => 'user_ldap']
+ );
+ } else {
+ $this->logger->warning(
+ 'Could not turn off SSL certificate validation.',
+ ['app' => 'user_ldap']
+ );
+ }
+ }
+
if (!$this->ldap->startTls($this->ldapConnectionRes)) {
throw new ServerNotAvailableException('Start TLS failed, when connecting to LDAP host ' . $host . '.');
}
diff --git a/apps/user_ldap/lib/ConnectionFactory.php b/apps/user_ldap/lib/ConnectionFactory.php
index 1e86699c427..dd0ad31920a 100644
--- a/apps/user_ldap/lib/ConnectionFactory.php
+++ b/apps/user_ldap/lib/ConnectionFactory.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,11 +7,9 @@
namespace OCA\User_LDAP;
class ConnectionFactory {
- /** @var ILDAPWrapper */
- private $ldap;
-
- public function __construct(ILDAPWrapper $ldap) {
- $this->ldap = $ldap;
+ public function __construct(
+ private ILDAPWrapper $ldap,
+ ) {
}
public function get($prefix) {
diff --git a/apps/user_ldap/lib/Controller/ConfigAPIController.php b/apps/user_ldap/lib/Controller/ConfigAPIController.php
index a2f821dbbda..d98e6d41b52 100644
--- a/apps/user_ldap/lib/Controller/ConfigAPIController.php
+++ b/apps/user_ldap/lib/Controller/ConfigAPIController.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -11,7 +12,9 @@ use OC\Security\IdentityProof\Manager;
use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\ConnectionFactory;
use OCA\User_LDAP\Helper;
+use OCA\User_LDAP\Settings\Admin;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSBadRequestException;
use OCP\AppFramework\OCS\OCSException;
@@ -19,6 +22,7 @@ use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\IRequest;
use OCP\IUserManager;
use OCP\IUserSession;
+use OCP\ServerVersion;
use Psr\Log\LoggerInterface;
class ConfigAPIController extends OCSController {
@@ -29,9 +33,10 @@ class ConfigAPIController extends OCSController {
IUserSession $userSession,
IUserManager $userManager,
Manager $keyManager,
+ ServerVersion $serverVersion,
private Helper $ldapHelper,
private LoggerInterface $logger,
- private ConnectionFactory $connectionFactory
+ private ConnectionFactory $connectionFactory,
) {
parent::__construct(
$appName,
@@ -39,19 +44,20 @@ class ConfigAPIController extends OCSController {
$capabilitiesManager,
$userSession,
$userManager,
- $keyManager
+ $keyManager,
+ $serverVersion,
);
}
/**
* Create a new (empty) configuration and return the resulting prefix
*
- * @AuthorizedAdminSetting(settings=OCA\User_LDAP\Settings\Admin)
* @return DataResponse<Http::STATUS_OK, array{configID: string}, array{}>
* @throws OCSException
*
* 200: Config created successfully
*/
+ #[AuthorizedAdminSetting(settings: Admin::class)]
public function create() {
try {
$configPrefix = $this->ldapHelper->getNextServerConfigurationPrefix();
@@ -68,14 +74,14 @@ class ConfigAPIController extends OCSController {
/**
* Delete a LDAP configuration
*
- * @AuthorizedAdminSetting(settings=OCA\User_LDAP\Settings\Admin)
* @param string $configID ID of the config
- * @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
+ * @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
* @throws OCSException
* @throws OCSNotFoundException Config not found
*
* 200: Config deleted successfully
*/
+ #[AuthorizedAdminSetting(settings: Admin::class)]
public function delete($configID) {
try {
$this->ensureConfigIDExists($configID);
@@ -95,16 +101,16 @@ class ConfigAPIController extends OCSController {
/**
* Modify a configuration
*
- * @AuthorizedAdminSetting(settings=OCA\User_LDAP\Settings\Admin)
* @param string $configID ID of the config
* @param array<string, mixed> $configData New config
- * @return DataResponse<Http::STATUS_OK, array<empty>, array{}>
+ * @return DataResponse<Http::STATUS_OK, list<empty>, array{}>
* @throws OCSException
* @throws OCSBadRequestException Modifying config is not possible
* @throws OCSNotFoundException Config not found
*
* 200: Config returned
*/
+ #[AuthorizedAdminSetting(settings: Admin::class)]
public function modify($configID, $configData) {
try {
$this->ensureConfigIDExists($configID);
@@ -200,7 +206,6 @@ class ConfigAPIController extends OCSController {
* </data>
* </ocs>
*
- * @AuthorizedAdminSetting(settings=OCA\User_LDAP\Settings\Admin)
* @param string $configID ID of the config
* @param bool $showPassword Whether to show the password
* @return DataResponse<Http::STATUS_OK, array<string, mixed>, array{}>
@@ -209,6 +214,7 @@ class ConfigAPIController extends OCSController {
*
* 200: Config returned
*/
+ #[AuthorizedAdminSetting(settings: Admin::class)]
public function show($configID, $showPassword = false) {
try {
$this->ensureConfigIDExists($configID);
@@ -237,10 +243,10 @@ class ConfigAPIController extends OCSController {
/**
* If the given config ID is not available, an exception is thrown
*
- * @AuthorizedAdminSetting(settings=OCA\User_LDAP\Settings\Admin)
* @param string $configID
* @throws OCSNotFoundException
*/
+ #[AuthorizedAdminSetting(settings: Admin::class)]
private function ensureConfigIDExists($configID): void {
$prefixes = $this->ldapHelper->getServerConfigurationPrefixes();
if (!in_array($configID, $prefixes, true)) {
diff --git a/apps/user_ldap/lib/Controller/RenewPasswordController.php b/apps/user_ldap/lib/Controller/RenewPasswordController.php
index 92b2876dc3f..8389a362b8f 100644
--- a/apps/user_ldap/lib/Controller/RenewPasswordController.php
+++ b/apps/user_ldap/lib/Controller/RenewPasswordController.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,7 +7,10 @@
namespace OCA\User_LDAP\Controller;
use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\OpenAPI;
+use OCP\AppFramework\Http\Attribute\PublicPage;
+use OCP\AppFramework\Http\Attribute\UseSession;
use OCP\AppFramework\Http\RedirectResponse;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\HintException;
@@ -20,17 +24,6 @@ use OCP\IUserManager;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
class RenewPasswordController extends Controller {
- /** @var IUserManager */
- private $userManager;
- /** @var IConfig */
- private $config;
- /** @var IL10N */
- protected $l10n;
- /** @var ISession */
- private $session;
- /** @var IURLGenerator */
- private $urlGenerator;
-
/**
* @param string $appName
* @param IRequest $request
@@ -38,35 +31,35 @@ class RenewPasswordController extends Controller {
* @param IConfig $config
* @param IURLGenerator $urlGenerator
*/
- public function __construct($appName, IRequest $request, IUserManager $userManager,
- IConfig $config, IL10N $l10n, ISession $session, IURLGenerator $urlGenerator) {
+ public function __construct(
+ $appName,
+ IRequest $request,
+ private IUserManager $userManager,
+ private IConfig $config,
+ protected IL10N $l10n,
+ private ISession $session,
+ private IURLGenerator $urlGenerator,
+ ) {
parent::__construct($appName, $request);
- $this->userManager = $userManager;
- $this->config = $config;
- $this->l10n = $l10n;
- $this->session = $session;
- $this->urlGenerator = $urlGenerator;
}
/**
- * @PublicPage
- * @NoCSRFRequired
- *
* @return RedirectResponse
*/
+ #[PublicPage]
+ #[NoCSRFRequired]
public function cancel() {
return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'));
}
/**
- * @PublicPage
- * @NoCSRFRequired
- * @UseSession
- *
* @param string $user
*
* @return TemplateResponse|RedirectResponse
*/
+ #[PublicPage]
+ #[NoCSRFRequired]
+ #[UseSession]
public function showRenewPasswordForm($user) {
if ($this->config->getUserValue($user, 'user_ldap', 'needsPasswordReset') !== 'true') {
return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'));
@@ -102,15 +95,14 @@ class RenewPasswordController extends Controller {
}
/**
- * @PublicPage
- * @UseSession
- *
* @param string $user
* @param string $oldPassword
* @param string $newPassword
*
* @return RedirectResponse
*/
+ #[PublicPage]
+ #[UseSession]
public function tryRenewPassword($user, $oldPassword, $newPassword) {
if ($this->config->getUserValue($user, 'user_ldap', 'needsPasswordReset') !== 'true') {
return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'));
@@ -127,7 +119,7 @@ class RenewPasswordController extends Controller {
try {
if (!is_null($newPassword) && \OC_User::setPassword($user, $newPassword)) {
$this->session->set('loginMessages', [
- [], [$this->l10n->t("Please login with the new password")]
+ [], [$this->l10n->t('Please login with the new password')]
]);
$this->config->setUserValue($user, 'user_ldap', 'needsPasswordReset', 'false');
return new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args));
@@ -146,12 +138,11 @@ class RenewPasswordController extends Controller {
}
/**
- * @PublicPage
- * @NoCSRFRequired
- * @UseSession
- *
* @return RedirectResponse
*/
+ #[PublicPage]
+ #[NoCSRFRequired]
+ #[UseSession]
public function showLoginFormInvalidPassword($user) {
$args = !is_null($user) ? ['user' => $user] : [];
$this->session->set('loginMessages', [
diff --git a/apps/user_ldap/lib/Events/GroupBackendRegistered.php b/apps/user_ldap/lib/Events/GroupBackendRegistered.php
index 273b668946b..a94c239c1b3 100644
--- a/apps/user_ldap/lib/Events/GroupBackendRegistered.php
+++ b/apps/user_ldap/lib/Events/GroupBackendRegistered.php
@@ -19,14 +19,10 @@ use OCP\EventDispatcher\Event;
*/
class GroupBackendRegistered extends Event {
- /** @var GroupPluginManager */
- private $pluginManager;
- /** @var IGroupLDAP */
- private $backend;
-
- public function __construct(IGroupLDAP $backend, GroupPluginManager $pluginManager) {
- $this->pluginManager = $pluginManager;
- $this->backend = $backend;
+ public function __construct(
+ private IGroupLDAP $backend,
+ private GroupPluginManager $pluginManager,
+ ) {
}
public function getBackend(): IGroupLDAP {
diff --git a/apps/user_ldap/lib/Events/UserBackendRegistered.php b/apps/user_ldap/lib/Events/UserBackendRegistered.php
index ba824d80d22..a26e23f8f83 100644
--- a/apps/user_ldap/lib/Events/UserBackendRegistered.php
+++ b/apps/user_ldap/lib/Events/UserBackendRegistered.php
@@ -19,14 +19,10 @@ use OCP\EventDispatcher\Event;
*/
class UserBackendRegistered extends Event {
- /** @var IUserLDAP */
- private $backend;
- /** @var UserPluginManager */
- private $pluginManager;
-
- public function __construct(IUserLDAP $backend, UserPluginManager $pluginManager) {
- $this->backend = $backend;
- $this->pluginManager = $pluginManager;
+ public function __construct(
+ private IUserLDAP $backend,
+ private UserPluginManager $pluginManager,
+ ) {
}
public function getBackend(): IUserLDAP {
diff --git a/apps/user_ldap/lib/Exceptions/AttributeNotSet.php b/apps/user_ldap/lib/Exceptions/AttributeNotSet.php
index 35df63518b4..4d6053eda66 100644
--- a/apps/user_ldap/lib/Exceptions/AttributeNotSet.php
+++ b/apps/user_ldap/lib/Exceptions/AttributeNotSet.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Exceptions/ConfigurationIssueException.php b/apps/user_ldap/lib/Exceptions/ConfigurationIssueException.php
new file mode 100644
index 00000000000..efeb426b13d
--- /dev/null
+++ b/apps/user_ldap/lib/Exceptions/ConfigurationIssueException.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\User_LDAP\Exceptions;
+
+use OCP\HintException;
+
+class ConfigurationIssueException extends HintException {
+}
diff --git a/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php b/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php
index f468abd2282..d0d384c31de 100644
--- a/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php
+++ b/apps/user_ldap/lib/Exceptions/ConstraintViolationException.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Exceptions/NotOnLDAP.php b/apps/user_ldap/lib/Exceptions/NotOnLDAP.php
index 8f3d8fc3499..cd74e918829 100644
--- a/apps/user_ldap/lib/Exceptions/NotOnLDAP.php
+++ b/apps/user_ldap/lib/Exceptions/NotOnLDAP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/FilesystemHelper.php b/apps/user_ldap/lib/FilesystemHelper.php
deleted file mode 100644
index 2a17282361a..00000000000
--- a/apps/user_ldap/lib/FilesystemHelper.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/**
- * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
- * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-namespace OCA\User_LDAP;
-
-/**
- * @brief wraps around static Nextcloud core methods
- */
-class FilesystemHelper {
-
- /**
- * @brief states whether the filesystem was loaded
- * @return bool
- */
- public function isLoaded() {
- return \OC\Files\Filesystem::$loaded;
- }
-
- /**
- * @brief initializes the filesystem for the given user
- * @param string $uid the Nextcloud username of the user
- */
- public function setup($uid) {
- \OC_Util::setupFS($uid);
- }
-}
diff --git a/apps/user_ldap/lib/GroupPluginManager.php b/apps/user_ldap/lib/GroupPluginManager.php
index 16fdcc5228c..9e8ae6805a4 100644
--- a/apps/user_ldap/lib/GroupPluginManager.php
+++ b/apps/user_ldap/lib/GroupPluginManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,6 +7,7 @@
namespace OCA\User_LDAP;
use OCP\GroupInterface;
+use OCP\Server;
use Psr\Log\LoggerInterface;
class GroupPluginManager {
@@ -41,7 +43,7 @@ class GroupPluginManager {
foreach ($this->which as $action => $v) {
if ((bool)($respondToActions & $action)) {
$this->which[$action] = $plugin;
- \OCP\Server::get(LoggerInterface::class)->debug("Registered action ".$action." to plugin ".get_class($plugin), ['app' => 'user_ldap']);
+ Server::get(LoggerInterface::class)->debug('Registered action ' . $action . ' to plugin ' . get_class($plugin), ['app' => 'user_ldap']);
}
}
}
diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php
index ba75df02111..271cc96afbd 100644
--- a/apps/user_ldap/lib/Group_LDAP.php
+++ b/apps/user_ldap/lib/Group_LDAP.php
@@ -31,24 +31,19 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
protected CappedMemoryCache $cachedGroupsByMember;
/** @var CappedMemoryCache<string[]> $cachedNestedGroups array of groups with gid (DN) as key */
protected CappedMemoryCache $cachedNestedGroups;
- protected GroupPluginManager $groupPluginManager;
protected LoggerInterface $logger;
- protected Access $access;
/**
* @var string $ldapGroupMemberAssocAttr contains the LDAP setting (in lower case) with the same name
*/
protected string $ldapGroupMemberAssocAttr;
- private IConfig $config;
- private IUserManager $ncUserManager;
public function __construct(
- Access $access,
- GroupPluginManager $groupPluginManager,
- IConfig $config,
- IUserManager $ncUserManager
+ protected Access $access,
+ protected GroupPluginManager $groupPluginManager,
+ private IConfig $config,
+ private IUserManager $ncUserManager,
) {
- $this->access = $access;
$filter = $this->access->connection->ldapGroupFilter;
$gAssoc = $this->access->connection->ldapGroupMemberAssocAttr;
if (!empty($filter) && !empty($gAssoc)) {
@@ -58,11 +53,8 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
$this->cachedGroupMembers = new CappedMemoryCache();
$this->cachedGroupsByMember = new CappedMemoryCache();
$this->cachedNestedGroups = new CappedMemoryCache();
- $this->groupPluginManager = $groupPluginManager;
$this->logger = Server::get(LoggerInterface::class);
$this->ldapGroupMemberAssocAttr = strtolower((string)$gAssoc);
- $this->config = $config;
- $this->ncUserManager = $ncUserManager;
}
/**
@@ -454,7 +446,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
string $groupDN,
string $search = '',
?int $limit = -1,
- ?int $offset = 0
+ ?int $offset = 0,
): array {
try {
$filter = $this->prepareFilterForUsersHasGidNumber($groupDN, $search);
@@ -578,7 +570,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
string $groupDN,
string $search = '',
?int $limit = -1,
- ?int $offset = 0
+ ?int $offset = 0,
): array {
try {
$filter = $this->prepareFilterForUsersInPrimaryGroup($groupDN, $search);
@@ -603,7 +595,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
string $groupDN,
string $search = '',
int $limit = -1,
- int $offset = 0
+ int $offset = 0,
): int {
try {
$filter = $this->prepareFilterForUsersInPrimaryGroup($groupDN, $search);
@@ -646,6 +638,10 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
return false;
}
+ /**
+ * @param string $uid
+ * @return list<string>
+ */
protected function getCachedGroupsForUserId(string $uid): array {
$groupStr = $this->config->getUserValue($uid, 'user_ldap', 'cached-group-memberships-' . $this->access->connection->getConfigPrefix(), '[]');
return json_decode($groupStr, true) ?? [];
@@ -658,7 +654,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
* This function includes groups based on dynamic group membership.
*
* @param string $uid Name of the user
- * @return string[] Group names
+ * @return list<string> Group names
* @throws Exception
* @throws ServerNotAvailableException
*/
@@ -1023,9 +1019,9 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
return $groupUsers;
}
$search = $this->access->escapeFilterPart($search, true);
- $isMemberUid =
- ($this->ldapGroupMemberAssocAttr === 'memberuid' ||
- $this->ldapGroupMemberAssocAttr === 'zimbramailforwardingaddress');
+ $isMemberUid
+ = ($this->ldapGroupMemberAssocAttr === 'memberuid'
+ || $this->ldapGroupMemberAssocAttr === 'zimbramailforwardingaddress');
//we need to apply the search filter
//alternatives that need to be checked:
@@ -1182,7 +1178,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
continue;
}
$name = $item[$this->access->connection->ldapGroupDisplayName][0] ?? null;
- $gid = $this->access->dn2groupname($dn, $name);
+ $gid = $this->access->dn2groupname($dn, $name, false);
if (!$gid) {
continue;
}
@@ -1203,10 +1199,10 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
* compared with GroupInterface::CREATE_GROUP etc.
*/
public function implementsActions($actions): bool {
- return (bool)((GroupInterface::COUNT_USERS |
- GroupInterface::DELETE_GROUP |
- GroupInterface::IS_ADMIN |
- $this->groupPluginManager->getImplementedActions()) & $actions);
+ return (bool)((GroupInterface::COUNT_USERS
+ | GroupInterface::DELETE_GROUP
+ | GroupInterface::IS_ADMIN
+ | $this->groupPluginManager->getImplementedActions()) & $actions);
}
/**
@@ -1258,7 +1254,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
if ($ret = $this->groupPluginManager->deleteGroup($gid)) {
// Delete group in nextcloud internal db
$this->access->getGroupMapper()->unmap($gid);
- $this->access->connection->writeToCache("groupExists" . $gid, false);
+ $this->access->connection->writeToCache('groupExists' . $gid, false);
}
return $ret;
}
@@ -1266,17 +1262,17 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
// Getting dn, if false the group is not mapped
$dn = $this->access->groupname2dn($gid);
if (!$dn) {
- throw new Exception('Could not delete unknown group '.$gid.' in LDAP backend.');
+ throw new Exception('Could not delete unknown group ' . $gid . ' in LDAP backend.');
}
if (!$this->groupExists($gid)) {
// The group does not exist in the LDAP, remove the mapping
$this->access->getGroupMapper()->unmap($gid);
- $this->access->connection->writeToCache("groupExists" . $gid, false);
+ $this->access->connection->writeToCache('groupExists' . $gid, false);
return true;
}
- throw new Exception('Could not delete existing group '.$gid.' in LDAP backend.');
+ throw new Exception('Could not delete existing group ' . $gid . ' in LDAP backend.');
}
/**
diff --git a/apps/user_ldap/lib/Group_Proxy.php b/apps/user_ldap/lib/Group_Proxy.php
index cd35f86db77..f0cdc7a465d 100644
--- a/apps/user_ldap/lib/Group_Proxy.php
+++ b/apps/user_ldap/lib/Group_Proxy.php
@@ -18,45 +18,24 @@ use OCP\GroupInterface;
use OCP\IConfig;
use OCP\IUserManager;
-class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP, IGetDisplayNameBackend, INamedBackend, IDeleteGroupBackend, IBatchMethodsBackend, IIsAdminBackend {
- private $backends = [];
- private ?Group_LDAP $refBackend = null;
- private Helper $helper;
- private GroupPluginManager $groupPluginManager;
- private bool $isSetUp = false;
- private IConfig $config;
- private IUserManager $ncUserManager;
-
+/**
+ * @template-extends Proxy<Group_LDAP>
+ */
+class Group_Proxy extends Proxy implements GroupInterface, IGroupLDAP, IGetDisplayNameBackend, INamedBackend, IDeleteGroupBackend, IBatchMethodsBackend, IIsAdminBackend {
public function __construct(
- Helper $helper,
+ private Helper $helper,
ILDAPWrapper $ldap,
AccessFactory $accessFactory,
- GroupPluginManager $groupPluginManager,
- IConfig $config,
- IUserManager $ncUserManager,
+ private GroupPluginManager $groupPluginManager,
+ private IConfig $config,
+ private IUserManager $ncUserManager,
) {
- parent::__construct($ldap, $accessFactory);
- $this->helper = $helper;
- $this->groupPluginManager = $groupPluginManager;
- $this->config = $config;
- $this->ncUserManager = $ncUserManager;
+ parent::__construct($helper, $ldap, $accessFactory);
}
- protected function setup(): void {
- if ($this->isSetUp) {
- return;
- }
- $serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
- foreach ($serverConfigPrefixes as $configPrefix) {
- $this->backends[$configPrefix] =
- new Group_LDAP($this->getAccess($configPrefix), $this->groupPluginManager, $this->config, $this->ncUserManager);
- if (is_null($this->refBackend)) {
- $this->refBackend = $this->backends[$configPrefix];
- }
- }
-
- $this->isSetUp = true;
+ protected function newInstance(string $configPrefix): Group_LDAP {
+ return new Group_LDAP($this->getAccess($configPrefix), $this->groupPluginManager, $this->config, $this->ncUserManager);
}
/**
@@ -141,7 +120,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP, IGet
* Get all groups a user belongs to
*
* @param string $uid Name of the user
- * @return string[] with group names
+ * @return list<string> with group names
*
* This function fetches all groups a user belongs to. It does not check
* if the user exists at all.
@@ -152,9 +131,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP, IGet
$groups = [];
foreach ($this->backends as $backend) {
$backendGroups = $backend->getUserGroups($uid);
- if (is_array($backendGroups)) {
- $groups = array_merge($groups, $backendGroups);
- }
+ $groups = array_merge($groups, $backendGroups);
}
return array_values(array_unique($groups));
@@ -252,7 +229,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP, IGet
*/
public function getGroupsDetails(array $gids): array {
if (!($this instanceof IGroupDetailsBackend || $this->implementsActions(GroupInterface::GROUP_DETAILS))) {
- throw new \Exception("Should not have been called");
+ throw new \Exception('Should not have been called');
}
$groupData = [];
diff --git a/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
index d4a8f332362..8b63d54aa66 100644
--- a/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
+++ b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Helper.php b/apps/user_ldap/lib/Helper.php
index c9d0cd1773d..d3abf04fd1e 100644
--- a/apps/user_ldap/lib/Helper.php
+++ b/apps/user_ldap/lib/Helper.php
@@ -9,19 +9,18 @@ namespace OCA\User_LDAP;
use OCP\Cache\CappedMemoryCache;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IConfig;
+use OCP\IAppConfig;
use OCP\IDBConnection;
+use OCP\Server;
class Helper {
- private IConfig $config;
- private IDBConnection $connection;
/** @var CappedMemoryCache<string> */
protected CappedMemoryCache $sanitizeDnCache;
- public function __construct(IConfig $config,
- IDBConnection $connection) {
- $this->config = $config;
- $this->connection = $connection;
+ public function __construct(
+ private IAppConfig $appConfig,
+ private IDBConnection $connection,
+ ) {
$this->sanitizeDnCache = new CappedMemoryCache(10000);
}
@@ -29,7 +28,7 @@ class Helper {
* returns prefixes for each saved LDAP/AD server configuration.
*
* @param bool $activeConfigurations optional, whether only active configuration shall be
- * retrieved, defaults to false
+ * retrieved, defaults to false
* @return array with a list of the available prefixes
*
* Configuration prefixes are used to set up configurations for n LDAP or
@@ -46,21 +45,37 @@ class Helper {
* except the default (first) server shall be connected to.
*
*/
- public function getServerConfigurationPrefixes($activeConfigurations = false): array {
+ public function getServerConfigurationPrefixes(bool $activeConfigurations = false): array {
+ $all = $this->getAllServerConfigurationPrefixes();
+ if (!$activeConfigurations) {
+ return $all;
+ }
+ return array_values(array_filter(
+ $all,
+ fn (string $prefix): bool => ($this->appConfig->getValueString('user_ldap', $prefix . 'ldap_configuration_active') === '1')
+ ));
+ }
+
+ protected function getAllServerConfigurationPrefixes(): array {
+ $unfilled = ['UNFILLED'];
+ $prefixes = $this->appConfig->getValueArray('user_ldap', 'configuration_prefixes', $unfilled);
+ if ($prefixes !== $unfilled) {
+ return $prefixes;
+ }
+
+ /* Fallback to browsing key for migration from Nextcloud<32 */
$referenceConfigkey = 'ldap_configuration_active';
$keys = $this->getServersConfig($referenceConfigkey);
$prefixes = [];
foreach ($keys as $key) {
- if ($activeConfigurations && $this->config->getAppValue('user_ldap', $key, '0') !== '1') {
- continue;
- }
-
$len = strlen($key) - strlen($referenceConfigkey);
$prefixes[] = substr($key, 0, $len);
}
- asort($prefixes);
+ sort($prefixes);
+
+ $this->appConfig->setValueArray('user_ldap', 'configuration_prefixes', $prefixes);
return $prefixes;
}
@@ -69,46 +84,45 @@ class Helper {
*
* determines the host for every configured connection
*
- * @return array an array with configprefix as keys
+ * @return array<string,string> an array with configprefix as keys
*
*/
- public function getServerConfigurationHosts() {
- $referenceConfigkey = 'ldap_host';
-
- $keys = $this->getServersConfig($referenceConfigkey);
+ public function getServerConfigurationHosts(): array {
+ $prefixes = $this->getServerConfigurationPrefixes();
+ $referenceConfigkey = 'ldap_host';
$result = [];
- foreach ($keys as $key) {
- $len = strlen($key) - strlen($referenceConfigkey);
- $prefix = substr($key, 0, $len);
- $result[$prefix] = $this->config->getAppValue('user_ldap', $key);
+ foreach ($prefixes as $prefix) {
+ $result[$prefix] = $this->appConfig->getValueString('user_ldap', $prefix . $referenceConfigkey);
}
return $result;
}
/**
- * return the next available configuration prefix
- *
- * @return string
+ * return the next available configuration prefix and register it as used
*/
- public function getNextServerConfigurationPrefix() {
- $serverConnections = $this->getServerConfigurationPrefixes();
-
- if (count($serverConnections) === 0) {
- return 's01';
+ public function getNextServerConfigurationPrefix(): string {
+ $prefixes = $this->getServerConfigurationPrefixes();
+
+ if (count($prefixes) === 0) {
+ $prefix = 's01';
+ } else {
+ sort($prefixes);
+ $lastKey = array_pop($prefixes);
+ $lastNumber = (int)str_replace('s', '', $lastKey);
+ $prefix = 's' . str_pad((string)($lastNumber + 1), 2, '0', STR_PAD_LEFT);
}
- sort($serverConnections);
- $lastKey = array_pop($serverConnections);
- $lastNumber = (int)str_replace('s', '', $lastKey);
- return 's' . str_pad((string)($lastNumber + 1), 2, '0', STR_PAD_LEFT);
+ $prefixes[] = $prefix;
+ $this->appConfig->setValueArray('user_ldap', 'configuration_prefixes', $prefixes);
+ return $prefix;
}
private function getServersConfig(string $value): array {
$regex = '/' . $value . '$/S';
- $keys = $this->config->getAppKeys('user_ldap');
+ $keys = $this->appConfig->getKeys('user_ldap');
$result = [];
foreach ($keys as $key) {
if (preg_match($regex, $key) === 1) {
@@ -126,7 +140,9 @@ class Helper {
* @return bool true on success, false otherwise
*/
public function deleteServerConfiguration($prefix) {
- if (!in_array($prefix, self::getServerConfigurationPrefixes())) {
+ $prefixes = $this->getServerConfigurationPrefixes();
+ $index = array_search($prefix, $prefixes);
+ if ($index === false) {
return false;
}
@@ -145,7 +161,11 @@ class Helper {
$query->andWhere($query->expr()->notLike('configkey', $query->createNamedParameter('s%')));
}
- $deletedRows = $query->execute();
+ $deletedRows = $query->executeStatement();
+
+ unset($prefixes[$index]);
+ $this->appConfig->setValueArray('user_ldap', 'configuration_prefixes', array_values($prefixes));
+
return $deletedRows !== 0;
}
@@ -153,10 +173,13 @@ class Helper {
* checks whether there is one or more disabled LDAP configurations
*/
public function haveDisabledConfigurations(): bool {
- $all = $this->getServerConfigurationPrefixes(false);
- $active = $this->getServerConfigurationPrefixes(true);
-
- return count($all) !== count($active) || count($all) === 0;
+ $all = $this->getServerConfigurationPrefixes();
+ foreach ($all as $prefix) {
+ if ($this->appConfig->getValueString('user_ldap', $prefix . 'ldap_configuration_active') !== '1') {
+ return true;
+ }
+ }
+ return false;
}
/**
@@ -271,7 +294,7 @@ class Helper {
throw new \Exception('key uid is expected to be set in $param');
}
- $userBackend = \OC::$server->get(User_Proxy::class);
+ $userBackend = Server::get(User_Proxy::class);
$uid = $userBackend->loginName2UserName($param['uid']);
if ($uid !== false) {
$param['uid'] = $uid;
diff --git a/apps/user_ldap/lib/IGroupLDAP.php b/apps/user_ldap/lib/IGroupLDAP.php
index 764e0c88e64..667eb421004 100644
--- a/apps/user_ldap/lib/IGroupLDAP.php
+++ b/apps/user_ldap/lib/IGroupLDAP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/ILDAPGroupPlugin.php b/apps/user_ldap/lib/ILDAPGroupPlugin.php
index d601e3a6548..261b9383dc1 100644
--- a/apps/user_ldap/lib/ILDAPGroupPlugin.php
+++ b/apps/user_ldap/lib/ILDAPGroupPlugin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/ILDAPUserPlugin.php b/apps/user_ldap/lib/ILDAPUserPlugin.php
index 4638a1a49da..80437bef452 100644
--- a/apps/user_ldap/lib/ILDAPUserPlugin.php
+++ b/apps/user_ldap/lib/ILDAPUserPlugin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -58,7 +59,7 @@ interface ILDAPUserPlugin {
public function setDisplayName($uid, $displayName);
/**
- * checks whether the user is allowed to change his avatar in Nextcloud
+ * checks whether the user is allowed to change their avatar in Nextcloud
* @param string $uid the Nextcloud user name
* @return boolean either the user can or cannot
*/
diff --git a/apps/user_ldap/lib/IUserLDAP.php b/apps/user_ldap/lib/IUserLDAP.php
index 6fcd68c0c01..5e8e29c3adf 100644
--- a/apps/user_ldap/lib/IUserLDAP.php
+++ b/apps/user_ldap/lib/IUserLDAP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -8,14 +9,14 @@ namespace OCA\User_LDAP;
interface IUserLDAP {
//Functions used by LDAPProvider
-
+
/**
* Return access for LDAP interaction.
* @param string $uid
* @return Access instance of Access for LDAP interaction
*/
public function getLDAPAccess($uid);
-
+
/**
* Return a new LDAP connection for the specified user.
* @param string $uid
diff --git a/apps/user_ldap/lib/Jobs/CleanUp.php b/apps/user_ldap/lib/Jobs/CleanUp.php
index 22c878ed067..76277b43c0b 100644
--- a/apps/user_ldap/lib/Jobs/CleanUp.php
+++ b/apps/user_ldap/lib/Jobs/CleanUp.php
@@ -10,10 +10,12 @@ namespace OCA\User_LDAP\Jobs;
use OCA\User_LDAP\Helper;
use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\User\DeletedUsersIndex;
-use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\User_Proxy;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
+use OCP\IConfig;
+use OCP\IDBConnection;
+use OCP\Server;
/**
* Class CleanUp
@@ -27,15 +29,12 @@ class CleanUp extends TimedJob {
protected $limit;
/** @var int $defaultIntervalMin default interval in minutes */
- protected $defaultIntervalMin = 51;
+ protected $defaultIntervalMin = 60;
- /** @var User_LDAP|User_Proxy $userBackend */
- protected $userBackend;
-
- /** @var \OCP\IConfig $ocConfig */
+ /** @var IConfig $ocConfig */
protected $ocConfig;
- /** @var \OCP\IDBConnection $db */
+ /** @var IDBConnection $db */
protected $db;
/** @var Helper $ldapHelper */
@@ -44,20 +43,15 @@ class CleanUp extends TimedJob {
/** @var UserMapping */
protected $mapping;
- /** @var DeletedUsersIndex */
- protected $dui;
-
public function __construct(
ITimeFactory $timeFactory,
- User_Proxy $userBackend,
- DeletedUsersIndex $dui
+ protected User_Proxy $userBackend,
+ protected DeletedUsersIndex $dui,
) {
parent::__construct($timeFactory);
- $minutes = \OC::$server->getConfig()->getSystemValue(
+ $minutes = Server::get(IConfig::class)->getSystemValue(
'ldapUserCleanupInterval', (string)$this->defaultIntervalMin);
$this->setInterval((int)$minutes * 60);
- $this->userBackend = $userBackend;
- $this->dui = $dui;
}
/**
@@ -73,13 +67,13 @@ class CleanUp extends TimedJob {
if (isset($arguments['helper'])) {
$this->ldapHelper = $arguments['helper'];
} else {
- $this->ldapHelper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $this->ldapHelper = Server::get(Helper::class);
}
if (isset($arguments['ocConfig'])) {
$this->ocConfig = $arguments['ocConfig'];
} else {
- $this->ocConfig = \OC::$server->getConfig();
+ $this->ocConfig = Server::get(IConfig::class);
}
if (isset($arguments['userBackend'])) {
@@ -89,13 +83,13 @@ class CleanUp extends TimedJob {
if (isset($arguments['db'])) {
$this->db = $arguments['db'];
} else {
- $this->db = \OC::$server->getDatabaseConnection();
+ $this->db = Server::get(IDBConnection::class);
}
if (isset($arguments['mapping'])) {
$this->mapping = $arguments['mapping'];
} else {
- $this->mapping = \OCP\Server::get(UserMapping::class);
+ $this->mapping = Server::get(UserMapping::class);
}
if (isset($arguments['deletedUsersIndex'])) {
@@ -185,8 +179,8 @@ class CleanUp extends TimedJob {
* @param bool $reset whether the offset should be set to 0
*/
public function setOffset(bool $reset = false): void {
- $newOffset = $reset ? 0 :
- $this->getOffset() + $this->getChunkSize();
+ $newOffset = $reset ? 0
+ : $this->getOffset() + $this->getChunkSize();
$this->ocConfig->setAppValue('user_ldap', 'cleanUpJobOffset', (string)$newOffset);
}
diff --git a/apps/user_ldap/lib/Jobs/Sync.php b/apps/user_ldap/lib/Jobs/Sync.php
index f0122733b62..26888ae96ae 100644
--- a/apps/user_ldap/lib/Jobs/Sync.php
+++ b/apps/user_ldap/lib/Jobs/Sync.php
@@ -1,8 +1,10 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
namespace OCA\User_LDAP\Jobs;
use OC\ServerNotAvailableException;
@@ -14,6 +16,7 @@ use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\Mapping\UserMapping;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\IDBConnection;
@@ -24,44 +27,38 @@ use Psr\Log\LoggerInterface;
class Sync extends TimedJob {
public const MAX_INTERVAL = 12 * 60 * 60; // 12h
public const MIN_INTERVAL = 30 * 60; // 30min
- /** @var Helper */
- protected $ldapHelper;
- /** @var LDAP */
- protected $ldap;
- /** @var UserMapping */
- protected $mapper;
- /** @var IConfig */
- protected $config;
- /** @var IAvatarManager */
- protected $avatarManager;
- /** @var IDBConnection */
- protected $dbc;
- /** @var IUserManager */
- protected $ncUserManager;
- /** @var LoggerInterface */
- protected $logger;
- /** @var IManager */
- protected $notificationManager;
- /** @var ConnectionFactory */
- protected $connectionFactory;
- /** @var AccessFactory */
- protected $accessFactory;
- public function __construct(ITimeFactory $time) {
- parent::__construct($time);
+ protected LDAP $ldap;
+
+ public function __construct(
+ ITimeFactory $timeFactory,
+ private IEventDispatcher $dispatcher,
+ private IConfig $config,
+ private IDBConnection $dbc,
+ private IAvatarManager $avatarManager,
+ private IUserManager $ncUserManager,
+ private LoggerInterface $logger,
+ private IManager $notificationManager,
+ private UserMapping $mapper,
+ private Helper $ldapHelper,
+ private ConnectionFactory $connectionFactory,
+ private AccessFactory $accessFactory,
+ ) {
+ parent::__construct($timeFactory);
$this->setInterval(
- (int)\OC::$server->getConfig()->getAppValue(
+ (int)$this->config->getAppValue(
'user_ldap',
'background_sync_interval',
(string)self::MIN_INTERVAL
)
);
+ $this->ldap = new LDAP($this->config->getSystemValueString('ldap_log_file'));
}
/**
- * updates the interval
+ * Updates the interval
*
- * the idea is to adjust the interval depending on the amount of known users
+ * The idea is to adjust the interval depending on the amount of known users
* and the attempt to update each user one day. At most it would run every
* 30 minutes, and at least every 12 hours.
*/
@@ -79,9 +76,8 @@ class Sync extends TimedJob {
/**
* returns the smallest configured paging size
- * @return int
*/
- protected function getMinPagingSize() {
+ protected function getMinPagingSize(): int {
$configKeys = $this->config->getAppKeys('user_ldap');
$configKeys = array_filter($configKeys, function ($key) {
return str_contains($key, 'ldap_paging_size');
@@ -98,10 +94,8 @@ class Sync extends TimedJob {
* @param array $argument
*/
public function run($argument) {
- $this->setArgument($argument);
-
$isBackgroundJobModeAjax = $this->config
- ->getAppValue('core', 'backgroundjobs_mode', 'ajax') === 'ajax';
+ ->getAppValue('core', 'backgroundjobs_mode', 'ajax') === 'ajax';
if ($isBackgroundJobModeAjax) {
return;
}
@@ -134,10 +128,10 @@ class Sync extends TimedJob {
}
/**
- * @param array $cycleData
+ * @param array{offset: int, prefix: string} $cycleData
* @return bool whether more results are expected from the same configuration
*/
- public function runCycle($cycleData) {
+ public function runCycle(array $cycleData): bool {
$connection = $this->connectionFactory->get($cycleData['prefix']);
$access = $this->accessFactory->get($connection);
$access->setUserMapper($this->mapper);
@@ -162,24 +156,22 @@ class Sync extends TimedJob {
}
/**
- * returns the info about the current cycle that should be run, if any,
+ * Returns the info about the current cycle that should be run, if any,
* otherwise null
- *
- * @return array|null
*/
- public function getCycle() {
+ public function getCycle(): ?array {
$prefixes = $this->ldapHelper->getServerConfigurationPrefixes(true);
if (count($prefixes) === 0) {
return null;
}
$cycleData = [
- 'prefix' => $this->config->getAppValue('user_ldap', 'background_sync_prefix', null),
+ 'prefix' => $this->config->getAppValue('user_ldap', 'background_sync_prefix', 'none'),
'offset' => (int)$this->config->getAppValue('user_ldap', 'background_sync_offset', '0'),
];
if (
- $cycleData['prefix'] !== null
+ $cycleData['prefix'] !== 'none'
&& in_array($cycleData['prefix'], $prefixes)
) {
return $cycleData;
@@ -191,21 +183,21 @@ class Sync extends TimedJob {
/**
* Save the provided cycle information in the DB
*
- * @param array $cycleData
+ * @param array{prefix: ?string, offset: int} $cycleData
*/
- public function setCycle(array $cycleData) {
+ public function setCycle(array $cycleData): void {
$this->config->setAppValue('user_ldap', 'background_sync_prefix', $cycleData['prefix']);
- $this->config->setAppValue('user_ldap', 'background_sync_offset', $cycleData['offset']);
+ $this->config->setAppValue('user_ldap', 'background_sync_offset', (string)$cycleData['offset']);
}
/**
* returns data about the next cycle that should run, if any, otherwise
* null. It also always goes for the next LDAP configuration!
*
- * @param array|null $cycleData the old cycle
- * @return array|null
+ * @param ?array{prefix: string, offset: int} $cycleData the old cycle
+ * @return ?array{prefix: string, offset: int}
*/
- public function determineNextCycle(?array $cycleData = null) {
+ public function determineNextCycle(?array $cycleData = null): ?array {
$prefixes = $this->ldapHelper->getServerConfigurationPrefixes(true);
if (count($prefixes) === 0) {
return null;
@@ -225,13 +217,12 @@ class Sync extends TimedJob {
}
/**
- * Checks whether the provided cycle should be run. Currently only the
+ * Checks whether the provided cycle should be run. Currently, only the
* last configuration change goes into account (at least one hour).
*
- * @param $cycleData
- * @return bool
+ * @param array{prefix: string} $cycleData
*/
- public function qualifiesToRun($cycleData) {
+ public function qualifiesToRun(array $cycleData): bool {
$lastChange = (int)$this->config->getAppValue('user_ldap', $cycleData['prefix'] . '_lastChange', '0');
if ((time() - $lastChange) > 60 * 30) {
return true;
@@ -240,23 +231,20 @@ class Sync extends TimedJob {
}
/**
- * increases the offset of the current cycle for the next run
+ * Increases the offset of the current cycle for the next run
*
- * @param $cycleData
+ * @param array{prefix: string, offset: int} $cycleData
*/
- protected function increaseOffset($cycleData) {
+ protected function increaseOffset(array $cycleData): void {
$ldapConfig = new Configuration($cycleData['prefix']);
$cycleData['offset'] += (int)$ldapConfig->ldapPagingSize;
$this->setCycle($cycleData);
}
/**
- * determines the next configuration prefix based on the last one (if any)
- *
- * @param string|null $lastPrefix
- * @return string|null
+ * Determines the next configuration prefix based on the last one (if any)
*/
- protected function getNextPrefix($lastPrefix) {
+ protected function getNextPrefix(?string $lastPrefix): ?string {
$prefixes = $this->ldapHelper->getServerConfigurationPrefixes(true);
$noOfPrefixes = count($prefixes);
if ($noOfPrefixes === 0) {
@@ -276,73 +264,9 @@ class Sync extends TimedJob {
}
/**
- * "fixes" DI
+ * Only used in tests
*/
- public function setArgument($argument) {
- if (isset($argument['config'])) {
- $this->config = $argument['config'];
- } else {
- $this->config = \OC::$server->getConfig();
- }
-
- if (isset($argument['helper'])) {
- $this->ldapHelper = $argument['helper'];
- } else {
- $this->ldapHelper = new Helper($this->config, \OC::$server->getDatabaseConnection());
- }
-
- if (isset($argument['ldapWrapper'])) {
- $this->ldap = $argument['ldapWrapper'];
- } else {
- $this->ldap = new LDAP($this->config->getSystemValueString('ldap_log_file'));
- }
-
- if (isset($argument['avatarManager'])) {
- $this->avatarManager = $argument['avatarManager'];
- } else {
- $this->avatarManager = \OC::$server->get(IAvatarManager::class);
- }
-
- if (isset($argument['dbc'])) {
- $this->dbc = $argument['dbc'];
- } else {
- $this->dbc = \OC::$server->getDatabaseConnection();
- }
-
- if (isset($argument['ncUserManager'])) {
- $this->ncUserManager = $argument['ncUserManager'];
- } else {
- $this->ncUserManager = \OC::$server->getUserManager();
- }
-
- if (isset($argument['logger'])) {
- $this->logger = $argument['logger'];
- } else {
- $this->logger = \OC::$server->get(LoggerInterface::class);
- }
-
- if (isset($argument['notificationManager'])) {
- $this->notificationManager = $argument['notificationManager'];
- } else {
- $this->notificationManager = \OC::$server->getNotificationManager();
- }
-
- if (isset($argument['mapper'])) {
- $this->mapper = $argument['mapper'];
- } else {
- $this->mapper = \OCP\Server::get(UserMapping::class);
- }
-
- if (isset($argument['connectionFactory'])) {
- $this->connectionFactory = $argument['connectionFactory'];
- } else {
- $this->connectionFactory = new ConnectionFactory($this->ldap);
- }
-
- if (isset($argument['accessFactory'])) {
- $this->accessFactory = $argument['accessFactory'];
- } else {
- $this->accessFactory = \OCP\Server::get(AccessFactory::class);
- }
+ public function overwritePropertiesForTest(LDAP $ldapWrapper): void {
+ $this->ldap = $ldapWrapper;
}
}
diff --git a/apps/user_ldap/lib/LDAP.php b/apps/user_ldap/lib/LDAP.php
index c29b8857e51..1cf20c4b939 100644
--- a/apps/user_ldap/lib/LDAP.php
+++ b/apps/user_ldap/lib/LDAP.php
@@ -11,27 +11,30 @@ use OC\ServerNotAvailableException;
use OCA\User_LDAP\DataCollector\LdapDataCollector;
use OCA\User_LDAP\Exceptions\ConstraintViolationException;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\Profiler\IProfiler;
+use OCP\Server;
use Psr\Log\LoggerInterface;
class LDAP implements ILDAPWrapper {
- protected string $logFile = '';
protected array $curArgs = [];
protected LoggerInterface $logger;
+ protected IConfig $config;
private ?LdapDataCollector $dataCollector = null;
- public function __construct(string $logFile = '') {
- $this->logFile = $logFile;
-
+ public function __construct(
+ protected string $logFile = '',
+ ) {
/** @var IProfiler $profiler */
- $profiler = \OC::$server->get(IProfiler::class);
+ $profiler = Server::get(IProfiler::class);
if ($profiler->isEnabled()) {
$this->dataCollector = new LdapDataCollector();
$profiler->add($this->dataCollector);
}
- $this->logger = \OCP\Server::get(LoggerInterface::class);
+ $this->logger = Server::get(LoggerInterface::class);
+ $this->config = Server::get(IConfig::class);
}
/**
@@ -291,9 +294,24 @@ class LDAP implements ILDAPWrapper {
return null;
}
+ /**
+ * Turn resources into string, and removes potentially problematic cookie string to avoid breaking logfiles
+ */
+ private function sanitizeFunctionParameters(array $args): array {
+ return array_map(function ($item) {
+ if ($this->isResource($item)) {
+ return '(resource)';
+ }
+ if (isset($item[0]['value']['cookie']) && $item[0]['value']['cookie'] !== '') {
+ $item[0]['value']['cookie'] = '*opaque cookie*';
+ }
+ return $item;
+ }, $args);
+ }
+
private function preFunctionCall(string $functionName, array $args): void {
$this->curArgs = $args;
- if(strcasecmp($functionName, 'ldap_bind') === 0 || strcasecmp($functionName, 'ldap_exop_passwd') === 0) {
+ if (strcasecmp($functionName, 'ldap_bind') === 0 || strcasecmp($functionName, 'ldap_exop_passwd') === 0) {
// The arguments are not key value pairs
// \OCA\User_LDAP\LDAP::bind passes 3 arguments, the 3rd being the pw
// Remove it via direct array access for now, although a better solution could be found mebbe?
@@ -301,32 +319,24 @@ class LDAP implements ILDAPWrapper {
$args[2] = IConfig::SENSITIVE_VALUE;
}
- $this->logger->debug('Calling LDAP function {func} with parameters {args}', [
- 'app' => 'user_ldap',
- 'func' => $functionName,
- 'args' => json_encode($args),
- ]);
+ if ($this->config->getSystemValue('loglevel') === ILogger::DEBUG) {
+ /* Only running this if debug loglevel is on, to avoid processing parameters on production */
+ $this->logger->debug('Calling LDAP function {func} with parameters {args}', [
+ 'app' => 'user_ldap',
+ 'func' => $functionName,
+ 'args' => $this->sanitizeFunctionParameters($args),
+ ]);
+ }
if ($this->dataCollector !== null) {
- $args = array_map(function ($item) {
- if ($this->isResource($item)) {
- return '(resource)';
- }
- if (isset($item[0]['value']['cookie']) && $item[0]['value']['cookie'] !== "") {
- $item[0]['value']['cookie'] = "*opaque cookie*";
- }
- return $item;
- }, $this->curArgs);
-
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
- $this->dataCollector->startLdapRequest($functionName, $args, $backtrace);
+ $this->dataCollector->startLdapRequest($functionName, $this->sanitizeFunctionParameters($args), $backtrace);
}
if ($this->logFile !== '' && is_writable(dirname($this->logFile)) && (!file_exists($this->logFile) || is_writable($this->logFile))) {
- $args = array_map(fn ($item) => (!$this->isResource($item) ? $item : '(resource)'), $this->curArgs);
file_put_contents(
$this->logFile,
- $functionName . '::' . json_encode($args) . "\n",
+ $functionName . '::' . json_encode($this->sanitizeFunctionParameters($args)) . "\n",
FILE_APPEND
);
}
@@ -369,7 +379,7 @@ class LDAP implements ILDAPWrapper {
/**
* Called after an ldap method is run to act on LDAP error if necessary
- * @throw \Exception
+ * @throws \Exception
*/
private function postFunctionCall(string $functionName): void {
if ($this->isResource($this->curArgs[0])) {
diff --git a/apps/user_ldap/lib/LDAPProvider.php b/apps/user_ldap/lib/LDAPProvider.php
index a6634382fa1..d9750ae3fcf 100644
--- a/apps/user_ldap/lib/LDAPProvider.php
+++ b/apps/user_ldap/lib/LDAPProvider.php
@@ -11,32 +11,33 @@ use OCA\User_LDAP\User\DeletedUsersIndex;
use OCP\IServerContainer;
use OCP\LDAP\IDeletionFlagSupport;
use OCP\LDAP\ILDAPProvider;
+use Psr\Log\LoggerInterface;
/**
- * LDAP provider for pulic access to the LDAP backend.
+ * LDAP provider for public access to the LDAP backend.
*/
class LDAPProvider implements ILDAPProvider, IDeletionFlagSupport {
private $userBackend;
private $groupBackend;
private $logger;
- private $helper;
- private $deletedUsersIndex;
/**
* Create new LDAPProvider
- * @param \OCP\IServerContainer $serverContainer
+ * @param IServerContainer $serverContainer
* @param Helper $helper
* @param DeletedUsersIndex $deletedUsersIndex
* @throws \Exception if user_ldap app was not enabled
*/
- public function __construct(IServerContainer $serverContainer, Helper $helper, DeletedUsersIndex $deletedUsersIndex) {
- $this->logger = $serverContainer->getLogger();
- $this->helper = $helper;
- $this->deletedUsersIndex = $deletedUsersIndex;
+ public function __construct(
+ IServerContainer $serverContainer,
+ private Helper $helper,
+ private DeletedUsersIndex $deletedUsersIndex,
+ ) {
+ $this->logger = $serverContainer->get(LoggerInterface::class);
$userBackendFound = false;
$groupBackendFound = false;
foreach ($serverContainer->getUserManager()->getBackends() as $backend) {
- $this->logger->debug('instance '.get_class($backend).' user backend.', ['app' => 'user_ldap']);
+ $this->logger->debug('instance ' . get_class($backend) . ' user backend.', ['app' => 'user_ldap']);
if ($backend instanceof IUserLDAP) {
$this->userBackend = $backend;
$userBackendFound = true;
@@ -44,7 +45,7 @@ class LDAPProvider implements ILDAPProvider, IDeletionFlagSupport {
}
}
foreach ($serverContainer->getGroupManager()->getBackends() as $backend) {
- $this->logger->debug('instance '.get_class($backend).' group backend.', ['app' => 'user_ldap']);
+ $this->logger->debug('instance ' . get_class($backend) . ' group backend.', ['app' => 'user_ldap']);
if ($backend instanceof IGroupLDAP) {
$this->groupBackend = $backend;
$groupBackendFound = true;
@@ -117,8 +118,8 @@ class LDAPProvider implements ILDAPProvider, IDeletionFlagSupport {
/**
* Sanitize a DN received from the LDAP server.
- * @param array $dn the DN in question
- * @return array the sanitized DN
+ * @param array|string $dn the DN in question
+ * @return array|string the sanitized DN
*/
public function sanitizeDN($dn) {
return $this->helper->sanitizeDN($dn);
diff --git a/apps/user_ldap/lib/LDAPProviderFactory.php b/apps/user_ldap/lib/LDAPProviderFactory.php
index cf76233c412..8fad9d52206 100644
--- a/apps/user_ldap/lib/LDAPProviderFactory.php
+++ b/apps/user_ldap/lib/LDAPProviderFactory.php
@@ -12,11 +12,10 @@ use OCP\LDAP\ILDAPProvider;
use OCP\LDAP\ILDAPProviderFactory;
class LDAPProviderFactory implements ILDAPProviderFactory {
- /** * @var IServerContainer */
- private $serverContainer;
-
- public function __construct(IServerContainer $serverContainer) {
- $this->serverContainer = $serverContainer;
+ public function __construct(
+ /** * @var IServerContainer */
+ private IServerContainer $serverContainer,
+ ) {
}
public function getLDAPProvider(): ILDAPProvider {
diff --git a/apps/user_ldap/lib/LDAPUtility.php b/apps/user_ldap/lib/LDAPUtility.php
index bca6ec37ecf..39b517528e2 100644
--- a/apps/user_ldap/lib/LDAPUtility.php
+++ b/apps/user_ldap/lib/LDAPUtility.php
@@ -8,13 +8,12 @@
namespace OCA\User_LDAP;
abstract class LDAPUtility {
- protected ILDAPWrapper $ldap;
-
/**
* constructor, make sure the subclasses call this one!
- * @param ILDAPWrapper $ldapWrapper an instance of an ILDAPWrapper
+ * @param ILDAPWrapper $ldap an instance of an ILDAPWrapper
*/
- public function __construct(ILDAPWrapper $ldapWrapper) {
- $this->ldap = $ldapWrapper;
+ public function __construct(
+ protected ILDAPWrapper $ldap,
+ ) {
}
}
diff --git a/apps/user_ldap/lib/LoginListener.php b/apps/user_ldap/lib/LoginListener.php
index c417300b45e..f397f4694d2 100644
--- a/apps/user_ldap/lib/LoginListener.php
+++ b/apps/user_ldap/lib/LoginListener.php
@@ -42,7 +42,7 @@ class LoginListener implements IEventListener {
public function onPostLogin(IUser $user): void {
$this->logger->info(
- __CLASS__ . ' - {user} postLogin',
+ self::class . ' - {user} postLogin',
[
'app' => 'user_ldap',
'user' => $user->getUID(),
@@ -67,7 +67,7 @@ class LoginListener implements IEventListener {
$groupObject = $this->groupManager->get($groupId);
if ($groupObject === null) {
$this->logger->error(
- __CLASS__ . ' - group {group} could not be found (user {user})',
+ self::class . ' - group {group} could not be found (user {user})',
[
'app' => 'user_ldap',
'user' => $userId,
@@ -81,7 +81,7 @@ class LoginListener implements IEventListener {
} catch (Exception $e) {
if ($e->getReason() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
$this->logger->error(
- __CLASS__ . ' - group {group} membership failed to be added (user {user})',
+ self::class . ' - group {group} membership failed to be added (user {user})',
[
'app' => 'user_ldap',
'user' => $userId,
@@ -96,7 +96,7 @@ class LoginListener implements IEventListener {
$this->groupBackend->addRelationshipToCaches($userId, null, $groupId);
$this->dispatcher->dispatchTyped(new UserAddedEvent($groupObject, $userObject));
$this->logger->info(
- __CLASS__ . ' - {user} added to {group}',
+ self::class . ' - {user} added to {group}',
[
'app' => 'user_ldap',
'user' => $userId,
@@ -110,7 +110,7 @@ class LoginListener implements IEventListener {
} catch (Exception $e) {
if ($e->getReason() !== Exception::REASON_DATABASE_OBJECT_NOT_FOUND) {
$this->logger->error(
- __CLASS__ . ' - group {group} membership failed to be removed (user {user})',
+ self::class . ' - group {group} membership failed to be removed (user {user})',
[
'app' => 'user_ldap',
'user' => $userId,
@@ -125,7 +125,7 @@ class LoginListener implements IEventListener {
$groupObject = $this->groupManager->get($groupId);
if ($groupObject === null) {
$this->logger->error(
- __CLASS__ . ' - group {group} could not be found (user {user})',
+ self::class . ' - group {group} could not be found (user {user})',
[
'app' => 'user_ldap',
'user' => $userId,
diff --git a/apps/user_ldap/lib/Mapping/AbstractMapping.php b/apps/user_ldap/lib/Mapping/AbstractMapping.php
index c243731eaf7..fa10312a915 100644
--- a/apps/user_ldap/lib/Mapping/AbstractMapping.php
+++ b/apps/user_ldap/lib/Mapping/AbstractMapping.php
@@ -8,9 +8,10 @@
namespace OCA\User_LDAP\Mapping;
use Doctrine\DBAL\Exception;
-use Doctrine\DBAL\Platforms\SqlitePlatform;
use OCP\DB\IPreparedStatement;
use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\IDBConnection;
+use OCP\Server;
use Psr\Log\LoggerInterface;
/**
@@ -20,11 +21,6 @@ use Psr\Log\LoggerInterface;
*/
abstract class AbstractMapping {
/**
- * @var \OCP\IDBConnection $dbc
- */
- protected $dbc;
-
- /**
* returns the DB table name which holds the mappings
*
* @return string
@@ -32,10 +28,11 @@ abstract class AbstractMapping {
abstract protected function getTableName(bool $includePrefix = true);
/**
- * @param \OCP\IDBConnection $dbc
+ * @param IDBConnection $dbc
*/
- public function __construct(\OCP\IDBConnection $dbc) {
- $this->dbc = $dbc;
+ public function __construct(
+ protected IDBConnection $dbc,
+ ) {
}
/** @var array caches Names (value) by DN (key) */
@@ -216,7 +213,7 @@ abstract class AbstractMapping {
public function getListOfIdsByDn(array $fdns): array {
$totalDBParamLimit = 65000;
$sliceSize = 1000;
- $maxSlices = $this->dbc->getDatabasePlatform() instanceof SqlitePlatform ? 9 : $totalDBParamLimit / $sliceSize;
+ $maxSlices = $this->dbc->getDatabaseProvider() === IDBConnection::PLATFORM_SQLITE ? 9 : $totalDBParamLimit / $sliceSize;
$results = [];
$slice = 1;
@@ -259,7 +256,7 @@ abstract class AbstractMapping {
*
* @return string[]
*/
- public function getNamesBySearch(string $search, string $prefixMatch = "", string $postfixMatch = ""): array {
+ public function getNamesBySearch(string $search, string $prefixMatch = '', string $postfixMatch = ''): array {
$statement = $this->dbc->prepare('
SELECT `owncloud_name`
FROM `' . $this->getTableName() . '`
@@ -333,7 +330,7 @@ abstract class AbstractMapping {
*/
public function map($fdn, $name, $uuid) {
if (mb_strlen($fdn) > 4000) {
- \OCP\Server::get(LoggerInterface::class)->error(
+ Server::get(LoggerInterface::class)->error(
'Cannot map, because the DN exceeds 4000 characters: {dn}',
[
'app' => 'user_ldap',
@@ -406,7 +403,7 @@ abstract class AbstractMapping {
* @param callable $preCallback
* @param callable $postCallback
* @return bool true on success, false when at least one row was not
- * deleted
+ * deleted
*/
public function clearCb(callable $preCallback, callable $postCallback): bool {
$picker = $this->dbc->getQueryBuilder();
@@ -434,7 +431,7 @@ abstract class AbstractMapping {
$query = $this->dbc->getQueryBuilder();
$query->select($query->func()->count('ldap_dn_hash'))
->from($this->getTableName());
- $res = $query->execute();
+ $res = $query->executeQuery();
$count = $res->fetchOne();
$res->closeCursor();
return (int)$count;
@@ -445,7 +442,7 @@ abstract class AbstractMapping {
$query->select($query->func()->count('ldap_dn_hash'))
->from($this->getTableName())
->where($query->expr()->like('directory_uuid', $query->createNamedParameter('invalidated_%')));
- $res = $query->execute();
+ $res = $query->executeQuery();
$count = $res->fetchOne();
$res->closeCursor();
return (int)$count;
diff --git a/apps/user_ldap/lib/Mapping/UserMapping.php b/apps/user_ldap/lib/Mapping/UserMapping.php
index 0eeaaef12fd..a030cd0ab52 100644
--- a/apps/user_ldap/lib/Mapping/UserMapping.php
+++ b/apps/user_ldap/lib/Mapping/UserMapping.php
@@ -20,11 +20,12 @@ use OCP\Support\Subscription\IAssertion;
*/
class UserMapping extends AbstractMapping {
- private IAssertion $assertion;
protected const PROV_API_REGEX = '/\/ocs\/v[1-9].php\/cloud\/(groups|users)/';
- public function __construct(IDBConnection $dbc, IAssertion $assertion) {
- $this->assertion = $assertion;
+ public function __construct(
+ IDBConnection $dbc,
+ private IAssertion $assertion,
+ ) {
parent::__construct($dbc);
}
diff --git a/apps/user_ldap/lib/Migration/GroupMappingMigration.php b/apps/user_ldap/lib/Migration/GroupMappingMigration.php
index 437bb202bba..7dfb8705770 100644
--- a/apps/user_ldap/lib/Migration/GroupMappingMigration.php
+++ b/apps/user_ldap/lib/Migration/GroupMappingMigration.php
@@ -14,11 +14,9 @@ use OCP\Migration\SimpleMigrationStep;
abstract class GroupMappingMigration extends SimpleMigrationStep {
- /** @var IDBConnection */
- private $dbc;
-
- public function __construct(IDBConnection $dbc) {
- $this->dbc = $dbc;
+ public function __construct(
+ private IDBConnection $dbc,
+ ) {
}
protected function copyGroupMappingData(string $sourceTable, string $destinationTable): void {
diff --git a/apps/user_ldap/lib/Migration/RemoveRefreshTime.php b/apps/user_ldap/lib/Migration/RemoveRefreshTime.php
index fd414e7e4b7..88ac56ccb84 100644
--- a/apps/user_ldap/lib/Migration/RemoveRefreshTime.php
+++ b/apps/user_ldap/lib/Migration/RemoveRefreshTime.php
@@ -22,14 +22,10 @@ use OCP\Migration\IRepairStep;
*/
class RemoveRefreshTime implements IRepairStep {
- /** @var IDBConnection */
- private $dbc;
- /** @var IConfig */
- private $config;
-
- public function __construct(IDBConnection $dbc, IConfig $config) {
- $this->dbc = $dbc;
- $this->config = $config;
+ public function __construct(
+ private IDBConnection $dbc,
+ private IConfig $config,
+ ) {
}
public function getName() {
@@ -43,6 +39,6 @@ class RemoveRefreshTime implements IRepairStep {
$qb->delete('preferences')
->where($qb->expr()->eq('appid', $qb->createNamedParameter('user_ldap')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lastFeatureRefresh')))
- ->execute();
+ ->executeStatement();
}
}
diff --git a/apps/user_ldap/lib/Migration/SetDefaultProvider.php b/apps/user_ldap/lib/Migration/SetDefaultProvider.php
index b4d6b5650fb..0bb04438a1d 100644
--- a/apps/user_ldap/lib/Migration/SetDefaultProvider.php
+++ b/apps/user_ldap/lib/Migration/SetDefaultProvider.php
@@ -16,16 +16,10 @@ use OCP\Migration\IRepairStep;
class SetDefaultProvider implements IRepairStep {
- /** @var IConfig */
- private $config;
-
- /** @var Helper */
- private $helper;
-
- public function __construct(IConfig $config,
- Helper $helper) {
- $this->config = $config;
- $this->helper = $helper;
+ public function __construct(
+ private IConfig $config,
+ private Helper $helper,
+ ) {
}
public function getName(): string {
diff --git a/apps/user_ldap/lib/Migration/UUIDFix.php b/apps/user_ldap/lib/Migration/UUIDFix.php
index 309910cdf0c..e853f3bba66 100644
--- a/apps/user_ldap/lib/Migration/UUIDFix.php
+++ b/apps/user_ldap/lib/Migration/UUIDFix.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Migration/UUIDFixGroup.php b/apps/user_ldap/lib/Migration/UUIDFixGroup.php
index 4d039a72ebc..3924c91e7ba 100644
--- a/apps/user_ldap/lib/Migration/UUIDFixGroup.php
+++ b/apps/user_ldap/lib/Migration/UUIDFixGroup.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Migration/UUIDFixInsert.php b/apps/user_ldap/lib/Migration/UUIDFixInsert.php
index 52c52190654..bb92314d93a 100644
--- a/apps/user_ldap/lib/Migration/UUIDFixInsert.php
+++ b/apps/user_ldap/lib/Migration/UUIDFixInsert.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -14,23 +15,12 @@ use OCP\Migration\IRepairStep;
class UUIDFixInsert implements IRepairStep {
- /** @var IConfig */
- protected $config;
-
- /** @var UserMapping */
- protected $userMapper;
-
- /** @var GroupMapping */
- protected $groupMapper;
-
- /** @var IJobList */
- protected $jobList;
-
- public function __construct(IConfig $config, UserMapping $userMapper, GroupMapping $groupMapper, IJobList $jobList) {
- $this->config = $config;
- $this->userMapper = $userMapper;
- $this->groupMapper = $groupMapper;
- $this->jobList = $jobList;
+ public function __construct(
+ protected IConfig $config,
+ protected UserMapping $userMapper,
+ protected GroupMapping $groupMapper,
+ protected IJobList $jobList,
+ ) {
}
/**
diff --git a/apps/user_ldap/lib/Migration/UUIDFixUser.php b/apps/user_ldap/lib/Migration/UUIDFixUser.php
index 0c292a2c2ae..71c3f638095 100644
--- a/apps/user_ldap/lib/Migration/UUIDFixUser.php
+++ b/apps/user_ldap/lib/Migration/UUIDFixUser.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/lib/Migration/UnsetDefaultProvider.php b/apps/user_ldap/lib/Migration/UnsetDefaultProvider.php
index 2b368f5d2c9..025415cf712 100644
--- a/apps/user_ldap/lib/Migration/UnsetDefaultProvider.php
+++ b/apps/user_ldap/lib/Migration/UnsetDefaultProvider.php
@@ -15,11 +15,9 @@ use OCP\Migration\IRepairStep;
class UnsetDefaultProvider implements IRepairStep {
- /** @var IConfig */
- private $config;
-
- public function __construct(IConfig $config) {
- $this->config = $config;
+ public function __construct(
+ private IConfig $config,
+ ) {
}
public function getName(): string {
diff --git a/apps/user_ldap/lib/Migration/Version1120Date20210917155206.php b/apps/user_ldap/lib/Migration/Version1120Date20210917155206.php
index 9b6ebbfc5de..dc3823bf771 100644
--- a/apps/user_ldap/lib/Migration/Version1120Date20210917155206.php
+++ b/apps/user_ldap/lib/Migration/Version1120Date20210917155206.php
@@ -22,17 +22,11 @@ use Psr\Log\LoggerInterface;
class Version1120Date20210917155206 extends SimpleMigrationStep {
- /** @var IDBConnection */
- private $dbc;
- /** @var IUserManager */
- private $userManager;
- /** @var LoggerInterface */
- private $logger;
-
- public function __construct(IDBConnection $dbc, IUserManager $userManager, LoggerInterface $logger) {
- $this->dbc = $dbc;
- $this->userManager = $userManager;
- $this->logger = $logger;
+ public function __construct(
+ private IDBConnection $dbc,
+ private IUserManager $userManager,
+ private LoggerInterface $logger,
+ ) {
}
public function getName() {
diff --git a/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php b/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php
index ff8b113d3e9..2457acd840d 100644
--- a/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php
+++ b/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php
@@ -22,16 +22,13 @@ use Psr\Log\LoggerInterface;
class Version1130Date20211102154716 extends SimpleMigrationStep {
- /** @var IDBConnection */
- private $dbc;
- /** @var LoggerInterface */
- private $logger;
/** @var string[] */
private $hashColumnAddedToTables = [];
- public function __construct(IDBConnection $dbc, LoggerInterface $logger) {
- $this->dbc = $dbc;
- $this->logger = $logger;
+ public function __construct(
+ private IDBConnection $dbc,
+ private LoggerInterface $logger,
+ ) {
}
public function getName() {
diff --git a/apps/user_ldap/lib/Migration/Version1141Date20220323143801.php b/apps/user_ldap/lib/Migration/Version1141Date20220323143801.php
index 86f10a26c3e..ecedbf1de20 100644
--- a/apps/user_ldap/lib/Migration/Version1141Date20220323143801.php
+++ b/apps/user_ldap/lib/Migration/Version1141Date20220323143801.php
@@ -18,10 +18,9 @@ use OCP\Migration\SimpleMigrationStep;
class Version1141Date20220323143801 extends SimpleMigrationStep {
- private IDBConnection $dbc;
-
- public function __construct(IDBConnection $dbc) {
- $this->dbc = $dbc;
+ public function __construct(
+ private IDBConnection $dbc,
+ ) {
}
/**
diff --git a/apps/user_ldap/lib/Notification/Notifier.php b/apps/user_ldap/lib/Notification/Notifier.php
index 82050bd2596..0195cb9e65b 100644
--- a/apps/user_ldap/lib/Notification/Notifier.php
+++ b/apps/user_ldap/lib/Notification/Notifier.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -8,17 +9,16 @@ namespace OCA\User_LDAP\Notification;
use OCP\L10N\IFactory;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;
+use OCP\Notification\UnknownNotificationException;
class Notifier implements INotifier {
- /** @var IFactory */
- protected $l10nFactory;
-
/**
* @param IFactory $l10nFactory
*/
- public function __construct(\OCP\L10N\IFactory $l10nFactory) {
- $this->l10nFactory = $l10nFactory;
+ public function __construct(
+ protected IFactory $l10nFactory,
+ ) {
}
/**
@@ -45,12 +45,12 @@ class Notifier implements INotifier {
* @param INotification $notification
* @param string $languageCode The code of the language that should be used to prepare the notification
* @return INotification
- * @throws \InvalidArgumentException When the notification was not prepared by a notifier
+ * @throws UnknownNotificationException When the notification was not prepared by a notifier
*/
public function prepare(INotification $notification, string $languageCode): INotification {
if ($notification->getApp() !== 'user_ldap') {
// Not my app => throw
- throw new \InvalidArgumentException();
+ throw new UnknownNotificationException();
}
// Read the language from the notification
@@ -60,7 +60,7 @@ class Notifier implements INotifier {
// Deal with known subjects
case 'pwd_exp_warn_days':
$params = $notification->getSubjectParameters();
- $days = (int) $params[0];
+ $days = (int)$params[0];
if ($days === 2) {
$notification->setParsedSubject($l->t('Your password will expire tomorrow.'));
} elseif ($days === 1) {
@@ -76,7 +76,7 @@ class Notifier implements INotifier {
default:
// Unknown subject => Unknown notification => throw
- throw new \InvalidArgumentException();
+ throw new UnknownNotificationException();
}
}
}
diff --git a/apps/user_ldap/lib/Proxy.php b/apps/user_ldap/lib/Proxy.php
index 285427bfd4d..22b2c6617af 100644
--- a/apps/user_ldap/lib/Proxy.php
+++ b/apps/user_ldap/lib/Proxy.php
@@ -10,28 +10,66 @@ namespace OCA\User_LDAP;
use OCA\User_LDAP\Mapping\GroupMapping;
use OCA\User_LDAP\Mapping\UserMapping;
use OCP\ICache;
+use OCP\ICacheFactory;
use OCP\Server;
+/**
+ * @template T
+ */
abstract class Proxy {
/** @var array<string,Access> */
private static array $accesses = [];
- private ILDAPWrapper $ldap;
private ?bool $isSingleBackend = null;
private ?ICache $cache = null;
- private AccessFactory $accessFactory;
+
+ /** @var T[] */
+ protected array $backends = [];
+ /** @var ?T */
+ protected $refBackend = null;
+
+ protected bool $isSetUp = false;
public function __construct(
- ILDAPWrapper $ldap,
- AccessFactory $accessFactory
+ private Helper $helper,
+ private ILDAPWrapper $ldap,
+ private AccessFactory $accessFactory,
) {
- $this->ldap = $ldap;
- $this->accessFactory = $accessFactory;
- $memcache = \OC::$server->getMemCacheFactory();
+ $memcache = Server::get(ICacheFactory::class);
if ($memcache->isAvailable()) {
$this->cache = $memcache->createDistributed();
}
}
+ protected function setup(): void {
+ if ($this->isSetUp) {
+ return;
+ }
+
+ $serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
+ foreach ($serverConfigPrefixes as $configPrefix) {
+ $this->backends[$configPrefix] = $this->newInstance($configPrefix);
+
+ if (is_null($this->refBackend)) {
+ $this->refBackend = $this->backends[$configPrefix];
+ }
+ }
+
+ $this->isSetUp = true;
+ }
+
+ /**
+ * @return T
+ */
+ abstract protected function newInstance(string $configPrefix): object;
+
+ /**
+ * @return T
+ */
+ public function getBackend(string $configPrefix): object {
+ $this->setup();
+ return $this->backends[$configPrefix];
+ }
+
private function addAccess(string $configPrefix): void {
$userMap = Server::get(UserMapping::class);
$groupMap = Server::get(GroupMapping::class);
diff --git a/apps/user_ldap/lib/Service/UpdateGroupsService.php b/apps/user_ldap/lib/Service/UpdateGroupsService.php
index 4c007f7201f..94f2a7fd4a1 100644
--- a/apps/user_ldap/lib/Service/UpdateGroupsService.php
+++ b/apps/user_ldap/lib/Service/UpdateGroupsService.php
@@ -90,7 +90,7 @@ class UpdateGroupsService {
if ($e->getReason() !== Exception::REASON_DATABASE_OBJECT_NOT_FOUND) {
/* If reason is not found something else removed the membership, that’s fine */
$this->logger->error(
- __CLASS__ . ' - group {group} membership failed to be removed (user {user})',
+ self::class . ' - group {group} membership failed to be removed (user {user})',
[
'app' => 'user_ldap',
'user' => $removedUser,
@@ -121,7 +121,7 @@ class UpdateGroupsService {
if ($e->getReason() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
/* If reason is unique constraint something else added the membership, that’s fine */
$this->logger->error(
- __CLASS__ . ' - group {group} membership failed to be added (user {user})',
+ self::class . ' - group {group} membership failed to be added (user {user})',
[
'app' => 'user_ldap',
'user' => $addedUser,
@@ -167,7 +167,7 @@ class UpdateGroupsService {
} catch (Exception $e) {
if ($e->getReason() !== Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
$this->logger->error(
- __CLASS__ . ' - group {group} membership failed to be added (user {user})',
+ self::class . ' - group {group} membership failed to be added (user {user})',
[
'app' => 'user_ldap',
'user' => $user,
diff --git a/apps/user_ldap/lib/Settings/Admin.php b/apps/user_ldap/lib/Settings/Admin.php
index a1de0a65362..89fb063265b 100644
--- a/apps/user_ldap/lib/Settings/Admin.php
+++ b/apps/user_ldap/lib/Settings/Admin.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -9,25 +10,22 @@ use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\Helper;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IL10N;
+use OCP\Server;
use OCP\Settings\IDelegatedSettings;
-use OCP\Template;
+use OCP\Template\ITemplateManager;
class Admin implements IDelegatedSettings {
- /** @var IL10N */
- private $l;
-
- /**
- * @param IL10N $l
- */
- public function __construct(IL10N $l) {
- $this->l = $l;
+ public function __construct(
+ private IL10N $l,
+ private ITemplateManager $templateManager,
+ ) {
}
/**
* @return TemplateResponse
*/
public function getForm() {
- $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
$prefixes = $helper->getServerConfigurationPrefixes();
if (count($prefixes) === 0) {
$newPrefix = $helper->getNextServerConfigurationPrefix();
@@ -39,11 +37,12 @@ class Admin implements IDelegatedSettings {
$hosts = $helper->getServerConfigurationHosts();
- $wControls = new Template('user_ldap', 'part.wizardcontrols');
+ $wControls = $this->templateManager->getTemplate('user_ldap', 'part.wizardcontrols');
$wControls = $wControls->fetchPage();
- $sControls = new Template('user_ldap', 'part.settingcontrols');
+ $sControls = $this->templateManager->getTemplate('user_ldap', 'part.settingcontrols');
$sControls = $sControls->fetchPage();
+ $parameters = [];
$parameters['serverConfigurationPrefixes'] = $prefixes;
$parameters['serverConfigurationHosts'] = $hosts;
$parameters['settingControls'] = $sControls;
@@ -55,7 +54,7 @@ class Admin implements IDelegatedSettings {
}
$defaults = $config->getDefaults();
foreach ($defaults as $key => $default) {
- $parameters[$key.'_default'] = $default;
+ $parameters[$key . '_default'] = $default;
}
return new TemplateResponse('user_ldap', 'settings', $parameters);
@@ -70,8 +69,8 @@ class Admin implements IDelegatedSettings {
/**
* @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
+ * the admin section. The forms are arranged in ascending order of the
+ * priority values. It is required to return a value between 0 and 100.
*
* E.g.: 70
*/
diff --git a/apps/user_ldap/lib/Settings/Section.php b/apps/user_ldap/lib/Settings/Section.php
index 2c8871db9ce..3b95e25513d 100644
--- a/apps/user_ldap/lib/Settings/Section.php
+++ b/apps/user_ldap/lib/Settings/Section.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -10,18 +11,14 @@ use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
class Section implements IIconSection {
- /** @var IL10N */
- private $l;
- /** @var IURLGenerator */
- private $url;
-
/**
* @param IURLGenerator $url
* @param IL10N $l
*/
- public function __construct(IURLGenerator $url, IL10N $l) {
- $this->url = $url;
- $this->l = $l;
+ public function __construct(
+ private IURLGenerator $url,
+ private IL10N $l,
+ ) {
}
/**
@@ -46,8 +43,8 @@ class Section implements IIconSection {
/**
* @return int whether the form should be rather on the top or bottom of
- * the settings navigation. The sections are arranged in ascending order of
- * the priority values. It is required to return a value between 0 and 99.
+ * the settings navigation. The sections are arranged in ascending order of
+ * the priority values. It is required to return a value between 0 and 99.
*
* E.g.: 70
*/
diff --git a/apps/user_ldap/lib/SetupChecks/LdapConnection.php b/apps/user_ldap/lib/SetupChecks/LdapConnection.php
index e0e9e6b63d0..ee8c4ddd595 100644
--- a/apps/user_ldap/lib/SetupChecks/LdapConnection.php
+++ b/apps/user_ldap/lib/SetupChecks/LdapConnection.php
@@ -58,26 +58,26 @@ class LdapConnection implements ISetupCheck {
if (!empty($bindFailedConfigurations)) {
$output .= $this->l10n->n(
'Binding failed for this LDAP configuration: %s',
- 'Binding failed for these LDAP configurations: %s',
+ 'Binding failed for %n LDAP configurations: %s',
count($bindFailedConfigurations),
[implode(',', $bindFailedConfigurations)]
- )."\n";
+ ) . "\n";
}
if (!empty($searchFailedConfigurations)) {
$output .= $this->l10n->n(
'Searching failed for this LDAP configuration: %s',
- 'Searching failed for these LDAP configurations: %s',
+ 'Searching failed for %n LDAP configurations: %s',
count($searchFailedConfigurations),
[implode(',', $searchFailedConfigurations)]
- )."\n";
+ ) . "\n";
}
if (!empty($inactiveConfigurations)) {
$output .= $this->l10n->n(
'There is an inactive LDAP configuration: %s',
- 'There are inactive LDAP configurations: %s',
+ 'There are %n inactive LDAP configurations: %s',
count($inactiveConfigurations),
[implode(',', $inactiveConfigurations)]
- )."\n";
+ ) . "\n";
}
if (!empty($bindFailedConfigurations) || !empty($searchFailedConfigurations)) {
return SetupResult::error($output);
@@ -86,7 +86,7 @@ class LdapConnection implements ISetupCheck {
}
return SetupResult::success($this->l10n->n(
'Binding and searching works on the configured LDAP connection (%s)',
- 'Binding and searching works on all of the configured LDAP connections (%s)',
+ 'Binding and searching works on all of the %n configured LDAP connections (%s)',
count($availableConfigs),
[implode(',', $availableConfigs)]
));
diff --git a/apps/user_ldap/lib/User/DeletedUsersIndex.php b/apps/user_ldap/lib/User/DeletedUsersIndex.php
index 4b5bb26fa96..f57f71a9d47 100644
--- a/apps/user_ldap/lib/User/DeletedUsersIndex.php
+++ b/apps/user_ldap/lib/User/DeletedUsersIndex.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
@@ -7,6 +8,7 @@ namespace OCA\User_LDAP\User;
use OCA\User_LDAP\Mapping\UserMapping;
use OCP\IConfig;
+use OCP\PreConditionNotMetException;
use OCP\Share\IManager;
/**
@@ -14,19 +16,13 @@ use OCP\Share\IManager;
* @package OCA\User_LDAP
*/
class DeletedUsersIndex {
- protected IConfig $config;
- protected UserMapping $mapping;
protected ?array $deletedUsers = null;
- private IManager $shareManager;
public function __construct(
- IConfig $config,
- UserMapping $mapping,
- IManager $shareManager
+ protected IConfig $config,
+ protected UserMapping $mapping,
+ private IManager $shareManager,
) {
- $this->config = $config;
- $this->mapping = $mapping;
- $this->shareManager = $shareManager;
}
/**
@@ -74,7 +70,7 @@ class DeletedUsersIndex {
/**
* marks a user as deleted
*
- * @throws \OCP\PreConditionNotMetException
+ * @throws PreConditionNotMetException
*/
public function markUser(string $ocName): void {
if ($this->isUserMarked($ocName)) {
diff --git a/apps/user_ldap/lib/User/Manager.php b/apps/user_ldap/lib/User/Manager.php
index c76f217a95a..88a001dd965 100644
--- a/apps/user_ldap/lib/User/Manager.php
+++ b/apps/user_ldap/lib/User/Manager.php
@@ -8,7 +8,6 @@
namespace OCA\User_LDAP\User;
use OCA\User_LDAP\Access;
-use OCA\User_LDAP\FilesystemHelper;
use OCP\Cache\CappedMemoryCache;
use OCP\IAvatarManager;
use OCP\IConfig;
@@ -27,40 +26,23 @@ use Psr\Log\LoggerInterface;
*/
class Manager {
protected ?Access $access = null;
- protected IConfig $ocConfig;
protected IDBConnection $db;
- protected IUserManager $userManager;
- protected INotificationManager $notificationManager;
- protected FilesystemHelper $ocFilesystem;
- protected LoggerInterface $logger;
- protected Image $image;
- protected IAvatarManager $avatarManager;
/** @var CappedMemoryCache<User> $usersByDN */
protected CappedMemoryCache $usersByDN;
/** @var CappedMemoryCache<User> $usersByUid */
protected CappedMemoryCache $usersByUid;
- private IManager $shareManager;
public function __construct(
- IConfig $ocConfig,
- FilesystemHelper $ocFilesystem,
- LoggerInterface $logger,
- IAvatarManager $avatarManager,
- Image $image,
- IUserManager $userManager,
- INotificationManager $notificationManager,
- IManager $shareManager
+ protected IConfig $ocConfig,
+ protected LoggerInterface $logger,
+ protected IAvatarManager $avatarManager,
+ protected Image $image,
+ protected IUserManager $userManager,
+ protected INotificationManager $notificationManager,
+ private IManager $shareManager,
) {
- $this->ocConfig = $ocConfig;
- $this->ocFilesystem = $ocFilesystem;
- $this->logger = $logger;
- $this->avatarManager = $avatarManager;
- $this->image = $image;
- $this->userManager = $userManager;
- $this->notificationManager = $notificationManager;
$this->usersByDN = new CappedMemoryCache();
$this->usersByUid = new CappedMemoryCache();
- $this->shareManager = $shareManager;
}
/**
@@ -77,12 +59,12 @@ class Manager {
* property array
* @param string $dn the DN of the user
* @param string $uid the internal (owncloud) username
- * @return \OCA\User_LDAP\User\User
+ * @return User
*/
private function createAndCache($dn, $uid) {
$this->checkAccess();
$user = new User($uid, $dn, $this->access, $this->ocConfig,
- $this->ocFilesystem, clone $this->image, $this->logger,
+ clone $this->image, $this->logger,
$this->avatarManager, $this->userManager,
$this->notificationManager);
$this->usersByDN[$dn] = $user;
@@ -106,6 +88,7 @@ class Manager {
/**
* @brief checks whether the Access instance has been set
* @throws \Exception if Access has not been set
+ * @psalm-assert !null $this->access
* @return null
*/
private function checkAccess() {
@@ -119,13 +102,14 @@ class Manager {
* email, displayname, or others.
*
* @param bool $minimal - optional, set to true to skip attributes with big
- * payload
+ * payload
* @return string[]
*/
public function getAttributes($minimal = false) {
$baseAttributes = array_merge(Access::UUID_ATTRIBUTES, ['dn', 'uid', 'samaccountname', 'memberof']);
$attributes = [
$this->access->getConnection()->ldapExpertUUIDUserAttr,
+ $this->access->getConnection()->ldapExpertUsernameAttr,
$this->access->getConnection()->ldapQuotaAttribute,
$this->access->getConnection()->ldapEmailAttribute,
$this->access->getConnection()->ldapUserDisplayName,
@@ -141,6 +125,7 @@ class Manager {
$this->access->getConnection()->ldapAttributeHeadline,
$this->access->getConnection()->ldapAttributeBiography,
$this->access->getConnection()->ldapAttributeBirthDate,
+ $this->access->getConnection()->ldapAttributePronouns,
];
$homeRule = (string)$this->access->getConnection()->homeFolderNamingRule;
@@ -186,7 +171,7 @@ class Manager {
/**
* creates and returns an instance of OfflineUser for the specified user
* @param string $id
- * @return \OCA\User_LDAP\User\OfflineUser
+ * @return OfflineUser
*/
public function getDeletedUser($id) {
return new OfflineUser(
@@ -200,7 +185,7 @@ class Manager {
/**
* @brief returns a User object by its Nextcloud username
* @param string $id the DN or username of the user
- * @return \OCA\User_LDAP\User\User|\OCA\User_LDAP\User\OfflineUser|null
+ * @return User|OfflineUser|null
*/
protected function createInstancyByUserName($id) {
//most likely a uid. Check whether it is a deleted user
@@ -217,7 +202,7 @@ class Manager {
/**
* @brief returns a User object by its DN or Nextcloud username
* @param string $id the DN or username of the user
- * @return \OCA\User_LDAP\User\User|\OCA\User_LDAP\User\OfflineUser|null
+ * @return User|OfflineUser|null
* @throws \Exception when connection could not be established
*/
public function get($id) {
@@ -237,4 +222,37 @@ class Manager {
return $this->createInstancyByUserName($id);
}
+
+ /**
+ * @brief Checks whether a User object by its DN or Nextcloud username exists
+ * @param string $id the DN or username of the user
+ * @throws \Exception when connection could not be established
+ */
+ public function exists($id): bool {
+ $this->checkAccess();
+ $this->logger->debug('Checking if {id} exists', ['id' => $id]);
+ if (isset($this->usersByDN[$id])) {
+ return true;
+ } elseif (isset($this->usersByUid[$id])) {
+ return true;
+ }
+
+ if ($this->access->stringResemblesDN($id)) {
+ $this->logger->debug('{id} looks like a dn', ['id' => $id]);
+ $uid = $this->access->dn2username($id);
+ if ($uid !== false) {
+ return true;
+ }
+ }
+
+ // Most likely a uid. Check whether it is a deleted user
+ if ($this->isDeletedUser($id)) {
+ return true;
+ }
+ $dn = $this->access->username2dn($id);
+ if ($dn !== false) {
+ return true;
+ }
+ return false;
+ }
}
diff --git a/apps/user_ldap/lib/User/OfflineUser.php b/apps/user_ldap/lib/User/OfflineUser.php
index 24f11a5a1f9..ecaab7188ba 100644
--- a/apps/user_ldap/lib/User/OfflineUser.php
+++ b/apps/user_ldap/lib/User/OfflineUser.php
@@ -15,10 +15,6 @@ use OCP\Share\IShare;
class OfflineUser {
/**
- * @var string $ocName
- */
- protected $ocName;
- /**
* @var string $dn
*/
protected $dn;
@@ -52,30 +48,19 @@ class OfflineUser {
*/
protected $hasActiveShares;
/**
- * @var IConfig $config
- */
- protected $config;
- /**
* @var IDBConnection $db
*/
protected $db;
+
/**
- * @var \OCA\User_LDAP\Mapping\UserMapping
+ * @param string $ocName
*/
- protected $mapping;
- /** @var IManager */
- private $shareManager;
-
public function __construct(
- $ocName,
- IConfig $config,
- UserMapping $mapping,
- IManager $shareManager
+ protected $ocName,
+ protected IConfig $config,
+ protected UserMapping $mapping,
+ private IManager $shareManager,
) {
- $this->ocName = $ocName;
- $this->config = $config;
- $this->mapping = $mapping;
- $this->shareManager = $shareManager;
}
/**
diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index 53e2e2a983d..8f97ec1701f 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -12,17 +12,19 @@ use OC\Accounts\AccountManager;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
use OCA\User_LDAP\Exceptions\AttributeNotSet;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\Service\BirthdateParserService;
use OCP\Accounts\IAccountManager;
use OCP\Accounts\PropertyDoesNotExistException;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\Image;
+use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
+use OCP\PreConditionNotMetException;
use OCP\Server;
+use OCP\Util;
use Psr\Log\LoggerInterface;
/**
@@ -31,105 +33,51 @@ use Psr\Log\LoggerInterface;
* represents an LDAP user, gets and holds user-specific information from LDAP
*/
class User {
+ protected Connection $connection;
/**
- * @var Access
+ * @var array<string,1>
*/
- protected $access;
- /**
- * @var Connection
- */
- protected $connection;
- /**
- * @var IConfig
- */
- protected $config;
- /**
- * @var FilesystemHelper
- */
- protected $fs;
- /**
- * @var Image
- */
- protected $image;
- /**
- * @var LoggerInterface
- */
- protected $logger;
- /**
- * @var IAvatarManager
- */
- protected $avatarManager;
- /**
- * @var IUserManager
- */
- protected $userManager;
- /**
- * @var INotificationManager
- */
- protected $notificationManager;
- /**
- * @var string
- */
- protected $dn;
- /**
- * @var string
- */
- protected $uid;
- /**
- * @var string[]
- */
- protected $refreshedFeatures = [];
- /**
- * @var string
- */
- protected $avatarImage;
+ protected array $refreshedFeatures = [];
+ protected string|false|null $avatarImage = null;
protected BirthdateParserService $birthdateParser;
/**
* DB config keys for user preferences
+ * @var string
*/
public const USER_PREFKEY_FIRSTLOGIN = 'firstLoginAccomplished';
/**
* @brief constructor, make sure the subclasses call this one!
- * @param string $username the internal username
- * @param string $dn the LDAP DN
*/
- public function __construct($username, $dn, Access $access,
- IConfig $config, FilesystemHelper $fs, Image $image,
- LoggerInterface $logger, IAvatarManager $avatarManager, IUserManager $userManager,
- INotificationManager $notificationManager) {
- if ($username === null) {
- $logger->error("uid for '$dn' must not be null!", ['app' => 'user_ldap']);
- throw new \InvalidArgumentException('uid must not be null!');
- } elseif ($username === '') {
+ public function __construct(
+ protected string $uid,
+ protected string $dn,
+ protected Access $access,
+ protected IConfig $config,
+ protected Image $image,
+ protected LoggerInterface $logger,
+ protected IAvatarManager $avatarManager,
+ protected IUserManager $userManager,
+ protected INotificationManager $notificationManager,
+ ) {
+ if ($uid === '') {
$logger->error("uid for '$dn' must not be an empty string", ['app' => 'user_ldap']);
throw new \InvalidArgumentException('uid must not be an empty string!');
}
-
- $this->access = $access;
- $this->connection = $access->getConnection();
- $this->config = $config;
- $this->fs = $fs;
- $this->dn = $dn;
- $this->uid = $username;
- $this->image = $image;
- $this->logger = $logger;
- $this->avatarManager = $avatarManager;
- $this->userManager = $userManager;
- $this->notificationManager = $notificationManager;
+ $this->connection = $this->access->getConnection();
$this->birthdateParser = new BirthdateParserService();
- \OCP\Util::connectHook('OC_User', 'post_login', $this, 'handlePasswordExpiry');
+ Util::connectHook('OC_User', 'post_login', $this, 'handlePasswordExpiry');
}
/**
* marks a user as deleted
*
- * @throws \OCP\PreConditionNotMetException
+ * @throws PreConditionNotMetException
*/
- public function markUser() {
+ public function markUser(): void {
$curValue = $this->config->getUserValue($this->getUsername(), 'user_ldap', 'isDeleted', '0');
if ($curValue === '1') {
// the user is already marked, do not write to DB again
@@ -143,7 +91,7 @@ class User {
* processes results from LDAP for attributes as returned by getAttributesToRead()
* @param array $ldapEntry the user entry as retrieved from LDAP
*/
- public function processAttributes($ldapEntry) {
+ public function processAttributes(array $ldapEntry): void {
//Quota
$attr = strtolower($this->connection->ldapQuotaAttribute);
if (isset($ldapEntry[$attr])) {
@@ -180,7 +128,14 @@ class User {
//change event that will trigger fetching the display name again
$attr = strtolower($this->connection->ldapEmailAttribute);
if (isset($ldapEntry[$attr])) {
- $this->updateEmail($ldapEntry[$attr][0]);
+ $mailValue = 0;
+ for ($x = 0; $x < count($ldapEntry[$attr]); $x++) {
+ if (filter_var($ldapEntry[$attr][$x], FILTER_VALIDATE_EMAIL)) {
+ $mailValue = $x;
+ break;
+ }
+ }
+ $this->updateEmail($ldapEntry[$attr][$mailValue]);
}
unset($attr);
@@ -201,7 +156,7 @@ class User {
}
//memberOf groups
- $cacheKey = 'getMemberOf'.$this->getUsername();
+ $cacheKey = 'getMemberOf' . $this->getUsername();
$groups = false;
if (isset($ldapEntry['memberof'])) {
$groups = $ldapEntry['memberof'];
@@ -217,92 +172,92 @@ class User {
// check for cached profile data
$username = $this->getUsername(); // buffer variable, to save resource
- $cacheKey = 'getUserProfile-'.$username;
+ $cacheKey = 'getUserProfile-' . $username;
$profileCached = $this->connection->getFromCache($cacheKey);
// honoring profile disabled in config.php and check if user profile was refreshed
- if ($this->config->getSystemValueBool('profile.enabled', true) &&
- ($profileCached === null) && // no cache or TTL not expired
- !$this->wasRefreshed('profile')) {
+ if ($this->config->getSystemValueBool('profile.enabled', true)
+ && ($profileCached === null) // no cache or TTL not expired
+ && !$this->wasRefreshed('profile')) {
// check current data
$profileValues = [];
//User Profile Field - Phone number
$attr = strtolower($this->connection->ldapAttributePhone);
if (!empty($attr)) { // attribute configured
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_PHONE]
- = $ldapEntry[$attr][0] ?? "";
+ $profileValues[IAccountManager::PROPERTY_PHONE]
+ = $ldapEntry[$attr][0] ?? '';
}
//User Profile Field - website
$attr = strtolower($this->connection->ldapAttributeWebsite);
if (isset($ldapEntry[$attr])) {
- $cutPosition = strpos($ldapEntry[$attr][0], " ");
+ $cutPosition = strpos($ldapEntry[$attr][0], ' ');
if ($cutPosition) {
// drop appended label
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_WEBSITE]
+ $profileValues[IAccountManager::PROPERTY_WEBSITE]
= substr($ldapEntry[$attr][0], 0, $cutPosition);
} else {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_WEBSITE]
+ $profileValues[IAccountManager::PROPERTY_WEBSITE]
= $ldapEntry[$attr][0];
}
} elseif (!empty($attr)) { // configured, but not defined
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_WEBSITE] = "";
+ $profileValues[IAccountManager::PROPERTY_WEBSITE] = '';
}
//User Profile Field - Address
$attr = strtolower($this->connection->ldapAttributeAddress);
if (isset($ldapEntry[$attr])) {
if (str_contains($ldapEntry[$attr][0], '$')) {
// basic format conversion from postalAddress syntax to commata delimited
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_ADDRESS]
- = str_replace('$', ", ", $ldapEntry[$attr][0]);
+ $profileValues[IAccountManager::PROPERTY_ADDRESS]
+ = str_replace('$', ', ', $ldapEntry[$attr][0]);
} else {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_ADDRESS]
+ $profileValues[IAccountManager::PROPERTY_ADDRESS]
= $ldapEntry[$attr][0];
}
} elseif (!empty($attr)) { // configured, but not defined
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_ADDRESS] = "";
+ $profileValues[IAccountManager::PROPERTY_ADDRESS] = '';
}
//User Profile Field - Twitter
$attr = strtolower($this->connection->ldapAttributeTwitter);
if (!empty($attr)) {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_TWITTER]
- = $ldapEntry[$attr][0] ?? "";
+ $profileValues[IAccountManager::PROPERTY_TWITTER]
+ = $ldapEntry[$attr][0] ?? '';
}
//User Profile Field - fediverse
$attr = strtolower($this->connection->ldapAttributeFediverse);
if (!empty($attr)) {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_FEDIVERSE]
- = $ldapEntry[$attr][0] ?? "";
+ $profileValues[IAccountManager::PROPERTY_FEDIVERSE]
+ = $ldapEntry[$attr][0] ?? '';
}
//User Profile Field - organisation
$attr = strtolower($this->connection->ldapAttributeOrganisation);
if (!empty($attr)) {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_ORGANISATION]
- = $ldapEntry[$attr][0] ?? "";
+ $profileValues[IAccountManager::PROPERTY_ORGANISATION]
+ = $ldapEntry[$attr][0] ?? '';
}
//User Profile Field - role
$attr = strtolower($this->connection->ldapAttributeRole);
if (!empty($attr)) {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_ROLE]
- = $ldapEntry[$attr][0] ?? "";
+ $profileValues[IAccountManager::PROPERTY_ROLE]
+ = $ldapEntry[$attr][0] ?? '';
}
//User Profile Field - headline
$attr = strtolower($this->connection->ldapAttributeHeadline);
if (!empty($attr)) {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_HEADLINE]
- = $ldapEntry[$attr][0] ?? "";
+ $profileValues[IAccountManager::PROPERTY_HEADLINE]
+ = $ldapEntry[$attr][0] ?? '';
}
//User Profile Field - biography
$attr = strtolower($this->connection->ldapAttributeBiography);
if (isset($ldapEntry[$attr])) {
if (str_contains($ldapEntry[$attr][0], '\r')) {
// convert line endings
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_BIOGRAPHY]
+ $profileValues[IAccountManager::PROPERTY_BIOGRAPHY]
= str_replace(["\r\n","\r"], "\n", $ldapEntry[$attr][0]);
} else {
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_BIOGRAPHY]
+ $profileValues[IAccountManager::PROPERTY_BIOGRAPHY]
= $ldapEntry[$attr][0];
}
} elseif (!empty($attr)) { // configured, but not defined
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_BIOGRAPHY] = "";
+ $profileValues[IAccountManager::PROPERTY_BIOGRAPHY] = '';
}
//User Profile Field - birthday
$attr = strtolower($this->connection->ldapAttributeBirthDate);
@@ -310,8 +265,8 @@ class User {
$value = $ldapEntry[$attr][0];
try {
$birthdate = $this->birthdateParser->parseBirthdate($value);
- $profileValues[\OCP\Accounts\IAccountManager::PROPERTY_BIRTHDATE]
- = $birthdate->format("Y-m-d");
+ $profileValues[IAccountManager::PROPERTY_BIRTHDATE]
+ = $birthdate->format('Y-m-d');
} catch (InvalidArgumentException $e) {
// Invalid date -> just skip the property
$this->logger->info("Failed to parse user's birthdate from LDAP: $value", [
@@ -320,6 +275,12 @@ class User {
]);
}
}
+ //User Profile Field - pronouns
+ $attr = strtolower($this->connection->ldapAttributePronouns);
+ if (!empty($attr)) {
+ $profileValues[IAccountManager::PROPERTY_PRONOUNS]
+ = $ldapEntry[$attr][0] ?? '';
+ }
// check for changed data and cache just for TTL checking
$checksum = hash('sha256', json_encode($profileValues));
$this->connection->writeToCache($cacheKey, $checksum // write array to cache. is waste of cache space
@@ -330,11 +291,11 @@ class User {
$this->updateProfile($profileValues);
$this->logger->info("updated profile uid=$username", ['app' => 'user_ldap']);
} else {
- $this->logger->debug("profile data from LDAP unchanged", ['app' => 'user_ldap', 'uid' => $username]);
+ $this->logger->debug('profile data from LDAP unchanged', ['app' => 'user_ldap', 'uid' => $username]);
}
unset($attr);
} elseif ($profileCached !== null) { // message delayed, to declutter log
- $this->logger->debug("skipping profile check, while cached data exist", ['app' => 'user_ldap', 'uid' => $username]);
+ $this->logger->debug('skipping profile check, while cached data exist', ['app' => 'user_ldap', 'uid' => $username]);
}
//Avatar
@@ -344,11 +305,7 @@ class User {
foreach ($attributes as $attribute) {
if (isset($ldapEntry[$attribute])) {
$this->avatarImage = $ldapEntry[$attribute][0];
- // the call to the method that saves the avatar in the file
- // system must be postponed after the login. It is to ensure
- // external mounts are mounted properly (e.g. with login
- // credentials from the session).
- \OCP\Util::connectHook('OC_User', 'post_login', $this, 'updateAvatarPostLogin');
+ $this->updateAvatar();
break;
}
}
@@ -372,11 +329,9 @@ class User {
/**
* returns the home directory of the user if specified by LDAP settings
- * @param ?string $valueFromLDAP
- * @return false|string
* @throws \Exception
*/
- public function getHomePath($valueFromLDAP = null) {
+ public function getHomePath(?string $valueFromLDAP = null): string|false {
$path = (string)$valueFromLDAP;
$attr = null;
@@ -384,8 +339,12 @@ class User {
&& str_starts_with($this->access->connection->homeFolderNamingRule, 'attr:')
&& $this->access->connection->homeFolderNamingRule !== 'attr:') {
$attr = substr($this->access->connection->homeFolderNamingRule, strlen('attr:'));
- $homedir = $this->access->readAttribute($this->access->username2dn($this->getUsername()), $attr);
- if ($homedir && isset($homedir[0])) {
+ $dn = $this->access->username2dn($this->getUsername());
+ if ($dn === false) {
+ return false;
+ }
+ $homedir = $this->access->readAttribute($dn, $attr);
+ if ($homedir !== false && isset($homedir[0])) {
$path = $homedir[0];
}
}
@@ -398,7 +357,7 @@ class User {
&& $path[1] === ':' && ($path[2] === '\\' || $path[2] === '/'))
) {
$path = $this->config->getSystemValue('datadirectory',
- \OC::$SERVERROOT.'/data') . '/' . $path;
+ \OC::$SERVERROOT . '/data') . '/' . $path;
}
//we need it to store it in the DB as well in case a user gets
//deleted so we can clean up afterwards
@@ -420,8 +379,8 @@ class User {
return false;
}
- public function getMemberOfGroups() {
- $cacheKey = 'getMemberOf'.$this->getUsername();
+ public function getMemberOfGroups(): array|false {
+ $cacheKey = 'getMemberOf' . $this->getUsername();
$memberOfGroups = $this->connection->getFromCache($cacheKey);
if (!is_null($memberOfGroups)) {
return $memberOfGroups;
@@ -433,9 +392,9 @@ class User {
/**
* @brief reads the image from LDAP that shall be used as Avatar
- * @return string data (provided by LDAP) | false
+ * @return string|false data (provided by LDAP)
*/
- public function getAvatarImage() {
+ public function getAvatarImage(): string|false {
if (!is_null($this->avatarImage)) {
return $this->avatarImage;
}
@@ -446,7 +405,7 @@ class User {
$attributes = $connection->resolveRule('avatar');
foreach ($attributes as $attribute) {
$result = $this->access->readAttribute($this->dn, $attribute);
- if ($result !== false && is_array($result) && isset($result[0])) {
+ if ($result !== false && isset($result[0])) {
$this->avatarImage = $result[0];
break;
}
@@ -457,20 +416,16 @@ class User {
/**
* @brief marks the user as having logged in at least once
- * @return null
*/
- public function markLogin() {
+ public function markLogin(): void {
$this->config->setUserValue(
$this->uid, 'user_ldap', self::USER_PREFKEY_FIRSTLOGIN, '1');
}
/**
* Stores a key-value pair in relation to this user
- *
- * @param string $key
- * @param string $value
*/
- private function store($key, $value) {
+ private function store(string $key, string $value): void {
$this->config->setUserValue($this->uid, 'user_ldap', $key, $value);
}
@@ -478,12 +433,9 @@ class User {
* Composes the display name and stores it in the database. The final
* display name is returned.
*
- * @param string $displayName
- * @param string $displayName2
* @return string the effective display name
*/
- public function composeAndStoreDisplayName($displayName, $displayName2 = '') {
- $displayName2 = (string)$displayName2;
+ public function composeAndStoreDisplayName(string $displayName, string $displayName2 = ''): string {
if ($displayName2 !== '') {
$displayName .= ' (' . $displayName2 . ')';
}
@@ -502,9 +454,8 @@ class User {
/**
* Stores the LDAP Username in the Database
- * @param string $userName
*/
- public function storeLDAPUserName($userName) {
+ public function storeLDAPUserName(string $userName): void {
$this->store('uid', $userName);
}
@@ -513,9 +464,8 @@ class User {
* already. If not, it will marked like this, because it is expected that
* the method will be run, when false is returned.
* @param string $feature email | quota | avatar | profile (can be extended)
- * @return bool
*/
- private function wasRefreshed($feature) {
+ private function wasRefreshed(string $feature): bool {
if (isset($this->refreshedFeatures[$feature])) {
return true;
}
@@ -525,10 +475,9 @@ class User {
/**
* fetches the email from LDAP and stores it as Nextcloud user value
- * @param string $valueFromLDAP if known, to save an LDAP read request
- * @return null
+ * @param ?string $valueFromLDAP if known, to save an LDAP read request
*/
- public function updateEmail($valueFromLDAP = null) {
+ public function updateEmail(?string $valueFromLDAP = null): void {
if ($this->wasRefreshed('email')) {
return;
}
@@ -547,7 +496,7 @@ class User {
if (!is_null($user)) {
$currentEmail = (string)$user->getSystemEMailAddress();
if ($currentEmail !== $email) {
- $user->setEMailAddress($email);
+ $user->setSystemEMailAddress($email);
}
}
}
@@ -566,14 +515,13 @@ class User {
* fetch all the user's attributes in one call and use the fetched values in this function.
* The expected value for that parameter is a string describing the quota for the user. Valid
* values are 'none' (unlimited), 'default' (the Nextcloud's default quota), '1234' (quota in
- * bytes), '1234 MB' (quota in MB - check the \OC_Helper::computerFileSize method for more info)
+ * bytes), '1234 MB' (quota in MB - check the \OCP\Util::computerFileSize method for more info)
*
* fetches the quota from LDAP and stores it as Nextcloud user value
* @param ?string $valueFromLDAP the quota attribute's value can be passed,
- * to save the readAttribute request
- * @return void
+ * to save the readAttribute request
*/
- public function updateQuota($valueFromLDAP = null) {
+ public function updateQuota(?string $valueFromLDAP = null): void {
if ($this->wasRefreshed('quota')) {
return;
}
@@ -587,7 +535,7 @@ class User {
$quota = false;
if (is_null($valueFromLDAP) && $quotaAttribute !== '') {
$aQuota = $this->access->readAttribute($this->dn, $quotaAttribute);
- if ($aQuota && (count($aQuota) > 0) && $this->verifyQuotaValue($aQuota[0])) {
+ if ($aQuota !== false && isset($aQuota[0]) && $this->verifyQuotaValue($aQuota[0])) {
$quota = $aQuota[0];
} elseif (is_array($aQuota) && isset($aQuota[0])) {
$this->logger->debug('no suitable LDAP quota found for user ' . $this->uid . ': [' . $aQuota[0] . ']', ['app' => 'user_ldap']);
@@ -595,7 +543,7 @@ class User {
} elseif (!is_null($valueFromLDAP) && $this->verifyQuotaValue($valueFromLDAP)) {
$quota = $valueFromLDAP;
} else {
- $this->logger->debug('no suitable LDAP quota found for user ' . $this->uid . ': [' . $valueFromLDAP . ']', ['app' => 'user_ldap']);
+ $this->logger->debug('no suitable LDAP quota found for user ' . $this->uid . ': [' . ($valueFromLDAP ?? '') . ']', ['app' => 'user_ldap']);
}
if ($quota === false && $this->verifyQuotaValue($defaultQuota)) {
@@ -614,8 +562,8 @@ class User {
}
}
- private function verifyQuotaValue(string $quotaValue) {
- return $quotaValue === 'none' || $quotaValue === 'default' || \OC_Helper::computerFileSize($quotaValue) !== false;
+ private function verifyQuotaValue(string $quotaValue): bool {
+ return $quotaValue === 'none' || $quotaValue === 'default' || Util::computerFileSize($quotaValue) !== false;
}
/**
@@ -631,7 +579,7 @@ class User {
// fetch/prepare user
$user = $this->userManager->get($this->uid);
if (is_null($user)) {
- $this->logger->error('could not get user for uid='.$this->uid.'', ['app' => 'user_ldap']);
+ $this->logger->error('could not get user for uid=' . $this->uid . '', ['app' => 'user_ldap']);
return;
}
// prepare AccountManager and Account
@@ -646,41 +594,29 @@ class User {
try {
$accountProperty = $account->getProperty($property);
$currentValue = $accountProperty->getValue();
- $scope = ($accountProperty->getScope() ? $accountProperty->getScope()
- : $defaultScopes[$property]);
+ $scope = ($accountProperty->getScope() ?: $defaultScopes[$property]);
} catch (PropertyDoesNotExistException $e) { // thrown at getProperty
- $this->logger->error('property does not exist: '.$property
- .' for uid='.$this->uid.'', ['app' => 'user_ldap', 'exception' => $e]);
+ $this->logger->error('property does not exist: ' . $property
+ . ' for uid=' . $this->uid . '', ['app' => 'user_ldap', 'exception' => $e]);
$currentValue = '';
$scope = $defaultScopes[$property];
}
- $verified = IAccountManager::VERIFIED; // trust the LDAP admin knew what he put there
+ $verified = IAccountManager::VERIFIED; // trust the LDAP admin knew what they put there
if ($currentValue !== $value) {
$account->setProperty($property, $value, $scope, $verified);
- $this->logger->debug('update user profile: '.$property.'='.$value
- .' for uid='.$this->uid.'', ['app' => 'user_ldap']);
+ $this->logger->debug('update user profile: ' . $property . '=' . $value
+ . ' for uid=' . $this->uid . '', ['app' => 'user_ldap']);
}
}
try {
$accountManager->updateAccount($account); // may throw InvalidArgumentException
} catch (\InvalidArgumentException $e) {
- $this->logger->error('invalid data from LDAP: for uid='.$this->uid.'', ['app' => 'user_ldap', 'func' => 'updateProfile'
+ $this->logger->error('invalid data from LDAP: for uid=' . $this->uid . '', ['app' => 'user_ldap', 'func' => 'updateProfile'
, 'exception' => $e]);
}
}
/**
- * called by a post_login hook to save the avatar picture
- *
- * @param array $params
- */
- public function updateAvatarPostLogin($params) {
- if (isset($params['uid']) && $params['uid'] === $this->getUsername()) {
- $this->updateAvatar();
- }
- }
-
- /**
* @brief attempts to get an image from LDAP and sets it as Nextcloud avatar
* @return bool true when the avatar was set successfully or is up to date
*/
@@ -705,7 +641,7 @@ class User {
return true;
}
- $isSet = $this->setOwnCloudAvatar();
+ $isSet = $this->setNextcloudAvatar();
if ($isSet) {
// save checksum only after successful setting
@@ -726,11 +662,10 @@ class User {
/**
* @brief sets an image as Nextcloud avatar
- * @return bool
*/
- private function setOwnCloudAvatar() {
+ private function setNextcloudAvatar(): bool {
if (!$this->image->valid()) {
- $this->logger->error('avatar image data from LDAP invalid for '.$this->dn, ['app' => 'user_ldap']);
+ $this->logger->error('avatar image data from LDAP invalid for ' . $this->dn, ['app' => 'user_ldap']);
return false;
}
@@ -738,14 +673,10 @@ class User {
//make sure it is a square and not bigger than 512x512
$size = min([$this->image->width(), $this->image->height(), 512]);
if (!$this->image->centerCrop($size)) {
- $this->logger->error('croping image for avatar failed for '.$this->dn, ['app' => 'user_ldap']);
+ $this->logger->error('croping image for avatar failed for ' . $this->dn, ['app' => 'user_ldap']);
return false;
}
- if (!$this->fs->isLoaded()) {
- $this->fs->setup($this->uid);
- }
-
try {
$avatar = $this->avatarManager->getAvatar($this->uid);
$avatar->set($this->image);
@@ -759,7 +690,7 @@ class User {
/**
* @throws AttributeNotSet
* @throws \OC\ServerNotAvailableException
- * @throws \OCP\PreConditionNotMetException
+ * @throws PreConditionNotMetException
*/
public function getExtStorageHome():string {
$value = $this->config->getUserValue($this->getUsername(), 'user_ldap', 'extStorageHome', '');
@@ -778,7 +709,7 @@ class User {
}
/**
- * @throws \OCP\PreConditionNotMetException
+ * @throws PreConditionNotMetException
* @throws \OC\ServerNotAvailableException
*/
public function updateExtStorageHome(?string $valueFromLDAP = null):string {
@@ -787,7 +718,7 @@ class User {
} else {
$extHomeValues = [$valueFromLDAP];
}
- if ($extHomeValues && isset($extHomeValues[0])) {
+ if ($extHomeValues !== false && isset($extHomeValues[0])) {
$extHome = $extHomeValues[0];
$this->config->setUserValue($this->getUsername(), 'user_ldap', 'extStorageHome', $extHome);
return $extHome;
@@ -799,29 +730,30 @@ class User {
/**
* called by a post_login hook to handle password expiry
- *
- * @param array $params
*/
- public function handlePasswordExpiry($params) {
+ public function handlePasswordExpiry(array $params): void {
$ppolicyDN = $this->connection->ldapDefaultPPolicyDN;
if (empty($ppolicyDN) || ((int)$this->connection->turnOnPasswordChange !== 1)) {
- return;//password expiry handling disabled
+ //password expiry handling disabled
+ return;
}
$uid = $params['uid'];
if (isset($uid) && $uid === $this->getUsername()) {
//retrieve relevant user attributes
$result = $this->access->search('objectclass=*', $this->dn, ['pwdpolicysubentry', 'pwdgraceusetime', 'pwdreset', 'pwdchangedtime']);
- if (array_key_exists('pwdpolicysubentry', $result[0])) {
- $pwdPolicySubentry = $result[0]['pwdpolicysubentry'];
- if ($pwdPolicySubentry && (count($pwdPolicySubentry) > 0)) {
- $ppolicyDN = $pwdPolicySubentry[0];//custom ppolicy DN
+ if (!empty($result)) {
+ if (array_key_exists('pwdpolicysubentry', $result[0])) {
+ $pwdPolicySubentry = $result[0]['pwdpolicysubentry'];
+ if ($pwdPolicySubentry && (count($pwdPolicySubentry) > 0)) {
+ $ppolicyDN = $pwdPolicySubentry[0];//custom ppolicy DN
+ }
}
- }
- $pwdGraceUseTime = array_key_exists('pwdgraceusetime', $result[0]) ? $result[0]['pwdgraceusetime'] : [];
- $pwdReset = array_key_exists('pwdreset', $result[0]) ? $result[0]['pwdreset'] : [];
- $pwdChangedTime = array_key_exists('pwdchangedtime', $result[0]) ? $result[0]['pwdchangedtime'] : [];
+ $pwdGraceUseTime = array_key_exists('pwdgraceusetime', $result[0]) ? $result[0]['pwdgraceusetime'] : [];
+ $pwdReset = array_key_exists('pwdreset', $result[0]) ? $result[0]['pwdreset'] : [];
+ $pwdChangedTime = array_key_exists('pwdchangedtime', $result[0]) ? $result[0]['pwdchangedtime'] : [];
+ }
//retrieve relevant password policy attributes
$cacheKey = 'ppolicyAttributes' . $ppolicyDN;
@@ -840,18 +772,18 @@ class User {
if (!empty($pwdGraceAuthNLimit)
&& count($pwdGraceUseTime) < (int)$pwdGraceAuthNLimit[0]) { //at least one more grace login available?
$this->config->setUserValue($uid, 'user_ldap', 'needsPasswordReset', 'true');
- header('Location: '.\OC::$server->getURLGenerator()->linkToRouteAbsolute(
+ header('Location: ' . Server::get(IURLGenerator::class)->linkToRouteAbsolute(
'user_ldap.renewPassword.showRenewPasswordForm', ['user' => $uid]));
} else { //no more grace login available
- header('Location: '.\OC::$server->getURLGenerator()->linkToRouteAbsolute(
+ header('Location: ' . Server::get(IURLGenerator::class)->linkToRouteAbsolute(
'user_ldap.renewPassword.showLoginFormInvalidPassword', ['user' => $uid]));
}
exit();
}
//handle pwdReset attribute
- if (!empty($pwdReset) && $pwdReset[0] === 'TRUE') { //user must change his password
+ if (!empty($pwdReset) && $pwdReset[0] === 'TRUE') { //user must change their password
$this->config->setUserValue($uid, 'user_ldap', 'needsPasswordReset', 'true');
- header('Location: '.\OC::$server->getURLGenerator()->linkToRouteAbsolute(
+ header('Location: ' . Server::get(IURLGenerator::class)->linkToRouteAbsolute(
'user_ldap.renewPassword.showRenewPasswordForm', ['user' => $uid]));
exit();
}
@@ -863,7 +795,7 @@ class User {
$pwdExpireWarningInt = (int)$pwdExpireWarning[0];
if ($pwdMaxAgeInt > 0 && $pwdExpireWarningInt > 0) {
$pwdChangedTimeDt = \DateTime::createFromFormat('YmdHisZ', $pwdChangedTime[0]);
- $pwdChangedTimeDt->add(new \DateInterval('PT'.$pwdMaxAgeInt.'S'));
+ $pwdChangedTimeDt->add(new \DateInterval('PT' . $pwdMaxAgeInt . 'S'));
$currentDateTime = new \DateTime();
$secondsToExpiry = $pwdChangedTimeDt->getTimestamp() - $currentDateTime->getTimestamp();
if ($secondsToExpiry <= $pwdExpireWarningInt) {
@@ -880,7 +812,7 @@ class User {
->setUser($uid)
->setDateTime($currentDateTime)
->setObject('pwd_exp_warn', $uid)
- ->setSubject('pwd_exp_warn_days', [(int) ceil($secondsToExpiry / 60 / 60 / 24)])
+ ->setSubject('pwd_exp_warn_days', [(int)ceil($secondsToExpiry / 60 / 60 / 24)])
;
$this->notificationManager->notify($notification);
}
diff --git a/apps/user_ldap/lib/UserPluginManager.php b/apps/user_ldap/lib/UserPluginManager.php
index 70e477946b8..ed87fea6fde 100644
--- a/apps/user_ldap/lib/UserPluginManager.php
+++ b/apps/user_ldap/lib/UserPluginManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,6 +7,7 @@
namespace OCA\User_LDAP;
use OC\User\Backend;
+use OCP\Server;
use Psr\Log\LoggerInterface;
class UserPluginManager {
@@ -43,12 +45,12 @@ class UserPluginManager {
foreach ($this->which as $action => $v) {
if (is_int($action) && (bool)($respondToActions & $action)) {
$this->which[$action] = $plugin;
- \OCP\Server::get(LoggerInterface::class)->debug("Registered action ".$action." to plugin ".get_class($plugin), ['app' => 'user_ldap']);
+ Server::get(LoggerInterface::class)->debug('Registered action ' . $action . ' to plugin ' . get_class($plugin), ['app' => 'user_ldap']);
}
}
if (method_exists($plugin, 'deleteUser')) {
$this->which['deleteUser'] = $plugin;
- \OCP\Server::get(LoggerInterface::class)->debug("Registered action deleteUser to plugin ".get_class($plugin), ['app' => 'user_ldap']);
+ Server::get(LoggerInterface::class)->debug('Registered action deleteUser to plugin ' . get_class($plugin), ['app' => 'user_ldap']);
}
}
@@ -95,7 +97,7 @@ class UserPluginManager {
}
/**
- * checks whether the user is allowed to change his avatar in Nextcloud
+ * checks whether the user is allowed to change their avatar in Nextcloud
* @param string $uid the Nextcloud user name
* @return boolean either the user can or cannot
* @throws \Exception
diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php
index 245205f992d..c3f56f5ff9b 100644
--- a/apps/user_ldap/lib/User_LDAP.php
+++ b/apps/user_ldap/lib/User_LDAP.php
@@ -14,42 +14,27 @@ use OCA\User_LDAP\Exceptions\NotOnLDAP;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User\OfflineUser;
use OCA\User_LDAP\User\User;
-use OCP\IConfig;
use OCP\IUserBackend;
-use OCP\IUserSession;
use OCP\Notification\IManager as INotificationManager;
use OCP\User\Backend\ICountMappedUsersBackend;
-use OCP\User\Backend\ICountUsersBackend;
+use OCP\User\Backend\ILimitAwareCountUsersBackend;
use OCP\User\Backend\IProvideEnabledStateBackend;
use OCP\UserInterface;
use Psr\Log\LoggerInterface;
-class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, IUserLDAP, ICountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend {
- protected IConfig $ocConfig;
- protected INotificationManager $notificationManager;
- protected UserPluginManager $userPluginManager;
- protected LoggerInterface $logger;
- protected DeletedUsersIndex $deletedUsersIndex;
-
+class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, IUserLDAP, ILimitAwareCountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend {
public function __construct(
Access $access,
- IConfig $ocConfig,
- INotificationManager $notificationManager,
- IUserSession $userSession,
- UserPluginManager $userPluginManager,
- LoggerInterface $logger,
- DeletedUsersIndex $deletedUsersIndex,
+ protected INotificationManager $notificationManager,
+ protected UserPluginManager $userPluginManager,
+ protected LoggerInterface $logger,
+ protected DeletedUsersIndex $deletedUsersIndex,
) {
parent::__construct($access);
- $this->ocConfig = $ocConfig;
- $this->notificationManager = $notificationManager;
- $this->userPluginManager = $userPluginManager;
- $this->logger = $logger;
- $this->deletedUsersIndex = $deletedUsersIndex;
}
/**
- * checks whether the user is allowed to change his avatar in Nextcloud
+ * checks whether the user is allowed to change their avatar in Nextcloud
*
* @param string $uid the Nextcloud user name
* @return boolean either the user can or cannot
@@ -82,11 +67,12 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
* @return string|false
* @throws \Exception
*/
- public function loginName2UserName($loginName) {
+ public function loginName2UserName($loginName, bool $forceLdapRefetch = false) {
$cacheKey = 'loginName2UserName-' . $loginName;
$username = $this->access->connection->getFromCache($cacheKey);
- if ($username !== null) {
+ $ignoreCache = ($username === false && $forceLdapRefetch);
+ if ($username !== null && !$ignoreCache) {
return $username;
}
@@ -101,6 +87,9 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
}
$username = $user->getUsername();
$this->access->connection->writeToCache($cacheKey, $username);
+ if ($forceLdapRefetch) {
+ $user->processAttributes($ldapRecord);
+ }
return $username;
} catch (NotOnLDAP $e) {
$this->access->connection->writeToCache($cacheKey, false);
@@ -130,8 +119,8 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$attrs = $this->access->userManager->getAttributes();
$users = $this->access->fetchUsersByLoginName($loginName, $attrs);
if (count($users) < 1) {
- throw new NotOnLDAP('No user available for the given login name on ' .
- $this->access->connection->ldapHost . ':' . $this->access->connection->ldapPort);
+ throw new NotOnLDAP('No user available for the given login name on '
+ . $this->access->connection->ldapHost . ':' . $this->access->connection->ldapPort);
}
return $users[0];
}
@@ -144,22 +133,17 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
* @return false|string
*/
public function checkPassword($uid, $password) {
- try {
- $ldapRecord = $this->getLDAPUserByLoginName($uid);
- } catch (NotOnLDAP $e) {
- $this->logger->debug(
- $e->getMessage(),
- ['app' => 'user_ldap', 'exception' => $e]
- );
+ $username = $this->loginName2UserName($uid, true);
+ if ($username === false) {
return false;
}
- $dn = $ldapRecord['dn'][0];
+ $dn = $this->access->username2dn($username);
$user = $this->access->userManager->get($dn);
if (!$user instanceof User) {
$this->logger->warning(
- 'LDAP Login: Could not get user object for DN ' . $dn .
- '. Maybe the LDAP entry has no set display name attribute?',
+ 'LDAP Login: Could not get user object for DN ' . $dn
+ . '. Maybe the LDAP entry has no set display name attribute?',
['app' => 'user_ldap']
);
return false;
@@ -171,7 +155,6 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
}
$this->access->cacheUserExists($user->getUsername());
- $user->processAttributes($ldapRecord);
$user->markLogin();
return $user->getUsername();
@@ -194,8 +177,8 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$user = $this->access->userManager->get($uid);
if (!$user instanceof User) {
- throw new \Exception('LDAP setPassword: Could not get user object for uid ' . $uid .
- '. Maybe the LDAP entry has no set display name attribute?');
+ throw new \Exception('LDAP setPassword: Could not get user object for uid ' . $uid
+ . '. Maybe the LDAP entry has no set display name attribute?');
}
if ($user->getUsername() !== false && $this->access->setPassword($user->getDN(), $password)) {
$ldapDefaultPPolicyDN = $this->access->connection->ldapDefaultPPolicyDN;
@@ -225,7 +208,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
*/
public function getUsers($search = '', $limit = 10, $offset = 0) {
$search = $this->access->escapeFilterPart($search, true);
- $cachekey = 'getUsers-'.$search.'-'.$limit.'-'.$offset;
+ $cachekey = 'getUsers-' . $search . '-' . $limit . '-' . $offset;
//check if users are cached, if so return
$ldap_users = $this->access->connection->getFromCache($cachekey);
@@ -245,7 +228,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
]);
$this->logger->debug(
- 'getUsers: Options: search '.$search.' limit '.$limit.' offset '.$offset.' Filter: '.$filter,
+ 'getUsers: Options: search ' . $search . ' limit ' . $limit . ' offset ' . $offset . ' Filter: ' . $filter,
['app' => 'user_ldap']
);
//do the search and translate results to Nextcloud names
@@ -255,7 +238,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$limit, $offset);
$ldap_users = $this->access->nextcloudUserNames($ldap_users);
$this->logger->debug(
- 'getUsers: '.count($ldap_users). ' Users found',
+ 'getUsers: ' . count($ldap_users) . ' Users found',
['app' => 'user_ldap']
);
@@ -266,8 +249,8 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
/**
* checks whether a user is still available on LDAP
*
- * @param string|\OCA\User_LDAP\User\User $user either the Nextcloud user
- * name or an instance of that user
+ * @param string|User $user either the Nextcloud user
+ * name or an instance of that user
* @throws \Exception
* @throws \OC\ServerNotAvailableException
*/
@@ -326,23 +309,22 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
* @throws \Exception when connection could not be established
*/
public function userExists($uid) {
- $userExists = $this->access->connection->getFromCache('userExists'.$uid);
+ $userExists = $this->access->connection->getFromCache('userExists' . $uid);
if (!is_null($userExists)) {
return (bool)$userExists;
}
- //getting dn, if false the user does not exist. If dn, he may be mapped only, requires more checking.
- $user = $this->access->userManager->get($uid);
+ $userExists = $this->access->userManager->exists($uid);
- if (is_null($user)) {
+ if (!$userExists) {
$this->logger->debug(
- 'No DN found for '.$uid.' on '.$this->access->connection->ldapHost,
+ 'No DN found for ' . $uid . ' on ' . $this->access->connection->ldapHost,
['app' => 'user_ldap']
);
- $this->access->connection->writeToCache('userExists'.$uid, false);
+ $this->access->connection->writeToCache('userExists' . $uid, false);
return false;
}
- $this->access->connection->writeToCache('userExists'.$uid, true);
+ $this->access->connection->writeToCache('userExists' . $uid, true);
return true;
}
@@ -376,7 +358,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
}
if (!$marked) {
$this->logger->notice(
- 'User '.$uid . ' is not marked as deleted, not cleaning up.',
+ 'User ' . $uid . ' is not marked as deleted, not cleaning up.',
['app' => 'user_ldap']
);
return false;
@@ -409,7 +391,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
return $this->userPluginManager->getHome($uid);
}
- $cacheKey = 'getHome'.$uid;
+ $cacheKey = 'getHome' . $uid;
$path = $this->access->connection->getFromCache($cacheKey);
if (!is_null($path)) {
return $path;
@@ -441,7 +423,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
return false;
}
- $cacheKey = 'getDisplayName'.$uid;
+ $cacheKey = 'getDisplayName' . $uid;
if (!is_null($displayName = $this->access->connection->getFromCache($cacheKey))) {
return $displayName;
}
@@ -468,11 +450,10 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$user = $this->access->userManager->get($uid);
if ($user instanceof User) {
- $displayName = $user->composeAndStoreDisplayName($displayName, $displayName2);
+ $displayName = $user->composeAndStoreDisplayName($displayName, (string)$displayName2);
$this->access->connection->writeToCache($cacheKey, $displayName);
}
if ($user instanceof OfflineUser) {
- /** @var OfflineUser $user*/
$displayName = $user->getDisplayName();
}
return $displayName;
@@ -505,7 +486,7 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
* @return array an array of all displayNames (value) and the corresponding uids (key)
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
- $cacheKey = 'getDisplayNames-'.$search.'-'.$limit.'-'.$offset;
+ $cacheKey = 'getDisplayNames-' . $search . '-' . $limit . '-' . $offset;
if (!is_null($displayNames = $this->access->connection->getFromCache($cacheKey))) {
return $displayNames;
}
@@ -547,20 +528,18 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
/**
* counts the users in LDAP
- *
- * @return int|false
*/
- public function countUsers() {
+ public function countUsers(int $limit = 0): int|false {
if ($this->userPluginManager->implementsActions(Backend::COUNT_USERS)) {
return $this->userPluginManager->countUsers();
}
$filter = $this->access->getFilterForUserCount();
- $cacheKey = 'countUsers-'.$filter;
+ $cacheKey = 'countUsers-' . $filter . '-' . $limit;
if (!is_null($entries = $this->access->connection->getFromCache($cacheKey))) {
return $entries;
}
- $entries = $this->access->countUsers($filter);
+ $entries = $this->access->countUsers($filter, limit:$limit);
$this->access->connection->writeToCache($cacheKey, $entries);
return $entries;
}
@@ -619,7 +598,6 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
$uuid,
true
);
- $this->access->cacheUserExists($username);
} else {
$this->logger->warning(
'Failed to map created LDAP user with userid {userid}, because UUID could not be determined',
@@ -630,10 +608,10 @@ class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, I
);
}
} else {
- throw new \UnexpectedValueException("LDAP Plugin: Method createUser changed to return the user DN instead of boolean.");
+ throw new \UnexpectedValueException('LDAP Plugin: Method createUser changed to return the user DN instead of boolean.');
}
}
- return (bool) $dn;
+ return (bool)$dn;
}
return false;
}
diff --git a/apps/user_ldap/lib/User_Proxy.php b/apps/user_ldap/lib/User_Proxy.php
index df9e025f871..0d41f495ce9 100644
--- a/apps/user_ldap/lib/User_Proxy.php
+++ b/apps/user_ldap/lib/User_Proxy.php
@@ -10,74 +10,38 @@ namespace OCA\User_LDAP;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User\OfflineUser;
use OCA\User_LDAP\User\User;
-use OCP\IConfig;
use OCP\IUserBackend;
-use OCP\IUserSession;
use OCP\Notification\IManager as INotificationManager;
use OCP\User\Backend\ICountMappedUsersBackend;
-use OCP\User\Backend\ICountUsersBackend;
+use OCP\User\Backend\ILimitAwareCountUsersBackend;
use OCP\User\Backend\IProvideEnabledStateBackend;
use OCP\UserInterface;
use Psr\Log\LoggerInterface;
-class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP, ICountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend {
- /** @var User_LDAP[] */
- private array $backends = [];
- private ?User_LDAP $refBackend = null;
-
- private bool $isSetUp = false;
- private Helper $helper;
- private IConfig $ocConfig;
- private INotificationManager $notificationManager;
- private IUserSession $userSession;
- private UserPluginManager $userPluginManager;
- private LoggerInterface $logger;
- private DeletedUsersIndex $deletedUsersIndex;
-
+/**
+ * @template-extends Proxy<User_LDAP>
+ */
+class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP, ILimitAwareCountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend {
public function __construct(
- Helper $helper,
+ private Helper $helper,
ILDAPWrapper $ldap,
AccessFactory $accessFactory,
- IConfig $ocConfig,
- INotificationManager $notificationManager,
- IUserSession $userSession,
- UserPluginManager $userPluginManager,
- LoggerInterface $logger,
- DeletedUsersIndex $deletedUsersIndex,
+ private INotificationManager $notificationManager,
+ private UserPluginManager $userPluginManager,
+ private LoggerInterface $logger,
+ private DeletedUsersIndex $deletedUsersIndex,
) {
- parent::__construct($ldap, $accessFactory);
- $this->helper = $helper;
- $this->ocConfig = $ocConfig;
- $this->notificationManager = $notificationManager;
- $this->userSession = $userSession;
- $this->userPluginManager = $userPluginManager;
- $this->logger = $logger;
- $this->deletedUsersIndex = $deletedUsersIndex;
+ parent::__construct($helper, $ldap, $accessFactory);
}
- protected function setup(): void {
- if ($this->isSetUp) {
- return;
- }
-
- $serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
- foreach ($serverConfigPrefixes as $configPrefix) {
- $this->backends[$configPrefix] = new User_LDAP(
- $this->getAccess($configPrefix),
- $this->ocConfig,
- $this->notificationManager,
- $this->userSession,
- $this->userPluginManager,
- $this->logger,
- $this->deletedUsersIndex,
- );
-
- if (is_null($this->refBackend)) {
- $this->refBackend = $this->backends[$configPrefix];
- }
- }
-
- $this->isSetUp = true;
+ protected function newInstance(string $configPrefix): User_LDAP {
+ return new User_LDAP(
+ $this->getAccess($configPrefix),
+ $this->notificationManager,
+ $this->userPluginManager,
+ $this->logger,
+ $this->deletedUsersIndex,
+ );
}
/**
@@ -230,8 +194,8 @@ class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP
/**
* check if a user exists on LDAP
*
- * @param string|\OCA\User_LDAP\User\User $user either the Nextcloud user
- * name or an instance of that user
+ * @param string|User $user either the Nextcloud user
+ * name or an instance of that user
*/
public function userExistsOnLDAP($user, bool $ignoreCache = false): bool {
$id = ($user instanceof User) ? $user->getUsername() : $user;
@@ -305,7 +269,7 @@ class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP
}
/**
- * checks whether the user is allowed to change his avatar in Nextcloud
+ * checks whether the user is allowed to change their avatar in Nextcloud
*
* @param string $uid the Nextcloud user name
* @return boolean either the user can or cannot
@@ -370,17 +334,21 @@ class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP
/**
* Count the number of users
- *
- * @return int|false
*/
- public function countUsers() {
+ public function countUsers(int $limit = 0): int|false {
$this->setup();
$users = false;
foreach ($this->backends as $backend) {
- $backendUsers = $backend->countUsers();
+ $backendUsers = $backend->countUsers($limit);
if ($backendUsers !== false) {
$users = (int)$users + $backendUsers;
+ if ($limit > 0) {
+ if ($users >= $limit) {
+ break;
+ }
+ $limit -= $users;
+ }
}
}
return $users;
@@ -447,11 +415,11 @@ class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP
if ($search !== '') {
$disabledUsers = array_filter(
$disabledUsers,
- fn (OfflineUser $user): bool =>
- mb_stripos($user->getOCName(), $search) !== false ||
- mb_stripos($user->getUID(), $search) !== false ||
- mb_stripos($user->getDisplayName(), $search) !== false ||
- mb_stripos($user->getEmail(), $search) !== false,
+ fn (OfflineUser $user): bool
+ => mb_stripos($user->getOCName(), $search) !== false
+ || mb_stripos($user->getUID(), $search) !== false
+ || mb_stripos($user->getDisplayName(), $search) !== false
+ || mb_stripos($user->getEmail(), $search) !== false,
);
}
return array_map(
diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php
index 3720b509068..15a9f9cb212 100644
--- a/apps/user_ldap/lib/Wizard.php
+++ b/apps/user_ldap/lib/Wizard.php
@@ -11,13 +11,13 @@ namespace OCA\User_LDAP;
use OC\ServerNotAvailableException;
use OCP\IL10N;
use OCP\L10N\IFactory as IL10NFactory;
+use OCP\Server;
+use OCP\Util;
use Psr\Log\LoggerInterface;
class Wizard extends LDAPUtility {
protected static ?IL10N $l = null;
- protected Access $access;
protected ?\LDAP\Connection $cr = null;
- protected Configuration $configuration;
protected WizardResult $result;
protected LoggerInterface $logger;
@@ -35,18 +35,16 @@ class Wizard extends LDAPUtility {
public const LDAP_NW_TIMEOUT = 4;
public function __construct(
- Configuration $configuration,
+ protected Configuration $configuration,
ILDAPWrapper $ldap,
- Access $access
+ protected Access $access,
) {
parent::__construct($ldap);
- $this->configuration = $configuration;
if (is_null(static::$l)) {
- static::$l = \OC::$server->get(IL10NFactory::class)->get('user_ldap');
+ static::$l = Server::get(IL10NFactory::class)->get('user_ldap');
}
- $this->access = $access;
$this->result = new WizardResult();
- $this->logger = \OC::$server->get(LoggerInterface::class);
+ $this->logger = Server::get(LoggerInterface::class);
}
public function __destruct() {
@@ -262,8 +260,8 @@ class Wizard extends LDAPUtility {
$this->applyFind('ldap_email_attr', $winner);
if ($writeLog) {
$this->logger->info(
- 'The mail attribute has automatically been reset, '.
- 'because the original value did not return any results.',
+ 'The mail attribute has automatically been reset, '
+ . 'because the original value did not return any results.',
['app' => 'user_ldap']
);
}
@@ -402,7 +400,7 @@ class Wizard extends LDAPUtility {
$filterParts = [];
foreach ($obclasses as $obclass) {
- $filterParts[] = 'objectclass='.$obclass;
+ $filterParts[] = 'objectclass=' . $obclass;
}
//we filter for everything
//- that looks like a group and
@@ -647,7 +645,7 @@ class Wizard extends LDAPUtility {
$p = $setting['port'];
$t = $setting['tls'];
$this->logger->debug(
- 'Wiz: trying port '. $p . ', TLS '. $t,
+ 'Wiz: trying port ' . $p . ', TLS ' . $t,
['app' => 'user_ldap']
);
//connectAndBind may throw Exception, it needs to be caught by the
@@ -712,7 +710,7 @@ class Wizard extends LDAPUtility {
//this did not help :(
//Let's see whether we can parse the Host URL and convert the domain to
//a base DN
- $helper = \OC::$server->get(Helper::class);
+ $helper = Server::get(Helper::class);
$domain = $helper->getDomainFromURL($this->configuration->ldapHost);
if (!$domain) {
return false;
@@ -755,7 +753,7 @@ class Wizard extends LDAPUtility {
//removes Port from Host
if (is_array($hostInfo) && isset($hostInfo['port'])) {
$port = $hostInfo['port'];
- $host = str_replace(':'.$port, '', $host);
+ $host = str_replace(':' . $port, '', $host);
$this->applyFind('ldap_host', $host);
$this->applyFind('ldap_port', (string)$port);
}
@@ -824,7 +822,7 @@ class Wizard extends LDAPUtility {
$errorNo = $this->ldap->errno($cr);
$errorMsg = $this->ldap->error($cr);
$this->logger->info(
- 'Wiz: Could not search base '.$base.' Error '.$errorNo.': '.$errorMsg,
+ 'Wiz: Could not search base ' . $base . ' Error ' . $errorNo . ': ' . $errorMsg,
['app' => 'user_ldap']
);
return false;
@@ -858,8 +856,8 @@ class Wizard extends LDAPUtility {
/**
* creates an LDAP Filter from given configuration
* @param int $filterType int, for which use case the filter shall be created
- * can be any of self::LFILTER_USER_LIST, self::LFILTER_LOGIN or
- * self::LFILTER_GROUP_LIST
+ * can be any of self::LFILTER_USER_LIST, self::LFILTER_LOGIN or
+ * self::LFILTER_GROUP_LIST
* @throws \Exception
*/
private function composeLdapFilter(int $filterType): string {
@@ -902,7 +900,7 @@ class Wizard extends LDAPUtility {
$filterPart = '(memberof=' . ldap_escape($dn, '', LDAP_ESCAPE_FILTER) . ')';
if (isset($attrs['primaryGroupToken'])) {
$pgt = $attrs['primaryGroupToken'][0];
- $primaryFilterPart = '(primaryGroupID=' . ldap_escape($pgt, '', LDAP_ESCAPE_FILTER) .')';
+ $primaryFilterPart = '(primaryGroupID=' . ldap_escape($pgt, '', LDAP_ESCAPE_FILTER) . ')';
$filterPart = '(|' . $filterPart . $primaryFilterPart . ')';
}
$filter .= $filterPart;
@@ -1002,12 +1000,12 @@ class Wizard extends LDAPUtility {
$filterLogin .= ')';
}
- $filter = '(&'.$ulf.$filterLogin.')';
+ $filter = '(&' . $ulf . $filterLogin . ')';
break;
}
$this->logger->debug(
- 'Wiz: Final filter '.$filter,
+ 'Wiz: Final filter ' . $filter,
['app' => 'user_ldap']
);
@@ -1069,7 +1067,7 @@ class Wizard extends LDAPUtility {
if ($login === true) {
$this->logger->debug(
- 'Wiz: Bind successful to Port '. $port . ' TLS ' . (int)$tls,
+ 'Wiz: Bind successful to Port ' . $port . ' TLS ' . (int)$tls,
['app' => 'user_ldap']
);
return true;
@@ -1114,9 +1112,9 @@ class Wizard extends LDAPUtility {
* @param string[] $filters array, the filters that shall be used in the search
* @param string $attr the attribute of which a list of values shall be returned
* @param int $dnReadLimit the amount of how many DNs should be analyzed.
- * The lower, the faster
+ * The lower, the faster
* @param string $maxF string. if not null, this variable will have the filter that
- * yields most result entries
+ * yields most result entries
* @return array|false an array with the values on success, false otherwise
*/
public function cumulativeSearchOnAttribute(array $filters, string $attr, int $dnReadLimit = 3, ?string &$maxF = null) {
@@ -1190,9 +1188,9 @@ class Wizard extends LDAPUtility {
* @param string $attr the attribute to look for
* @param string $dbkey the dbkey of the setting the feature is connected to
* @param string $confkey the confkey counterpart for the $dbkey as used in the
- * Configuration class
+ * Configuration class
* @param bool $po whether the objectClass with most result entries
- * shall be pre-selected via the result
+ * shall be pre-selected via the result
* @return array list of found items.
* @throws \Exception
*/
@@ -1203,7 +1201,7 @@ class Wizard extends LDAPUtility {
}
$p = 'objectclass=';
foreach ($objectclasses as $key => $value) {
- $objectclasses[$key] = $p.$value;
+ $objectclasses[$key] = $p . $value;
}
$maxEntryObjC = '';
@@ -1211,8 +1209,8 @@ class Wizard extends LDAPUtility {
//When looking for objectclasses, testing few entries is sufficient,
$dig = 3;
- $availableFeatures =
- $this->cumulativeSearchOnAttribute($objectclasses, $attr,
+ $availableFeatures
+ = $this->cumulativeSearchOnAttribute($objectclasses, $attr,
$dig, $maxEntryObjC);
if (is_array($availableFeatures)
&& count($availableFeatures) > 0) {
@@ -1244,7 +1242,7 @@ class Wizard extends LDAPUtility {
* @param string $attribute the attribute values to look for
* @param array &$known new values will be appended here
* @return int state on of the class constants LRESULT_PROCESSED_OK,
- * LRESULT_PROCESSED_INVALID or LRESULT_PROCESSED_SKIP
+ * LRESULT_PROCESSED_INVALID or LRESULT_PROCESSED_SKIP
*/
private function getAttributeValuesFromEntry(array $result, string $attribute, array &$known): int {
if (!isset($result['count'])
@@ -1253,7 +1251,7 @@ class Wizard extends LDAPUtility {
}
// strtolower on all keys for proper comparison
- $result = \OCP\Util::mb_array_change_key_case($result);
+ $result = Util::mb_array_change_key_case($result);
$attribute = strtolower($attribute);
if (isset($result[$attribute])) {
foreach ($result[$attribute] as $key => $val) {
diff --git a/apps/user_ldap/lib/WizardResult.php b/apps/user_ldap/lib/WizardResult.php
index 09aadd2b781..d6fd67d4204 100644
--- a/apps/user_ldap/lib/WizardResult.php
+++ b/apps/user_ldap/lib/WizardResult.php
@@ -20,7 +20,7 @@ class WizardResult {
$this->changes[$key] = $value;
}
-
+
public function markChange() {
$this->markedChange = true;
}
diff --git a/apps/user_ldap/openapi.json b/apps/user_ldap/openapi.json
index 739cc9cc3e7..0881d2e7d51 100644
--- a/apps/user_ldap/openapi.json
+++ b/apps/user_ldap/openapi.json
@@ -135,6 +135,15 @@
],
"parameters": [
{
+ "name": "configID",
+ "in": "path",
+ "description": "ID of the config",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
"name": "showPassword",
"in": "query",
"description": "Whether to show the password",
@@ -148,15 +157,6 @@
}
},
{
- "name": "configID",
- "in": "path",
- "description": "ID of the config",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
@@ -246,16 +246,29 @@
"basic_auth": []
}
],
- "parameters": [
- {
- "name": "configData",
- "in": "query",
- "description": "New config",
- "required": true,
- "schema": {
- "type": "string"
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "configData"
+ ],
+ "properties": {
+ "configData": {
+ "type": "object",
+ "description": "New config",
+ "additionalProperties": {
+ "type": "object"
+ }
+ }
+ }
+ }
}
- },
+ }
+ },
+ "parameters": [
{
"name": "configID",
"in": "path",
@@ -461,4 +474,4 @@
}
},
"tags": []
-} \ No newline at end of file
+}
diff --git a/apps/user_ldap/templates/part.wizard-server.php b/apps/user_ldap/templates/part.wizard-server.php
index 94bd59f7b96..9fb67342247 100644
--- a/apps/user_ldap/templates/part.wizard-server.php
+++ b/apps/user_ldap/templates/part.wizard-server.php
@@ -15,7 +15,7 @@ $sel = ' selected';
foreach ($_['serverConfigurationPrefixes'] as $prefix) {
?>
<option value="<?php p($prefix); ?>"<?php p($sel);
- $sel = ''; ?>><?php p($l->t('%s. Server:', [$i++])); ?> <?php p(' '.$_['serverConfigurationHosts'][$prefix]); ?></option>
+ $sel = ''; ?>><?php p($l->t('%s. Server:', [$i++])); ?> <?php p(' ' . $_['serverConfigurationHosts'][$prefix]); ?></option>
<?php
}
?>
diff --git a/apps/user_ldap/templates/renewpassword.php b/apps/user_ldap/templates/renewpassword.php
index 6f09230a88c..3345be29c13 100644
--- a/apps/user_ldap/templates/renewpassword.php
+++ b/apps/user_ldap/templates/renewpassword.php
@@ -6,11 +6,11 @@
*/
/** @var \OCP\IL10N $l */
-script('user_ldap', 'renewPassword');
+\OCP\Util::addScript('user_ldap', 'renewPassword', 'core');
style('user_ldap', 'renewPassword');
?>
-<form method="post" name="renewpassword" id="renewpassword" action="<?php p(\OC::$server->getURLGenerator()->linkToRoute('user_ldap.renewPassword.tryRenewPassword')); ?>">
+<form method="post" name="renewpassword" id="renewpassword" action="<?php p(\OCP\Server::get(\OCP\IURLGenerator::class)->linkToRoute('user_ldap.renewPassword.tryRenewPassword')); ?>">
<fieldset>
<div class="warning title">
<?php p($l->t('Please renew your password.')); ?><br>
diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php
index 4fb24655000..9117a9f533c 100644
--- a/apps/user_ldap/templates/settings.php
+++ b/apps/user_ldap/templates/settings.php
@@ -73,7 +73,7 @@ style('user_ldap', 'settings');
</ul>
<?php
if (!function_exists('ldap_connect')) {
- print_unescaped('<p class="ldapwarning">'.$l->t('<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.').'</p>');
+ print_unescaped('<p class="ldapwarning">' . $l->t('<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.') . '</p>');
}
?>
<?php require_once __DIR__ . '/part.wizard-server.php'; ?>
@@ -139,6 +139,7 @@ style('user_ldap', 'settings');
<p><label for="ldap_attr_headline"> <?php p($l->t('Headline Field')); ?></label><input type="text" id="ldap_attr_headline" name="ldap_attr_headline" title="<?php p($l->t('User profile Headline will be set from the specified attribute')); ?>" data-default="<?php p($_['ldap_attr_headline_default']); ?>"></p>
<p><label for="ldap_attr_biography"> <?php p($l->t('Biography Field')); ?></label><input type="text" id="ldap_attr_biography" name="ldap_attr_biography" title="<?php p($l->t('User profile Biography will be set from the specified attribute')); ?>" data-default="<?php p($_['ldap_attr_biography_default']); ?>"></p>
<p><label for="ldap_attr_birthdate"> <?php p($l->t('Birthdate Field')); ?></label><input type="text" id="ldap_attr_birthdate" name="ldap_attr_birthdate" title="<?php p($l->t('User profile Date of birth will be set from the specified attribute')); ?>" data-default="<?php p($_['ldap_attr_birthdate_default']); ?>"></p>
+ <p></p><label for="ldap_attr_pronouns"> <?php p($l->t('Pronouns Field')); ?></label><input type="text" id="ldap_attr_pronouns" name="ldap_attr_pronouns" title="<?php p($l->t('User profile Pronouns will be set from the specified attribute')); ?>" data-default="<?php p($_['ldap_attr_pronouns_default']); ?>"></p>
</div>
</div>
<?php print_unescaped($_['settingControls']); ?>
diff --git a/apps/user_ldap/tests/AccessTest.php b/apps/user_ldap/tests/AccessTest.php
index 79cdf2e8e0a..54be29d0f86 100644
--- a/apps/user_ldap/tests/AccessTest.php
+++ b/apps/user_ldap/tests/AccessTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -6,10 +8,10 @@
*/
namespace OCA\User_LDAP\Tests;
+use OC\ServerNotAvailableException;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
use OCA\User_LDAP\Exceptions\ConstraintViolationException;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\Helper;
use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\LDAP;
@@ -18,12 +20,17 @@ use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\User\OfflineUser;
use OCA\User_LDAP\User\User;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\HintException;
+use OCP\IAppConfig;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\Image;
use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
+use OCP\Server;
use OCP\Share\IManager;
+use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
@@ -35,32 +42,25 @@ use Test\TestCase;
* @package OCA\User_LDAP\Tests
*/
class AccessTest extends TestCase {
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $userMapper;
- /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $shareManager;
- /** @var GroupMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $groupMapper;
- /** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
- private $connection;
- /** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
- private $ldap;
- /** @var Manager|\PHPUnit\Framework\MockObject\MockObject */
- private $userManager;
- /** @var Helper|\PHPUnit\Framework\MockObject\MockObject */
- private $helper;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- private $config;
- /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
- private $ncUserManager;
- /** @var LoggerInterface|MockObject */
- private $logger;
- /** @var Access */
- private $access;
+ protected UserMapping&MockObject $userMapper;
+ protected IManager&MockObject $shareManager;
+ protected GroupMapping&MockObject $groupMapper;
+ private Connection&MockObject $connection;
+ private LDAP&MockObject $ldap;
+ private Manager&MockObject $userManager;
+ private Helper&MockObject $helper;
+ private IConfig&MockObject $config;
+ private IUserManager&MockObject $ncUserManager;
+ private LoggerInterface&MockObject $logger;
+ private IAppConfig&MockObject $appConfig;
+ private IEventDispatcher&MockObject $dispatcher;
+ private Access $access;
protected function setUp(): void {
- $this->connection = $this->createMock(Connection::class);
$this->ldap = $this->createMock(LDAP::class);
+ $this->connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->ldap])
+ ->getMock();
$this->userManager = $this->createMock(Manager::class);
$this->helper = $this->createMock(Helper::class);
$this->config = $this->createMock(IConfig::class);
@@ -69,32 +69,39 @@ class AccessTest extends TestCase {
$this->ncUserManager = $this->createMock(IUserManager::class);
$this->shareManager = $this->createMock(IManager::class);
$this->logger = $this->createMock(LoggerInterface::class);
+ $this->appConfig = $this->createMock(IAppConfig::class);
+ $this->dispatcher = $this->createMock(IEventDispatcher::class);
$this->access = new Access(
- $this->connection,
$this->ldap,
+ $this->connection,
$this->userManager,
$this->helper,
$this->config,
$this->ncUserManager,
- $this->logger
+ $this->logger,
+ $this->appConfig,
+ $this->dispatcher,
);
+ $this->dispatcher->expects($this->any())->method('dispatchTyped');
$this->access->setUserMapper($this->userMapper);
$this->access->setGroupMapper($this->groupMapper);
}
private function getConnectorAndLdapMock() {
+ /** @var ILDAPWrapper&MockObject */
$lw = $this->createMock(ILDAPWrapper::class);
+ /** @var Connection&MockObject */
$connector = $this->getMockBuilder(Connection::class)
->setConstructorArgs([$lw, '', null])
->getMock();
$connector->expects($this->any())
->method('getConnectionResource')
->willReturn(ldap_connect('ldap://example.com'));
+ /** @var Manager&MockObject */
$um = $this->getMockBuilder(Manager::class)
->setConstructorArgs([
$this->createMock(IConfig::class),
- $this->createMock(FilesystemHelper::class),
$this->createMock(LoggerInterface::class),
$this->createMock(IAvatarManager::class),
$this->createMock(Image::class),
@@ -102,39 +109,39 @@ class AccessTest extends TestCase {
$this->createMock(INotificationManager::class),
$this->shareManager])
->getMock();
- $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
return [$lw, $connector, $um, $helper];
}
- public function testEscapeFilterPartValidChars() {
+ public function testEscapeFilterPartValidChars(): void {
$input = 'okay';
- $this->assertTrue($input === $this->access->escapeFilterPart($input));
+ $this->assertSame($input, $this->access->escapeFilterPart($input));
}
- public function testEscapeFilterPartEscapeWildcard() {
+ public function testEscapeFilterPartEscapeWildcard(): void {
$input = '*';
$expected = '\\2a';
- $this->assertTrue($expected === $this->access->escapeFilterPart($input));
+ $this->assertSame($expected, $this->access->escapeFilterPart($input));
}
- public function testEscapeFilterPartEscapeWildcard2() {
+ public function testEscapeFilterPartEscapeWildcard2(): void {
$input = 'foo*bar';
$expected = 'foo\\2abar';
- $this->assertTrue($expected === $this->access->escapeFilterPart($input));
+ $this->assertSame($expected, $this->access->escapeFilterPart($input));
}
/**
- * @dataProvider convertSID2StrSuccessData
* @param array $sidArray
* @param $sidExpected
*/
- public function testConvertSID2StrSuccess(array $sidArray, $sidExpected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('convertSID2StrSuccessData')]
+ public function testConvertSID2StrSuccess(array $sidArray, $sidExpected): void {
$sidBinary = implode('', $sidArray);
$this->assertSame($sidExpected, $this->access->convertSID2Str($sidBinary));
}
- public function convertSID2StrSuccessData() {
+ public static function convertSID2StrSuccessData(): array {
return [
[
[
@@ -161,14 +168,14 @@ class AccessTest extends TestCase {
];
}
- public function testConvertSID2StrInputError() {
+ public function testConvertSID2StrInputError(): void {
$sidIllegal = 'foobar';
$sidExpected = '';
$this->assertSame($sidExpected, $this->access->convertSID2Str($sidIllegal));
}
- public function testGetDomainDNFromDNSuccess() {
+ public function testGetDomainDNFromDNSuccess(): void {
$inputDN = 'uid=zaphod,cn=foobar,dc=my,dc=server,dc=com';
$domainDN = 'dc=my,dc=server,dc=com';
@@ -180,7 +187,7 @@ class AccessTest extends TestCase {
$this->assertSame($domainDN, $this->access->getDomainDNFromDN($inputDN));
}
- public function testGetDomainDNFromDNError() {
+ public function testGetDomainDNFromDNError(): void {
$inputDN = 'foobar';
$expected = '';
@@ -192,74 +199,68 @@ class AccessTest extends TestCase {
$this->assertSame($expected, $this->access->getDomainDNFromDN($inputDN));
}
- public function dnInputDataProvider() {
- return [[
+ public static function dnInputDataProvider(): array {
+ return [
[
- 'input' => 'foo=bar,bar=foo,dc=foobar',
- 'interResult' => [
+ 'foo=bar,bar=foo,dc=foobar',
+ [
'count' => 3,
0 => 'foo=bar',
1 => 'bar=foo',
2 => 'dc=foobar'
],
- 'expectedResult' => true
+ true
],
[
- 'input' => 'foobarbarfoodcfoobar',
- 'interResult' => false,
- 'expectedResult' => false
+ 'foobarbarfoodcfoobar',
+ false,
+ false
]
- ]];
+ ];
}
- /**
- * @dataProvider dnInputDataProvider
- * @param array $case
- */
- public function testStringResemblesDN($case) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dnInputDataProvider')]
+ public function testStringResemblesDN(string $input, array|bool $interResult, bool $expectedResult): void {
[$lw, $con, $um, $helper] = $this->getConnectorAndLdapMock();
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject $config */
+ /** @var IConfig&MockObject $config */
$config = $this->createMock(IConfig::class);
- $access = new Access($con, $lw, $um, $helper, $config, $this->ncUserManager, $this->logger);
+ $access = new Access($lw, $con, $um, $helper, $config, $this->ncUserManager, $this->logger, $this->appConfig, $this->dispatcher);
$lw->expects($this->exactly(1))
->method('explodeDN')
- ->willReturnCallback(function ($dn) use ($case) {
- if ($dn === $case['input']) {
- return $case['interResult'];
+ ->willReturnCallback(function ($dn) use ($input, $interResult) {
+ if ($dn === $input) {
+ return $interResult;
}
return null;
});
- $this->assertSame($case['expectedResult'], $access->stringResemblesDN($case['input']));
+ $this->assertSame($expectedResult, $access->stringResemblesDN($input));
}
- /**
- * @dataProvider dnInputDataProvider
- * @param $case
- */
- public function testStringResemblesDNLDAPmod($case) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dnInputDataProvider')]
+ public function testStringResemblesDNLDAPmod(string $input, array|bool $interResult, bool $expectedResult): void {
[, $con, $um, $helper] = $this->getConnectorAndLdapMock();
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject $config */
+ /** @var IConfig&MockObject $config */
$config = $this->createMock(IConfig::class);
$lw = new LDAP();
- $access = new Access($con, $lw, $um, $helper, $config, $this->ncUserManager, $this->logger);
+ $access = new Access($lw, $con, $um, $helper, $config, $this->ncUserManager, $this->logger, $this->appConfig, $this->dispatcher);
if (!function_exists('ldap_explode_dn')) {
$this->markTestSkipped('LDAP Module not available');
}
- $this->assertSame($case['expectedResult'], $access->stringResemblesDN($case['input']));
+ $this->assertSame($expectedResult, $access->stringResemblesDN($input));
}
- public function testCacheUserHome() {
+ public function testCacheUserHome(): void {
$this->connection->expects($this->once())
->method('writeToCache');
$this->access->cacheUserHome('foobar', '/foobars/path');
}
- public function testBatchApplyUserAttributes() {
+ public function testBatchApplyUserAttributes(): void {
$this->ldap->expects($this->any())
->method('isResource')
->willReturn(true);
@@ -273,7 +274,7 @@ class AccessTest extends TestCase {
->method('getAttributes')
->willReturn(['displayname' => ['bar', 'count' => 1]]);
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject $mapperMock */
+ /** @var UserMapping&MockObject $mapperMock */
$mapperMock = $this->createMock(UserMapping::class);
$mapperMock->expects($this->any())
->method('getNameByDN')
@@ -317,8 +318,8 @@ class AccessTest extends TestCase {
$this->access->batchApplyUserAttributes($data);
}
- public function testBatchApplyUserAttributesSkipped() {
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject $mapperMock */
+ public function testBatchApplyUserAttributesSkipped(): void {
+ /** @var UserMapping&MockObject $mapperMock */
$mapperMock = $this->createMock(UserMapping::class);
$mapperMock->expects($this->any())
->method('getNameByDN')
@@ -358,8 +359,8 @@ class AccessTest extends TestCase {
$this->access->batchApplyUserAttributes($data);
}
- public function testBatchApplyUserAttributesDontSkip() {
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject $mapperMock */
+ public function testBatchApplyUserAttributesDontSkip(): void {
+ /** @var UserMapping&MockObject $mapperMock */
$mapperMock = $this->createMock(UserMapping::class);
$mapperMock->expects($this->any())
->method('getNameByDN')
@@ -399,7 +400,7 @@ class AccessTest extends TestCase {
$this->access->batchApplyUserAttributes($data);
}
- public function dNAttributeProvider() {
+ public static function dNAttributeProvider(): array {
// corresponds to Access::resemblesDN()
return [
'dn' => ['dn'],
@@ -409,13 +410,10 @@ class AccessTest extends TestCase {
];
}
- /**
- * @dataProvider dNAttributeProvider
- * @param $attribute
- */
- public function testSanitizeDN($attribute) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dNAttributeProvider')]
+ public function testSanitizeDN(string $attribute): void {
[$lw, $con, $um, $helper] = $this->getConnectorAndLdapMock();
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject $config */
+ /** @var IConfig&MockObject $config */
$config = $this->createMock(IConfig::class);
$dnFromServer = 'cn=Mixed Cases,ou=Are Sufficient To,ou=Test,dc=example,dc=org';
@@ -429,13 +427,13 @@ class AccessTest extends TestCase {
$attribute => ['count' => 1, $dnFromServer]
]);
- $access = new Access($con, $lw, $um, $helper, $config, $this->ncUserManager, $this->logger);
+ $access = new Access($lw, $con, $um, $helper, $config, $this->ncUserManager, $this->logger, $this->appConfig, $this->dispatcher);
$values = $access->readAttribute('uid=whoever,dc=example,dc=org', $attribute);
$this->assertSame($values[0], strtolower($dnFromServer));
}
- public function testSetPasswordWithDisabledChanges() {
+ public function testSetPasswordWithDisabledChanges(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('LDAP password changes are disabled');
@@ -447,7 +445,7 @@ class AccessTest extends TestCase {
$this->access->setPassword('CN=foo', 'MyPassword');
}
- public function testSetPasswordWithLdapNotAvailable() {
+ public function testSetPasswordWithLdapNotAvailable(): void {
$this->connection
->method('__get')
->willReturn(true);
@@ -455,19 +453,19 @@ class AccessTest extends TestCase {
$this->connection
->expects($this->once())
->method('getConnectionResource')
- ->willThrowException(new \OC\ServerNotAvailableException('Connection to LDAP server could not be established'));
+ ->willThrowException(new ServerNotAvailableException('Connection to LDAP server could not be established'));
$this->ldap
->expects($this->never())
->method('isResource');
- $this->expectException(\OC\ServerNotAvailableException::class);
+ $this->expectException(ServerNotAvailableException::class);
$this->expectExceptionMessage('Connection to LDAP server could not be established');
$this->access->setPassword('CN=foo', 'MyPassword');
}
- public function testSetPasswordWithRejectedChange() {
- $this->expectException(\OCP\HintException::class);
+ public function testSetPasswordWithRejectedChange(): void {
+ $this->expectException(HintException::class);
$this->expectExceptionMessage('Password change rejected.');
$this->connection
@@ -488,7 +486,7 @@ class AccessTest extends TestCase {
$this->access->setPassword('CN=foo', 'MyPassword');
}
- public function testSetPassword() {
+ public function testSetPassword(): void {
$this->connection
->method('__get')
->willReturn(true);
@@ -511,7 +509,7 @@ class AccessTest extends TestCase {
$base,
$fakeConnection,
$fakeSearchResultResource,
- $fakeLdapEntries
+ $fakeLdapEntries,
) {
$this->connection
->expects($this->any())
@@ -550,7 +548,7 @@ class AccessTest extends TestCase {
->willReturnArgument(0);
}
- public function testSearchNoPagedSearch() {
+ public function testSearchNoPagedSearch(): void {
// scenario: no pages search, 1 search base
$filter = 'objectClass=nextcloudUser';
$base = 'ou=zombies,dc=foobar,dc=nextcloud,dc=com';
@@ -577,7 +575,7 @@ class AccessTest extends TestCase {
$this->assertSame($expected, $result);
}
- public function testFetchListOfUsers() {
+ public function testFetchListOfUsers(): void {
$filter = 'objectClass=nextcloudUser';
$base = 'ou=zombies,dc=foobar,dc=nextcloud,dc=com';
$attrs = ['dn', 'uid'];
@@ -597,20 +595,21 @@ class AccessTest extends TestCase {
];
$expected = $fakeLdapEntries;
unset($expected['count']);
- array_walk($expected, function (&$v) {
+ array_walk($expected, function (&$v): void {
$v['dn'] = [$v['dn']]; // dn is translated into an array internally for consistency
});
$this->prepareMocksForSearchTests($base, $fakeConnection, $fakeSearchResultResource, $fakeLdapEntries);
- $this->connection->expects($this->exactly($fakeLdapEntries['count']))
+ // Called twice per user, for userExists and userExistsOnLdap
+ $this->connection->expects($this->exactly(2 * $fakeLdapEntries['count']))
->method('writeToCache')
->with($this->stringStartsWith('userExists'), true);
$this->userMapper->expects($this->exactly($fakeLdapEntries['count']))
->method('getNameByDN')
->willReturnCallback(function ($fdn) {
- $parts = ldap_explode_dn($fdn, false);
+ $parts = ldap_explode_dn($fdn, 0);
return $parts[0];
});
@@ -619,7 +618,7 @@ class AccessTest extends TestCase {
$this->assertSame($expected, $list);
}
- public function testFetchListOfGroupsKnown() {
+ public function testFetchListOfGroupsKnown(): void {
$filter = 'objectClass=nextcloudGroup';
$attributes = ['cn', 'gidNumber', 'dn'];
$base = 'ou=SomeGroups,dc=my,dc=directory';
@@ -649,7 +648,7 @@ class AccessTest extends TestCase {
$this->groupMapper->expects($this->never())
->method('getNameByDN');
- $this->connection->expects($this->exactly(3))
+ $this->connection->expects($this->exactly(1))
->method('writeToCache');
$groups = $this->access->fetchListOfGroups($filter, $attributes);
@@ -658,7 +657,7 @@ class AccessTest extends TestCase {
$this->assertSame('Another Good Team', $groups[1]['cn'][0]);
}
- public function intUsernameProvider() {
+ public static function intUsernameProvider(): array {
return [
['alice', 'alice'],
['b/ob', 'bob'],
@@ -676,7 +675,7 @@ class AccessTest extends TestCase {
];
}
- public function groupIDCandidateProvider() {
+ public static function groupIDCandidateProvider(): array {
return [
['alice', 'alice'],
['b/ob', 'b/ob'],
@@ -693,13 +692,8 @@ class AccessTest extends TestCase {
];
}
- /**
- * @dataProvider intUsernameProvider
- *
- * @param $name
- * @param $expected
- */
- public function testSanitizeUsername($name, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('intUsernameProvider')]
+ public function testSanitizeUsername(string $name, ?string $expected): void {
if ($expected === null) {
$this->expectException(\InvalidArgumentException::class);
}
@@ -707,15 +701,13 @@ class AccessTest extends TestCase {
$this->assertSame($expected, $sanitizedName);
}
- /**
- * @dataProvider groupIDCandidateProvider
- */
- public function testSanitizeGroupIDCandidate(string $name, string $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('groupIDCandidateProvider')]
+ public function testSanitizeGroupIDCandidate(string $name, string $expected): void {
$sanitizedName = $this->access->sanitizeGroupIDCandidate($name);
$this->assertSame($expected, $sanitizedName);
}
- public function testUserStateUpdate() {
+ public function testUserStateUpdate(): void {
$this->connection->expects($this->any())
->method('__get')
->willReturnMap([
@@ -734,7 +726,7 @@ class AccessTest extends TestCase {
->with('detta')
->willReturnOnConsecutiveCalls($offlineUserMock, $regularUserMock);
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject $mapperMock */
+ /** @var UserMapping&MockObject $mapperMock */
$mapperMock = $this->createMock(UserMapping::class);
$mapperMock->expects($this->any())
->method('getNameByDN')
diff --git a/apps/user_ldap/tests/ConfigurationTest.php b/apps/user_ldap/tests/ConfigurationTest.php
index 96b08c4cf8a..db92598fcfd 100644
--- a/apps/user_ldap/tests/ConfigurationTest.php
+++ b/apps/user_ldap/tests/ConfigurationTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -10,15 +11,14 @@ namespace OCA\User_LDAP\Tests;
use OCA\User_LDAP\Configuration;
class ConfigurationTest extends \Test\TestCase {
- /** @var Configuration */
- protected $configuration;
+ protected Configuration $configuration;
protected function setUp(): void {
parent::setUp();
$this->configuration = new Configuration('t01', false);
}
- public function configurationDataProvider() {
+ public static function configurationDataProvider(): array {
$inputWithDN = [
'cn=someUsers,dc=example,dc=org',
' ',
@@ -86,15 +86,13 @@ class ConfigurationTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider configurationDataProvider
- */
- public function testSetValue($key, $input, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('configurationDataProvider')]
+ public function testSetValue(string $key, string|array $input, string|array $expected): void {
$this->configuration->setConfiguration([$key => $input]);
$this->assertSame($this->configuration->$key, $expected);
}
- public function avatarRuleValueProvider() {
+ public static function avatarRuleValueProvider(): array {
return [
['none', []],
['data:selfie', ['selfie']],
@@ -105,18 +103,14 @@ class ConfigurationTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider avatarRuleValueProvider
- */
- public function testGetAvatarAttributes($setting, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('avatarRuleValueProvider')]
+ public function testGetAvatarAttributes(string $setting, array $expected): void {
$this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]);
$this->assertSame($expected, $this->configuration->getAvatarAttributes());
}
- /**
- * @dataProvider avatarRuleValueProvider
- */
- public function testResolveRule($setting, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('avatarRuleValueProvider')]
+ public function testResolveRule(string $setting, array $expected): void {
$this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]);
// so far the only thing that can get resolved :)
$this->assertSame($expected, $this->configuration->resolveRule('avatar'));
diff --git a/apps/user_ldap/tests/ConnectionTest.php b/apps/user_ldap/tests/ConnectionTest.php
index 1054448198b..7116e15898f 100644
--- a/apps/user_ldap/tests/ConnectionTest.php
+++ b/apps/user_ldap/tests/ConnectionTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -7,8 +8,10 @@
*/
namespace OCA\User_LDAP\Tests;
+use OC\ServerNotAvailableException;
use OCA\User_LDAP\Connection;
use OCA\User_LDAP\ILDAPWrapper;
+use PHPUnit\Framework\MockObject\MockObject;
/**
* Class Test_Connection
@@ -18,19 +21,16 @@ use OCA\User_LDAP\ILDAPWrapper;
* @package OCA\User_LDAP\Tests
*/
class ConnectionTest extends \Test\TestCase {
- /** @var \OCA\User_LDAP\ILDAPWrapper|\PHPUnit\Framework\MockObject\MockObject */
- protected $ldap;
-
- /** @var Connection */
- protected $connection;
+ protected ILDAPWrapper&MockObject $ldap;
+ protected Connection $connection;
protected function setUp(): void {
parent::setUp();
$this->ldap = $this->createMock(ILDAPWrapper::class);
// we use a mock here to replace the cache mechanism, due to missing DI in LDAP backend.
- $this->connection = $this->getMockBuilder('OCA\User_LDAP\Connection')
- ->setMethods(['getFromCache', 'writeToCache'])
+ $this->connection = $this->getMockBuilder(Connection::class)
+ ->onlyMethods(['getFromCache', 'writeToCache'])
->setConstructorArgs([$this->ldap, '', null])
->getMock();
@@ -39,7 +39,7 @@ class ConnectionTest extends \Test\TestCase {
->willReturn(true);
}
- public function testOriginalAgentUnchangedOnClone() {
+ public function testOriginalAgentUnchangedOnClone(): void {
//background: upon login a bind is done with the user credentials
//which is valid for the whole LDAP resource. It needs to be reset
//to the agent's credentials
@@ -66,7 +66,7 @@ class ConnectionTest extends \Test\TestCase {
$this->assertSame($agentPawd, $agent['ldapAgentPassword']);
}
- public function testUseBackupServer() {
+ public function testUseBackupServer(): void {
$mainHost = 'ldap://nixda.ldap';
$backupHost = 'ldap://fallback.ldap';
$config = [
@@ -101,8 +101,7 @@ class ConnectionTest extends \Test\TestCase {
// Not called often enough? Then, the fallback to the backup server is broken.
$this->connection->expects($this->exactly(2))
->method('getFromCache')
- ->with('overrideMainServer')
- ->will($this->onConsecutiveCalls(false, false, true, true));
+ ->with('overrideMainServer')->willReturnOnConsecutiveCalls(false, false, true, true);
$this->connection->expects($this->once())
->method('writeToCache')
@@ -114,7 +113,7 @@ class ConnectionTest extends \Test\TestCase {
->willReturnCallback(function () use (&$isThrown) {
if (!$isThrown) {
$isThrown = true;
- throw new \OC\ServerNotAvailableException();
+ throw new ServerNotAvailableException();
}
return true;
});
@@ -125,7 +124,7 @@ class ConnectionTest extends \Test\TestCase {
$this->connection->init();
}
- public function testDontUseBackupServerOnFailedAuth() {
+ public function testDontUseBackupServerOnFailedAuth(): void {
$mainHost = 'ldap://nixda.ldap';
$backupHost = 'ldap://fallback.ldap';
$config = [
@@ -172,7 +171,7 @@ class ConnectionTest extends \Test\TestCase {
$this->connection->init();
}
- public function testBindWithInvalidCredentials() {
+ public function testBindWithInvalidCredentials(): void {
// background: Bind with invalid credentials should return false
// and not throw a ServerNotAvailableException.
@@ -212,12 +211,12 @@ class ConnectionTest extends \Test\TestCase {
try {
$this->assertFalse($this->connection->bind(), 'Connection::bind() should not return true with invalid credentials.');
- } catch (\OC\ServerNotAvailableException $e) {
+ } catch (ServerNotAvailableException $e) {
$this->fail('Failed asserting that exception of type "OC\ServerNotAvailableException" is not thrown.');
}
}
- public function testStartTlsNegotiationFailure() {
+ public function testStartTlsNegotiationFailure(): void {
// background: If Start TLS negotiation fails,
// a ServerNotAvailableException should be thrown.
@@ -260,7 +259,7 @@ class ConnectionTest extends \Test\TestCase {
->method('startTls')
->willReturn(false);
- $this->expectException(\OC\ServerNotAvailableException::class);
+ $this->expectException(ServerNotAvailableException::class);
$this->expectExceptionMessage('Start TLS failed, when connecting to LDAP host ' . $host . '.');
$this->connection->init();
diff --git a/apps/user_ldap/tests/GroupLDAPPluginTest.php b/apps/user_ldap/tests/GroupLDAPPluginTest.php
index 24cfb5d51e9..9f4cff64d6b 100644
--- a/apps/user_ldap/tests/GroupLDAPPluginTest.php
+++ b/apps/user_ldap/tests/GroupLDAPPluginTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -9,27 +11,23 @@ use OCA\User_LDAP\GroupPluginManager;
use OCP\GroupInterface;
class GroupLDAPPluginTest extends \Test\TestCase {
-
- /**
- * @return GroupPluginManager
- */
- private function getGroupPluginManager() {
+ private function getGroupPluginManager(): GroupPluginManager {
return new GroupPluginManager();
}
- public function testImplementsActions() {
+ public function testImplementsActions(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions'])
->getMock();
$plugin->expects($this->any())
->method('respondToActions')
->willReturn(GroupInterface::CREATE_GROUP);
- $plugin2 = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions'])
+ $plugin2 = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions'])
->getMock();
$plugin2->expects($this->any())
@@ -44,11 +42,11 @@ class GroupLDAPPluginTest extends \Test\TestCase {
$this->assertTrue($pluginManager->implementsActions(GroupInterface::ADD_TO_GROUP));
}
- public function testCreateGroup() {
+ public function testCreateGroup(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions', 'createGroup'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'createGroup'])
->getMock();
$plugin->expects($this->any())
@@ -66,7 +64,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
}
- public function testCreateGroupNotRegistered() {
+ public function testCreateGroupNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements createGroup in this LDAP Backend.');
@@ -74,11 +72,11 @@ class GroupLDAPPluginTest extends \Test\TestCase {
$pluginManager->createGroup('foo');
}
- public function testDeleteGroup() {
+ public function testDeleteGroup(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions', 'deleteGroup'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'deleteGroup'])
->getMock();
$plugin->expects($this->any())
@@ -96,7 +94,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
}
- public function testDeleteGroupNotRegistered() {
+ public function testDeleteGroupNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements deleteGroup in this LDAP Backend.');
@@ -104,11 +102,11 @@ class GroupLDAPPluginTest extends \Test\TestCase {
$pluginManager->deleteGroup('foo');
}
- public function testAddToGroup() {
+ public function testAddToGroup(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions', 'addToGroup'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'addToGroup'])
->getMock();
$plugin->expects($this->any())
@@ -127,7 +125,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
}
- public function testAddToGroupNotRegistered() {
+ public function testAddToGroupNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements addToGroup in this LDAP Backend.');
@@ -135,11 +133,11 @@ class GroupLDAPPluginTest extends \Test\TestCase {
$pluginManager->addToGroup('foo', 'bar');
}
- public function testRemoveFromGroup() {
+ public function testRemoveFromGroup(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions', 'removeFromGroup'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'removeFromGroup'])
->getMock();
$plugin->expects($this->any())
@@ -158,7 +156,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
}
- public function testRemoveFromGroupNotRegistered() {
+ public function testRemoveFromGroupNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements removeFromGroup in this LDAP Backend.');
@@ -166,11 +164,11 @@ class GroupLDAPPluginTest extends \Test\TestCase {
$pluginManager->removeFromGroup('foo', 'bar');
}
- public function testCountUsersInGroup() {
+ public function testCountUsersInGroup(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions', 'countUsersInGroup'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'countUsersInGroup'])
->getMock();
$plugin->expects($this->any())
@@ -189,7 +187,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
}
- public function testCountUsersInGroupNotRegistered() {
+ public function testCountUsersInGroupNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements countUsersInGroup in this LDAP Backend.');
@@ -197,11 +195,11 @@ class GroupLDAPPluginTest extends \Test\TestCase {
$pluginManager->countUsersInGroup('foo', 'bar');
}
- public function testgetGroupDetails() {
+ public function testgetGroupDetails(): void {
$pluginManager = $this->getGroupPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
- ->setMethods(['respondToActions', 'getGroupDetails'])
+ $plugin = $this->getMockBuilder(LDAPGroupPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'getGroupDetails'])
->getMock();
$plugin->expects($this->any())
@@ -219,7 +217,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
}
- public function testgetGroupDetailsNotRegistered() {
+ public function testgetGroupDetailsNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements getGroupDetails in this LDAP Backend.');
diff --git a/apps/user_ldap/tests/Group_LDAPTest.php b/apps/user_ldap/tests/Group_LDAPTest.php
index 06d64b99a4f..10182111768 100644
--- a/apps/user_ldap/tests/Group_LDAPTest.php
+++ b/apps/user_ldap/tests/Group_LDAPTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -21,6 +22,8 @@ use OCP\GroupInterface;
use OCP\IConfig;
use OCP\IUser;
use OCP\IUserManager;
+use OCP\Security\ISecureRandom;
+use OCP\Server;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -32,10 +35,10 @@ use Test\TestCase;
* @package OCA\User_LDAP\Tests
*/
class Group_LDAPTest extends TestCase {
- private MockObject|Access $access;
- private MockObject|GroupPluginManager $pluginManager;
- private MockObject|IConfig $config;
- private MockObject|IUserManager $ncUserManager;
+ private Access&MockObject $access;
+ private GroupPluginManager&MockObject $pluginManager;
+ private IConfig&MockObject $config;
+ private IUserManager&MockObject $ncUserManager;
private GroupLDAP $groupBackend;
public function setUp(): void {
@@ -51,7 +54,7 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend = new GroupLDAP($this->access, $this->pluginManager, $this->config, $this->ncUserManager);
}
- public function testCountEmptySearchString() {
+ public function testCountEmptySearchString(): void {
$groupDN = 'cn=group,dc=foo,dc=bar';
$this->enableGroups();
@@ -94,30 +97,19 @@ class Group_LDAPTest extends TestCase {
* @return MockObject|Access
*/
private function getAccessMock() {
- static $conMethods;
- static $accMethods;
-
- if (is_null($conMethods) || is_null($accMethods)) {
- $conMethods = get_class_methods(Connection::class);
- $accMethods = get_class_methods(Access::class);
- }
$lw = $this->createMock(ILDAPWrapper::class);
-
$connector = $this->getMockBuilder(Connection::class)
- ->setMethods($conMethods)
->setConstructorArgs([$lw, '', null])
->getMock();
$this->access = $this->createMock(Access::class);
-
$this->access->connection = $connector;
-
$this->access->userManager = $this->createMock(Manager::class);
return $this->access;
}
- private function enableGroups() {
+ private function enableGroups(): void {
$this->access->connection->expects($this->any())
->method('__get')
->willReturnCallback(function ($name) {
@@ -130,7 +122,7 @@ class Group_LDAPTest extends TestCase {
});
}
- public function testCountWithSearchString() {
+ public function testCountWithSearchString(): void {
$this->enableGroups();
$this->access->expects($this->any())
@@ -155,7 +147,7 @@ class Group_LDAPTest extends TestCase {
$this->access->expects($this->any())
->method('dn2username')
->willReturnCallback(function () {
- return 'foobar' . \OC::$server->getSecureRandom()->generate(7);
+ return 'foobar' . Server::get(ISecureRandom::class)->generate(7);
});
$this->access->expects($this->any())
->method('isDNPartOfBase')
@@ -174,10 +166,10 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(2, $users);
}
- public function testCountUsersWithPlugin() {
+ public function testCountUsersWithPlugin(): void {
/** @var GroupPluginManager|MockObject $pluginManager */
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'countUsersInGroup'])
+ ->onlyMethods(['implementsActions', 'countUsersInGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -194,7 +186,7 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($this->groupBackend->countUsersInGroup('gid', 'search'), 42);
}
- public function testGidNumber2NameSuccess() {
+ public function testGidNumber2NameSuccess(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -214,7 +206,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame('MyGroup', $group);
}
- public function testGidNumberID2NameNoGroup() {
+ public function testGidNumberID2NameNoGroup(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -232,7 +224,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(false, $group);
}
- public function testGidNumberID2NameNoName() {
+ public function testGidNumberID2NameNoName(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -251,7 +243,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(false, $group);
}
- public function testGetEntryGidNumberValue() {
+ public function testGetEntryGidNumberValue(): void {
$this->enableGroups();
$dn = 'cn=foobar,cn=foo,dc=barfoo,dc=bar';
@@ -268,7 +260,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame('3117', $gid);
}
- public function testGetEntryGidNumberNoValue() {
+ public function testGetEntryGidNumberNoValue(): void {
$this->enableGroups();
$dn = 'cn=foobar,cn=foo,dc=barfoo,dc=bar';
@@ -285,7 +277,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(false, $gid);
}
- public function testPrimaryGroupID2NameSuccessCache() {
+ public function testPrimaryGroupID2NameSuccessCache(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -313,7 +305,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame('MyGroup', $group);
}
- public function testPrimaryGroupID2NameSuccess() {
+ public function testPrimaryGroupID2NameSuccess(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -338,7 +330,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame('MyGroup', $group);
}
- public function testPrimaryGroupID2NameNoSID() {
+ public function testPrimaryGroupID2NameNoSID(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -360,7 +352,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(false, $group);
}
- public function testPrimaryGroupID2NameNoGroup() {
+ public function testPrimaryGroupID2NameNoGroup(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -383,7 +375,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(false, $group);
}
- public function testPrimaryGroupID2NameNoName() {
+ public function testPrimaryGroupID2NameNoName(): void {
$this->enableGroups();
$userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
@@ -407,7 +399,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(false, $group);
}
- public function testGetEntryGroupIDValue() {
+ public function testGetEntryGroupIDValue(): void {
//tests getEntryGroupID via getGroupPrimaryGroupID
//which is basically identical to getUserPrimaryGroupIDs
$this->enableGroups();
@@ -426,7 +418,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame('3117', $gid);
}
- public function testGetEntryGroupIDNoValue() {
+ public function testGetEntryGroupIDNoValue(): void {
//tests getEntryGroupID via getGroupPrimaryGroupID
//which is basically identical to getUserPrimaryGroupIDs
$this->enableGroups();
@@ -449,7 +441,7 @@ class Group_LDAPTest extends TestCase {
* tests whether Group Backend behaves correctly when cache with uid and gid
* is hit
*/
- public function testInGroupHitsUidGidCache() {
+ public function testInGroupHitsUidGidCache(): void {
$this->enableGroups();
$uid = 'someUser';
@@ -468,7 +460,7 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->inGroup($uid, $gid);
}
- public function groupWithMembersProvider() {
+ public static function groupWithMembersProvider(): array {
return [
[
'someGroup',
@@ -483,10 +475,8 @@ class Group_LDAPTest extends TestCase {
];
}
- /**
- * @dataProvider groupWithMembersProvider
- */
- public function testInGroupMember(string $gid, string $groupDn, array $memberDNs) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('groupWithMembersProvider')]
+ public function testInGroupMember(string $gid, string $groupDn, array $memberDNs): void {
$uid = 'someUser';
$userDn = $memberDNs[0];
@@ -524,10 +514,8 @@ class Group_LDAPTest extends TestCase {
$this->assertTrue($this->groupBackend->inGroup($uid, $gid));
}
- /**
- * @dataProvider groupWithMembersProvider
- */
- public function testInGroupMemberNot(string $gid, string $groupDn, array $memberDNs) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('groupWithMembersProvider')]
+ public function testInGroupMemberNot(string $gid, string $groupDn, array $memberDNs): void {
$uid = 'unelatedUser';
$userDn = 'uid=unrelatedUser,ou=unrelatedTeam,ou=unrelatedDepartment,dc=someDomain,dc=someTld';
@@ -565,14 +553,12 @@ class Group_LDAPTest extends TestCase {
$this->assertFalse($this->groupBackend->inGroup($uid, $gid));
}
- /**
- * @dataProvider groupWithMembersProvider
- */
- public function testInGroupMemberUid(string $gid, string $groupDn, array $memberDNs) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('groupWithMembersProvider')]
+ public function testInGroupMemberUid(string $gid, string $groupDn, array $memberDNs): void {
$memberUids = [];
$userRecords = [];
foreach ($memberDNs as $dn) {
- $memberUids[] = ldap_explode_dn($dn, false)[0];
+ $memberUids[] = ldap_explode_dn($dn, 0)[0];
$userRecords[] = ['dn' => [$dn]];
}
@@ -625,7 +611,7 @@ class Group_LDAPTest extends TestCase {
$this->assertTrue($this->groupBackend->inGroup($uid, $gid));
}
- public function testGetGroupsWithOffset() {
+ public function testGetGroupsWithOffset(): void {
$this->enableGroups();
$this->access->expects($this->once())
@@ -642,7 +628,7 @@ class Group_LDAPTest extends TestCase {
* tests that a user listing is complete, if all its members have the group
* as their primary.
*/
- public function testUsersInGroupPrimaryMembersOnly() {
+ public function testUsersInGroupPrimaryMembersOnly(): void {
$this->enableGroups();
$this->access->connection->expects($this->any())
@@ -685,7 +671,7 @@ class Group_LDAPTest extends TestCase {
* tests that a user listing is complete, if all its members have the group
* as their primary.
*/
- public function testUsersInGroupPrimaryAndUnixMembers() {
+ public function testUsersInGroupPrimaryAndUnixMembers(): void {
$this->enableGroups();
$this->access->connection->expects($this->any())
@@ -726,7 +712,7 @@ class Group_LDAPTest extends TestCase {
* tests that a user counting is complete, if all its members have the group
* as their primary.
*/
- public function testCountUsersInGroupPrimaryMembersOnly() {
+ public function testCountUsersInGroupPrimaryMembersOnly(): void {
$this->enableGroups();
$this->access->connection->expects($this->any())
@@ -761,7 +747,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(4, $users);
}
- public function testGetUserGroupsMemberOf() {
+ public function testGetUserGroupsMemberOf(): void {
$this->enableGroups();
$dn = 'cn=userX,dc=foobar';
@@ -775,8 +761,7 @@ class Group_LDAPTest extends TestCase {
->method('username2dn')
->willReturn($dn);
$this->access->expects($this->exactly(5))
- ->method('readAttribute')
- ->will($this->onConsecutiveCalls($expectedGroups, [], [], [], []));
+ ->method('readAttribute')->willReturnOnConsecutiveCalls($expectedGroups, [], [], [], []);
$this->access->expects($this->any())
->method('dn2groupname')
->willReturnArgument(0);
@@ -797,7 +782,7 @@ class Group_LDAPTest extends TestCase {
$this->assertSame(2, count($groups));
}
- public function testGetUserGroupsMemberOfDisabled() {
+ public function testGetUserGroupsMemberOfDisabled(): void {
$this->access->connection->expects($this->any())
->method('__get')
->willReturnCallback(function ($name) {
@@ -856,7 +841,7 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->getUserGroups('userX');
}
- public function testGetUserGroupsOfflineUser() {
+ public function testGetUserGroupsOfflineUser(): void {
$this->enableGroups();
$offlineUser = $this->createMock(OfflineUser::class);
@@ -874,15 +859,15 @@ class Group_LDAPTest extends TestCase {
$this->initBackend();
$returnedGroups = $this->groupBackend->getUserGroups('userX');
$this->assertCount(2, $returnedGroups);
- $this->assertTrue(in_array('groupB', $returnedGroups));
- $this->assertTrue(in_array('groupF', $returnedGroups));
+ $this->assertContains('groupB', $returnedGroups);
+ $this->assertContains('groupF', $returnedGroups);
}
/**
* regression tests against a case where a json object was stored instead of expected list
* @see https://github.com/nextcloud/server/issues/42374
*/
- public function testGetUserGroupsOfflineUserUnexpectedJson() {
+ public function testGetUserGroupsOfflineUserUnexpectedJson(): void {
$this->enableGroups();
$offlineUser = $this->createMock(OfflineUser::class);
@@ -901,11 +886,11 @@ class Group_LDAPTest extends TestCase {
$this->initBackend();
$returnedGroups = $this->groupBackend->getUserGroups('userX');
$this->assertCount(2, $returnedGroups);
- $this->assertTrue(in_array('groupB', $returnedGroups));
- $this->assertTrue(in_array('groupF', $returnedGroups));
+ $this->assertContains('groupB', $returnedGroups);
+ $this->assertContains('groupF', $returnedGroups);
}
- public function testGetUserGroupsUnrecognizedOfflineUser() {
+ public function testGetUserGroupsUnrecognizedOfflineUser(): void {
$this->enableGroups();
$dn = 'cn=userX,dc=foobar';
@@ -944,21 +929,19 @@ class Group_LDAPTest extends TestCase {
$this->initBackend();
$returnedGroups = $this->groupBackend->getUserGroups('userX');
$this->assertCount(2, $returnedGroups);
- $this->assertTrue(in_array('groupB', $returnedGroups));
- $this->assertTrue(in_array('groupF', $returnedGroups));
+ $this->assertContains('groupB', $returnedGroups);
+ $this->assertContains('groupF', $returnedGroups);
}
- public function nestedGroupsProvider(): array {
+ public static function nestedGroupsProvider(): array {
return [
[true],
[false],
];
}
- /**
- * @dataProvider nestedGroupsProvider
- */
- public function testGetGroupsByMember(bool $nestedGroups) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('nestedGroupsProvider')]
+ public function testGetGroupsByMember(bool $nestedGroups): void {
$groupFilter = '(&(objectclass=nextcloudGroup)(nextcloudEnabled=TRUE))';
$this->access->connection->expects($this->any())
->method('__get')
@@ -1033,10 +1016,10 @@ class Group_LDAPTest extends TestCase {
$this->assertTrue(str_contains($filter, $groupFilter));
}
[$memberFilter] = explode('&', $filter);
- if ($memberFilter === 'member='.$dn) {
+ if ($memberFilter === 'member=' . $dn) {
return [$group1, $group2];
return [];
- } elseif ($memberFilter === 'member='.$group2['dn'][0]) {
+ } elseif ($memberFilter === 'member=' . $group2['dn'][0]) {
return [$group3];
} else {
return [];
@@ -1072,9 +1055,9 @@ class Group_LDAPTest extends TestCase {
$this->assertEquals($expectedGroupsNames, $groupsAgain);
}
- public function testCreateGroupWithPlugin() {
+ public function testCreateGroupWithPlugin(): void {
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'createGroup'])
+ ->onlyMethods(['implementsActions', 'createGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1088,15 +1071,15 @@ class Group_LDAPTest extends TestCase {
->willReturn('result');
$this->initBackend();
- $this->assertEquals($this->groupBackend->createGroup('gid'), true);
+ $this->assertTrue($this->groupBackend->createGroup('gid'));
}
- public function testCreateGroupFailing() {
+ public function testCreateGroupFailing(): void {
$this->expectException(\Exception::class);
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'createGroup'])
+ ->onlyMethods(['implementsActions', 'createGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1108,9 +1091,9 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->createGroup('gid');
}
- public function testDeleteGroupWithPlugin() {
+ public function testDeleteGroupWithPlugin(): void {
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'deleteGroup'])
+ ->onlyMethods(['implementsActions', 'deleteGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1124,7 +1107,7 @@ class Group_LDAPTest extends TestCase {
->willReturn(true);
$mapper = $this->getMockBuilder(GroupMapping::class)
- ->setMethods(['unmap'])
+ ->onlyMethods(['unmap'])
->disableOriginalConstructor()
->getMock();
@@ -1137,11 +1120,11 @@ class Group_LDAPTest extends TestCase {
}
- public function testDeleteGroupFailing() {
+ public function testDeleteGroupFailing(): void {
$this->expectException(\Exception::class);
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'deleteGroup'])
+ ->onlyMethods(['implementsActions', 'deleteGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1153,9 +1136,9 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->deleteGroup('gid');
}
- public function testAddToGroupWithPlugin() {
+ public function testAddToGroupWithPlugin(): void {
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'addToGroup'])
+ ->onlyMethods(['implementsActions', 'addToGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1169,15 +1152,15 @@ class Group_LDAPTest extends TestCase {
->willReturn('result');
$this->initBackend();
- $this->assertEquals($this->groupBackend->addToGroup('uid', 'gid'), 'result');
+ $this->assertEquals('result', $this->groupBackend->addToGroup('uid', 'gid'));
}
- public function testAddToGroupFailing() {
+ public function testAddToGroupFailing(): void {
$this->expectException(\Exception::class);
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'addToGroup'])
+ ->onlyMethods(['implementsActions', 'addToGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1189,9 +1172,9 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->addToGroup('uid', 'gid');
}
- public function testRemoveFromGroupWithPlugin() {
+ public function testRemoveFromGroupWithPlugin(): void {
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'removeFromGroup'])
+ ->onlyMethods(['implementsActions', 'removeFromGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1205,15 +1188,15 @@ class Group_LDAPTest extends TestCase {
->willReturn('result');
$this->initBackend();
- $this->assertEquals($this->groupBackend->removeFromGroup('uid', 'gid'), 'result');
+ $this->assertEquals('result', $this->groupBackend->removeFromGroup('uid', 'gid'));
}
- public function testRemoveFromGroupFailing() {
+ public function testRemoveFromGroupFailing(): void {
$this->expectException(\Exception::class);
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'removeFromGroup'])
+ ->onlyMethods(['implementsActions', 'removeFromGroup'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1225,10 +1208,10 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->removeFromGroup('uid', 'gid');
}
- public function testGetGroupDetailsWithPlugin() {
+ public function testGetGroupDetailsWithPlugin(): void {
/** @var GroupPluginManager|MockObject $pluginManager */
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'getGroupDetails'])
+ ->onlyMethods(['implementsActions', 'getGroupDetails'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1242,14 +1225,14 @@ class Group_LDAPTest extends TestCase {
->willReturn('result');
$this->initBackend();
- $this->assertEquals($this->groupBackend->getGroupDetails('gid'), 'result');
+ $this->assertEquals('result', $this->groupBackend->getGroupDetails('gid'));
}
- public function testGetGroupDetailsFailing() {
+ public function testGetGroupDetailsFailing(): void {
$this->expectException(\Exception::class);
$this->pluginManager = $this->getMockBuilder(GroupPluginManager::class)
- ->setMethods(['implementsActions', 'getGroupDetails'])
+ ->onlyMethods(['implementsActions', 'getGroupDetails'])
->getMock();
$this->pluginManager->expects($this->once())
@@ -1261,7 +1244,7 @@ class Group_LDAPTest extends TestCase {
$this->groupBackend->getGroupDetails('gid');
}
- public function groupMemberProvider() {
+ public static function groupMemberProvider(): array {
$base = 'dc=species,dc=earth';
$birdsDn = [
@@ -1329,11 +1312,8 @@ class Group_LDAPTest extends TestCase {
];
}
- /**
- * @param string[] $expectedMembers
- * @dataProvider groupMemberProvider
- */
- public function testGroupMembers(array $expectedResult, ?array $groupsInfo = null) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('groupMemberProvider')]
+ public function testGroupMembers(array $expectedResult, array $groupsInfo): void {
$this->access->expects($this->any())
->method('readAttribute')
->willReturnCallback(function ($group) use ($groupsInfo) {
@@ -1358,21 +1338,21 @@ class Group_LDAPTest extends TestCase {
foreach ($expectedResult as $groupDN => $expectedMembers) {
$resultingMembers = $this->invokePrivate($this->groupBackend, '_groupMembers', [$groupDN]);
- $this->assertEqualsCanonicalizing($expectedMembers, $resultingMembers);
+ sort($expectedMembers);
+ sort($resultingMembers);
+ $this->assertEquals($expectedMembers, $resultingMembers);
}
}
- public function displayNameProvider() {
+ public static function displayNameProvider(): array {
return [
['Graphic Novelists', ['Graphic Novelists']],
['', false],
];
}
- /**
- * @dataProvider displayNameProvider
- */
- public function testGetDisplayName(string $expected, $ldapResult) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('displayNameProvider')]
+ public function testGetDisplayName(string $expected, bool|array $ldapResult): void {
$gid = 'graphic_novelists';
$this->access->expects($this->atLeastOnce())
diff --git a/apps/user_ldap/tests/HelperTest.php b/apps/user_ldap/tests/HelperTest.php
index bbb3956f918..adea600d900 100644
--- a/apps/user_ldap/tests/HelperTest.php
+++ b/apps/user_ldap/tests/HelperTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,54 +8,62 @@
namespace OCA\User_LDAP\Tests;
use OCA\User_LDAP\Helper;
-use OCP\IConfig;
+use OCP\IAppConfig;
+use OCP\IDBConnection;
+use OCP\Server;
+use PHPUnit\Framework\MockObject\MockObject;
/**
* @group DB
*/
class HelperTest extends \Test\TestCase {
+ private IAppConfig&MockObject $appConfig;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- private $config;
-
- /** @var Helper */
- private $helper;
+ private Helper $helper;
protected function setUp(): void {
parent::setUp();
- $this->config = $this->createMock(IConfig::class);
- $this->helper = new Helper($this->config, \OC::$server->getDatabaseConnection());
+ $this->appConfig = $this->createMock(IAppConfig::class);
+ $this->helper = new Helper(
+ $this->appConfig,
+ Server::get(IDBConnection::class)
+ );
}
- public function testGetServerConfigurationPrefixes() {
- $this->config->method('getAppKeys')
- ->with($this->equalTo('user_ldap'))
+ public function testGetServerConfigurationPrefixes(): void {
+ $this->appConfig->method('getKeys')
+ ->with('user_ldap')
->willReturn([
'foo',
'ldap_configuration_active',
's1ldap_configuration_active',
]);
+ $this->appConfig->method('getValueArray')
+ ->with('user_ldap', 'configuration_prefixes')
+ -> willReturnArgument(2);
+
$result = $this->helper->getServerConfigurationPrefixes(false);
$this->assertEquals(['', 's1'], $result);
}
- public function testGetServerConfigurationPrefixesActive() {
- $this->config->method('getAppKeys')
- ->with($this->equalTo('user_ldap'))
+ public function testGetServerConfigurationPrefixesActive(): void {
+ $this->appConfig->method('getKeys')
+ ->with('user_ldap')
->willReturn([
'foo',
'ldap_configuration_active',
's1ldap_configuration_active',
]);
- $this->config->method('getAppValue')
+ $this->appConfig->method('getValueArray')
+ ->with('user_ldap', 'configuration_prefixes')
+ -> willReturnArgument(2);
+
+ $this->appConfig->method('getValueString')
->willReturnCallback(function ($app, $key, $default) {
- if ($app !== 'user_ldap') {
- $this->fail('wrong app');
- }
if ($key === 's1ldap_configuration_active') {
return '1';
}
@@ -65,21 +75,58 @@ class HelperTest extends \Test\TestCase {
$this->assertEquals(['s1'], $result);
}
- public function testGetServerConfigurationHost() {
- $this->config->method('getAppKeys')
- ->with($this->equalTo('user_ldap'))
+ public function testGetServerConfigurationHostFromAppKeys(): void {
+ $this->appConfig->method('getKeys')
+ ->with('user_ldap')
->willReturn([
'foo',
'ldap_host',
's1ldap_host',
's02ldap_host',
+ 'ldap_configuration_active',
+ 's1ldap_configuration_active',
+ 's02ldap_configuration_active',
]);
- $this->config->method('getAppValue')
+ $this->appConfig->method('getValueArray')
+ ->with('user_ldap', 'configuration_prefixes')
+ -> willReturnArgument(2);
+
+ $this->appConfig->method('getValueString')
->willReturnCallback(function ($app, $key, $default) {
- if ($app !== 'user_ldap') {
- $this->fail('wrong app');
+ if ($key === 'ldap_host') {
+ return 'example.com';
}
+ if ($key === 's1ldap_host') {
+ return 'foo.bar.com';
+ }
+ return $default;
+ });
+
+ $result = $this->helper->getServerConfigurationHosts();
+
+ $this->assertEquals([
+ '' => 'example.com',
+ 's1' => 'foo.bar.com',
+ 's02' => '',
+ ], $result);
+ }
+
+ public function testGetServerConfigurationHost(): void {
+ $this->appConfig
+ ->expects(self::never())
+ ->method('getKeys');
+
+ $this->appConfig->method('getValueArray')
+ ->with('user_ldap', 'configuration_prefixes')
+ -> willReturn([
+ '',
+ 's1',
+ 's02',
+ ]);
+
+ $this->appConfig->method('getValueString')
+ ->willReturnCallback(function ($app, $key, $default) {
if ($key === 'ldap_host') {
return 'example.com';
}
diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
index ef84beb8f56..00f8be18586 100644
--- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
+++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
@@ -9,21 +9,24 @@ namespace OCA\User_LDAP\Tests\Integration;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\GroupPluginManager;
use OCA\User_LDAP\Helper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\UserPluginManager;
use OCP\IAvatarManager;
+use OCP\IConfig;
+use OCP\Image;
+use OCP\IUserManager;
+use OCP\Server;
use OCP\Share\IManager;
use Psr\Log\LoggerInterface;
abstract class AbstractIntegrationTest {
- /** @var LDAP */
+ /** @var LDAP */
protected $ldap;
- /** @var Connection */
+ /** @var Connection */
protected $connection;
/** @var Access */
@@ -35,14 +38,19 @@ abstract class AbstractIntegrationTest {
/** @var Helper */
protected $helper;
- /** @var string */
- protected $base;
-
/** @var string[] */
protected $server;
- public function __construct($host, $port, $bind, $pwd, $base) {
- $this->base = $base;
+ /**
+ * @param string $base
+ */
+ public function __construct(
+ $host,
+ $port,
+ $bind,
+ $pwd,
+ protected $base,
+ ) {
$this->server = [
'host' => $host,
'port' => $port,
@@ -57,10 +65,10 @@ abstract class AbstractIntegrationTest {
*/
public function init() {
\OC::$server->registerService(UserPluginManager::class, function () {
- return new \OCA\User_LDAP\UserPluginManager();
+ return new UserPluginManager();
});
\OC::$server->registerService(GroupPluginManager::class, function () {
- return new \OCA\User_LDAP\GroupPluginManager();
+ return new GroupPluginManager();
});
$this->initLDAPWrapper();
@@ -102,14 +110,13 @@ abstract class AbstractIntegrationTest {
*/
protected function initUserManager() {
$this->userManager = new Manager(
- \OC::$server->getConfig(),
- new FilesystemHelper(),
- \OC::$server->get(LoggerInterface::class),
- \OC::$server->get(IAvatarManager::class),
- new \OCP\Image(),
- \OC::$server->getUserManager(),
- \OC::$server->getNotificationManager(),
- \OC::$server->get(IManager::class)
+ Server::get(IConfig::class),
+ Server::get(LoggerInterface::class),
+ Server::get(IAvatarManager::class),
+ new Image(),
+ Server::get(IUserManager::class),
+ Server::get(\OCP\Notification\IManager::class),
+ Server::get(IManager::class)
);
}
@@ -117,14 +124,14 @@ abstract class AbstractIntegrationTest {
* initializes the test Helper
*/
protected function initHelper() {
- $this->helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $this->helper = Server::get(Helper::class);
}
/**
* initializes the Access test instance
*/
protected function initAccess() {
- $this->access = new Access($this->connection, $this->ldap, $this->userManager, $this->helper, \OC::$server->getConfig(), \OCP\Server::get(LoggerInterface::class));
+ $this->access = new Access($this->connection, $this->ldap, $this->userManager, $this->helper, Server::get(IConfig::class), Server::get(LoggerInterface::class));
}
/**
diff --git a/apps/user_ldap/tests/Integration/Bootstrap.php b/apps/user_ldap/tests/Integration/Bootstrap.php
index 872e06139ff..ef0909d4bea 100644
--- a/apps/user_ldap/tests/Integration/Bootstrap.php
+++ b/apps/user_ldap/tests/Integration/Bootstrap.php
@@ -1,8 +1,9 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
define('CLI_TEST_RUN', true);
-require_once __DIR__ . '/../../../../lib/base.php';
+require_once __DIR__ . '/../../../../lib/base.php';
require_once __DIR__ . '/setup-scripts/config.php';
diff --git a/apps/user_ldap/tests/Integration/ExceptionOnLostConnection.php b/apps/user_ldap/tests/Integration/ExceptionOnLostConnection.php
index 7dc2aa00065..3eec3df675a 100644
--- a/apps/user_ldap/tests/Integration/ExceptionOnLostConnection.php
+++ b/apps/user_ldap/tests/Integration/ExceptionOnLostConnection.php
@@ -9,6 +9,8 @@ namespace OCA\User_LDAP\Tests\Integration;
use OC\ServerNotAvailableException;
use OCA\User_LDAP\LDAP;
+use OCP\App\IAppManager;
+use OCP\Server;
/**
* Class ExceptionOnLostConnection
@@ -21,44 +23,29 @@ use OCA\User_LDAP\LDAP;
*
*/
class ExceptionOnLostConnection {
- /** @var string */
- private $toxiProxyHost;
-
- /** @var string */
- private $toxiProxyName;
-
- /** @var string */
- private $ldapBase;
-
- /** @var string|null */
- private $ldapBindDN;
-
- /** @var string|null */
- private $ldapBindPwd;
-
- /** @var string */
+ /** @var string */
private $ldapHost;
- /** @var \OCA\User_LDAP\LDAP */
+ /** @var LDAP */
private $ldap;
- /** @var bool */
+ /** @var bool */
private $originalProxyState;
/**
- * @param string $proxyHost host of toxiproxy as url, like http://localhost:8474
- * @param string $proxyName name of the LDAP proxy service as configured in toxiProxy
+ * @param string $toxiProxyHost host of toxiproxy as url, like http://localhost:8474
+ * @param string $toxiProxyName name of the LDAP proxy service as configured in toxiProxy
* @param string $ldapBase any valid LDAP base DN
- * @param null $bindDN optional, bind DN if anonymous bind is not possible
- * @param null $bindPwd optional
+ * @param null $ldapBindDN optional, bind DN if anonymous bind is not possible
+ * @param null $ldapBindPwd optional
*/
- public function __construct($proxyHost, $proxyName, $ldapBase, $bindDN = null, $bindPwd = null) {
- $this->toxiProxyHost = $proxyHost;
- $this->toxiProxyName = $proxyName;
- $this->ldapBase = $ldapBase;
- $this->ldapBindDN = $bindDN;
- $this->ldapBindPwd = $bindPwd;
-
+ public function __construct(
+ private $toxiProxyHost,
+ private $toxiProxyName,
+ private $ldapBase,
+ private $ldapBindDN = null,
+ private $ldapBindPwd = null,
+ ) {
$this->setUp();
}
@@ -77,8 +64,8 @@ class ExceptionOnLostConnection {
* @throws \Exception
*/
public function setUp(): void {
- require_once __DIR__ . '/../../../../lib/base.php';
- \OC_App::loadApps(['user_ldap']);
+ require_once __DIR__ . '/../../../../lib/base.php';
+ Server::get(IAppManager::class)->loadApps(['user_ldap']);
$ch = $this->getCurl();
$proxyInfoJson = curl_exec($ch);
@@ -117,10 +104,10 @@ class ExceptionOnLostConnection {
try {
$this->ldap->search($cr, $this->ldapBase, 'objectClass=*', ['dn'], true, 5);
} catch (ServerNotAvailableException $e) {
- print("Test PASSED" . PHP_EOL);
+ print('Test PASSED' . PHP_EOL);
exit(0);
}
- print("Test FAILED" . PHP_EOL);
+ print('Test FAILED' . PHP_EOL);
exit(1);
}
diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php
index dbfe568d383..e1529384239 100644
--- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php
+++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php
@@ -1,9 +1,10 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-namespace OCA\user_ldap\tests\Integration\Lib;
+namespace OCA\User_LDAP\Tests\Integration\Lib;
use OCA\User_LDAP\Group_LDAP;
use OCA\User_LDAP\GroupPluginManager;
@@ -14,6 +15,10 @@ use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\UserPluginManager;
use OCP\IConfig;
+use OCP\IDBConnection;
+use OCP\IGroupManager;
+use OCP\IUserManager;
+use OCP\Server;
use Psr\Log\LoggerInterface;
require_once __DIR__ . '/../Bootstrap.php';
@@ -28,28 +33,28 @@ class IntegrationTestAttributeDetection extends AbstractIntegrationTest {
$this->connection->setConfiguration(['ldapGroupFilter' => 'objectClass=groupOfNames']);
$this->connection->setConfiguration(['ldapGroupMemberAssocAttr' => 'member']);
- $userMapper = new UserMapping(\OC::$server->getDatabaseConnection());
+ $userMapper = new UserMapping(Server::get(IDBConnection::class));
$userMapper->clear();
$this->access->setUserMapper($userMapper);
- $groupMapper = new GroupMapping(\OC::$server->getDatabaseConnection());
+ $groupMapper = new GroupMapping(Server::get(IDBConnection::class));
$groupMapper->clear();
$this->access->setGroupMapper($groupMapper);
- $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->get(UserPluginManager::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(DeletedUsersIndex::class));
- $userManager = \OC::$server->getUserManager();
+ $userBackend = new User_LDAP($this->access, Server::get(\OCP\Notification\IManager::class), Server::get(UserPluginManager::class), Server::get(LoggerInterface::class), Server::get(DeletedUsersIndex::class));
+ $userManager = Server::get(IUserManager::class);
$userManager->clearBackends();
$userManager->registerBackend($userBackend);
- $groupBackend = new Group_LDAP($this->access, \OC::$server->query(GroupPluginManager::class), \OC::$server->get(IConfig::class));
- $groupManger = \OC::$server->getGroupManager();
+ $groupBackend = new Group_LDAP($this->access, Server::get(GroupPluginManager::class), Server::get(IConfig::class));
+ $groupManger = Server::get(IGroupManager::class);
$groupManger->clearBackends();
$groupManger->addBackend($groupBackend);
}
protected function caseNativeUUIDAttributeUsers() {
// trigger importing of users which also triggers UUID attribute detection
- \OC::$server->getUserManager()->search('', 5, 0);
+ Server::get(IUserManager::class)->search('', 5, 0);
return $this->connection->ldapUuidUserAttribute === 'entryuuid';
}
@@ -58,7 +63,7 @@ class IntegrationTestAttributeDetection extends AbstractIntegrationTest {
// are similar, but we take no chances.
// trigger importing of users which also triggers UUID attribute detection
- \OC::$server->getGroupManager()->search('', 5, 0);
+ Server::get(IGroupManager::class)->search('', 5, 0);
return $this->connection->ldapUuidGroupAttribute === 'entryuuid';
}
}
diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php
index f45317fde2e..1c2d7145ddf 100644
--- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php
+++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php
@@ -12,12 +12,14 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\UserPluginManager;
+use OCP\IDBConnection;
+use OCP\Server;
use Psr\Log\LoggerInterface;
require_once __DIR__ . '/../Bootstrap.php';
class IntegrationTestFetchUsersByLoginName extends AbstractIntegrationTest {
- /** @var UserMapping */
+ /** @var UserMapping */
protected $mapping;
/** @var User_LDAP */
@@ -31,10 +33,10 @@ class IntegrationTestFetchUsersByLoginName extends AbstractIntegrationTest {
require(__DIR__ . '/../setup-scripts/createExplicitUsers.php');
parent::init();
- $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection());
+ $this->mapping = new UserMapping(Server::get(IDBConnection::class));
$this->mapping->clear();
$this->access->setUserMapper($this->mapping);
- $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->get(UserPluginManager::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(DeletedUsersIndex::class));
+ $this->backend = new User_LDAP($this->access, Server::get(\OCP\Notification\IManager::class), Server::get(UserPluginManager::class), Server::get(LoggerInterface::class), Server::get(DeletedUsersIndex::class));
}
/**
diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php
index 1a4923c8fc0..3e21d22fca3 100644
--- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php
+++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php
@@ -12,12 +12,13 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\UserPluginManager;
+use OCP\Server;
use Psr\Log\LoggerInterface;
require_once __DIR__ . '/../Bootstrap.php';
class IntegrationTestPaging extends AbstractIntegrationTest {
- /** @var UserMapping */
+ /** @var UserMapping */
protected $mapping;
/** @var User_LDAP */
@@ -34,7 +35,7 @@ class IntegrationTestPaging extends AbstractIntegrationTest {
require(__DIR__ . '/../setup-scripts/createExplicitUsers.php');
parent::init();
- $this->backend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->get(UserPluginManager::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(DeletedUsersIndex::class));
+ $this->backend = new User_LDAP($this->access, Server::get(\OCP\Notification\IManager::class), Server::get(UserPluginManager::class), Server::get(LoggerInterface::class), Server::get(DeletedUsersIndex::class));
}
public function initConnection() {
diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php
index 708f00c6214..6726143a449 100644
--- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php
+++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php
@@ -7,7 +7,6 @@
*/
namespace OCA\User_LDAP\Tests\Integration\Lib\User;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
use OCA\User_LDAP\User\DeletedUsersIndex;
@@ -16,13 +15,17 @@ use OCA\User_LDAP\User\User;
use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\UserPluginManager;
use OCP\IAvatarManager;
+use OCP\IConfig;
+use OCP\IDBConnection;
use OCP\Image;
+use OCP\IUserManager;
+use OCP\Server;
use Psr\Log\LoggerInterface;
require_once __DIR__ . '/../../Bootstrap.php';
class IntegrationTestUserAvatar extends AbstractIntegrationTest {
- /** @var UserMapping */
+ /** @var UserMapping */
protected $mapping;
/**
@@ -32,11 +35,11 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest {
public function init() {
require(__DIR__ . '/../../setup-scripts/createExplicitUsers.php');
parent::init();
- $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection());
+ $this->mapping = new UserMapping(Server::get(IDBConnection::class));
$this->mapping->clear();
$this->access->setUserMapper($this->mapping);
- $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->get(UserPluginManager::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(DeletedUsersIndex::class));
- \OC_User::useBackend($userBackend);
+ $userBackend = new User_LDAP($this->access, Server::get(\OCP\Notification\IManager::class), Server::get(UserPluginManager::class), Server::get(LoggerInterface::class), Server::get(DeletedUsersIndex::class));
+ Server::get(IUserManager::class)->registerBackend($userBackend);
}
/**
@@ -58,9 +61,9 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest {
\OC_Util::tearDownFS();
\OC_Util::setupFS($username);
\OC::$server->getUserFolder($username);
- \OC::$server->getConfig()->deleteUserValue($username, 'user_ldap', User::USER_PREFKEY_LASTREFRESH);
- if (\OC::$server->get(IAvatarManager::class)->getAvatar($username)->exists()) {
- \OC::$server->get(IAvatarManager::class)->getAvatar($username)->remove();
+ Server::get(IConfig::class)->deleteUserValue($username, 'user_ldap', User::USER_PREFKEY_LASTREFRESH);
+ if (Server::get(IAvatarManager::class)->getAvatar($username)->exists()) {
+ Server::get(IAvatarManager::class)->getAvatar($username)->remove();
}
// finally attempt to get the avatar set
@@ -80,7 +83,7 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest {
$this->execFetchTest($dn, $username, $image);
- return \OC::$server->get(IAvatarManager::class)->getAvatar($username)->exists();
+ return Server::get(IAvatarManager::class)->getAvatar($username)->exists();
}
/**
@@ -97,7 +100,7 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest {
$this->execFetchTest($dn, $username, $image);
- return !\OC::$server->get(IAvatarManager::class)->getAvatar($username)->exists();
+ return !Server::get(IAvatarManager::class)->getAvatar($username)->exists();
}
/**
@@ -114,14 +117,13 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest {
protected function initUserManager() {
$this->userManager = new Manager(
- \OC::$server->getConfig(),
- new FilesystemHelper(),
- \OC::$server->get(LoggerInterface::class),
- \OC::$server->get(IAvatarManager::class),
+ Server::get(IConfig::class),
+ Server::get(LoggerInterface::class),
+ Server::get(IAvatarManager::class),
new Image(),
- \OC::$server->getDatabaseConnection(),
- \OC::$server->getUserManager(),
- \OC::$server->getNotificationManager()
+ Server::get(IDBConnection::class),
+ Server::get(IUserManager::class),
+ Server::get(\OCP\Notification\IManager::class)
);
}
diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php
index 16685c136e8..9b05298a151 100644
--- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php
+++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php
@@ -13,12 +13,15 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\UserPluginManager;
+use OCP\IDBConnection;
+use OCP\IUserManager;
+use OCP\Server;
use Psr\Log\LoggerInterface;
require_once __DIR__ . '/../../Bootstrap.php';
class IntegrationTestUserCleanUp extends AbstractIntegrationTest {
- /** @var UserMapping */
+ /** @var UserMapping */
protected $mapping;
/**
@@ -28,12 +31,12 @@ class IntegrationTestUserCleanUp extends AbstractIntegrationTest {
public function init() {
require(__DIR__ . '/../../setup-scripts/createExplicitUsers.php');
parent::init();
- $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection());
+ $this->mapping = new UserMapping(Server::get(IDBConnection::class));
$this->mapping->clear();
$this->access->setUserMapper($this->mapping);
- $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->get(UserPluginManager::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(DeletedUsersIndex::class));
- \OC_User::useBackend($userBackend);
+ $userBackend = new User_LDAP($this->access, Server::get(\OCP\Notification\IManager::class), Server::get(UserPluginManager::class), Server::get(LoggerInterface::class), Server::get(DeletedUsersIndex::class));
+ Server::get(IUserManager::class)->registerBackend($userBackend);
}
/**
@@ -70,13 +73,13 @@ class IntegrationTestUserCleanUp extends AbstractIntegrationTest {
// user instance must not be requested from global user manager, before
// it is deleted from the LDAP server. The instance will be returned
// from cache and may false-positively confirm the correctness.
- $user = \OC::$server->getUserManager()->get($username);
+ $user = Server::get(IUserManager::class)->get($username);
if ($user === null) {
return false;
}
$user->delete();
- return \OC::$server->getUserManager()->get($username) === null;
+ return Server::get(IUserManager::class)->get($username) === null;
}
}
diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php
index 08cccd4ac67..6fbfd9ba51b 100644
--- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php
+++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php
@@ -12,12 +12,15 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User_LDAP;
use OCA\User_LDAP\UserPluginManager;
+use OCP\IDBConnection;
+use OCP\IUserManager;
+use OCP\Server;
use Psr\Log\LoggerInterface;
require_once __DIR__ . '/../../Bootstrap.php';
class IntegrationTestUserDisplayName extends AbstractIntegrationTest {
- /** @var UserMapping */
+ /** @var UserMapping */
protected $mapping;
/**
@@ -27,11 +30,11 @@ class IntegrationTestUserDisplayName extends AbstractIntegrationTest {
public function init() {
require(__DIR__ . '/../../setup-scripts/createExplicitUsers.php');
parent::init();
- $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection());
+ $this->mapping = new UserMapping(Server::get(IDBConnection::class));
$this->mapping->clear();
$this->access->setUserMapper($this->mapping);
- $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->get(UserPluginManager::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(DeletedUsersIndex::class));
- \OC_User::useBackend($userBackend);
+ $userBackend = new User_LDAP($this->access, Server::get(\OCP\Notification\IManager::class), Server::get(UserPluginManager::class), Server::get(LoggerInterface::class), Server::get(DeletedUsersIndex::class));
+ Server::get(IUserManager::class)->registerBackend($userBackend);
}
/**
@@ -54,7 +57,7 @@ class IntegrationTestUserDisplayName extends AbstractIntegrationTest {
$username = 'alice1337';
$dn = 'uid=alice,ou=Users,' . $this->base;
$this->prepareUser($dn, $username);
- $displayName = \OC::$server->getUserManager()->get($username)->getDisplayName();
+ $displayName = Server::get(IUserManager::class)->get($username)->getDisplayName();
return str_contains($displayName, '(Alice@example.com)');
}
@@ -71,7 +74,7 @@ class IntegrationTestUserDisplayName extends AbstractIntegrationTest {
$username = 'boris23421';
$dn = 'uid=boris,ou=Users,' . $this->base;
$this->prepareUser($dn, $username);
- $displayName = \OC::$server->getUserManager()->get($username)->getDisplayName();
+ $displayName = Server::get(IUserManager::class)->get($username)->getDisplayName();
return !str_contains($displayName, '(Boris@example.com)');
}
diff --git a/apps/user_ldap/tests/Jobs/CleanUpTest.php b/apps/user_ldap/tests/Jobs/CleanUpTest.php
index 05d202f82df..5a1e563a1e8 100644
--- a/apps/user_ldap/tests/Jobs/CleanUpTest.php
+++ b/apps/user_ldap/tests/Jobs/CleanUpTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -18,13 +19,11 @@ use OCP\IDBConnection;
use Test\TestCase;
class CleanUpTest extends TestCase {
- /** @var CleanUp */
- protected $bgJob;
-
- /** @var array */
- protected $mocks;
+ protected CleanUp $bgJob;
+ protected array $mocks;
public function setUp(): void {
+ parent::setUp();
$this->createMocks();
$this->bgJob = new CleanUp($this->mocks['timeFactory'], $this->mocks['userBackend'], $this->mocks['deletedUsersIndex']);
$this->bgJob->setArguments($this->mocks);
@@ -43,7 +42,7 @@ class CleanUpTest extends TestCase {
/**
* clean up job must not run when there are disabled configurations
*/
- public function test_runNotAllowedByDisabledConfigurations() {
+ public function test_runNotAllowedByDisabledConfigurations(): void {
$this->mocks['helper']->expects($this->once())
->method('haveDisabledConfigurations')
->willReturn(true);
@@ -59,10 +58,10 @@ class CleanUpTest extends TestCase {
* clean up job must not run when LDAP Helper is broken i.e.
* returning unexpected results
*/
- public function test_runNotAllowedByBrokenHelper() {
+ public function test_runNotAllowedByBrokenHelper(): void {
$this->mocks['helper']->expects($this->once())
->method('haveDisabledConfigurations')
- ->will($this->throwException(new Exception()));
+ ->willThrowException(new Exception());
$this->mocks['ocConfig']->expects($this->never())
->method('getSystemValue');
@@ -74,7 +73,7 @@ class CleanUpTest extends TestCase {
/**
* clean up job must not run when it is not enabled
*/
- public function test_runNotAllowedBySysConfig() {
+ public function test_runNotAllowedBySysConfig(): void {
$this->mocks['helper']->expects($this->once())
->method('haveDisabledConfigurations')
->willReturn(false);
@@ -90,7 +89,7 @@ class CleanUpTest extends TestCase {
/**
* clean up job is allowed to run
*/
- public function test_runIsAllowed() {
+ public function test_runIsAllowed(): void {
$this->mocks['helper']->expects($this->once())
->method('haveDisabledConfigurations')
->willReturn(false);
@@ -106,7 +105,7 @@ class CleanUpTest extends TestCase {
/**
* check whether offset will be reset when it needs to
*/
- public function test_OffsetResetIsNecessary() {
+ public function test_OffsetResetIsNecessary(): void {
$result = $this->bgJob->isOffsetResetNecessary($this->bgJob->getChunkSize() - 1);
$this->assertSame(true, $result);
}
@@ -114,7 +113,7 @@ class CleanUpTest extends TestCase {
/**
* make sure offset is not reset when it is not due
*/
- public function test_OffsetResetIsNotNecessary() {
+ public function test_OffsetResetIsNotNecessary(): void {
$result = $this->bgJob->isOffsetResetNecessary($this->bgJob->getChunkSize());
$this->assertSame(false, $result);
}
diff --git a/apps/user_ldap/tests/Jobs/SyncTest.php b/apps/user_ldap/tests/Jobs/SyncTest.php
index 850e1ed42a4..f6ecf984ab0 100644
--- a/apps/user_ldap/tests/Jobs/SyncTest.php
+++ b/apps/user_ldap/tests/Jobs/SyncTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -15,40 +16,34 @@ use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\User\Manager;
use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IUserManager;
use OCP\Notification\IManager;
+use OCP\Server;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
use Test\TestCase;
+/**
+ * @group DB
+ */
class SyncTest extends TestCase {
- /** @var array */
- protected $arguments;
- /** @var Helper|\PHPUnit\Framework\MockObject\MockObject */
- protected $helper;
- /** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
- protected $ldapWrapper;
- /** @var Manager|\PHPUnit\Framework\MockObject\MockObject */
- protected $userManager;
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $mapper;
- /** @var Sync */
- protected $sync;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- protected $config;
- /** @var IAvatarManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $avatarManager;
- /** @var IDBConnection|\PHPUnit\Framework\MockObject\MockObject */
- protected $dbc;
- /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $ncUserManager;
- /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $notificationManager;
- /** @var ConnectionFactory|\PHPUnit\Framework\MockObject\MockObject */
- protected $connectionFactory;
- /** @var AccessFactory|\PHPUnit\Framework\MockObject\MockObject */
- protected $accessFactory;
+ protected Helper&MockObject $helper;
+ protected LDAP&MockObject $ldapWrapper;
+ protected Manager&MockObject $userManager;
+ protected UserMapping&MockObject $mapper;
+ protected IConfig&MockObject $config;
+ protected IAvatarManager&MockObject $avatarManager;
+ protected IDBConnection&MockObject $dbc;
+ protected IUserManager&MockObject $ncUserManager;
+ protected IManager&MockObject $notificationManager;
+ protected ConnectionFactory&MockObject $connectionFactory;
+ protected AccessFactory&MockObject $accessFactory;
+ protected array $arguments = [];
+ protected Sync $sync;
protected function setUp(): void {
parent::setUp();
@@ -62,26 +57,32 @@ class SyncTest extends TestCase {
$this->dbc = $this->createMock(IDBConnection::class);
$this->ncUserManager = $this->createMock(IUserManager::class);
$this->notificationManager = $this->createMock(IManager::class);
- $this->connectionFactory = $this->createMock(ConnectionFactory::class);
+ $this->connectionFactory = $this->getMockBuilder(ConnectionFactory::class)
+ ->setConstructorArgs([
+ $this->ldapWrapper,
+ ])
+ ->getMock();
$this->accessFactory = $this->createMock(AccessFactory::class);
- $this->arguments = [
- 'helper' => $this->helper,
- 'ldapWrapper' => $this->ldapWrapper,
- 'mapper' => $this->mapper,
- 'config' => $this->config,
- 'avatarManager' => $this->avatarManager,
- 'dbc' => $this->dbc,
- 'ncUserManager' => $this->ncUserManager,
- 'notificationManager' => $this->notificationManager,
- 'connectionFactory' => $this->connectionFactory,
- 'accessFactory' => $this->accessFactory,
- ];
-
- $this->sync = new Sync($this->createMock(ITimeFactory::class));
+ $this->sync = new Sync(
+ Server::get(ITimeFactory::class),
+ Server::get(IEventDispatcher::class),
+ $this->config,
+ $this->dbc,
+ $this->avatarManager,
+ $this->ncUserManager,
+ Server::get(LoggerInterface::class),
+ $this->notificationManager,
+ $this->mapper,
+ $this->helper,
+ $this->connectionFactory,
+ $this->accessFactory,
+ );
+
+ $this->sync->overwritePropertiesForTest($this->ldapWrapper);
}
- public function intervalDataProvider() {
+ public static function intervalDataProvider(): array {
return [
[
0, 1000, 750
@@ -101,10 +102,8 @@ class SyncTest extends TestCase {
];
}
- /**
- * @dataProvider intervalDataProvider
- */
- public function testUpdateInterval($userCount, $pagingSize1, $pagingSize2) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('intervalDataProvider')]
+ public function testUpdateInterval(int $userCount, int $pagingSize1, int $pagingSize2): void {
$this->config->expects($this->once())
->method('setAppValue')
->with('user_ldap', 'background_sync_interval', $this->anything())
@@ -134,7 +133,7 @@ class SyncTest extends TestCase {
$this->sync->updateInterval();
}
- public function moreResultsProvider() {
+ public static function moreResultsProvider(): array {
return [
[ 3, 3, true ],
[ 3, 5, true ],
@@ -144,11 +143,13 @@ class SyncTest extends TestCase {
];
}
- /**
- * @dataProvider moreResultsProvider
- */
- public function testMoreResults($pagingSize, $results, $expected) {
- $connection = $this->createMock(Connection::class);
+ #[\PHPUnit\Framework\Attributes\DataProvider('moreResultsProvider')]
+ public function testMoreResults($pagingSize, $results, $expected): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([
+ $this->ldapWrapper,
+ ])
+ ->getMock();
$this->connectionFactory->expects($this->any())
->method('get')
->willReturn($connection);
@@ -161,7 +162,7 @@ class SyncTest extends TestCase {
return null;
});
- /** @var Access|\PHPUnit\Framework\MockObject\MockObject $access */
+ /** @var Access&MockObject $access */
$access = $this->createMock(Access::class);
$this->accessFactory->expects($this->any())
->method('get')
@@ -186,7 +187,7 @@ class SyncTest extends TestCase {
$this->assertSame($expected, $hasMoreResults);
}
- public function cycleDataProvider() {
+ public static function cycleDataProvider(): array {
$lastCycle = ['prefix' => 's01', 'offset' => 1000];
$lastCycle2 = ['prefix' => '', 'offset' => 1000];
return [
@@ -199,22 +200,24 @@ class SyncTest extends TestCase {
];
}
- /**
- * @dataProvider cycleDataProvider
- */
- public function testDetermineNextCycle($cycleData, $prefixes, $expectedCycle) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('cycleDataProvider')]
+ public function testDetermineNextCycle(?array $cycleData, array $prefixes, ?array $expectedCycle): void {
$this->helper->expects($this->any())
->method('getServerConfigurationPrefixes')
->with(true)
->willReturn($prefixes);
if (is_array($expectedCycle)) {
+ $calls = [
+ ['user_ldap', 'background_sync_prefix', $expectedCycle['prefix']],
+ ['user_ldap', 'background_sync_offset', $expectedCycle['offset']],
+ ];
$this->config->expects($this->exactly(2))
->method('setAppValue')
- ->withConsecutive(
- ['user_ldap', 'background_sync_prefix', $expectedCycle['prefix']],
- ['user_ldap', 'background_sync_offset', $expectedCycle['offset']]
- );
+ ->willReturnCallback(function () use (&$calls): void {
+ $expected = array_shift($calls);
+ $this->assertEquals($expected, func_get_args());
+ });
} else {
$this->config->expects($this->never())
->method('setAppValue');
@@ -231,7 +234,7 @@ class SyncTest extends TestCase {
}
}
- public function testQualifiesToRun() {
+ public function testQualifiesToRun(): void {
$cycleData = ['prefix' => 's01'];
$this->config->expects($this->exactly(2))
@@ -243,7 +246,7 @@ class SyncTest extends TestCase {
$this->assertFalse($this->sync->qualifiesToRun($cycleData));
}
- public function runDataProvider() {
+ public static function runDataProvider(): array {
return [
#0 - one LDAP server, reset
[[
@@ -275,10 +278,8 @@ class SyncTest extends TestCase {
];
}
- /**
- * @dataProvider runDataProvider
- */
- public function testRun($runData) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('runDataProvider')]
+ public function testRun(array $runData): void {
$this->config->expects($this->any())
->method('getAppValue')
->willReturnCallback(function ($app, $key, $default) use ($runData) {
@@ -305,13 +306,18 @@ class SyncTest extends TestCase {
return $default;
});
+
+ $calls = [
+ ['user_ldap', 'background_sync_prefix', $runData['expectedNextCycle']['prefix']],
+ ['user_ldap', 'background_sync_offset', $runData['expectedNextCycle']['offset']],
+ ['user_ldap', 'background_sync_interval', '43200'],
+ ];
$this->config->expects($this->exactly(3))
->method('setAppValue')
- ->withConsecutive(
- ['user_ldap', 'background_sync_prefix', $runData['expectedNextCycle']['prefix']],
- ['user_ldap', 'background_sync_offset', $runData['expectedNextCycle']['offset']],
- ['user_ldap', 'background_sync_interval', $this->anything()]
- );
+ ->willReturnCallback(function () use (&$calls): void {
+ $expected = array_shift($calls);
+ $this->assertEquals($expected, func_get_args());
+ });
$this->config->expects($this->any())
->method('getAppKeys')
->with('user_ldap')
@@ -322,7 +328,11 @@ class SyncTest extends TestCase {
->with(true)
->willReturn($runData['prefixes']);
- $connection = $this->createMock(Connection::class);
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([
+ $this->ldapWrapper,
+ ])
+ ->getMock();
$this->connectionFactory->expects($this->any())
->method('get')
->willReturn($connection);
@@ -335,7 +345,7 @@ class SyncTest extends TestCase {
return null;
});
- /** @var Access|\PHPUnit\Framework\MockObject\MockObject $access */
+ /** @var Access&MockObject $access */
$access = $this->createMock(Access::class);
$this->accessFactory->expects($this->any())
->method('get')
diff --git a/apps/user_ldap/tests/LDAPGroupPluginDummy.php b/apps/user_ldap/tests/LDAPGroupPluginDummy.php
index 0d47fbbd290..5ea1a491f14 100644
--- a/apps/user_ldap/tests/LDAPGroupPluginDummy.php
+++ b/apps/user_ldap/tests/LDAPGroupPluginDummy.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
diff --git a/apps/user_ldap/tests/LDAPProviderTest.php b/apps/user_ldap/tests/LDAPProviderTest.php
index 6e6c62157b3..57323e374aa 100644
--- a/apps/user_ldap/tests/LDAPProviderTest.php
+++ b/apps/user_ldap/tests/LDAPProviderTest.php
@@ -1,21 +1,29 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\User_LDAP\Tests;
+use OC\Config;
use OC\User\Manager;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
use OCA\User_LDAP\Group_LDAP;
+use OCA\User_LDAP\Helper;
use OCA\User_LDAP\IGroupLDAP;
+use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\IUserLDAP;
+use OCA\User_LDAP\LDAPProviderFactory;
use OCA\User_LDAP\User_LDAP;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IServerContainer;
+use OCP\Server;
+use Psr\Log\LoggerInterface;
/**
* Class LDAPProviderTest
@@ -25,35 +33,29 @@ use OCP\IServerContainer;
* @package OCA\User_LDAP\Tests
*/
class LDAPProviderTest extends \Test\TestCase {
- protected function setUp(): void {
- parent::setUp();
- }
-
private function getServerMock(IUserLDAP $userBackend, IGroupLDAP $groupBackend) {
$server = $this->getMockBuilder('OC\Server')
- ->setMethods(['getUserManager', 'getBackends', 'getGroupManager'])
- ->setConstructorArgs(['', new \OC\Config(\OC::$configDir)])
- ->getMock();
+ ->onlyMethods(['getUserManager', 'getGroupManager'])
+ ->setConstructorArgs(['', new Config(\OC::$configDir)])
+ ->getMock();
$server->expects($this->any())
->method('getUserManager')
->willReturn($this->getUserManagerMock($userBackend));
$server->expects($this->any())
->method('getGroupManager')
->willReturn($this->getGroupManagerMock($groupBackend));
- $server->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
return $server;
}
private function getUserManagerMock(IUserLDAP $userBackend) {
$userManager = $this->getMockBuilder(Manager::class)
- ->setMethods(['getBackends'])
+ ->onlyMethods(['getBackends'])
->setConstructorArgs([
$this->createMock(IConfig::class),
$this->createMock(ICacheFactory::class),
$this->createMock(IEventDispatcher::class),
+ $this->createMock(LoggerInterface::class),
])
->getMock();
$userManager->expects($this->any())
@@ -64,7 +66,7 @@ class LDAPProviderTest extends \Test\TestCase {
private function getGroupManagerMock(IGroupLDAP $groupBackend) {
$groupManager = $this->getMockBuilder('OC\Group\Manager')
- ->setMethods(['getBackends'])
+ ->onlyMethods(['getBackends'])
->disableOriginalConstructor()
->getMock();
$groupManager->expects($this->any())
@@ -82,19 +84,19 @@ class LDAPProviderTest extends \Test\TestCase {
}
private function getLDAPProvider(IServerContainer $serverContainer) {
- $factory = new \OCA\User_LDAP\LDAPProviderFactory($serverContainer);
+ $factory = new LDAPProviderFactory($serverContainer);
return $factory->getLDAPProvider();
}
- public function testGetUserDNUserIDNotFound() {
+ public function testGetUserDNUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -103,20 +105,25 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getUserDN('nonexisting_user');
}
- public function testGetUserDN() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'username2dn'])
- ->disableOriginalConstructor()
- ->getMock();
+
+ public function testGetUserDN(): void {
+ $userAccess = $this->getMockBuilder(Access::class)
+ ->onlyMethods(['username2dn'])
+ ->disableOriginalConstructor()
+ ->getMock();
+ $userAccess->expects($this->once())
+ ->method('username2dn')
+ ->willReturn('cn=existing_user,ou=Are Sufficient To,ou=Test,dc=example,dc=org');
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getLDAPAccess'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->once())
->method('userExists')
->willReturn(true);
- $userBackend->expects($this->once())
- ->method('username2dn')
- ->willReturn('cn=existing_user,ou=Are Sufficient To,ou=Test,dc=example,dc=org');
$userBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($userAccess);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -126,16 +133,13 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetGroupDNGroupIDNotFound() {
+ public function testGetGroupDNGroupIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('Group id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->disableOriginalConstructor()
- ->getMock();
-
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists'])
+ $userBackend = $this->createMock(User_LDAP::class);
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists'])
->disableOriginalConstructor()
->getMock();
@@ -147,26 +151,24 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getGroupDN('nonexisting_group');
}
- public function testGetGroupDN() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'username2dn'])
- ->disableOriginalConstructor()
- ->getMock();
+ public function testGetGroupDN(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists', 'getLDAPAccess', 'groupname2dn'])
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists', 'getLDAPAccess'])
->disableOriginalConstructor()
->getMock();
+ $groupAccess = $this->createMock(Access::class);
+ $groupAccess->expects($this->once())
+ ->method('groupname2dn')
+ ->willReturn('cn=existing_group,ou=Are Sufficient To,ou=Test,dc=example,dc=org');
$groupBackend->expects($this->once())
->method('groupExists')
->willReturn(true);
- $groupBackend->expects($this->once())
- ->method('groupname2dn')
- ->willReturn('cn=existing_group,ou=Are Sufficient To,ou=Test,dc=example,dc=org');
$groupBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($groupAccess);
$server = $this->getServerMock($userBackend, $groupBackend);
@@ -175,11 +177,11 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getGroupDN('existing_group'));
}
- public function testGetUserName() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['dn2UserName'])
- ->disableOriginalConstructor()
- ->getMock();
+ public function testGetUserName(): void {
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['dn2UserName'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())
->method('dn2UserName')
->willReturn('existing_user');
@@ -191,15 +193,12 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getUserName('cn=existing_user,ou=Are Sufficient To,ou=Test,dc=example,dc=org'));
}
- public function testDNasBaseParameter() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods([])
- ->disableOriginalConstructor()
- ->getMock();
+ public function testDNasBaseParameter(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
- $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
$ldapProvider = $this->getLDAPProvider($server);
$this->assertEquals(
@@ -207,15 +206,12 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->DNasBaseParameter('cn=existing_user,ou=Are Sufficient To,ou=Test,dc=example,dc=org'));
}
- public function testSanitizeDN() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods([])
- ->disableOriginalConstructor()
- ->getMock();
+ public function testSanitizeDN(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
- $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection());
+ $helper = Server::get(Helper::class);
$ldapProvider = $this->getLDAPProvider($server);
$this->assertEquals(
@@ -224,14 +220,11 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetLDAPConnectionUserIDNotFound() {
+ public function testGetLDAPConnectionUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->createMock(User_LDAP::class);
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -240,11 +233,11 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getLDAPConnection('nonexisting_user');
}
- public function testGetLDAPConnection() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getNewLDAPConnection'])
- ->disableOriginalConstructor()
- ->getMock();
+ public function testGetLDAPConnection(): void {
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getNewLDAPConnection'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())
->method('userExists')
->willReturn(true);
@@ -260,16 +253,13 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetGroupLDAPConnectionGroupIDNotFound() {
+ public function testGetGroupLDAPConnectionGroupIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('Group id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->disableOriginalConstructor()
- ->getMock();
-
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists'])
+ $userBackend = $this->createMock(User_LDAP::class);
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists'])
->disableOriginalConstructor()
->getMock();
@@ -281,13 +271,10 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getGroupLDAPConnection('nonexisting_group');
}
- public function testGetGroupLDAPConnection() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->disableOriginalConstructor()
- ->getMock();
-
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists','getNewLDAPConnection'])
+ public function testGetGroupLDAPConnection(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists','getNewLDAPConnection'])
->disableOriginalConstructor()
->getMock();
@@ -307,14 +294,14 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetLDAPBaseUsersUserIDNotFound() {
+ public function testGetLDAPBaseUsersUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -323,14 +310,16 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getLDAPBaseUsers('nonexisting_user');
}
- public function testGetLDAPBaseUsers() {
+ public function testGetLDAPBaseUsers(): void {
$bases = [
'ou=users,ou=foobar,dc=example,dc=org',
'ou=users,ou=barfoo,dc=example,dc=org',
];
$dn = 'uid=malik,' . $bases[1];
- $connection = $this->createMock(Connection::class);
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects($this->any())
->method('__get')
->willReturnCallback(function ($key) use ($bases) {
@@ -352,10 +341,10 @@ class LDAPProviderTest extends \Test\TestCase {
->method('username2dn')
->willReturn($dn);
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'getConnection', 'getConfiguration'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getLDAPAccess'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->atLeastOnce())
->method('userExists')
->willReturn(true);
@@ -370,14 +359,14 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetLDAPBaseGroupsUserIDNotFound() {
+ public function testGetLDAPBaseGroupsUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -386,13 +375,15 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getLDAPBaseGroups('nonexisting_user');
}
- public function testGetLDAPBaseGroups() {
+ public function testGetLDAPBaseGroups(): void {
$bases = [
'ou=groupd,ou=foobar,dc=example,dc=org',
'ou=groups,ou=barfoo,dc=example,dc=org',
];
- $connection = $this->createMock(Connection::class);
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects($this->any())
->method('__get')
->willReturnCallback(function ($key) use ($bases) {
@@ -408,10 +399,10 @@ class LDAPProviderTest extends \Test\TestCase {
->method('getConnection')
->willReturn($connection);
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'getConnection', 'getConfiguration'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getLDAPAccess'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())
->method('userExists')
->willReturn(true);
@@ -426,14 +417,14 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testClearCacheUserIDNotFound() {
+ public function testClearCacheUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
- ->disableOriginalConstructor()
- ->getMock();
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -442,20 +433,26 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->clearCache('nonexisting_user');
}
- public function testClearCache() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'getConnection', 'clearCache'])
- ->disableOriginalConstructor()
- ->getMock();
- $userBackend->expects($this->once())
- ->method('userExists')
+ public function testClearCache(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
+ $connection->expects($this->once())
+ ->method('clearCache')
->willReturn(true);
+ $access = $this->createMock(Access::class);
+ $access->method('getConnection')
+ ->willReturn($connection);
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getLDAPAccess'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->once())
- ->method('clearCache')
+ ->method('userExists')
->willReturn(true);
$userBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($access);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -465,15 +462,15 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testClearGroupCacheGroupIDNotFound() {
+ public function testClearGroupCacheGroupIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('Group id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
->disableOriginalConstructor()
->getMock();
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists'])
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists'])
->disableOriginalConstructor()
->getMock();
$groupBackend->expects($this->any())->method('groupExists')->willReturn(false);
@@ -484,23 +481,27 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->clearGroupCache('nonexisting_group');
}
- public function testClearGroupCache() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->disableOriginalConstructor()
+ public function testClearGroupCache(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
->getMock();
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists', 'getLDAPAccess', 'getConnection', 'clearCache'])
+ $connection->expects($this->once())
+ ->method('clearCache')
+ ->willReturn(true);
+ $access = $this->createMock(Access::class);
+ $access->method('getConnection')
+ ->willReturn($connection);
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists', 'getLDAPAccess'])
->disableOriginalConstructor()
->getMock();
$groupBackend->expects($this->once())
->method('groupExists')
->willReturn(true);
- $groupBackend->expects($this->once())
- ->method('clearCache')
- ->willReturn(true);
$groupBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($access);
$server = $this->getServerMock($userBackend, $groupBackend);
@@ -509,11 +510,11 @@ class LDAPProviderTest extends \Test\TestCase {
$this->addToAssertionCount(1);
}
- public function testDnExists() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['dn2UserName'])
- ->disableOriginalConstructor()
- ->getMock();
+ public function testDnExists(): void {
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['dn2UserName'])
+ ->disableOriginalConstructor()
+ ->getMock();
$userBackend->expects($this->any())
->method('dn2UserName')
->willReturn('existing_user');
@@ -524,12 +525,8 @@ class LDAPProviderTest extends \Test\TestCase {
$this->assertTrue($ldapProvider->dnExists('cn=existing_user,ou=Are Sufficient To,ou=Test,dc=example,dc=org'));
}
- public function testFlagRecord() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods([])
- ->disableOriginalConstructor()
- ->getMock();
-
+ public function testFlagRecord(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
$ldapProvider = $this->getLDAPProvider($server);
@@ -537,12 +534,8 @@ class LDAPProviderTest extends \Test\TestCase {
$this->addToAssertionCount(1);
}
- public function testUnflagRecord() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods([])
- ->disableOriginalConstructor()
- ->getMock();
-
+ public function testUnflagRecord(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
$ldapProvider = $this->getLDAPProvider($server);
@@ -551,12 +544,12 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetLDAPDisplayNameFieldUserIDNotFound() {
+ public function testGetLDAPDisplayNameFieldUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists'])
->disableOriginalConstructor()
->getMock();
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
@@ -567,20 +560,26 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getLDAPDisplayNameField('nonexisting_user');
}
- public function testGetLDAPDisplayNameField() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'getConnection', 'getConfiguration'])
+ public function testGetLDAPDisplayNameField(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
+ $connection->expects($this->once())
+ ->method('getConfiguration')
+ ->willReturn(['ldap_display_name' => 'displayName']);
+ $access = $this->createMock(Access::class);
+ $access->method('getConnection')
+ ->willReturn($connection);
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getLDAPAccess'])
->disableOriginalConstructor()
->getMock();
$userBackend->expects($this->once())
->method('userExists')
->willReturn(true);
- $userBackend->expects($this->once())
- ->method('getConfiguration')
- ->willReturn(['ldap_display_name' => 'displayName']);
$userBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($access);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -589,12 +588,12 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetLDAPEmailFieldUserIDNotFound() {
+ public function testGetLDAPEmailFieldUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists'])
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists'])
->disableOriginalConstructor()
->getMock();
$userBackend->expects($this->any())->method('userExists')->willReturn(false);
@@ -605,20 +604,26 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getLDAPEmailField('nonexisting_user');
}
- public function testGetLDAPEmailField() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->setMethods(['userExists', 'getLDAPAccess', 'getConnection', 'getConfiguration'])
+ public function testGetLDAPEmailField(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
+ $connection->expects($this->once())
+ ->method('getConfiguration')
+ ->willReturn(['ldap_email_attr' => 'mail']);
+ $access = $this->createMock(Access::class);
+ $access->method('getConnection')
+ ->willReturn($connection);
+ $userBackend = $this->getMockBuilder(User_LDAP::class)
+ ->onlyMethods(['userExists', 'getLDAPAccess'])
->disableOriginalConstructor()
->getMock();
$userBackend->expects($this->once())
->method('userExists')
->willReturn(true);
- $userBackend->expects($this->once())
- ->method('getConfiguration')
- ->willReturn(['ldap_email_attr' => 'mail']);
$userBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($access);
$server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock());
@@ -627,20 +632,19 @@ class LDAPProviderTest extends \Test\TestCase {
}
- public function testGetLDAPGroupMemberAssocUserIDNotFound() {
+ public function testGetLDAPGroupMemberAssocUserIDNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('Group id not found in LDAP');
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->disableOriginalConstructor()
- ->getMock();
-
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists'])
+ $userBackend = $this->createMock(User_LDAP::class);
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists'])
->disableOriginalConstructor()
->getMock();
- $groupBackend->expects($this->any())->method('groupExists')->willReturn(false);
+ $groupBackend->expects($this->any())
+ ->method('groupExists')
+ ->willReturn(false);
$server = $this->getServerMock($userBackend, $groupBackend);
@@ -648,13 +652,20 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getLDAPGroupMemberAssoc('nonexisting_group');
}
- public function testgetLDAPGroupMemberAssoc() {
- $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
- ->disableOriginalConstructor()
- ->getMock();
+ public function testgetLDAPGroupMemberAssoc(): void {
+ $userBackend = $this->createMock(User_LDAP::class);
- $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
- ->setMethods(['groupExists', 'getLDAPAccess', 'getConnection', 'getConfiguration'])
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
+ $connection->expects($this->once())
+ ->method('getConfiguration')
+ ->willReturn(['ldap_group_member_assoc_attribute' => 'assoc_type']);
+ $access = $this->createMock(Access::class);
+ $access->method('getConnection')
+ ->willReturn($connection);
+ $groupBackend = $this->getMockBuilder(Group_LDAP::class)
+ ->onlyMethods(['groupExists', 'getLDAPAccess'])
->disableOriginalConstructor()
->getMock();
@@ -662,11 +673,8 @@ class LDAPProviderTest extends \Test\TestCase {
->method('groupExists')
->willReturn(true);
$groupBackend->expects($this->any())
- ->method('getConfiguration')
- ->willReturn(['ldap_group_member_assoc_attribute' => 'assoc_type']);
- $groupBackend->expects($this->any())
- ->method($this->anything())
- ->willReturnSelf();
+ ->method('getLDAPAccess')
+ ->willReturn($access);
$server = $this->getServerMock($userBackend, $groupBackend);
@@ -674,7 +682,7 @@ class LDAPProviderTest extends \Test\TestCase {
$this->assertEquals('assoc_type', $ldapProvider->getLDAPGroupMemberAssoc('existing_group'));
}
- public function testGetMultiValueUserAttributeUserNotFound() {
+ public function testGetMultiValueUserAttributeUserNotFound(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('User id not found in LDAP');
@@ -690,8 +698,10 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getMultiValueUserAttribute('admin', 'mailAlias');
}
- public function testGetMultiValueUserAttributeCacheHit() {
- $connection = $this->createMock(Connection::class);
+ public function testGetMultiValueUserAttributeCacheHit(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects(self::once())
->method('getFromCache')
->with('admin-mailAlias')
@@ -715,8 +725,10 @@ class LDAPProviderTest extends \Test\TestCase {
$ldapProvider->getMultiValueUserAttribute('admin', 'mailAlias');
}
- public function testGetMultiValueUserAttributeLdapError() {
- $connection = $this->createMock(Connection::class);
+ public function testGetMultiValueUserAttributeLdapError(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects(self::once())
->method('getFromCache')
->with('admin-mailAlias')
@@ -752,8 +764,10 @@ class LDAPProviderTest extends \Test\TestCase {
self::assertCount(0, $values);
}
- public function testGetMultiValueUserAttribute() {
- $connection = $this->createMock(Connection::class);
+ public function testGetMultiValueUserAttribute(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects(self::once())
->method('getFromCache')
->with('admin-mailAlias')
@@ -789,8 +803,10 @@ class LDAPProviderTest extends \Test\TestCase {
self::assertCount(2, $values);
}
- public function testGetUserAttributeLdapError() {
- $connection = $this->createMock(Connection::class);
+ public function testGetUserAttributeLdapError(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects(self::once())
->method('getFromCache')
->with('admin-mailAlias')
@@ -826,8 +842,10 @@ class LDAPProviderTest extends \Test\TestCase {
self::assertNull($value);
}
- public function testGetUserAttribute() {
- $connection = $this->createMock(Connection::class);
+ public function testGetUserAttribute(): void {
+ $connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$connection->expects(self::once())
->method('getFromCache')
->with('admin-mailAlias')
diff --git a/apps/user_ldap/tests/LDAPTest.php b/apps/user_ldap/tests/LDAPTest.php
index 51ed0c2b462..6da592ad6a1 100644
--- a/apps/user_ldap/tests/LDAPTest.php
+++ b/apps/user_ldap/tests/LDAPTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -6,20 +8,20 @@
namespace OCA\User_LDAP\Tests;
use OCA\User_LDAP\LDAP;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class LDAPTest extends TestCase {
- /** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
- private $ldap;
+ private LDAP&MockObject $ldap;
protected function setUp(): void {
parent::setUp();
$this->ldap = $this->getMockBuilder(LDAP::class)
- ->setMethods(['invokeLDAPMethod'])
+ ->onlyMethods(['invokeLDAPMethod'])
->getMock();
}
- public function errorProvider() {
+ public static function errorProvider(): array {
return [
[
'ldap_search(): Partial search results returned: Sizelimit exceeded at /srv/http/nextcloud/master/apps/user_ldap/lib/LDAP.php#292',
@@ -31,14 +33,10 @@ class LDAPTest extends TestCase {
];
}
- /**
- * @param string $errorMessage
- * @param bool $passThrough
- * @dataProvider errorProvider
- */
- public function testSearchWithErrorHandler(string $errorMessage, bool $passThrough) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('errorProvider')]
+ public function testSearchWithErrorHandler(string $errorMessage, bool $passThrough): void {
$wasErrorHandlerCalled = false;
- $errorHandler = function ($number, $message, $file, $line) use (&$wasErrorHandlerCalled) {
+ $errorHandler = function ($number, $message, $file, $line) use (&$wasErrorHandlerCalled): void {
$wasErrorHandlerCalled = true;
};
@@ -48,7 +46,7 @@ class LDAPTest extends TestCase {
->expects($this->once())
->method('invokeLDAPMethod')
->with('search', $this->anything(), $this->anything(), $this->anything(), $this->anything(), $this->anything())
- ->willReturnCallback(function () use ($errorMessage) {
+ ->willReturnCallback(function () use ($errorMessage): void {
trigger_error($errorMessage);
});
@@ -59,7 +57,7 @@ class LDAPTest extends TestCase {
restore_error_handler();
}
- public function testModReplace() {
+ public function testModReplace(): void {
$link = $this->createMock(LDAP::class);
$userDN = 'CN=user';
$password = 'MyPassword';
diff --git a/apps/user_ldap/tests/LDAPUserPluginDummy.php b/apps/user_ldap/tests/LDAPUserPluginDummy.php
index f6edf3df63b..8d4870406ae 100644
--- a/apps/user_ldap/tests/LDAPUserPluginDummy.php
+++ b/apps/user_ldap/tests/LDAPUserPluginDummy.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -39,4 +41,12 @@ class LDAPUserPluginDummy implements ILDAPUserPlugin {
public function countUsers() {
return null;
}
+
+ public function canDeleteUser() {
+ return true;
+ }
+
+ public function deleteUser($uid) {
+ return null;
+ }
}
diff --git a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php b/apps/user_ldap/tests/Mapping/AbstractMappingTestCase.php
index 7de3825a323..8efee4e2085 100644
--- a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
+++ b/apps/user_ldap/tests/Mapping/AbstractMappingTestCase.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -9,14 +10,15 @@ namespace OCA\User_LDAP\Tests\Mapping;
use OCA\User_LDAP\Mapping\AbstractMapping;
use OCP\IDBConnection;
+use OCP\Server;
-abstract class AbstractMappingTest extends \Test\TestCase {
- abstract public function getMapper(\OCP\IDBConnection $dbMock);
+abstract class AbstractMappingTestCase extends \Test\TestCase {
+ abstract public function getMapper(IDBConnection $dbMock);
/**
* kiss test on isColNameValid
*/
- public function testIsColNameValid() {
+ public function testIsColNameValid(): void {
$dbMock = $this->createMock(IDBConnection::class);
$mapper = $this->getMapper($dbMock);
@@ -28,8 +30,8 @@ abstract class AbstractMappingTest extends \Test\TestCase {
* returns an array of test entries with dn, name and uuid as keys
* @return array
*/
- protected function getTestData() {
- $data = [
+ protected static function getTestData(): array {
+ return [
[
'dn' => 'uid=foobar,dc=example,dc=org',
'name' => 'Foobar',
@@ -46,16 +48,14 @@ abstract class AbstractMappingTest extends \Test\TestCase {
'uuid' => '3333-CCCC-1234-CDEF',
]
];
-
- return $data;
}
/**
* calls map() on the given mapper and asserts result for true
- * @param \OCA\User_LDAP\Mapping\AbstractMapping $mapper
+ * @param AbstractMapping $mapper
* @param array $data
*/
- protected function mapEntries($mapper, $data) {
+ protected function mapEntries(AbstractMapping $mapper, array $data): void {
foreach ($data as $entry) {
$done = $mapper->map($entry['dn'], $entry['name'], $entry['uuid']);
$this->assertTrue($done);
@@ -67,10 +67,10 @@ abstract class AbstractMappingTest extends \Test\TestCase {
* test objects. Preparing environment means that all mappings are cleared
* first and then filled with test entries.
* @return array 0 = \OCA\User_LDAP\Mapping\AbstractMapping, 1 = array of
- * users or groups
+ * users or groups
*/
- private function initTest() {
- $dbc = \OC::$server->getDatabaseConnection();
+ private function initTest(): array {
+ $dbc = Server::get(IDBConnection::class);
$mapper = $this->getMapper($dbc);
$data = $this->getTestData();
// make sure DB is pristine, then fill it with test entries
@@ -84,7 +84,7 @@ abstract class AbstractMappingTest extends \Test\TestCase {
* tests map() method with input that should result in not-mapping.
* Hint: successful mapping is tested inherently with mapEntries().
*/
- public function testMap() {
+ public function testMap(): void {
[$mapper, $data] = $this->initTest();
// test that mapping will not happen when it shall not
@@ -104,7 +104,7 @@ abstract class AbstractMappingTest extends \Test\TestCase {
* tests unmap() for both successful and unsuccessful removing of
* mapping entries
*/
- public function testUnmap() {
+ public function testUnmap(): void {
[$mapper, $data] = $this->initTest();
foreach ($data as $entry) {
@@ -124,7 +124,7 @@ abstract class AbstractMappingTest extends \Test\TestCase {
* tests getDNByName(), getNameByDN() and getNameByUUID() for successful
* and unsuccessful requests.
*/
- public function testGetMethods() {
+ public function testGetMethods(): void {
[$mapper, $data] = $this->initTest();
foreach ($data as $entry) {
@@ -152,23 +152,23 @@ abstract class AbstractMappingTest extends \Test\TestCase {
/**
* tests getNamesBySearch() for successful and unsuccessful requests.
*/
- public function testSearch() {
+ public function testSearch(): void {
[$mapper,] = $this->initTest();
$names = $mapper->getNamesBySearch('oo', '%', '%');
- $this->assertTrue(is_array($names));
+ $this->assertIsArray($names);
$this->assertSame(2, count($names));
- $this->assertTrue(in_array('Foobar', $names));
- $this->assertTrue(in_array('Barfoo', $names));
+ $this->assertContains('Foobar', $names);
+ $this->assertContains('Barfoo', $names);
$names = $mapper->getNamesBySearch('nada');
- $this->assertTrue(is_array($names));
- $this->assertSame(0, count($names));
+ $this->assertIsArray($names);
+ $this->assertCount(0, $names);
}
/**
* tests setDNbyUUID() for successful and unsuccessful update.
*/
- public function testSetDNMethod() {
+ public function testSetDNMethod(): void {
[$mapper, $data] = $this->initTest();
$newDN = 'uid=modified,dc=example,dc=org';
@@ -187,7 +187,7 @@ abstract class AbstractMappingTest extends \Test\TestCase {
/**
* tests setUUIDbyDN() for successful and unsuccessful update.
*/
- public function testSetUUIDMethod() {
+ public function testSetUUIDMethod(): void {
/** @var AbstractMapping $mapper */
[$mapper, $data] = $this->initTest();
@@ -207,7 +207,7 @@ abstract class AbstractMappingTest extends \Test\TestCase {
/**
* tests clear() for successful update.
*/
- public function testClear() {
+ public function testClear(): void {
[$mapper, $data] = $this->initTest();
$done = $mapper->clear();
@@ -221,13 +221,13 @@ abstract class AbstractMappingTest extends \Test\TestCase {
/**
* tests clear() for successful update.
*/
- public function testClearCb() {
+ public function testClearCb(): void {
[$mapper, $data] = $this->initTest();
$callbackCalls = 0;
$test = $this;
- $callback = function (string $id) use ($test, &$callbackCalls) {
+ $callback = function (string $id) use ($test, &$callbackCalls): void {
$test->assertTrue(trim($id) !== '');
$callbackCalls++;
};
@@ -244,28 +244,28 @@ abstract class AbstractMappingTest extends \Test\TestCase {
/**
* tests getList() method
*/
- public function testList() {
+ public function testList(): void {
[$mapper, $data] = $this->initTest();
// get all entries without specifying offset or limit
$results = $mapper->getList();
- $this->assertSame(3, count($results));
+ $this->assertCount(3, $results);
// get all-1 entries by specifying offset, and an high limit
// specifying only offset without limit will not work by underlying lib
$results = $mapper->getList(1, 999);
- $this->assertSame(count($data) - 1, count($results));
+ $this->assertCount(count($data) - 1, $results);
// get first 2 entries by limit, but not offset
$results = $mapper->getList(0, 2);
- $this->assertSame(2, count($results));
+ $this->assertCount(2, $results);
// get 2nd entry by specifying both offset and limit
$results = $mapper->getList(1, 1);
- $this->assertSame(1, count($results));
+ $this->assertCount(1, $results);
}
- public function testGetListOfIdsByDn() {
+ public function testGetListOfIdsByDn(): void {
/** @var AbstractMapping $mapper */
[$mapper,] = $this->initTest();
@@ -281,6 +281,6 @@ abstract class AbstractMappingTest extends \Test\TestCase {
}
$result = $mapper->getListOfIdsByDn($listOfDNs);
- $this->assertSame(66640 / 20, count($result));
+ $this->assertCount(66640 / 20, $result);
}
}
diff --git a/apps/user_ldap/tests/Mapping/GroupMappingTest.php b/apps/user_ldap/tests/Mapping/GroupMappingTest.php
index 0d407577e1b..5729058d10e 100644
--- a/apps/user_ldap/tests/Mapping/GroupMappingTest.php
+++ b/apps/user_ldap/tests/Mapping/GroupMappingTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -8,6 +9,7 @@
namespace OCA\User_LDAP\Tests\Mapping;
use OCA\User_LDAP\Mapping\GroupMapping;
+use OCP\IDBConnection;
/**
* Class GroupMappingTest
@@ -16,8 +18,8 @@ use OCA\User_LDAP\Mapping\GroupMapping;
*
* @package OCA\User_LDAP\Tests\Mapping
*/
-class GroupMappingTest extends AbstractMappingTest {
- public function getMapper(\OCP\IDBConnection $dbMock) {
+class GroupMappingTest extends AbstractMappingTestCase {
+ public function getMapper(IDBConnection $dbMock) {
return new GroupMapping($dbMock);
}
}
diff --git a/apps/user_ldap/tests/Mapping/UserMappingTest.php b/apps/user_ldap/tests/Mapping/UserMappingTest.php
index 1792a4124be..4346fe1d23f 100644
--- a/apps/user_ldap/tests/Mapping/UserMappingTest.php
+++ b/apps/user_ldap/tests/Mapping/UserMappingTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -8,6 +9,7 @@
namespace OCA\User_LDAP\Tests\Mapping;
use OCA\User_LDAP\Mapping\UserMapping;
+use OCP\IDBConnection;
use OCP\Support\Subscription\IAssertion;
/**
@@ -17,8 +19,8 @@ use OCP\Support\Subscription\IAssertion;
*
* @package OCA\User_LDAP\Tests\Mapping
*/
-class UserMappingTest extends AbstractMappingTest {
- public function getMapper(\OCP\IDBConnection $dbMock) {
+class UserMappingTest extends AbstractMappingTestCase {
+ public function getMapper(IDBConnection $dbMock) {
return new UserMapping($dbMock, $this->createMock(IAssertion::class));
}
}
diff --git a/apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php b/apps/user_ldap/tests/Migration/AbstractUUIDFixTestCase.php
index 9d433cf4937..7a85b885bc1 100644
--- a/apps/user_ldap/tests/Migration/AbstractUUIDFixTest.php
+++ b/apps/user_ldap/tests/Migration/AbstractUUIDFixTestCase.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -13,17 +15,18 @@ use OCA\User_LDAP\Migration\UUIDFix;
use OCA\User_LDAP\Proxy;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
-abstract class AbstractUUIDFixTest extends TestCase {
- protected Helper $helper;
- protected IConfig $config;
- protected LDAP $ldap;
+abstract class AbstractUUIDFixTestCase extends TestCase {
+ protected Helper&MockObject $helper;
+ protected IConfig&MockObject $config;
+ protected LDAP&MockObject $ldap;
protected AbstractMapping $mapper;
protected UUIDFix $job;
protected Proxy $proxy;
- protected Access $access;
- protected ITimeFactory $time;
+ protected Access&MockObject $access;
+ protected ITimeFactory&MockObject $time;
protected bool $isUser = true;
protected function setUp(): void {
@@ -48,7 +51,7 @@ abstract class AbstractUUIDFixTest extends TestCase {
->willReturn($this->access);
}
- public function testRunSingleRecord() {
+ public function testRunSingleRecord(): void {
$args = [
'records' => [
0 => [
@@ -72,7 +75,7 @@ abstract class AbstractUUIDFixTest extends TestCase {
$this->job->run($args);
}
- public function testRunValidRecord() {
+ public function testRunValidRecord(): void {
$correctUUID = '4355-AED3-9D73-03AD';
$args = [
'records' => [
@@ -95,7 +98,7 @@ abstract class AbstractUUIDFixTest extends TestCase {
$this->job->run($args);
}
- public function testRunRemovedRecord() {
+ public function testRunRemovedRecord(): void {
$args = [
'records' => [
0 => [
@@ -117,7 +120,7 @@ abstract class AbstractUUIDFixTest extends TestCase {
$this->job->run($args);
}
- public function testRunManyRecords() {
+ public function testRunManyRecords(): void {
$args = [
'records' => [
0 => [
@@ -141,19 +144,23 @@ abstract class AbstractUUIDFixTest extends TestCase {
$this->access->expects($this->exactly(3))
->method('getUUID')
- ->withConsecutive(
- [$args['records'][0]['dn'], $this->isUser],
- [$args['records'][1]['dn'], $this->isUser],
- [$args['records'][2]['dn'], $this->isUser]
- )
- ->willReturnOnConsecutiveCalls($correctUUIDs[0], $correctUUIDs[1], $correctUUIDs[2]);
-
+ ->willReturnMap([
+ [$args['records'][0]['dn'], $this->isUser, null, $correctUUIDs[0]],
+ [$args['records'][1]['dn'], $this->isUser, null, $correctUUIDs[1]],
+ [$args['records'][2]['dn'], $this->isUser, null, $correctUUIDs[2]],
+ ]);
+
+ $calls = [
+ [$correctUUIDs[0], $args['records'][0]['dn']],
+ [$correctUUIDs[2], $args['records'][2]['dn']],
+ ];
$this->mapper->expects($this->exactly(2))
->method('setUUIDbyDN')
- ->withConsecutive(
- [$correctUUIDs[0], $args['records'][0]['dn']],
- [$correctUUIDs[2], $args['records'][2]['dn']]
- );
+ ->willReturnCallback(function ($i, $j) use (&$calls) {
+ $expected = array_shift($calls);
+ $this->assertEquals($expected, func_get_args());
+ return true;
+ });
$this->job->run($args);
}
diff --git a/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php b/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php
index ab8fe03d6d2..89d880f4acb 100644
--- a/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php
+++ b/apps/user_ldap/tests/Migration/UUIDFixGroupTest.php
@@ -1,14 +1,15 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-namespace OCA\Group_LDAP\Tests\Migration;
+namespace OCA\User_LDAP\Tests\Migration;
use OCA\User_LDAP\Group_Proxy;
use OCA\User_LDAP\Mapping\GroupMapping;
use OCA\User_LDAP\Migration\UUIDFixGroup;
-use OCA\User_LDAP\Tests\Migration\AbstractUUIDFixTest;
/**
* Class UUIDFixGroupTest
@@ -16,7 +17,7 @@ use OCA\User_LDAP\Tests\Migration\AbstractUUIDFixTest;
* @package OCA\Group_LDAP\Tests\Migration
* @group DB
*/
-class UUIDFixGroupTest extends AbstractUUIDFixTest {
+class UUIDFixGroupTest extends AbstractUUIDFixTestCase {
protected function setUp(): void {
$this->isUser = false;
parent::setUp();
diff --git a/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php b/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php
index e3ce332577d..6215ffcb6a1 100644
--- a/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php
+++ b/apps/user_ldap/tests/Migration/UUIDFixInsertTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -11,23 +13,15 @@ use OCA\User_LDAP\Migration\UUIDFixInsert;
use OCP\BackgroundJob\IJobList;
use OCP\IConfig;
use OCP\Migration\IOutput;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class UUIDFixInsertTest extends TestCase {
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- protected $config;
-
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $userMapper;
-
- /** @var GroupMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $groupMapper;
-
- /** @var IJobList|\PHPUnit\Framework\MockObject\MockObject */
- protected $jobList;
-
- /** @var UUIDFixInsert */
- protected $job;
+ protected IConfig&MockObject $config;
+ protected UserMapping&MockObject $userMapper;
+ protected GroupMapping&MockObject $groupMapper;
+ protected IJobList&MockObject $jobList;
+ protected UUIDFixInsert $job;
protected function setUp(): void {
parent::setUp();
@@ -44,17 +38,16 @@ class UUIDFixInsertTest extends TestCase {
);
}
- public function testGetName() {
+ public function testGetName(): void {
$this->assertSame('Insert UUIDFix background job for user and group in batches', $this->job->getName());
}
- public function recordProvider() {
+ public static function recordProvider(): array {
$record = [
'dn' => 'cn=somerecord,dc=somewhere',
'name' => 'Something',
'uuid' => 'AB12-3456-CDEF7-8GH9'
];
- array_fill(0, 50, $record);
$userBatches = [
0 => array_fill(0, 50, $record),
@@ -71,13 +64,12 @@ class UUIDFixInsertTest extends TestCase {
];
}
- public function recordProviderTooLongAndNone() {
+ public static function recordProviderTooLongAndNone(): array {
$record = [
'dn' => 'cn=somerecord,dc=somewhere',
'name' => 'Something',
'uuid' => 'AB12-3456-CDEF7-8GH9'
];
- array_fill(0, 50, $record);
$userBatches = [
0 => array_fill(0, 50, $record),
@@ -94,10 +86,8 @@ class UUIDFixInsertTest extends TestCase {
];
}
- /**
- * @dataProvider recordProvider
- */
- public function testRun($userBatches, $groupBatches) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('recordProvider')]
+ public function testRun(array $userBatches, array $groupBatches): void {
$this->config->expects($this->once())
->method('getAppValue')
->with('user_ldap', 'installed_version', '1.2.1')
@@ -105,8 +95,11 @@ class UUIDFixInsertTest extends TestCase {
$this->userMapper->expects($this->exactly(3))
->method('getList')
- ->withConsecutive([0, 50], [50, 50], [100, 50])
- ->willReturnOnConsecutiveCalls($userBatches[0], $userBatches[1], $userBatches[2]);
+ ->willReturnMap([
+ [0, 50, false, $userBatches[0]],
+ [50, 50, false, $userBatches[1]],
+ [100, 50, false, $userBatches[2]],
+ ]);
$this->groupMapper->expects($this->exactly(1))
->method('getList')
@@ -121,10 +114,8 @@ class UUIDFixInsertTest extends TestCase {
$this->job->run($out);
}
- /**
- * @dataProvider recordProviderTooLongAndNone
- */
- public function testRunWithManyAndNone($userBatches, $groupBatches) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('recordProviderTooLongAndNone')]
+ public function testRunWithManyAndNone(array $userBatches, array $groupBatches): void {
$this->config->expects($this->once())
->method('getAppValue')
->with('user_ldap', 'installed_version', '1.2.1')
@@ -132,8 +123,13 @@ class UUIDFixInsertTest extends TestCase {
$this->userMapper->expects($this->exactly(5))
->method('getList')
- ->withConsecutive([0, 50], [0, 40], [0, 32], [32, 32], [64, 32])
- ->willReturnOnConsecutiveCalls($userBatches[0], $userBatches[1], $userBatches[2], $userBatches[3], $userBatches[4]);
+ ->willReturnMap([
+ [0, 50, false, $userBatches[0]],
+ [0, 40, false, $userBatches[1]],
+ [0, 32, false, $userBatches[2]],
+ [32, 32, false, $userBatches[3]],
+ [64, 32, false, $userBatches[4]],
+ ]);
$this->groupMapper->expects($this->once())
->method('getList')
@@ -155,7 +151,7 @@ class UUIDFixInsertTest extends TestCase {
$this->job->run($out);
}
- public function testDonNotRun() {
+ public function testDonNotRun(): void {
$this->config->expects($this->once())
->method('getAppValue')
->with('user_ldap', 'installed_version', '1.2.1')
diff --git a/apps/user_ldap/tests/Migration/UUIDFixUserTest.php b/apps/user_ldap/tests/Migration/UUIDFixUserTest.php
index dfa1898450f..a582fd677fa 100644
--- a/apps/user_ldap/tests/Migration/UUIDFixUserTest.php
+++ b/apps/user_ldap/tests/Migration/UUIDFixUserTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -15,7 +17,7 @@ use OCA\User_LDAP\User_Proxy;
* @package OCA\User_LDAP\Tests\Migration
* @group DB
*/
-class UUIDFixUserTest extends AbstractUUIDFixTest {
+class UUIDFixUserTest extends AbstractUUIDFixTestCase {
protected function setUp(): void {
$this->isUser = true;
parent::setUp();
diff --git a/apps/user_ldap/tests/Service/BirthdateParserServiceTest.php b/apps/user_ldap/tests/Service/BirthdateParserServiceTest.php
index 79450d6913e..061118f10c1 100644
--- a/apps/user_ldap/tests/Service/BirthdateParserServiceTest.php
+++ b/apps/user_ldap/tests/Service/BirthdateParserServiceTest.php
@@ -1,11 +1,12 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-namespace OCA\user_ldap\tests\Service;
+namespace OCA\User_LDAP\Tests\Service;
use DateTimeImmutable;
use OCA\User_LDAP\Service\BirthdateParserService;
@@ -20,7 +21,7 @@ class BirthdateParserServiceTest extends TestCase {
$this->service = new BirthdateParserService();
}
- public function parseBirthdateDataProvider(): array {
+ public static function parseBirthdateDataProvider(): array {
return [
['2024-01-01', new DateTimeImmutable('2024-01-01'), false],
['20240101', new DateTimeImmutable('2024-01-01'), false],
@@ -34,9 +35,7 @@ class BirthdateParserServiceTest extends TestCase {
];
}
- /**
- * @dataProvider parseBirthdateDataProvider
- */
+ #[\PHPUnit\Framework\Attributes\DataProvider('parseBirthdateDataProvider')]
public function testParseBirthdate(
string $value,
?DateTimeImmutable $expected,
diff --git a/apps/user_ldap/tests/Service/UpdateGroupsServiceTest.php b/apps/user_ldap/tests/Service/UpdateGroupsServiceTest.php
index 38556ec312f..601aee86602 100644
--- a/apps/user_ldap/tests/Service/UpdateGroupsServiceTest.php
+++ b/apps/user_ldap/tests/Service/UpdateGroupsServiceTest.php
@@ -6,17 +6,15 @@ declare(strict_types=1);
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-namespace OCA\user_ldap\tests\Service;
+namespace OCA\User_LDAP\Tests\Service;
use OCA\User_LDAP\Db\GroupMembership;
use OCA\User_LDAP\Db\GroupMembershipMapper;
use OCA\User_LDAP\Group_Proxy;
use OCA\User_LDAP\Service\UpdateGroupsService;
-use OCP\AppFramework\Utility\ITimeFactory;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Group\Events\UserAddedEvent;
use OCP\Group\Events\UserRemovedEvent;
-use OCP\IConfig;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
@@ -26,23 +24,12 @@ use Psr\Log\LoggerInterface;
use Test\TestCase;
class UpdateGroupsServiceTest extends TestCase {
- /** @var Group_Proxy|MockObject */
- protected $groupBackend;
- /** @var IEventDispatcher|MockObject */
- protected $dispatcher;
- /** @var IGroupManager|MockObject */
- protected $groupManager;
- /** @var IUserManager|MockObject */
- protected $userManager;
- /** @var LoggerInterface|MockObject */
- protected $logger;
- /** @var GroupMembershipMapper|MockObject */
- protected $groupMembershipMapper;
- /** @var IConfig|MockObject */
- protected $config;
- /** @var ITimeFactory|MockObject */
- protected $timeFactory;
-
+ protected Group_Proxy&MockObject $groupBackend;
+ protected IEventDispatcher&MockObject $dispatcher;
+ protected IGroupManager&MockObject $groupManager;
+ protected IUserManager&MockObject $userManager;
+ protected LoggerInterface&MockObject $logger;
+ protected GroupMembershipMapper&MockObject $groupMembershipMapper;
protected UpdateGroupsService $updateGroupsService;
public function setUp(): void {
@@ -52,8 +39,6 @@ class UpdateGroupsServiceTest extends TestCase {
$this->userManager = $this->createMock(IUserManager::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->groupMembershipMapper = $this->createMock(GroupMembershipMapper::class);
- $this->config = $this->createMock(IConfig::class);
- $this->timeFactory = $this->createMock(ITimeFactory::class);
$this->updateGroupsService = new UpdateGroupsService(
$this->groupBackend,
@@ -62,8 +47,6 @@ class UpdateGroupsServiceTest extends TestCase {
$this->userManager,
$this->logger,
$this->groupMembershipMapper,
- $this->config,
- $this->timeFactory
);
}
@@ -137,7 +120,7 @@ class UpdateGroupsServiceTest extends TestCase {
$removedEvents = 0;
$this->dispatcher->expects($this->exactly(4))
->method('dispatchTyped')
- ->willReturnCallback(function ($event) use (&$addedEvents, &$removedEvents) {
+ ->willReturnCallback(function ($event) use (&$addedEvents, &$removedEvents): void {
if ($event instanceof UserRemovedEvent) {
$removedEvents++;
} elseif ($event instanceof UserAddedEvent) {
diff --git a/apps/user_ldap/tests/Settings/AdminTest.php b/apps/user_ldap/tests/Settings/AdminTest.php
index 7906a07c3e9..b17e96c1a68 100644
--- a/apps/user_ldap/tests/Settings/AdminTest.php
+++ b/apps/user_ldap/tests/Settings/AdminTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -9,7 +11,9 @@ use OCA\User_LDAP\Configuration;
use OCA\User_LDAP\Settings\Admin;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IL10N;
-use OCP\Template;
+use OCP\Server;
+use OCP\Template\ITemplateManager;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
/**
@@ -17,32 +21,31 @@ use Test\TestCase;
* @package OCA\User_LDAP\Tests\Settings
*/
class AdminTest extends TestCase {
- /** @var Admin */
- private $admin;
- /** @var IL10N */
- private $l10n;
+ private IL10N&MockObject $l10n;
+ private ITemplateManager $templateManager;
+ private Admin $admin;
protected function setUp(): void {
parent::setUp();
- $this->l10n = $this->getMockBuilder(IL10N::class)->getMock();
+ $this->l10n = $this->createMock(IL10N::class);
+ $this->templateManager = Server::get(ITemplateManager::class);
$this->admin = new Admin(
- $this->l10n
+ $this->l10n,
+ $this->templateManager,
);
}
- /**
- * @UseDB
- */
- public function testGetForm() {
+ public function testGetForm(): void {
$prefixes = ['s01'];
$hosts = ['s01' => ''];
- $wControls = new Template('user_ldap', 'part.wizardcontrols');
+ $wControls = $this->templateManager->getTemplate('user_ldap', 'part.wizardcontrols');
$wControls = $wControls->fetchPage();
- $sControls = new Template('user_ldap', 'part.settingcontrols');
+ $sControls = $this->templateManager->getTemplate('user_ldap', 'part.settingcontrols');
$sControls = $sControls->fetchPage();
+ $parameters = [];
$parameters['serverConfigurationPrefixes'] = $prefixes;
$parameters['serverConfigurationHosts'] = $hosts;
$parameters['settingControls'] = $sControls;
@@ -52,18 +55,18 @@ class AdminTest extends TestCase {
$config = new Configuration('', false);
$defaults = $config->getDefaults();
foreach ($defaults as $key => $default) {
- $parameters[$key.'_default'] = $default;
+ $parameters[$key . '_default'] = $default;
}
$expected = new TemplateResponse('user_ldap', 'settings', $parameters);
$this->assertEquals($expected, $this->admin->getForm());
}
- public function testGetSection() {
+ public function testGetSection(): void {
$this->assertSame('ldap', $this->admin->getSection());
}
- public function testGetPriority() {
+ public function testGetPriority(): void {
$this->assertSame(5, $this->admin->getPriority());
}
}
diff --git a/apps/user_ldap/tests/Settings/SectionTest.php b/apps/user_ldap/tests/Settings/SectionTest.php
index 5fe5476f1c3..3f9ae1e56d4 100644
--- a/apps/user_ldap/tests/Settings/SectionTest.php
+++ b/apps/user_ldap/tests/Settings/SectionTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -8,15 +10,13 @@ namespace OCA\User_LDAP\Tests\Settings;
use OCA\User_LDAP\Settings\Section;
use OCP\IL10N;
use OCP\IURLGenerator;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class SectionTest extends TestCase {
- /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
- private $url;
- /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
- private $l;
- /** @var Section */
- private $section;
+ private IURLGenerator&MockObject $url;
+ private IL10N&MockObject $l;
+ private Section $section;
protected function setUp(): void {
parent::setUp();
@@ -29,11 +29,11 @@ class SectionTest extends TestCase {
);
}
- public function testGetID() {
+ public function testGetID(): void {
$this->assertSame('ldap', $this->section->getID());
}
- public function testGetName() {
+ public function testGetName(): void {
$this->l
->expects($this->once())
->method('t')
@@ -43,11 +43,11 @@ class SectionTest extends TestCase {
$this->assertSame('LDAP/AD integration', $this->section->getName());
}
- public function testGetPriority() {
+ public function testGetPriority(): void {
$this->assertSame(25, $this->section->getPriority());
}
- public function testGetIcon() {
+ public function testGetIcon(): void {
$this->url->expects($this->once())
->method('imagePath')
->with('user_ldap', 'app-dark.svg')
diff --git a/apps/user_ldap/tests/User/DeletedUsersIndexTest.php b/apps/user_ldap/tests/User/DeletedUsersIndexTest.php
index 32fa5bc38bf..b245e52fe6e 100644
--- a/apps/user_ldap/tests/User/DeletedUsersIndexTest.php
+++ b/apps/user_ldap/tests/User/DeletedUsersIndexTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -9,7 +11,9 @@ use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCP\IConfig;
use OCP\IDBConnection;
+use OCP\Server;
use OCP\Share\IManager;
+use PHPUnit\Framework\MockObject\MockObject;
/**
* Class DeletedUsersIndexTest
@@ -19,26 +23,18 @@ use OCP\Share\IManager;
* @package OCA\User_LDAP\Tests\User
*/
class DeletedUsersIndexTest extends \Test\TestCase {
- /** @var DeletedUsersIndex */
- protected $dui;
-
- /** @var IConfig */
- protected $config;
-
- /** @var IDBConnection */
- protected $db;
-
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $mapping;
- /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $shareManager;
+ protected DeletedUsersIndex $dui;
+ protected IConfig $config;
+ protected IDBConnection $db;
+ protected UserMapping&MockObject $mapping;
+ protected IManager&MockObject $shareManager;
protected function setUp(): void {
parent::setUp();
// no mocks for those as tests go against DB
- $this->config = \OC::$server->getConfig();
- $this->db = \OC::$server->getDatabaseConnection();
+ $this->config = Server::get(IConfig::class);
+ $this->db = Server::get(IDBConnection::class);
// ensure a clean database
$this->config->deleteAppFromAllUsers('user_ldap');
@@ -54,7 +50,7 @@ class DeletedUsersIndexTest extends \Test\TestCase {
parent::tearDown();
}
- public function testMarkAndFetchUser() {
+ public function testMarkAndFetchUser(): void {
$uids = [
'cef3775c-71d2-48eb-8984-39a4051b0b95',
'8c4bbb40-33ed-42d0-9b14-85b0ab76c1cc',
@@ -82,7 +78,7 @@ class DeletedUsersIndexTest extends \Test\TestCase {
$this->assertEmpty($uids);
}
- public function testUnmarkUser() {
+ public function testUnmarkUser(): void {
$uids = [
'22a162c7-a9ee-487c-9f33-0563795583fb',
'1fb4e0da-4a75-47f3-8fa7-becc7e35c9c5',
diff --git a/apps/user_ldap/tests/User/ManagerTest.php b/apps/user_ldap/tests/User/ManagerTest.php
index 597a2e69a0a..bf9d1f5746f 100644
--- a/apps/user_ldap/tests/User/ManagerTest.php
+++ b/apps/user_ldap/tests/User/ManagerTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -9,7 +10,6 @@ namespace OCA\User_LDAP\Tests\User;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\User\User;
@@ -20,6 +20,7 @@ use OCP\Image;
use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
use OCP\Share\IManager;
+use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
/**
@@ -30,50 +31,24 @@ use Psr\Log\LoggerInterface;
* @package OCA\User_LDAP\Tests\User
*/
class ManagerTest extends \Test\TestCase {
- /** @var Access|\PHPUnit\Framework\MockObject\MockObject */
- protected $access;
-
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- protected $config;
-
- /** @var FilesystemHelper|\PHPUnit\Framework\MockObject\MockObject */
- protected $fileSystemHelper;
-
- /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
- protected $logger;
-
- /** @var IAvatarManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $avatarManager;
-
- /** @var Image|\PHPUnit\Framework\MockObject\MockObject */
- protected $image;
-
- /** @var IDBConnection|\PHPUnit\Framework\MockObject\MockObject */
- protected $dbc;
-
- /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $ncUserManager;
-
- /** @var INotificationManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $notificationManager;
-
- /** @var ILDAPWrapper|\PHPUnit\Framework\MockObject\MockObject */
- protected $ldapWrapper;
-
- /** @var Connection */
- protected $connection;
-
- /** @var Manager */
- protected $manager;
- /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $shareManager;
+ protected Access&MockObject $access;
+ protected IConfig&MockObject $config;
+ protected LoggerInterface&MockObject $logger;
+ protected IAvatarManager&MockObject $avatarManager;
+ protected Image&MockObject $image;
+ protected IDBConnection&MockObject $dbc;
+ protected IUserManager&MockObject $ncUserManager;
+ protected INotificationManager&MockObject $notificationManager;
+ protected ILDAPWrapper&MockObject $ldapWrapper;
+ protected Connection $connection;
+ protected IManager&MockObject $shareManager;
+ protected Manager $manager;
protected function setUp(): void {
parent::setUp();
$this->access = $this->createMock(Access::class);
$this->config = $this->createMock(IConfig::class);
- $this->fileSystemHelper = $this->createMock(FilesystemHelper::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->avatarManager = $this->createMock(IAvatarManager::class);
$this->image = $this->createMock(Image::class);
@@ -91,7 +66,6 @@ class ManagerTest extends \Test\TestCase {
/** @noinspection PhpUnhandledExceptionInspection */
$this->manager = new Manager(
$this->config,
- $this->fileSystemHelper,
$this->logger,
$this->avatarManager,
$this->image,
@@ -103,7 +77,7 @@ class ManagerTest extends \Test\TestCase {
$this->manager->setLdapAccess($this->access);
}
- public function dnProvider() {
+ public static function dnProvider(): array {
return [
['cn=foo,dc=foobar,dc=bar'],
['uid=foo,o=foobar,c=bar'],
@@ -111,10 +85,8 @@ class ManagerTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider dnProvider
- */
- public function testGetByDNExisting(string $inputDN) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dnProvider')]
+ public function testGetByDNExisting(string $inputDN): void {
$uid = '563418fc-423b-1033-8d1c-ad5f418ee02e';
$this->access->expects($this->once())
@@ -139,7 +111,7 @@ class ManagerTest extends \Test\TestCase {
$this->assertInstanceOf(User::class, $user);
}
- public function testGetByDNNotExisting() {
+ public function testGetByDNNotExisting(): void {
$inputDN = 'cn=gone,dc=foobar,dc=bar';
$this->access->expects($this->once())
@@ -161,7 +133,7 @@ class ManagerTest extends \Test\TestCase {
$this->assertNull($user);
}
- public function testGetByUidExisting() {
+ public function testGetByUidExisting(): void {
$dn = 'cn=foo,dc=foobar,dc=bar';
$uid = '563418fc-423b-1033-8d1c-ad5f418ee02e';
@@ -187,7 +159,7 @@ class ManagerTest extends \Test\TestCase {
$this->assertInstanceOf(User::class, $user);
}
- public function testGetByUidNotExisting() {
+ public function testGetByUidNotExisting(): void {
$uid = 'gone';
$this->access->expects($this->never())
@@ -203,17 +175,15 @@ class ManagerTest extends \Test\TestCase {
$this->assertNull($user);
}
- public function attributeRequestProvider() {
+ public static function attributeRequestProvider(): array {
return [
[false],
[true],
];
}
- /**
- * @dataProvider attributeRequestProvider
- */
- public function testGetAttributes($minimal) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('attributeRequestProvider')]
+ public function testGetAttributes($minimal): void {
$this->connection->setConfiguration([
'ldapEmailAttribute' => 'MAIL',
'ldapUserAvatarRule' => 'default',
@@ -223,10 +193,10 @@ class ManagerTest extends \Test\TestCase {
$attributes = $this->manager->getAttributes($minimal);
- $this->assertTrue(in_array('dn', $attributes));
- $this->assertTrue(in_array(strtolower($this->access->getConnection()->ldapEmailAttribute), $attributes));
- $this->assertTrue(!in_array($this->access->getConnection()->ldapEmailAttribute, $attributes)); #cases check
- $this->assertFalse(in_array('', $attributes));
+ $this->assertContains('dn', $attributes);
+ $this->assertContains(strtolower($this->access->getConnection()->ldapEmailAttribute), $attributes);
+ $this->assertNotContains($this->access->getConnection()->ldapEmailAttribute, $attributes); #cases check
+ $this->assertNotContains('', $attributes);
$this->assertSame(!$minimal, in_array('jpegphoto', $attributes));
$this->assertSame(!$minimal, in_array('thumbnailphoto', $attributes));
$valueCounts = array_count_values($attributes);
diff --git a/apps/user_ldap/tests/User/OfflineUserTest.php b/apps/user_ldap/tests/User/OfflineUserTest.php
index 8ac0e617d80..223e63421ad 100644
--- a/apps/user_ldap/tests/User/OfflineUserTest.php
+++ b/apps/user_ldap/tests/User/OfflineUserTest.php
@@ -13,20 +13,15 @@ use OCA\User_LDAP\User\OfflineUser;
use OCP\IConfig;
use OCP\Share\IManager;
use OCP\Share\IShare;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class OfflineUserTest extends TestCase {
-
- /** @var OfflineUser */
- protected $offlineUser;
- /** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
- protected $mapping;
- /** @var string */
- protected $uid;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- protected $config;
- /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $shareManager;
+ protected UserMapping&MockObject $mapping;
+ protected string $uid;
+ protected IConfig&MockObject $config;
+ protected IManager&MockObject $shareManager;
+ protected OfflineUser $offlineUser;
public function setUp(): void {
$this->uid = 'deborah';
@@ -42,7 +37,7 @@ class OfflineUserTest extends TestCase {
);
}
- public function shareOwnerProvider(): array {
+ public static function shareOwnerProvider(): array {
return [
[[], false],
[[IShare::TYPE_USER], true],
@@ -52,10 +47,8 @@ class OfflineUserTest extends TestCase {
];
}
- /**
- * @dataProvider shareOwnerProvider
- */
- public function testHasActiveShares(array $existingShareTypes, bool $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('shareOwnerProvider')]
+ public function testHasActiveShares(array $existingShareTypes, bool $expected): void {
$shareMock = $this->createMock(IShare::class);
$this->shareManager->expects($this->atLeastOnce())
diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php
index ec5cf03f402..00edd8b3f9b 100644
--- a/apps/user_ldap/tests/User/UserTest.php
+++ b/apps/user_ldap/tests/User/UserTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -9,7 +10,7 @@ namespace OCA\User_LDAP\Tests\User;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
-use OCA\User_LDAP\FilesystemHelper;
+use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\User\User;
use OCP\IAvatar;
use OCP\IAvatarManager;
@@ -19,6 +20,8 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\INotification;
+use OCP\Util;
+use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
/**
@@ -29,35 +32,24 @@ use Psr\Log\LoggerInterface;
* @package OCA\User_LDAP\Tests\User
*/
class UserTest extends \Test\TestCase {
- /** @var Access|\PHPUnit\Framework\MockObject\MockObject */
- protected $access;
- /** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
- protected $connection;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- protected $config;
- /** @var FilesystemHelper|\PHPUnit\Framework\MockObject\MockObject */
- protected $filesystemhelper;
- /** @var INotificationManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $notificationManager;
- /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $userManager;
- /** @var Image|\PHPUnit\Framework\MockObject\MockObject */
- protected $image;
- /** @var IAvatarManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $avatarManager;
- /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
- protected $logger;
- /** @var string */
- protected $uid = 'alice';
- /** @var string */
- protected $dn = 'uid=alice,dc=foo,dc=bar';
- /** @var User */
- protected $user;
+ protected Access&MockObject $access;
+ protected Connection&MockObject $connection;
+ protected IConfig&MockObject $config;
+ protected INotificationManager&MockObject $notificationManager;
+ protected IUserManager&MockObject $userManager;
+ protected Image&MockObject $image;
+ protected IAvatarManager&MockObject $avatarManager;
+ protected LoggerInterface&MockObject $logger;
+ protected string $uid = 'alice';
+ protected string $dn = 'uid=alice,dc=foo,dc=bar';
+ protected User $user;
protected function setUp(): void {
parent::setUp();
- $this->connection = $this->createMock(Connection::class);
+ $this->connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$this->access = $this->createMock(Access::class);
$this->access->connection = $this->connection;
@@ -66,7 +58,6 @@ class UserTest extends \Test\TestCase {
->willReturn($this->connection);
$this->config = $this->createMock(IConfig::class);
- $this->filesystemhelper = $this->createMock(FilesystemHelper::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->avatarManager = $this->createMock(IAvatarManager::class);
$this->image = $this->createMock(Image::class);
@@ -78,7 +69,6 @@ class UserTest extends \Test\TestCase {
$this->dn,
$this->access,
$this->config,
- $this->filesystemhelper,
$this->image,
$this->logger,
$this->avatarManager,
@@ -87,12 +77,12 @@ class UserTest extends \Test\TestCase {
);
}
- public function testGetDNandUsername() {
+ public function testGetDNandUsername(): void {
$this->assertSame($this->dn, $this->user->getDN());
$this->assertSame($this->uid, $this->user->getUsername());
}
- public function testUpdateEmailProvided() {
+ public function testUpdateEmailProvided(): void {
$this->connection->expects($this->once())
->method('__get')
->with($this->equalTo('ldapEmailAttribute'))
@@ -104,11 +94,9 @@ class UserTest extends \Test\TestCase {
$this->equalTo('email'))
->willReturn(['alice@foo.bar']);
- $coreUser = $this->getMockBuilder(IUser::class)
- ->disableOriginalConstructor()
- ->getMock();
+ $coreUser = $this->createMock(IUser::class);
$coreUser->expects($this->once())
- ->method('setEMailAddress')
+ ->method('setSystemEMailAddress')
->with('alice@foo.bar');
$this->userManager->expects($this->any())
@@ -118,7 +106,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateEmail();
}
- public function testUpdateEmailNotProvided() {
+ public function testUpdateEmailNotProvided(): void {
$this->connection->expects($this->once())
->method('__get')
->with($this->equalTo('ldapEmailAttribute'))
@@ -136,7 +124,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateEmail();
}
- public function testUpdateEmailNotConfigured() {
+ public function testUpdateEmailNotConfigured(): void {
$this->connection->expects($this->once())
->method('__get')
->with($this->equalTo('ldapEmailAttribute'))
@@ -151,7 +139,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateEmail();
}
- public function testUpdateQuotaAllProvided() {
+ public function testUpdateQuotaAllProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -178,7 +166,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaToDefaultAllProvided() {
+ public function testUpdateQuotaToDefaultAllProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -205,7 +193,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaToNoneAllProvided() {
+ public function testUpdateQuotaToNoneAllProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -232,7 +220,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaDefaultProvided() {
+ public function testUpdateQuotaDefaultProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -259,7 +247,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaIndividualProvided() {
+ public function testUpdateQuotaIndividualProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -286,7 +274,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaNoneProvided() {
+ public function testUpdateQuotaNoneProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -314,7 +302,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaNoneConfigured() {
+ public function testUpdateQuotaNoneConfigured(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -338,7 +326,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateQuota();
}
- public function testUpdateQuotaFromValue() {
+ public function testUpdateQuotaFromValue(): void {
$readQuota = '19 GB';
$this->connection->expects($this->exactly(2))
@@ -367,7 +355,7 @@ class UserTest extends \Test\TestCase {
/**
* Unparseable quota will fallback to use the LDAP default
*/
- public function testUpdateWrongQuotaAllProvided() {
+ public function testUpdateWrongQuotaAllProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -397,7 +385,7 @@ class UserTest extends \Test\TestCase {
/**
* No user quota and wrong default will set 'default' as quota
*/
- public function testUpdateWrongDefaultQuotaProvided() {
+ public function testUpdateWrongDefaultQuotaProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -424,7 +412,7 @@ class UserTest extends \Test\TestCase {
/**
* Wrong user quota and wrong default will set 'default' as quota
*/
- public function testUpdateWrongQuotaAndDefaultAllProvided() {
+ public function testUpdateWrongQuotaAndDefaultAllProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -451,7 +439,7 @@ class UserTest extends \Test\TestCase {
/**
* No quota attribute set and wrong default will set 'default' as quota
*/
- public function testUpdateWrongDefaultQuotaNotProvided() {
+ public function testUpdateWrongDefaultQuotaNotProvided(): void {
$this->connection->expects($this->exactly(2))
->method('__get')
->willReturnMap([
@@ -507,14 +495,10 @@ class UserTest extends \Test\TestCase {
->method('setUserValue')
->with($this->uid, 'user_ldap', 'lastAvatarChecksum', md5('this is a photo'));
- $this->filesystemhelper->expects($this->once())
- ->method('isLoaded')
- ->willReturn(true);
-
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->once())
->method('set')
- ->with($this->isInstanceOf($this->image));
+ ->with($this->image);
$this->avatarManager->expects($this->once())
->method('getAvatar')
@@ -529,7 +513,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateAvatar();
}
- public function testUpdateAvatarKnownJpegPhotoProvided() {
+ public function testUpdateAvatarKnownJpegPhotoProvided(): void {
$this->access->expects($this->once())
->method('readAttribute')
->with($this->equalTo($this->dn),
@@ -558,9 +542,6 @@ class UserTest extends \Test\TestCase {
$this->config->expects($this->never())
->method('setUserValue');
- $this->filesystemhelper->expects($this->never())
- ->method('isLoaded');
-
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->never())
->method('set');
@@ -625,14 +606,10 @@ class UserTest extends \Test\TestCase {
->method('setUserValue')
->with($this->uid, 'user_ldap', 'lastAvatarChecksum', md5('this is a photo'));
- $this->filesystemhelper->expects($this->once())
- ->method('isLoaded')
- ->willReturn(true);
-
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->once())
->method('set')
- ->with($this->isInstanceOf($this->image));
+ ->with($this->image);
$this->avatarManager->expects($this->once())
->method('getAvatar')
@@ -647,7 +624,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateAvatar();
}
- public function testUpdateAvatarCorruptPhotoProvided() {
+ public function testUpdateAvatarCorruptPhotoProvided(): void {
$this->access->expects($this->any())
->method('readAttribute')
->willReturnCallback(function ($dn, $attr) {
@@ -680,9 +657,6 @@ class UserTest extends \Test\TestCase {
$this->config->expects($this->never())
->method('setUserValue');
- $this->filesystemhelper->expects($this->never())
- ->method('isLoaded');
-
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->never())
->method('set');
@@ -738,14 +712,10 @@ class UserTest extends \Test\TestCase {
$this->config->expects($this->never())
->method('setUserValue');
- $this->filesystemhelper->expects($this->once())
- ->method('isLoaded')
- ->willReturn(true);
-
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->once())
->method('set')
- ->with($this->isInstanceOf($this->image))
+ ->with($this->image)
->willThrowException(new \Exception());
$this->avatarManager->expects($this->once())
@@ -761,7 +731,7 @@ class UserTest extends \Test\TestCase {
$this->assertFalse($this->user->updateAvatar());
}
- public function testUpdateAvatarNotProvided() {
+ public function testUpdateAvatarNotProvided(): void {
$this->access->expects($this->any())
->method('readAttribute')
->willReturnCallback(function ($dn, $attr) {
@@ -791,9 +761,6 @@ class UserTest extends \Test\TestCase {
$this->config->expects($this->never())
->method('setUserValue');
- $this->filesystemhelper->expects($this->never())
- ->method('isLoaded');
-
$this->avatarManager->expects($this->never())
->method('getAvatar');
@@ -805,7 +772,7 @@ class UserTest extends \Test\TestCase {
$this->user->updateAvatar();
}
- public function extStorageHomeDataProvider() {
+ public static function extStorageHomeDataProvider(): array {
return [
[ 'myFolder', null ],
[ '', null, false ],
@@ -813,10 +780,8 @@ class UserTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider extStorageHomeDataProvider
- */
- public function testUpdateExtStorageHome(string $expected, ?string $valueFromLDAP = null, bool $isSet = true) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('extStorageHomeDataProvider')]
+ public function testUpdateExtStorageHome(string $expected, ?string $valueFromLDAP = null, bool $isSet = true): void {
if ($valueFromLDAP === null) {
$this->connection->expects($this->once())
->method('__get')
@@ -848,7 +813,7 @@ class UserTest extends \Test\TestCase {
$this->assertSame($expected, $actual);
}
- public function testMarkLogin() {
+ public function testMarkLogin(): void {
$this->config->expects($this->once())
->method('setUserValue')
->with($this->equalTo($this->uid),
@@ -860,7 +825,7 @@ class UserTest extends \Test\TestCase {
$this->user->markLogin();
}
- public function testGetAvatarImageProvided() {
+ public function testGetAvatarImageProvided(): void {
$this->access->expects($this->once())
->method('readAttribute')
->with($this->equalTo($this->dn),
@@ -878,7 +843,7 @@ class UserTest extends \Test\TestCase {
$this->user->getAvatarImage();
}
- public function testGetAvatarImageDisabled() {
+ public function testGetAvatarImageDisabled(): void {
$this->access->expects($this->never())
->method('readAttribute')
->with($this->equalTo($this->dn), $this->anything());
@@ -890,7 +855,7 @@ class UserTest extends \Test\TestCase {
$this->assertFalse($this->user->getAvatarImage());
}
- public function imageDataProvider() {
+ public static function imageDataProvider(): array {
return [
[ false, false ],
[ 'corruptData', false ],
@@ -898,7 +863,7 @@ class UserTest extends \Test\TestCase {
];
}
- public function testProcessAttributes() {
+ public function testProcessAttributes(): void {
$requiredMethods = [
'updateQuota',
'updateEmail',
@@ -909,21 +874,20 @@ class UserTest extends \Test\TestCase {
'updateExtStorageHome',
];
- /** @var User|\PHPUnit\Framework\MockObject\MockObject $userMock */
+ /** @var User&MockObject $userMock */
$userMock = $this->getMockBuilder(User::class)
->setConstructorArgs([
$this->uid,
$this->dn,
$this->access,
$this->config,
- $this->filesystemhelper,
$this->image,
$this->logger,
$this->avatarManager,
$this->userManager,
$this->notificationManager
])
- ->setMethods($requiredMethods)
+ ->onlyMethods($requiredMethods)
->getMock();
$this->connection->setConfiguration([
@@ -963,17 +927,15 @@ class UserTest extends \Test\TestCase {
\OC_Hook::emit('OC_User', 'post_login', ['uid' => $this->uid]);
}
- public function emptyHomeFolderAttributeValueProvider() {
+ public static function emptyHomeFolderAttributeValueProvider(): array {
return [
'empty' => [''],
'prefixOnly' => ['attr:'],
];
}
- /**
- * @dataProvider emptyHomeFolderAttributeValueProvider
- */
- public function testGetHomePathNotConfigured($attributeValue) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('emptyHomeFolderAttributeValueProvider')]
+ public function testGetHomePathNotConfigured(string $attributeValue): void {
$this->connection->expects($this->any())
->method('__get')
->with($this->equalTo('homeFolderNamingRule'))
@@ -989,7 +951,7 @@ class UserTest extends \Test\TestCase {
$this->assertFalse($this->user->getHomePath());
}
- public function testGetHomePathConfiguredNotAvailableAllowed() {
+ public function testGetHomePathConfiguredNotAvailableAllowed(): void {
$this->connection->expects($this->any())
->method('__get')
->with($this->equalTo('homeFolderNamingRule'))
@@ -1013,7 +975,7 @@ class UserTest extends \Test\TestCase {
}
- public function testGetHomePathConfiguredNotAvailableNotAllowed() {
+ public function testGetHomePathConfiguredNotAvailableNotAllowed(): void {
$this->expectException(\Exception::class);
$this->connection->expects($this->any())
@@ -1037,20 +999,17 @@ class UserTest extends \Test\TestCase {
$this->user->getHomePath();
}
- public function displayNameProvider() {
+ public static function displayNameProvider(): array {
return [
['Roland Deschain', '', 'Roland Deschain', false],
['Roland Deschain', '', 'Roland Deschain', true],
- ['Roland Deschain', null, 'Roland Deschain', false],
['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)', false],
['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)', true],
];
}
- /**
- * @dataProvider displayNameProvider
- */
- public function testComposeAndStoreDisplayName($part1, $part2, $expected, $expectTriggerChange) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('displayNameProvider')]
+ public function testComposeAndStoreDisplayName(string $part1, string $part2, string $expected, bool $expectTriggerChange): void {
$this->config->expects($this->once())
->method('setUserValue');
$oldName = $expectTriggerChange ? 'xxGunslingerxx' : null;
@@ -1076,7 +1035,7 @@ class UserTest extends \Test\TestCase {
$this->assertSame($expected, $displayName);
}
- public function testComposeAndStoreDisplayNameNoOverwrite() {
+ public function testComposeAndStoreDisplayNameNoOverwrite(): void {
$displayName = 'Randall Flagg';
$this->config->expects($this->never())
->method('setUserValue');
@@ -1091,7 +1050,7 @@ class UserTest extends \Test\TestCase {
$this->assertSame($composedDisplayName, $displayName);
}
- public function testHandlePasswordExpiryWarningDefaultPolicy() {
+ public function testHandlePasswordExpiryWarningDefaultPolicy(): void {
$this->connection->expects($this->any())
->method('__get')
->willReturnCallback(function ($name) {
@@ -1110,7 +1069,7 @@ class UserTest extends \Test\TestCase {
if ($base === $this->dn) {
return [
[
- 'pwdchangedtime' => [(new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis').'Z'],
+ 'pwdchangedtime' => [(new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis') . 'Z'],
'pwdgraceusetime' => [],
],
];
@@ -1149,12 +1108,12 @@ class UserTest extends \Test\TestCase {
->method('notify');
\OC_Hook::clear();//disconnect irrelevant hooks
- \OCP\Util::connectHook('OC_User', 'post_login', $this->user, 'handlePasswordExpiry');
+ Util::connectHook('OC_User', 'post_login', $this->user, 'handlePasswordExpiry');
/** @noinspection PhpUnhandledExceptionInspection */
\OC_Hook::emit('OC_User', 'post_login', ['uid' => $this->uid]);
}
- public function testHandlePasswordExpiryWarningCustomPolicy() {
+ public function testHandlePasswordExpiryWarningCustomPolicy(): void {
$this->connection->expects($this->any())
->method('__get')
->willReturnCallback(function ($name) {
@@ -1174,7 +1133,7 @@ class UserTest extends \Test\TestCase {
return [
[
'pwdpolicysubentry' => ['cn=custom,ou=policies,dc=foo,dc=bar'],
- 'pwdchangedtime' => [(new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis').'Z'],
+ 'pwdchangedtime' => [(new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis') . 'Z'],
'pwdgraceusetime' => [],
]
];
@@ -1213,7 +1172,7 @@ class UserTest extends \Test\TestCase {
->method('notify');
\OC_Hook::clear();//disconnect irrelevant hooks
- \OCP\Util::connectHook('OC_User', 'post_login', $this->user, 'handlePasswordExpiry');
+ Util::connectHook('OC_User', 'post_login', $this->user, 'handlePasswordExpiry');
/** @noinspection PhpUnhandledExceptionInspection */
\OC_Hook::emit('OC_User', 'post_login', ['uid' => $this->uid]);
}
diff --git a/apps/user_ldap/tests/UserLDAPPluginTest.php b/apps/user_ldap/tests/UserLDAPPluginTest.php
index 1e3cd6afbf8..8a065374e61 100644
--- a/apps/user_ldap/tests/UserLDAPPluginTest.php
+++ b/apps/user_ldap/tests/UserLDAPPluginTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -9,27 +11,23 @@ use OC\User\Backend;
use OCA\User_LDAP\UserPluginManager;
class UserLDAPPluginTest extends \Test\TestCase {
-
- /**
- * @return UserPluginManager
- */
- private function getUserPluginManager() {
+ private function getUserPluginManager(): UserPluginManager {
return new UserPluginManager();
}
- public function testImplementsActions() {
+ public function testImplementsActions(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions'])
->getMock();
$plugin->expects($this->any())
->method('respondToActions')
->willReturn(Backend::CREATE_USER);
- $plugin2 = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions'])
+ $plugin2 = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions'])
->getMock();
$plugin2->expects($this->any())
@@ -44,11 +42,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$this->assertTrue($pluginManager->implementsActions(Backend::PROVIDE_AVATAR));
}
- public function testCreateUser() {
+ public function testCreateUser(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'createUser'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'createUser'])
->getMock();
$plugin->expects($this->any())
@@ -66,8 +64,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->createUser('user', 'password');
}
-
- public function testCreateUserNotRegistered() {
+
+ public function testCreateUserNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements createUser in this LDAP Backend.');
@@ -75,11 +73,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->createUser('foo', 'bar');
}
- public function testSetPassword() {
+ public function testSetPassword(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'setPassword'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'setPassword'])
->getMock();
$plugin->expects($this->any())
@@ -97,8 +95,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->setPassword('user', 'password');
}
-
- public function testSetPasswordNotRegistered() {
+
+ public function testSetPasswordNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements setPassword in this LDAP Backend.');
@@ -106,11 +104,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->setPassword('foo', 'bar');
}
- public function testGetHome() {
+ public function testGetHome(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'getHome'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'getHome'])
->getMock();
$plugin->expects($this->any())
@@ -127,8 +125,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->getHome('uid');
}
-
- public function testGetHomeNotRegistered() {
+
+ public function testGetHomeNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements getHome in this LDAP Backend.');
@@ -136,11 +134,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->getHome('foo');
}
- public function testGetDisplayName() {
+ public function testGetDisplayName(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'getDisplayName'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'getDisplayName'])
->getMock();
$plugin->expects($this->any())
@@ -157,8 +155,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->getDisplayName('uid');
}
-
- public function testGetDisplayNameNotRegistered() {
+
+ public function testGetDisplayNameNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements getDisplayName in this LDAP Backend.');
@@ -166,11 +164,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->getDisplayName('foo');
}
- public function testSetDisplayName() {
+ public function testSetDisplayName(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'setDisplayName'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'setDisplayName'])
->getMock();
$plugin->expects($this->any())
@@ -188,8 +186,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->setDisplayName('user', 'password');
}
-
- public function testSetDisplayNameNotRegistered() {
+
+ public function testSetDisplayNameNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements setDisplayName in this LDAP Backend.');
@@ -197,11 +195,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->setDisplayName('foo', 'bar');
}
- public function testCanChangeAvatar() {
+ public function testCanChangeAvatar(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'canChangeAvatar'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'canChangeAvatar'])
->getMock();
$plugin->expects($this->any())
@@ -218,8 +216,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->canChangeAvatar('uid');
}
-
- public function testCanChangeAvatarNotRegistered() {
+
+ public function testCanChangeAvatarNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements canChangeAvatar in this LDAP Backend.');
@@ -227,11 +225,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->canChangeAvatar('foo');
}
- public function testCountUsers() {
+ public function testCountUsers(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'countUsers'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'countUsers'])
->getMock();
$plugin->expects($this->any())
@@ -245,8 +243,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->countUsers();
}
-
- public function testCountUsersNotRegistered() {
+
+ public function testCountUsersNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements countUsers in this LDAP Backend.');
@@ -254,11 +252,11 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->countUsers();
}
- public function testDeleteUser() {
+ public function testDeleteUser(): void {
$pluginManager = $this->getUserPluginManager();
- $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy')
- ->setMethods(['respondToActions', 'canDeleteUser','deleteUser'])
+ $plugin = $this->getMockBuilder(LDAPUserPluginDummy::class)
+ ->onlyMethods(['respondToActions', 'canDeleteUser','deleteUser'])
->getMock();
$plugin->expects($this->any())
@@ -281,8 +279,8 @@ class UserLDAPPluginTest extends \Test\TestCase {
$pluginManager->deleteUser('uid');
}
-
- public function testDeleteUserNotRegistered() {
+
+ public function testDeleteUserNotRegistered(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('No plugin implements deleteUser in this LDAP Backend.');
diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php
index c09a16c75bb..f8900c3cca4 100644
--- a/apps/user_ldap/tests/User_LDAPTest.php
+++ b/apps/user_ldap/tests/User_LDAPTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -8,9 +9,9 @@
namespace OCA\User_LDAP\Tests;
use OC\User\Backend;
-use OC\User\Session;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
+use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\Mapping\AbstractMapping;
use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\User\DeletedUsersIndex;
@@ -22,8 +23,11 @@ use OCA\User_LDAP\User_LDAP as UserLDAP;
use OCA\User_LDAP\UserPluginManager;
use OCP\HintException;
use OCP\IConfig;
+use OCP\IGroupManager;
use OCP\IUser;
+use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
+use OCP\Server;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
@@ -36,46 +40,32 @@ use Test\TestCase;
* @package OCA\User_LDAP\Tests
*/
class User_LDAPTest extends TestCase {
- /** @var User_LDAP */
- protected $backend;
- /** @var Access|MockObject */
- protected $access;
- /** @var OfflineUser|MockObject */
- protected $offlineUser;
- /** @var IConfig|MockObject */
- protected $config;
- /** @var INotificationManager|MockObject */
- protected $notificationManager;
- /** @var Session|MockObject */
- protected $session;
- /** @var UserPluginManager|MockObject */
- protected $pluginManager;
- /** @var Connection|MockObject */
- protected $connection;
- /** @var Manager|MockObject */
- protected $userManager;
- /** @var LoggerInterface|MockObject */
- protected $logger;
- /** @var DeletedUsersIndex|MockObject */
- protected $deletedUsersIndex;
+ protected Access&MockObject $access;
+ protected OfflineUser&MockObject $offlineUser;
+ protected INotificationManager&MockObject $notificationManager;
+ protected UserPluginManager&MockObject $pluginManager;
+ protected Connection&MockObject $connection;
+ protected Manager&MockObject $userManager;
+ protected LoggerInterface&MockObject $logger;
+ protected DeletedUsersIndex&MockObject $deletedUsersIndex;
+ protected User_LDAP $backend;
protected function setUp(): void {
parent::setUp();
- \OC_User::clearBackends();
- \OC::$server->getGroupManager()->clearBackends();
+ Server::get(IUserManager::class)->clearBackends();
+ Server::get(IGroupManager::class)->clearBackends();
- $this->connection = $this->createMock(Connection::class);
+ $this->connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
$this->userManager = $this->createMock(Manager::class);
$this->access = $this->createMock(Access::class);
$this->access->connection = $this->connection;
$this->access->userManager = $this->userManager;
- $this->config = $this->createMock(IConfig::class);
$this->notificationManager = $this->createMock(INotificationManager::class);
- // Cannot use IUserSession because of private listen() methods
- $this->session = $this->createMock(Session::class);
$this->pluginManager = $this->createMock(UserPluginManager::class);
$this->logger = $this->createMock(LoggerInterface::class);
@@ -84,36 +74,34 @@ class User_LDAPTest extends TestCase {
$this->backend = new User_LDAP(
$this->access,
- $this->config,
$this->notificationManager,
- $this->session,
$this->pluginManager,
$this->logger,
$this->deletedUsersIndex,
);
}
- private function prepareMockForUserExists() {
+ private function prepareMockForUserExists(): void {
$this->access->expects($this->any())
- ->method('username2dn')
- ->willReturnCallback(function ($uid) {
- switch ($uid) {
- case 'gunslinger':
- return 'dnOfRoland,dc=test';
- break;
- case 'formerUser':
- return 'dnOfFormerUser,dc=test';
- break;
- case 'newyorker':
- return 'dnOfNewYorker,dc=test';
- break;
- case 'ladyofshadows':
- return 'dnOfLadyOfShadows,dc=test';
- break;
- default:
- return false;
- }
- });
+ ->method('username2dn')
+ ->willReturnCallback(function ($uid) {
+ switch ($uid) {
+ case 'gunslinger':
+ return 'dnOfRoland,dc=test';
+ break;
+ case 'formerUser':
+ return 'dnOfFormerUser,dc=test';
+ break;
+ case 'newyorker':
+ return 'dnOfNewYorker,dc=test';
+ break;
+ case 'ladyofshadows':
+ return 'dnOfLadyOfShadows,dc=test';
+ break;
+ default:
+ return false;
+ }
+ });
$this->access->method('fetchUsersByLoginName')
->willReturn([]);
@@ -121,27 +109,25 @@ class User_LDAPTest extends TestCase {
/**
* Prepares the Access mock for checkPassword tests
- * @param bool $noDisplayName
- * @return void
*/
- private function prepareAccessForCheckPassword($noDisplayName = false) {
+ private function prepareAccessForCheckPassword(bool $noDisplayName = false): void {
$this->connection->expects($this->any())
- ->method('__get')
- ->willReturnCallback(function ($name) {
- if ($name === 'ldapLoginFilter') {
- return '%uid';
- }
- return null;
- });
+ ->method('__get')
+ ->willReturnCallback(function ($name) {
+ if ($name === 'ldapLoginFilter') {
+ return '%uid';
+ }
+ return null;
+ });
$this->access->expects($this->any())
- ->method('fetchListOfUsers')
- ->willReturnCallback(function ($filter) {
- if ($filter === 'roland') {
- return [['dn' => ['dnOfRoland,dc=test']]];
- }
- return [];
- });
+ ->method('fetchListOfUsers')
+ ->willReturnCallback(function ($filter) {
+ if ($filter === 'roland') {
+ return [['dn' => ['dnOfRoland,dc=test']]];
+ }
+ return [];
+ });
$this->access->expects($this->any())
->method('fetchUsersByLoginName')
->willReturnCallback(function ($uid) {
@@ -156,28 +142,32 @@ class User_LDAPTest extends TestCase {
$retVal = false;
}
$this->access->expects($this->any())
- ->method('dn2username')
- ->with($this->equalTo('dnOfRoland,dc=test'))
- ->willReturn($retVal);
+ ->method('dn2username')
+ ->with($this->equalTo('dnOfRoland,dc=test'))
+ ->willReturn($retVal);
$this->access->expects($this->any())
- ->method('stringResemblesDN')
- ->with($this->equalTo('dnOfRoland,dc=test'))
- ->willReturn(true);
+ ->method('username2dn')
+ ->with($this->equalTo('gunslinger'))
+ ->willReturn('dnOfRoland,dc=test');
+ $this->access->expects($this->any())
+ ->method('stringResemblesDN')
+ ->with($this->equalTo('dnOfRoland,dc=test'))
+ ->willReturn(true);
$this->access->expects($this->any())
- ->method('areCredentialsValid')
- ->willReturnCallback(function ($dn, $pwd) {
- if ($pwd === 'dt19') {
- return true;
- }
- return false;
- });
+ ->method('areCredentialsValid')
+ ->willReturnCallback(function ($dn, $pwd) {
+ if ($pwd === 'dt19') {
+ return true;
+ }
+ return false;
+ });
$this->userManager->expects($this->any())
->method('getAttributes')
->willReturn(['dn', 'uid', 'mail', 'displayname']);
}
- public function testCheckPasswordUidReturn() {
+ public function testCheckPasswordUidReturn(): void {
$user = $this->createMock(User::class);
$user->expects($this->any())
->method('getUsername')
@@ -188,33 +178,33 @@ class User_LDAPTest extends TestCase {
->method('get')
->willReturn($user);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $backend->checkPassword('roland', 'dt19');
$this->assertEquals('gunslinger', $result);
}
- public function testCheckPasswordWrongPassword() {
+ public function testCheckPasswordWrongPassword(): void {
$this->prepareAccessForCheckPassword();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $backend->checkPassword('roland', 'wrong');
$this->assertFalse($result);
}
- public function testCheckPasswordWrongUser() {
+ public function testCheckPasswordWrongUser(): void {
$this->prepareAccessForCheckPassword();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $backend->checkPassword('mallory', 'evil');
$this->assertFalse($result);
}
- public function testCheckPasswordNoDisplayName() {
+ public function testCheckPasswordNoDisplayName(): void {
$this->prepareAccessForCheckPassword(true);
$this->prepareAccessForCheckPassword();
@@ -222,14 +212,14 @@ class User_LDAPTest extends TestCase {
->method('get')
->willReturn(null);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $backend->checkPassword('roland', 'dt19');
$this->assertFalse($result);
}
- public function testCheckPasswordPublicAPI() {
+ public function testCheckPasswordPublicAPI(): void {
$user = $this->createMock(User::class);
$user->expects($this->any())
->method('getUsername')
@@ -240,10 +230,10 @@ class User_LDAPTest extends TestCase {
->method('get')
->willReturn($user);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
- $user = \OC::$server->getUserManager()->checkPassword('roland', 'dt19');
+ $user = Server::get(IUserManager::class)->checkPassword('roland', 'dt19');
$result = false;
if ($user !== false) {
$result = $user->getUID();
@@ -251,12 +241,12 @@ class User_LDAPTest extends TestCase {
$this->assertEquals('gunslinger', $result);
}
- public function testCheckPasswordPublicAPIWrongPassword() {
+ public function testCheckPasswordPublicAPIWrongPassword(): void {
$this->prepareAccessForCheckPassword();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
- $user = \OC::$server->getUserManager()->checkPassword('roland', 'wrong');
+ $user = Server::get(IUserManager::class)->checkPassword('roland', 'wrong');
$result = false;
if ($user !== false) {
$result = $user->getUID();
@@ -264,12 +254,12 @@ class User_LDAPTest extends TestCase {
$this->assertFalse($result);
}
- public function testCheckPasswordPublicAPIWrongUser() {
+ public function testCheckPasswordPublicAPIWrongUser(): void {
$this->prepareAccessForCheckPassword();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
- $user = \OC::$server->getUserManager()->checkPassword('mallory', 'evil');
+ $user = Server::get(IUserManager::class)->checkPassword('mallory', 'evil');
$result = false;
if ($user !== false) {
$result = $user->getUID();
@@ -277,13 +267,13 @@ class User_LDAPTest extends TestCase {
$this->assertFalse($result);
}
- public function testDeleteUserCancel() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testDeleteUserCancel(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->deleteUser('notme');
$this->assertFalse($result);
}
- public function testDeleteUserSuccess() {
+ public function testDeleteUserSuccess(): void {
$uid = 'jeremy';
$home = '/var/vhome/jdings/';
@@ -299,9 +289,9 @@ class User_LDAPTest extends TestCase {
->willReturn(ldap_connect('ldap://example.com'));
$this->deletedUsersIndex->expects($this->once())
- ->method('isUserMarked')
- ->with($uid)
- ->willReturn(true);
+ ->method('isUserMarked')
+ ->with($uid)
+ ->willReturn(true);
$offlineUser = $this->createMock(OfflineUser::class);
$offlineUser->expects($this->once())
@@ -310,8 +300,12 @@ class User_LDAPTest extends TestCase {
$this->userManager->expects($this->atLeastOnce())
->method('get')
->willReturn($offlineUser);
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with($uid)
+ ->willReturn(true);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->deleteUser($uid);
$this->assertTrue($result);
@@ -319,7 +313,7 @@ class User_LDAPTest extends TestCase {
$this->assertSame($backend->getHome($uid), $home);
}
- public function testDeleteUserWithPlugin() {
+ public function testDeleteUserWithPlugin(): void {
$this->pluginManager->expects($this->once())
->method('canDeleteUser')
->willReturn(true);
@@ -329,9 +323,9 @@ class User_LDAPTest extends TestCase {
->willReturn(true);
$this->deletedUsersIndex->expects($this->once())
- ->method('isUserMarked')
- ->with('uid')
- ->willReturn(true);
+ ->method('isUserMarked')
+ ->with('uid')
+ ->willReturn(true);
$mapper = $this->createMock(UserMapping::class);
$mapper->expects($this->once())
@@ -346,7 +340,7 @@ class User_LDAPTest extends TestCase {
->method('invalidate')
->with('uid');
- $this->assertEquals(true, $this->backend->deleteUser('uid'));
+ $this->assertTrue($this->backend->deleteUser('uid'));
}
/**
@@ -354,42 +348,42 @@ class User_LDAPTest extends TestCase {
*/
private function prepareAccessForGetUsers() {
$this->access->expects($this->once())
- ->method('escapeFilterPart')
- ->willReturnCallback(function ($search) {
- return $search;
- });
+ ->method('escapeFilterPart')
+ ->willReturnCallback(function ($search) {
+ return $search;
+ });
$this->access->expects($this->any())
- ->method('getFilterPartForUserSearch')
- ->willReturnCallback(function ($search) {
- return $search;
- });
+ ->method('getFilterPartForUserSearch')
+ ->willReturnCallback(function ($search) {
+ return $search;
+ });
$this->access->expects($this->any())
- ->method('combineFilterWithAnd')
- ->willReturnCallback(function ($param) {
- return $param[2];
- });
+ ->method('combineFilterWithAnd')
+ ->willReturnCallback(function ($param) {
+ return $param[2];
+ });
$this->access->expects($this->any())
- ->method('fetchListOfUsers')
- ->willReturnCallback(function ($search, $a, $l, $o) {
- $users = ['gunslinger', 'newyorker', 'ladyofshadows'];
- if (empty($search)) {
- $result = $users;
- } else {
- $result = [];
- foreach ($users as $user) {
- if (stripos($user, $search) !== false) {
- $result[] = $user;
- }
- }
- }
- if (!is_null($l) || !is_null($o)) {
- $result = array_slice($result, $o, $l);
- }
- return $result;
- });
+ ->method('fetchListOfUsers')
+ ->willReturnCallback(function ($search, $a, $l, $o) {
+ $users = ['gunslinger', 'newyorker', 'ladyofshadows'];
+ if (empty($search)) {
+ $result = $users;
+ } else {
+ $result = [];
+ foreach ($users as $user) {
+ if (stripos($user, $search) !== false) {
+ $result[] = $user;
+ }
+ }
+ }
+ if (!is_null($l) || !is_null($o)) {
+ $result = array_slice($result, $o, $l);
+ }
+ return $result;
+ });
$this->access->expects($this->any())
- ->method('nextcloudUserNames')
- ->willReturnArgument(0);
+ ->method('nextcloudUserNames')
+ ->willReturnArgument(0);
$this->access->method('fetchUsersByLoginName')
->willReturn([]);
@@ -398,108 +392,109 @@ class User_LDAPTest extends TestCase {
->willReturn(['dn', 'uid', 'mail', 'displayname']);
}
- public function testGetUsersNoParam() {
+ public function testGetUsersNoParam(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->getUsers();
- $this->assertEquals(3, count($result));
+ $this->assertCount(3, $result);
}
- public function testGetUsersLimitOffset() {
+ public function testGetUsersLimitOffset(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->getUsers('', 1, 2);
- $this->assertEquals(1, count($result));
+ $this->assertCount(1, $result);
}
- public function testGetUsersLimitOffset2() {
+ public function testGetUsersLimitOffset2(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->getUsers('', 2, 1);
- $this->assertEquals(2, count($result));
+ $this->assertCount(2, $result);
}
- public function testGetUsersSearchWithResult() {
+ public function testGetUsersSearchWithResult(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->getUsers('yo');
- $this->assertEquals(2, count($result));
+ $this->assertCount(2, $result);
}
- public function testGetUsersSearchEmptyResult() {
+ public function testGetUsersSearchEmptyResult(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->getUsers('nix');
- $this->assertEquals(0, count($result));
+ $this->assertCount(0, $result);
}
private function getUsers($search = '', $limit = null, $offset = null) {
- $users = \OC::$server->getUserManager()->search($search, $limit, $offset);
+ $users = Server::get(IUserManager::class)->search($search, $limit, $offset);
$uids = array_map(function (IUser $user) {
return $user->getUID();
}, $users);
return $uids;
}
- public function testGetUsersViaAPINoParam() {
+ public function testGetUsersViaAPINoParam(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $this->getUsers();
- $this->assertEquals(3, count($result));
+ $this->assertCount(3, $result);
}
- public function testGetUsersViaAPILimitOffset() {
+ public function testGetUsersViaAPILimitOffset(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $this->getUsers('', 1, 2);
- $this->assertEquals(1, count($result));
+ $this->assertCount(1, $result);
}
- public function testGetUsersViaAPILimitOffset2() {
+ public function testGetUsersViaAPILimitOffset2(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $this->getUsers('', 2, 1);
- $this->assertEquals(2, count($result));
+ $this->assertCount(2, $result);
}
- public function testGetUsersViaAPISearchWithResult() {
+ public function testGetUsersViaAPISearchWithResult(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $this->getUsers('yo');
- $this->assertEquals(2, count($result));
+ $this->assertCount(2, $result);
}
- public function testGetUsersViaAPISearchEmptyResult() {
+ public function testGetUsersViaAPISearchEmptyResult(): void {
$this->prepareAccessForGetUsers();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$result = $this->getUsers('nix');
- $this->assertEquals(0, count($result));
+ $this->assertCount(0, $result);
}
- public function testUserExists() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testUserExists(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
- $user = $this->createMock(User::class);
-
- $this->userManager->expects($this->atLeastOnce())
- ->method('get')
- ->willReturn($user);
+ $this->userManager->expects($this->never())
+ ->method('get');
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with('gunslinger')
+ ->willReturn(true);
$this->access->expects($this->any())
->method('getUserMapper')
->willReturn($this->createMock(UserMapping::class));
@@ -510,8 +505,8 @@ class User_LDAPTest extends TestCase {
$this->assertTrue($result);
}
- public function testUserExistsForDeleted() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testUserExistsForDeleted(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$mapper = $this->createMock(UserMapping::class);
@@ -524,18 +519,19 @@ class User_LDAPTest extends TestCase {
->method('getUserMapper')
->willReturn($mapper);
- $user = $this->createMock(User::class);
-
- $this->userManager->expects($this->atLeastOnce())
- ->method('get')
- ->willReturn($user);
+ $this->userManager->expects($this->never())
+ ->method('get');
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with('formerUser')
+ ->willReturn(true);
//test for deleted user – always returns true as long as we have the user in DB
$this->assertTrue($backend->userExists('formerUser'));
}
- public function testUserExistsForNeverExisting() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testUserExistsForNeverExisting(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$this->access->expects($this->any())
@@ -553,10 +549,10 @@ class User_LDAPTest extends TestCase {
$this->assertFalse($result);
}
- public function testUserExistsPublicAPI() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testUserExistsPublicAPI(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
- \OC_User::useBackend($backend);
+ Server::get(IUserManager::class)->registerBackend($backend);
$user = $this->createMock(User::class);
$user->expects($this->any())
@@ -571,28 +567,31 @@ class User_LDAPTest extends TestCase {
}
return false;
});
- $this->userManager->expects($this->atLeastOnce())
- ->method('get')
- ->willReturn($user);
+ $this->userManager->expects($this->never())
+ ->method('get');
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with('gunslinger')
+ ->willReturn(true);
$this->access->expects($this->any())
->method('getUserMapper')
->willReturn($this->createMock(UserMapping::class));
//test for existing user
- $result = \OC::$server->getUserManager()->userExists('gunslinger');
+ $result = Server::get(IUserManager::class)->userExists('gunslinger');
$this->assertTrue($result);
}
- public function testDeleteUserExisting() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testDeleteUserExisting(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
//we do not support deleting existing users at all
$result = $backend->deleteUser('gunslinger');
$this->assertFalse($result);
}
- public function testGetHomeAbsolutePath() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testGetHomeAbsolutePath(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$this->connection->expects($this->any())
@@ -632,7 +631,12 @@ class User_LDAPTest extends TestCase {
$this->userManager->expects($this->atLeastOnce())
->method('get')
+ ->with('gunslinger')
->willReturn($user);
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with('gunslinger')
+ ->willReturn(true);
//absolute path
/** @noinspection PhpUnhandledExceptionInspection */
@@ -640,12 +644,12 @@ class User_LDAPTest extends TestCase {
$this->assertEquals('/tmp/rolandshome/', $result);
}
- public function testGetHomeRelative() {
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ public function testGetHomeRelative(): void {
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
- $dataDir = \OC::$server->getConfig()->getSystemValue(
- 'datadirectory', \OC::$SERVERROOT.'/data');
+ $dataDir = Server::get(IConfig::class)->getSystemValue(
+ 'datadirectory', \OC::$SERVERROOT . '/data');
$this->connection->expects($this->any())
->method('__get')
@@ -680,22 +684,26 @@ class User_LDAPTest extends TestCase {
->willReturn('dnOfLadyOfShadows,dc=test');
$user->expects($this->any())
->method('getHomePath')
- ->willReturn($dataDir.'/susannah/');
+ ->willReturn($dataDir . '/susannah/');
$this->userManager->expects($this->atLeastOnce())
->method('get')
->willReturn($user);
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with('ladyofshadows')
+ ->willReturn(true);
/** @noinspection PhpUnhandledExceptionInspection */
$result = $backend->getHome('ladyofshadows');
- $this->assertEquals($dataDir.'/susannah/', $result);
+ $this->assertEquals($dataDir . '/susannah/', $result);
}
- public function testGetHomeNoPath() {
+ public function testGetHomeNoPath(): void {
$this->expectException(\Exception::class);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$this->connection->expects($this->any())
@@ -714,14 +722,6 @@ class User_LDAPTest extends TestCase {
return false;
}
});
- $this->access->connection->expects($this->any())
- ->method('getFromCache')
- ->willReturnCallback(function ($key) {
- if ($key === 'userExistsnewyorker') {
- return true;
- }
- return null;
- });
$user = $this->createMock(User::class);
$user->expects($this->any())
@@ -733,41 +733,42 @@ class User_LDAPTest extends TestCase {
$this->userManager->expects($this->atLeastOnce())
->method('get')
+ ->with('newyorker')
->willReturn($user);
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with('newyorker')
+ ->willReturn(true);
//no path at all – triggers OC default behaviour
$result = $backend->getHome('newyorker');
$this->assertFalse($result);
}
- public function testGetHomeDeletedUser() {
+ public function testGetHomeDeletedUser(): void {
$uid = 'newyorker';
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$this->connection->expects($this->any())
- ->method('__get')
- ->willReturnCallback(function ($name) {
- if ($name === 'homeFolderNamingRule') {
- return 'attr:testAttribute';
- }
- return null;
- });
+ ->method('__get')
+ ->willReturnCallback(function ($name) {
+ if ($name === 'homeFolderNamingRule') {
+ return 'attr:testAttribute';
+ }
+ return null;
+ });
$this->access->expects($this->any())
- ->method('readAttribute')
- ->willReturn([]);
+ ->method('readAttribute')
+ ->willReturn([]);
$userMapper = $this->createMock(UserMapping::class);
$this->access->expects($this->any())
- ->method('getUserMapper')
- ->willReturn($userMapper);
-
- $this->config->expects($this->any())
- ->method('getUserValue')
- ->willReturn(true);
+ ->method('getUserMapper')
+ ->willReturn($userMapper);
$offlineUser = $this->createMock(OfflineUser::class);
$offlineUser->expects($this->atLeastOnce())
@@ -776,13 +777,18 @@ class User_LDAPTest extends TestCase {
$this->userManager->expects($this->atLeastOnce())
->method('get')
+ ->with($uid)
->willReturn($offlineUser);
+ $this->userManager->expects($this->once())
+ ->method('exists')
+ ->with($uid)
+ ->willReturn(true);
$result = $backend->getHome($uid);
$this->assertFalse($result);
}
- public function testGetHomeWithPlugin() {
+ public function testGetHomeWithPlugin(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::GET_HOME)
@@ -815,27 +821,27 @@ class User_LDAPTest extends TestCase {
});
$this->access->expects($this->any())
- ->method('readAttribute')
- ->willReturnCallback(function ($dn, $attr) {
- switch ($dn) {
- case 'dnOfRoland,dc=test':
- if ($attr === 'displayname') {
- return ['Roland Deschain'];
- }
- return [];
- break;
-
- default:
- return false;
- }
- });
+ ->method('readAttribute')
+ ->willReturnCallback(function ($dn, $attr) {
+ switch ($dn) {
+ case 'dnOfRoland,dc=test':
+ if ($attr === 'displayname') {
+ return ['Roland Deschain'];
+ }
+ return [];
+ break;
+
+ default:
+ return false;
+ }
+ });
$this->access->method('fetchUsersByLoginName')
->willReturn([]);
}
- public function testGetDisplayName() {
+ public function testGetDisplayName(): void {
$this->prepareAccessForGetDisplayName();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$this->connection->expects($this->any())
@@ -876,6 +882,16 @@ class User_LDAPTest extends TestCase {
}
return null;
});
+ $this->userManager->expects($this->any())
+ ->method('exists')
+ ->willReturnCallback(function ($uid) use ($user1, $user2) {
+ if ($uid === 'gunslinger') {
+ return true;
+ } elseif ($uid === 'newyorker') {
+ return true;
+ }
+ return false;
+ });
$this->access->expects($this->any())
->method('getUserMapper')
->willReturn($mapper);
@@ -894,7 +910,7 @@ class User_LDAPTest extends TestCase {
$this->assertEquals(null, $result);
}
- public function testGetDisplayNamePublicAPI() {
+ public function testGetDisplayNamePublicAPI(): void {
$this->access->expects($this->any())
->method('username2dn')
->willReturnCallback(function ($uid) {
@@ -916,7 +932,7 @@ class User_LDAPTest extends TestCase {
}
});
$this->prepareAccessForGetDisplayName();
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->prepareMockForUserExists();
$this->connection->expects($this->any())
@@ -925,7 +941,7 @@ class User_LDAPTest extends TestCase {
return true;
});
- \OC_User::useBackend($backend);
+ Server::get(IUserManager::class)->registerBackend($backend);
$user1 = $this->createMock(User::class);
$user1->expects($this->once())
@@ -959,6 +975,16 @@ class User_LDAPTest extends TestCase {
}
return null;
});
+ $this->userManager->expects($this->any())
+ ->method('exists')
+ ->willReturnCallback(function ($uid) use ($user1, $user2) {
+ if ($uid === 'gunslinger') {
+ return true;
+ } elseif ($uid === 'newyorker') {
+ return true;
+ }
+ return false;
+ });
$this->access->expects($this->any())
->method('getUserMapper')
->willReturn($mapper);
@@ -969,15 +995,15 @@ class User_LDAPTest extends TestCase {
});
//with displayName
- $result = \OC::$server->getUserManager()->get('gunslinger')->getDisplayName();
+ $result = Server::get(IUserManager::class)->get('gunslinger')?->getDisplayName();
$this->assertEquals('Roland Deschain', $result);
//empty displayname retrieved
- $result = \OC::$server->getUserManager()->get('newyorker') === null ? 'newyorker' : \OC::$server->getUserManager()->get('newyorker')->getDisplayName();
+ $result = Server::get(IUserManager::class)->get('newyorker') === null ? 'newyorker' : Server::get(IUserManager::class)->get('newyorker')->getDisplayName();
$this->assertEquals('newyorker', $result);
}
- public function testGetDisplayNameWithPlugin() {
+ public function testGetDisplayNameWithPlugin(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::GET_DISPLAYNAME)
@@ -993,29 +1019,29 @@ class User_LDAPTest extends TestCase {
//no test for getDisplayNames, because it just invokes getUsers and
//getDisplayName
- public function testCountUsers() {
+ public function testCountUsers(): void {
$this->access->expects($this->once())
- ->method('countUsers')
- ->willReturn(5);
+ ->method('countUsers')
+ ->willReturn(5);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->countUsers();
$this->assertEquals(5, $result);
}
- public function testCountUsersFailing() {
+ public function testCountUsersFailing(): void {
$this->access->expects($this->once())
- ->method('countUsers')
- ->willReturn(false);
+ ->method('countUsers')
+ ->willReturn(false);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$result = $backend->countUsers();
$this->assertFalse($result);
}
- public function testCountUsersWithPlugin() {
+ public function testCountUsersWithPlugin(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::COUNT_USERS)
@@ -1027,7 +1053,7 @@ class User_LDAPTest extends TestCase {
$this->assertEquals($this->backend->countUsers(), 42);
}
- public function testLoginName2UserNameSuccess() {
+ public function testLoginName2UserNameSuccess(): void {
$loginName = 'Alice';
$username = 'alice';
$dn = 'uid=alice,dc=what,dc=ever';
@@ -1047,13 +1073,13 @@ class User_LDAPTest extends TestCase {
$this->connection->expects($this->exactly(2))
->method('getFromCache')
- ->with($this->equalTo('loginName2UserName-'.$loginName))
+ ->with($this->equalTo('loginName2UserName-' . $loginName))
->willReturnOnConsecutiveCalls(null, $username);
$this->connection->expects($this->once())
->method('writeToCache')
- ->with($this->equalTo('loginName2UserName-'.$loginName), $this->equalTo($username));
+ ->with($this->equalTo('loginName2UserName-' . $loginName), $this->equalTo($username));
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$user = $this->createMock(User::class);
$user->expects($this->any())
->method('getUsername')
@@ -1063,6 +1089,8 @@ class User_LDAPTest extends TestCase {
->method('get')
->with($dn)
->willReturn($user);
+ $this->userManager->expects($this->never())
+ ->method('exists');
$this->userManager->expects($this->any())
->method('getAttributes')
->willReturn(['dn', 'uid', 'mail', 'displayname']);
@@ -1074,7 +1102,7 @@ class User_LDAPTest extends TestCase {
$backend->loginName2UserName($loginName);
}
- public function testLoginName2UserNameNoUsersOnLDAP() {
+ public function testLoginName2UserNameNoUsersOnLDAP(): void {
$loginName = 'Loki';
$this->access->expects($this->once())
@@ -1088,17 +1116,17 @@ class User_LDAPTest extends TestCase {
$this->connection->expects($this->exactly(2))
->method('getFromCache')
- ->with($this->equalTo('loginName2UserName-'.$loginName))
+ ->with($this->equalTo('loginName2UserName-' . $loginName))
->willReturnOnConsecutiveCalls(null, false);
$this->connection->expects($this->once())
->method('writeToCache')
- ->with($this->equalTo('loginName2UserName-'.$loginName), false);
+ ->with($this->equalTo('loginName2UserName-' . $loginName), false);
$this->userManager->expects($this->any())
->method('getAttributes')
->willReturn(['dn', 'uid', 'mail', 'displayname']);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$name = $backend->loginName2UserName($loginName);
$this->assertSame(false, $name);
@@ -1106,7 +1134,7 @@ class User_LDAPTest extends TestCase {
$backend->loginName2UserName($loginName);
}
- public function testLoginName2UserNameOfflineUser() {
+ public function testLoginName2UserNameOfflineUser(): void {
$loginName = 'Alice';
$dn = 'uid=alice,dc=what,dc=ever';
@@ -1121,11 +1149,11 @@ class User_LDAPTest extends TestCase {
$this->connection->expects($this->exactly(2))
->method('getFromCache')
- ->with($this->equalTo('loginName2UserName-'.$loginName))
+ ->with($this->equalTo('loginName2UserName-' . $loginName))
->willReturnOnConsecutiveCalls(null, false);
$this->connection->expects($this->once())
->method('writeToCache')
- ->with($this->equalTo('loginName2UserName-'.$loginName), $this->equalTo(false));
+ ->with($this->equalTo('loginName2UserName-' . $loginName), $this->equalTo(false));
$this->userManager->expects($this->any())
->method('get')
@@ -1135,7 +1163,7 @@ class User_LDAPTest extends TestCase {
->method('getAttributes')
->willReturn(['dn', 'uid', 'mail', 'displayname']);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$name = $backend->loginName2UserName($loginName);
$this->assertSame(false, $name);
@@ -1145,38 +1173,36 @@ class User_LDAPTest extends TestCase {
/**
* Prepares the Access mock for setPassword tests
- *
- * @param bool $enablePasswordChange
*/
private function prepareAccessForSetPassword($enablePasswordChange = true) {
$this->connection->expects($this->any())
- ->method('__get')
- ->willReturnCallback(function ($name) use (&$enablePasswordChange) {
- if ($name === 'ldapLoginFilter') {
- return '%uid';
- }
- if ($name === 'turnOnPasswordChange') {
- return $enablePasswordChange?1:0;
- }
- return null;
- });
+ ->method('__get')
+ ->willReturnCallback(function ($name) use (&$enablePasswordChange) {
+ if ($name === 'ldapLoginFilter') {
+ return '%uid';
+ }
+ if ($name === 'turnOnPasswordChange') {
+ return $enablePasswordChange?1:0;
+ }
+ return null;
+ });
$this->connection->expects($this->any())
- ->method('getFromCache')
- ->willReturnCallback(function ($uid) {
- if ($uid === 'userExists'.'roland') {
- return true;
- }
- return null;
- });
+ ->method('getFromCache')
+ ->willReturnCallback(function ($uid) {
+ if ($uid === 'userExists' . 'roland') {
+ return true;
+ }
+ return null;
+ });
$this->access->expects($this->any())
- ->method('fetchListOfUsers')
- ->willReturnCallback(function ($filter) {
- if ($filter === 'roland') {
- return [['dn' => ['dnOfRoland,dc=test']]];
- }
- return [];
- });
+ ->method('fetchListOfUsers')
+ ->willReturnCallback(function ($filter) {
+ if ($filter === 'roland') {
+ return [['dn' => ['dnOfRoland,dc=test']]];
+ }
+ return [];
+ });
$this->access->expects($this->any())
->method('fetchUsersByLoginName')
->willReturnCallback(function ($uid) {
@@ -1186,69 +1212,69 @@ class User_LDAPTest extends TestCase {
return [];
});
$this->access->expects($this->any())
- ->method('dn2username')
- ->with($this->equalTo('dnOfRoland,dc=test'))
- ->willReturn('roland');
+ ->method('dn2username')
+ ->with($this->equalTo('dnOfRoland,dc=test'))
+ ->willReturn('roland');
$this->access->expects($this->any())
- ->method('stringResemblesDN')
- ->with($this->equalTo('dnOfRoland,dc=test'))
- ->willReturn(true);
+ ->method('stringResemblesDN')
+ ->with($this->equalTo('dnOfRoland,dc=test'))
+ ->willReturn(true);
$this->access->expects($this->any())
- ->method('setPassword')
- ->willReturnCallback(function ($uid, $password) {
- if (strlen($password) <= 5) {
- throw new HintException('Password fails quality checking policy', '', 19);
- }
- return true;
- });
+ ->method('setPassword')
+ ->willReturnCallback(function ($uid, $password) {
+ if (strlen($password) <= 5) {
+ throw new HintException('Password fails quality checking policy', '', 19);
+ }
+ return true;
+ });
}
- public function testSetPasswordInvalid() {
- $this->expectException(\OCP\HintException::class);
+ public function testSetPasswordInvalid(): void {
+ $this->expectException(HintException::class);
$this->expectExceptionMessage('Password fails quality checking policy');
$this->prepareAccessForSetPassword($this->access);
$this->userManager->expects($this->atLeastOnce())
->method('get')
->willReturn($this->createMock(User::class));
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$this->assertTrue(\OC_User::setPassword('roland', 'dt'));
}
- public function testSetPasswordValid() {
+ public function testSetPasswordValid(): void {
$this->prepareAccessForSetPassword($this->access);
$this->userManager->expects($this->any())
->method('get')
->willReturn($this->createMock(User::class));
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
$this->userManager->expects($this->any())
->method('get')
->willReturn($this->createMock(User::class));
- \OC_User::useBackend($backend);
+ Server::get(IUserManager::class)->registerBackend($backend);
$this->assertTrue(\OC_User::setPassword('roland', 'dt12234$'));
}
- public function testSetPasswordValidDisabled() {
+ public function testSetPasswordValidDisabled(): void {
$this->userManager->expects($this->any())
->method('get')
->willReturn($this->createMock(User::class));
$this->prepareAccessForSetPassword(false);
- $backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
- \OC_User::useBackend($backend);
+ $backend = new UserLDAP($this->access, $this->notificationManager, $this->pluginManager, $this->logger, $this->deletedUsersIndex);
+ Server::get(IUserManager::class)->registerBackend($backend);
$this->assertFalse(\OC_User::setPassword('roland', 'dt12234$'));
}
- public function testSetPasswordWithInvalidUser() {
+ public function testSetPasswordWithInvalidUser(): void {
$this->expectException(\Exception::class);
$this->expectExceptionMessage('LDAP setPassword: Could not get user object for uid NotExistingUser. Maybe the LDAP entry has no set display name attribute?');
@@ -1261,7 +1287,7 @@ class User_LDAPTest extends TestCase {
$this->backend->setPassword('NotExistingUser', 'Password');
}
- public function testSetPasswordWithUsernameFalse() {
+ public function testSetPasswordWithUsernameFalse(): void {
$user = $this->createMock(User::class);
$user
->expects($this->once())
@@ -1277,7 +1303,7 @@ class User_LDAPTest extends TestCase {
$this->assertFalse($this->backend->setPassword('NotExistingUser', 'Password'));
}
- public function testSetPasswordWithPlugin() {
+ public function testSetPasswordWithPlugin(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::SET_PASSWORD)
@@ -1291,7 +1317,7 @@ class User_LDAPTest extends TestCase {
$this->assertEquals($this->backend->setPassword('uid', 'password'), 'result');
}
- public function avatarDataProvider() {
+ public static function avatarDataProvider(): array {
return [
[ 'validImageData', false ],
[ 'corruptImageData', true ],
@@ -1299,8 +1325,8 @@ class User_LDAPTest extends TestCase {
];
}
- /** @dataProvider avatarDataProvider */
- public function testCanChangeAvatar($imageData, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('avatarDataProvider')]
+ public function testCanChangeAvatar(string|bool $imageData, bool $expected): void {
$isValidImage = str_starts_with((string)$imageData, 'valid');
$user = $this->createMock(User::class);
@@ -1319,7 +1345,7 @@ class User_LDAPTest extends TestCase {
$this->assertSame($expected, $this->backend->canChangeAvatar('uid'));
}
- public function testCanChangeAvatarWithPlugin() {
+ public function testCanChangeAvatarWithPlugin(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::PROVIDE_AVATAR)
@@ -1332,7 +1358,7 @@ class User_LDAPTest extends TestCase {
$this->assertEquals($this->backend->canChangeAvatar('uid'), 'result');
}
- public function testSetDisplayNameWithPlugin() {
+ public function testSetDisplayNameWithPlugin(): void {
$newDisplayName = 'J. Baker';
$this->pluginManager->expects($this->once())
->method('implementsActions')
@@ -1349,8 +1375,8 @@ class User_LDAPTest extends TestCase {
}
- public function testSetDisplayNameErrorWithPlugin() {
- $this->expectException(\OCP\HintException::class);
+ public function testSetDisplayNameErrorWithPlugin(): void {
+ $this->expectException(HintException::class);
$newDisplayName = 'J. Baker';
$this->pluginManager->expects($this->once())
@@ -1367,7 +1393,7 @@ class User_LDAPTest extends TestCase {
$this->backend->setDisplayName('uid', $newDisplayName);
}
- public function testSetDisplayNameFailing() {
+ public function testSetDisplayNameFailing(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::SET_DISPLAYNAME)
@@ -1378,7 +1404,7 @@ class User_LDAPTest extends TestCase {
$this->assertFalse($this->backend->setDisplayName('uid', 'displayName'));
}
- public function testCreateUserWithPlugin() {
+ public function testCreateUserWithPlugin(): void {
$uid = 'alien6372';
$uuid = '123-2345-36756-123-2345234-4431';
$pwd = 'passwørd';
@@ -1405,7 +1431,7 @@ class User_LDAPTest extends TestCase {
$this->assertEquals($this->backend->createUser($uid, $pwd), true);
}
- public function testCreateUserFailing() {
+ public function testCreateUserFailing(): void {
$this->pluginManager->expects($this->once())
->method('implementsActions')
->with(Backend::CREATE_USER)
@@ -1414,9 +1440,9 @@ class User_LDAPTest extends TestCase {
$this->assertFalse($this->backend->createUser('uid', 'password'));
}
- public function actionProvider() {
+ public static function actionProvider(): array {
return [
- [ 'ldapUserAvatarRule', 'default', Backend::PROVIDE_AVATAR, true] ,
+ [ 'ldapUserAvatarRule', 'default', Backend::PROVIDE_AVATAR, true],
[ 'ldapUserAvatarRule', 'data:selfiePhoto', Backend::PROVIDE_AVATAR, true],
[ 'ldapUserAvatarRule', 'none', Backend::PROVIDE_AVATAR, false],
[ 'turnOnPasswordChange', 0, Backend::SET_PASSWORD, false],
@@ -1424,10 +1450,8 @@ class User_LDAPTest extends TestCase {
];
}
- /**
- * @dataProvider actionProvider
- */
- public function testImplementsAction($configurable, $value, $actionCode, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('actionProvider')]
+ public function testImplementsAction(string $configurable, string|int $value, int $actionCode, bool $expected): void {
$this->pluginManager->expects($this->once())
->method('getImplementedActions')
->willReturn(0);
diff --git a/apps/user_ldap/tests/User_ProxyTest.php b/apps/user_ldap/tests/User_ProxyTest.php
index a74d1e13930..38f94af33a7 100644
--- a/apps/user_ldap/tests/User_ProxyTest.php
+++ b/apps/user_ldap/tests/User_ProxyTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -11,34 +13,20 @@ use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\User\DeletedUsersIndex;
use OCA\User_LDAP\User_Proxy;
use OCA\User_LDAP\UserPluginManager;
-use OCP\IConfig;
-use OCP\IUserSession;
use OCP\Notification\IManager as INotificationManager;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class User_ProxyTest extends TestCase {
- /** @var Helper|MockObject */
- protected $helper;
- /** @var ILDAPWrapper|MockObject */
- private $ldapWrapper;
- /** @var AccessFactory|MockObject */
- private $accessFactory;
- /** @var IConfig|MockObject */
- private $config;
- /** @var INotificationManager|MockObject */
- private $notificationManager;
- /** @var IUserSession|MockObject */
- private $userSession;
- /** @var User_Proxy|MockObject */
- private $proxy;
- /** @var UserPluginManager|MockObject */
- private $userPluginManager;
- /** @var LoggerInterface|MockObject */
- protected $logger;
- /** @var DeletedUsersIndex|MockObject */
- protected $deletedUsersIndex;
+ protected Helper&MockObject $helper;
+ private ILDAPWrapper&MockObject $ldapWrapper;
+ private AccessFactory&MockObject $accessFactory;
+ private INotificationManager&MockObject $notificationManager;
+ private User_Proxy&MockObject $proxy;
+ private UserPluginManager&MockObject $userPluginManager;
+ protected LoggerInterface&MockObject $logger;
+ protected DeletedUsersIndex&MockObject $deletedUsersIndex;
protected function setUp(): void {
parent::setUp();
@@ -46,9 +34,7 @@ class User_ProxyTest extends TestCase {
$this->helper = $this->createMock(Helper::class);
$this->ldapWrapper = $this->createMock(ILDAPWrapper::class);
$this->accessFactory = $this->createMock(AccessFactory::class);
- $this->config = $this->createMock(IConfig::class);
$this->notificationManager = $this->createMock(INotificationManager::class);
- $this->userSession = $this->createMock(IUserSession::class);
$this->userPluginManager = $this->createMock(UserPluginManager::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->deletedUsersIndex = $this->createMock(DeletedUsersIndex::class);
@@ -57,18 +43,16 @@ class User_ProxyTest extends TestCase {
$this->helper,
$this->ldapWrapper,
$this->accessFactory,
- $this->config,
$this->notificationManager,
- $this->userSession,
$this->userPluginManager,
$this->logger,
$this->deletedUsersIndex,
])
- ->setMethods(['handleRequest'])
+ ->onlyMethods(['handleRequest'])
->getMock();
}
- public function testSetPassword() {
+ public function testSetPassword(): void {
$this->proxy
->expects($this->once())
->method('handleRequest')
@@ -78,7 +62,7 @@ class User_ProxyTest extends TestCase {
$this->assertTrue($this->proxy->setPassword('MyUid', 'MyPassword'));
}
- public function testSetDisplayName() {
+ public function testSetDisplayName(): void {
$this->proxy
->expects($this->once())
->method('handleRequest')
@@ -88,7 +72,7 @@ class User_ProxyTest extends TestCase {
$this->assertTrue($this->proxy->setDisplayName('MyUid', 'MyPassword'));
}
- public function testCreateUser() {
+ public function testCreateUser(): void {
$this->proxy
->expects($this->once())
->method('handleRequest')
diff --git a/apps/user_ldap/tests/WizardTest.php b/apps/user_ldap/tests/WizardTest.php
index d3cf6ffb0ae..3ae9a409e88 100644
--- a/apps/user_ldap/tests/WizardTest.php
+++ b/apps/user_ldap/tests/WizardTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -35,32 +36,28 @@ class WizardTest extends TestCase {
}
}
- private function getWizardAndMocks() {
+ private function getWizardAndMocks(): array {
static $confMethods;
- static $connMethods;
- static $accMethods;
if (is_null($confMethods)) {
$confMethods = get_class_methods('\OCA\User_LDAP\Configuration');
- $connMethods = get_class_methods('\OCA\User_LDAP\Connection');
- $accMethods = get_class_methods('\OCA\User_LDAP\Access');
}
- /** @var ILDAPWrapper|\PHPUnit\Framework\MockObject\MockObject $lw */
+ /** @var ILDAPWrapper&MockObject $lw */
$lw = $this->createMock(ILDAPWrapper::class);
- /** @var Configuration|\PHPUnit\Framework\MockObject\MockObject $conf */
+ /** @var Configuration&MockObject $conf */
$conf = $this->getMockBuilder(Configuration::class)
- ->setMethods($confMethods)
+ ->onlyMethods($confMethods)
->setConstructorArgs(['', true])
->getMock();
- /** @var Access|\PHPUnit\Framework\MockObject\MockObject $access */
+ /** @var Access&MockObject $access */
$access = $this->createMock(Access::class);
return [new Wizard($conf, $lw, $access), $conf, $lw, $access];
}
- private function prepareLdapWrapperForConnections(MockObject &$ldap) {
+ private function prepareLdapWrapperForConnections(MockObject $ldap) {
$ldap->expects($this->once())
->method('connect')
//dummy value
@@ -75,7 +72,7 @@ class WizardTest extends TestCase {
->willReturn(true);
}
- public function testCumulativeSearchOnAttributeLimited() {
+ public function testCumulativeSearchOnAttributeLimited(): void {
[$wizard, $configuration, $ldap] = $this->getWizardAndMocks();
$configuration->expects($this->any())
@@ -135,7 +132,7 @@ class WizardTest extends TestCase {
unset($uidnumber);
}
- public function testCumulativeSearchOnAttributeUnlimited() {
+ public function testCumulativeSearchOnAttributeUnlimited(): void {
[$wizard, $configuration, $ldap] = $this->getWizardAndMocks();
$configuration->expects($this->any())
@@ -211,7 +208,7 @@ class WizardTest extends TestCase {
unset($uidnumber);
}
- public function testDetectEmailAttributeAlreadySet() {
+ public function testDetectEmailAttributeAlreadySet(): void {
[$wizard, $configuration, $ldap, $access]
= $this->getWizardAndMocks();
@@ -233,7 +230,7 @@ class WizardTest extends TestCase {
$wizard->detectEmailAttribute();
}
- public function testDetectEmailAttributeOverrideSet() {
+ public function testDetectEmailAttributeOverrideSet(): void {
[$wizard, $configuration, $ldap, $access]
= $this->getWizardAndMocks();
@@ -272,7 +269,7 @@ class WizardTest extends TestCase {
$result['changes']['ldap_email_attr']);
}
- public function testDetectEmailAttributeFind() {
+ public function testDetectEmailAttributeFind(): void {
[$wizard, $configuration, $ldap, $access]
= $this->getWizardAndMocks();
@@ -311,7 +308,7 @@ class WizardTest extends TestCase {
$result['changes']['ldap_email_attr']);
}
- public function testDetectEmailAttributeFindNothing() {
+ public function testDetectEmailAttributeFindNothing(): void {
[$wizard, $configuration, $ldap, $access]
= $this->getWizardAndMocks();
@@ -346,10 +343,10 @@ class WizardTest extends TestCase {
});
$result = $wizard->detectEmailAttribute();
- $this->assertSame(false, $result->hasChanges());
+ $this->assertFalse($result->hasChanges());
}
- public function testCumulativeSearchOnAttributeSkipReadDN() {
+ public function testCumulativeSearchOnAttributeSkipReadDN(): void {
// tests that there is no infinite loop, when skipping already processed
// DNs (they can be returned multiple times for multiple filters )
[$wizard, $configuration, $ldap] = $this->getWizardAndMocks();
@@ -423,7 +420,7 @@ class WizardTest extends TestCase {
// The following expectations are the real test
$filters = ['f1', 'f2', '*'];
$resultArray = $wizard->cumulativeSearchOnAttribute($filters, 'cn', 0);
- $this->assertSame(6, count($resultArray));
+ $this->assertCount(6, $resultArray);
unset($mark);
}
}